session_cache_limiter
(PHP 4 >= 4.0.3, PHP 5, PHP 7)
session_cache_limiter — 读取/设置缓存限制器
说明
string session_cache_limiter ([ string $cache_limiter ] )
session_cache_limiter() 返回当前缓存限制器的名称。
缓存限制器定义了向客户端发送的 HTTP 响应头中的缓存控制策略。客户端或者代理服务
器通过检测这个响应头信息来确定对于页面内容的缓存规则。设置缓存限制器为 nocache
会进制客户端或者代理服务器缓存内容， public 表示允许客户端或代理服务器缓存内容
， private 表示允许客户端缓存，但是不允许代理服务器缓存内容。
在 private 模式下，包括 Mozilla 在内的一些浏览器可能无法正确处理 Expire 响应头
，通过使用 private_no_expire 模式可以解决这个问题：在这种模式下，不会向客户端发
送 Expire 响应头。
设置为 '' 可以关闭自动发送缓存策略响应头的功能。
请求开始的时候，缓存限制器会被重置为默认值，并且存储在 session.cache_limiter 配
置项中。因此，如果要设置缓存限制器，对于每个请求，都需要在调用 session_start()
函数之前，调用 session_cache_limiter() 函数来进行设置。
参数
cache_limiter
如果指定了 cache_limiter 参数，将使用指定值作为缓存限制器的值。
可选的值
值 发送的响应头
Expires：（根据 session.cache_expire 的设定计算得出）
public Cache-Control： public, max-age=（根据 session.cache_expire 的设定计算得出）
Last-Modified：（会话最后保存时间）
Cache-Control: private, max-age=（根据 session.cache_expire 的设定计算得出）, pre-check=（根据 session.cache_expire 的设定计算得出）
private_no_expire Last-Modified: （会话最后保存时间）
Expires: Thu, 19 Nov 1981 08:52:00 GMT
private Cache-Control: private, max-age=（根据 session.cache_expire 的设定计算得出）, pre-check=（根据 session.cache_expire 的设定计算得出）
Last-Modified: （会话最后保存时间）
Expires: Thu, 19 Nov 1981 08:52:00 GMT
nocache Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
返回值
返回当前所用的缓存限制器名称。
范例
Example #1 session_cache_limiter() 示例
";
?>
参见
• session.cache_limiter
User Contributed Notes 25 notes
===============================================================================
The actual headers that are set using the values described above are:
public:
Expires: pageload + 3 hours
Cache-Control: public, max-age=10800
private:
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: private, max-age=10800, pre-check=10800
nocache:
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check
=0
Pragma: no-cache
private_no_expire:
Cache-Control: private, max-age=10800, pre-check=10800
Regarding other settings mentioned by some, those just don't do anything. Check
the source of PHP, in ext/session/session.c -- the above values are all that
actually do anything. Other values, or an emtpy string, result in no
cache-limiting headers being set at all.
===============================================================================
If you are trying to work with dynamic binaries such as videos or images, the
new IE 7 appears to require the ETag header. You will need to make sure that
you follow the specifications for how ETag works in order for your cache
control to work properly. Mozilla supports the ETag header as well, but does
NOT require it for caching. If you need to cache a dynamic image, video, or
other binary file, then be sure to set your ETag and then check for the
If-Not-Modified header on subsequent requests so that you can properly return
the 304 Not Modified page.
===============================================================================
I have PHP 4.3 running on a Windows 2003 Server running IIS 6.0 also using SSL
encryption for my pages. I could not (for the life of me) figure out how to
get IE 6.0/WinXPPro to recognize a set of HTML tables as an Excel spreadsheet
export, and it was due to the header() variables I was using. Hopefully these
are helpful to others who are attempting the same type of export within PHP.
*This example builds on the previously submitted one, adding a few necessary
headers.
===============================================================================
I have had some trouble preventing IE, particular IE 7 to stop caching pages. I
read quite a number of articles relating to people's experiences and how they
fixed it but it was hard to find one that worked for me. Eventually I had to
use the following fix:
based on the information available on following url: http://
support.microsoft.com/kb/234067
Would to God that we'd all quit IE for good. Hope this saves someone some agony
over IE.
===============================================================================
You can find more information about to control the cache in PHP at http://
www.php.net/manual/en/function.header.php
If you have a dinamic website and want to allow your visitors to use the back
button after they sent a form with the post method, the best combination I
found was:
I try some combinations using header("Cache-Control: no-cache,
must-revalidate"), but when clicking the back button, the last changes in the
form back to their previous states. The combination above works fine with IE
6.x. I didn't test this with other browsers.
When I try something like session_cache_limiter("nocache, must-revalidate") it
doesn't work. The page only updates when I used the browser's refresh button.
In dynamic web sites this is not good. The content must be fresh after each
click.
I didn't find these combinations like "private, must-revalidate" documented in
the manual and I guess that something different from "none, nocache, private,
public and private_no_expire" are resolved to "none" or something like that.
One thing I notice is that in session_cache_limiter() it is "nocache", but in
header() it is "no-cache". This may give us some clues about how
session_cache_limiter() function works.
About caching, the perfect solution I think is to give the correct expiration
date and time and also the right last-modified header for each element in the
web site, when they are really updated. This means a lot of extra controls of
course, but may worth in web sites with high overload.
The "public" option means that all available cache in proxies and clientes will
be used, so this improves the speed of the web site and also reduces the used
bandwidth. But without the right expiration and last-modified headers, you can
use it only in static web sites.
The "private" option means that only the cache in clients will be used. This is
good for a more sensitive data that can be stored locally in the browser cache.
It have some benefits of the public option, but the same restrictions too.
The "nocache" (or no-cache?) option means that the HTML portion will not be
cached, but the images, CSS and JS files will. This is good for dynamic
websites because you still can use the power of cache without loose the
refreshness after each click. These files can be updated when you open the web
site or use the browser's refresh button.
I don't know why, but flash files are never updated when you click the refresh
button. A common solution for this is to change the file name when you update
the flash file.
The "no-store" option means that all the content will not be cached anyway,
including images, CSS or JS files. I don't know if this applyes to flash files
too, but is possible. This option must be used with very sensitive data. I
think the SSL uses this by default.
===============================================================================
In addition to the note above regarding SSL/IE bug/Sessions, also make sure you
DO NOT SET THE HEADER 'Pragma: no-cache' if you are sending an inline document
(e.g., PDF document).
For example:
Best,
--
Jim
===============================================================================
http://us.php.net/session_cache_limiter
sends:
Pragma: no-cache
under some conditions from server to client.
Internet Explorer has a strange interpretation of: Pragma: No-cache
being sent from the server to the client.
Here's the link:
http://support.microsoft.com/kb/234067
If the client communicates with the server over a secure connection (https://)
and the server returns a Pragma: no-cache header with the response, Internet
Explorer does not cache the response.
Note, however, that the Pragma: no-cache header was not intended for this.
According to the HTTP 1.0 and 1.1 specifications, this header is defined in the
context of a request only, not a response, and is actually intended for proxy
servers that may prevent certain important requests from reaching the
destination Web server. For future applications, the Cache-Control header is
the proper means for controlling caching.
For this reason, watch out when using the Pragma: no-cache with https and IE
===============================================================================
IE6 'the file could not be written to the cache':
I tried all the other suggestions mentioned here but none of them worked.
I friend suggested header("Pragma: ");
This worked straight away!
===============================================================================
Avoiding caching PHP pages:
After lot of tries and research this is the best combination of headers I've
found that seems to work well even with the proxy of visitors that are using
satellit connection.
header("ETag: PUB" . time());
header("Last-Modified: " . gmdate("D, d M Y H:i:s", time()-10) . " GMT");
header("Expires: " . gmdate("D, d M Y H:i:s", time() + 5) . " GMT");
header("Pragma: no-cache");
header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");
session_cache_limiter("nocache");
?>
===============================================================================
I had a problem using a FORM with POST method when user of my website was using
the back button. The page requested a refresh to be able to see again the FORM.
To solve the problem I used :
*You need to write this line before any output
Hope that will help some of you ;)
[P]
===============================================================================
To avoid a headache while trying the various parameters in Firefox 3.0.1
(+Firebug), just restart the browser after a change... or they're not taken
into account (from 'no-cache' to 'public'/'private').
===============================================================================
In addition to the above, don't forget to check the php.ini file for the
setting: session.cache_limiter = nocache
Since I use xoops and didn't start the session, I had the SSL/download problem
until I noticed this.
===============================================================================
The onLoad method of Actionscript's loadVars class was returning false in IE6
using SSL until I set --> session_cache_limiter("must-revalidate"); <-- on the
receiving PHP script.
===============================================================================
I've read the other comments and done some "reasearch" on my own. Using php's
session mechanism and explicitly setting the "cache-control" header should not
be mixed.
When session_start() is called, the "cache-control" and "pragma" headers are
automatically set by php (to whatever value had been specified using
session_cache_limiter()).
Explicitly setting those headers _before_ session_start() will have no effect,
and explicitly setting them _after_ session_start() will overwrite the settings
from session_cache_limiter().
If I had to deal with php sessions, I'd go for using session_cache_limiter()
and leaving the headers alone.
===============================================================================
Andrei Chirila, andrei_chirila at yahoo dot com
12-Jan-2005 09:30
I played about an hour with the download and sessions. yes, to work you'll need
session_cache_limiter("must-revalidate"); but this BEFORE session_start() if
you want that your download start [IE problem]. Hope someone will need this
someday
====
yes, somebody has needed this today :)
situation: trying to make a session based download management system complete
with user login system that requries an authorized user to download some files,
and hide all such files from non-authorized users. the user login, download
center, and content management system of the site are all tied in to each
other, making troubleshooting this headering stuff a headache.
problem: files being served are not accessible thru the regular site, since
they are above the htdocs folder in apache, and so headering the file is
required, and sessions do not work well with files being headered to the
browser.
solution: the download center uses ob_start("");, then session_cache_limiter
("must-revalidate");, before the session_start();, then everything works well.
thank you very much! i was resorting to using a cookie to control this before
because i could not figure out how to tie in sessions to the system before!
===============================================================================
I found that session_cache_limiter("none") works for me when I create PDFs on
the fly because session_cache_limiter("private") causes the browser(IE6) to
cache the PDF indefinitely.
===============================================================================
I solved the problem with pushing downloads to browser's, without needing to
play with server/session parameters by using :
header("Content-Disposition: inline; filename=\"$filename\"");
for IE browsers and
header("Content-Disposition: attachment; filename=\"$filename\"");
for all other browsers.
===============================================================================
I was having a fit trying fix an issue caused by session.cache_limiter.
Somehow I had set this to nocache (a long time ago) in the .ini file and this
setting caused the back-button to not work. When session.cache_limiter was set
on private or public, the back-button worked, but then logging out of the site
did not work. I had thought that session.cache_limiter was something that
should be enabled, but finally found today that turning it off (by setting it
to '') fixed both these problems. So now the question for me is, when would
anybody ever want to use session.cache_limiter? I was hating Php because of
this problem.
===============================================================================
Be careful using session_cache_limiter() with ob_start('ob_gzhandler')
If ob_start('ob_gzhandler') is called after session_cache_limiter() it seems to
overwrite cache control headers with 'nocache' equivalent.
So always put ob_start first.
===============================================================================
session_cache_limiter ('private, must-revalidate');
$cache_limiter = session_cache_limiter();
//
session_cache_expire(60); // in minutes
session_start() ;
?>
If i do not set must-revalidate, IE seems to cache session variables without
refreshing them
If i post a form then it refreshes the variables
Firefox does not have this problem
So, be sure to use must-revalidate
===============================================================================
I played about an hour with the download and sessions. yes, to work you'll need
session_cache_limiter("must-revalidate"); but this BEFORE session_start() if
you want that your download start [IE problem]. Hope someone will need this
someday ...
===============================================================================
I had a similair problem (browsers couldn't save files coming from my
download-script). Only in my case the problem occured with IE 6.0 and Netscape
7.1. Adding the "session_cache_limiter('public');" before "session_start();"
helped.
===============================================================================
The problems people mention about IE are actually a feature!
Microsoft Knowledge Base Article 316431 says:
In order for Internet Explorer to open documents in Office (or any
out-of-process, ActiveX document server), Internet Explorer must save the file
to the local cache directory and ask the associated application to load the
file by using IPersistFile::Load. If the file is not stored to disk, this
operation fails.
When Internet Explorer communicates with a secure Web site through SSL,
Internet Explorer enforces any no-cache request. If the header or headers are
present, Internet Explorer does not cache the file. Consequently, Office cannot
open the file.
They say this applies to:
Microsoft Internet Explorer 5.5 for Windows 2000
Microsoft Internet Explorer 5.01 for Windows 2000
Microsoft Internet Explorer version 6 for Windows 2000
not sure about other versions!
hth
nickyboy
===============================================================================
Hey! NickyBoy was right!
I looked all over google and his note was the only place that had it right.
But, there's a caveat.
I wrote up my results here:
http://www.phord.com/experiment/cache/
===============================================================================
but i have problem in same browser i have login with diff users in same project
but last logged user overwrite with all other user log in how to prevent this


Capturing refers to the process of obtaining a signal from outside the computer. A common application of audio capture is recording, such as recording the microphone input to a sound file. However, capturing isn't synonymous with recording, because recording implies that the application always saves the sound data that's coming in. An application that captures audio doesn't necessarily store the audio. Instead it might do something with the data as it's coming in — such as transcribe speech into text — but then discard each buffer of audio as soon as it's finished with that buffer.
As discussed in Overview of the Sampled Package, a typical audio-input system in an implementation of the Java Sound API consists of:
Commonly, only one input port can be open at a time, but an audio-input mixer that mixes audio from multiple ports is also possible. Another scenario consists of a mixer that has no ports but instead gets its audio input over a network.
The TargetDataLine
interface was introduced
briefly under
The Line Interface Hierarchy.
TargetDataLine
is directly analogous to the SourceDataLine
interface, which was discussed extensively in
Playing Back Audio.
Recall that the SourceDataLine
interface consists of:
write
method to send audio to the mixeravailable
method to determine how much data can be written
to the buffer without blocking
Similarly, TargetDataLine
consists of:
read
method to get audio from the mixeravailable
method to determine how much data can be read from
the buffer without blockingThe process of obtaining a target data line was described in Accessing Audio System Resources but we repeat it here for convenience:
TargetDataLine line; DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); // format is an AudioFormat object if (!AudioSystem.isLineSupported(info)) { // Handle the error ... } // Obtain and open the line. try { line = (TargetDataLine) AudioSystem.getLine(info); line.open(format); } catch (LineUnavailableException ex) { // Handle the error ... }
You could instead invoke Mixer's
getLine
method, rather than AudioSystem's
.
As shown in this example, once you've obtained a target
data line, you reserve it for your application's use by invoking the SourceDataLine
method open
, exactly as was described in the case of a source data
line in
Playing Back Audio.
The single-parameter version of the open
method causes the line's
buffer to have the default size. You can instead set the buffer size according
to your application's needs by invoking the two-parameter version:
void open(AudioFormat format, int bufferSize)
Once the line is open, it is ready to start capturing data, but it isn't active yet. To actually commence the audio capture, use the DataLine
method start
. This begins delivering input audio data to the line's buffer for your application to read. Your application should invoke start only when it's ready to begin reading from the line; otherwise a lot of processing is wasted on filling the capture buffer, only to have it overflow (that is, discard data).
To start retrieving data from the buffer, invoke TargetDataLine's
read method:
int read(byte[] b, int offset, int length)
length
bytes of data into the array b
, starting at the byte position offset
in the array. The method returns the number of bytes actually read.
As with SourceDataLine's write
method, you can request more data than actually fits in the buffer, because the method blocks until the requested amount of data has been delivered, even if you request many buffers' worth of data.
To avoid having your application hang during recording, you can invoke the read method within a loop, until you've retrieved all the audio input, as in this example:
// Assume that the TargetDataLine, line, has already // been obtained and opened. ByteArrayOutputStream out = new ByteArrayOutputStream(); int numBytesRead; byte[] data = new byte[line.getBufferSize() / 5]; // Begin audio capture. line.start(); // Here, stopped is a global boolean set by another thread. while (!stopped) { // Read the next chunk of data from the TargetDataLine. numBytesRead = line.read(data, 0, data.length); // Save this chunk of data. out.write(data, 0, numBytesRead); }
Notice that in this example, the size of the byte array into which the data is read is set to be one-fifth the size of the line's buffer. If you instead make it as big as the line's buffer and try to read the entire buffer, you need to be very exact in your timing, because data will be dumped if the mixer needs to deliver data to the line while you are reading from it. By using some fraction of the line's buffer size, as shown here, your application will be more successful in sharing access to the line's buffer with the mixer.
The read
method of TargetDataLine
takes three arguments: a byte array, an offset into the array, and the number of bytes of input data that you would like to read. In this example, the third argument is simply the length of your byte array. The read
method returns the number of bytes that were actually read into your array.
Typically, you read data from the line in a loop, as
in this example. Within the while
loop, each chunk of retrieved
data is processed in whatever way is appropriate for the applicationhere,
it's written to a ByteArrayOutputStream
. Not shown here is the
use of a separate thread to set the boolean stopped
, which terminates
the loop. This boolean's value might be set to true
when the user
clicks a Stop button, and also when a listener receives a CLOSE
or STOP
event from the line. The listener is necessary for CLOSE
events and recommended for STOP
events. Otherwise, if the line
gets stopped somehow without stopped being set to true
, the while
loop will capture zero bytes on each iteration, running fast and wasting CPU
cycles. A more thorough code example would show the loop being re-entered if
capture becomes active again.
As with a source data line, it's possible to drain or flush a target data line. For example, if you're recording the input to a file, you'll probably want to invoke the drain
method when the user clicks a Stop button. The drain
method will cause the mixer's remaining data to get delivered to the target data line's buffer. If you don't drain the data, the captured sound might seem to be truncated prematurely at the end.
There might be some cases where you instead want to flush the data. In any case, if you neither flush nor drain the data, it will be left in the mixer. This means that when capture recommences, there will be some leftover sound at the beginning of the new recording, which might be undesirable. It can be useful, then, to flush the target data line before restarting the capture.
Because the TargetDataLine
interface extends
DataLine
, target data lines generate events in the same way source
data lines do. You can register an object to receive events whenever the target
data line opens, closes, starts, or stops. For more information, see
the previous discussion of
Monitoring a Line's Status.
Like some source data lines, some mixers' target data lines have signal-processing controls, such as gain, pan, reverb, or sample-rate controls. The input ports might have similar controls, especially gain controls. In the next section, you'll learn how to determine whether a line has such controls, and how to use them if it does.


Users List
Username
Roles
Enabled
Locked
Expired
Edit
username
roles
enabled
locked
expired
Edit
Edit Roles


AppLSAC: Browser as Runtime Environment of WebApps
Load Files into JSON:
Add the following files to the JSON:
the AFrame library as first file e.g. select js/aframe-v1.0.4.js
then adde the CSS file for the generated HTML file e.g. select css/main.css
All loaded files e.g. the AFrame-library will be added to the exported file files4json.js
which contains your files as base64 encoded files.
After adding the files above save the generated file to db/files4json.js.
This file is used by the AppLSACload_images2zip.html.


An app that takes in user input and provides restaurant suggestions.
See the Code | View the App
NPR News scraping website where users can save articles and comment on them.
See the Code | View the App
Click-Away is a Parks and Recreation show themed memory game.
See the Code | View the App
A game that lets you add burders and devour them - shows data persistence.
See the Code | View the App
An app that lets you search, save, and play TV show themed gifs.
See the Code | View the App


Jordan Nelson
Videography, photography, digital media management
Home
Video Reel
Photography Portfolio
Social Media
Add Me on LinkedIn
Video Reel
Check out my latest work on Vimeo
Photography Portfolio
Here's my latest photo work
Here are links to my social channels
Feel free to add me on any network!


Mayor worries of 'mob violence' in Surrey, B.C., as police investigate video
SURREY, B.C. - The mayor of Surrey, B.C., says he's deeply concerned about "mob violence" happening in his city after a video circulated online that shows a group of young men fighting and damaging a vehicle.
A statement from Doug McCallum says it's the second such video that has been circulated online since August capturing people brawling and it's imperative that RCMP take immediate action.
Mounties also issued a statement Friday confirming they have been investigating the video since Monday when police received two reports related to an assault with a weapon and vandalism to property in a city parking lot.
Police say their investigation expanded since police received a copy of a video on Thursday.
Cpl. Elenore Sturko says while the incident and video are disturbing, the video's wide distribution could potentially help police further their investigation and identify those involved.
The dark video shows many people carrying wooden or metal weapons and using them to smash a vehicle and assault the driver who stepped out to confront the crowd.
This report by The Canadian Press was first published Nov. 15, 2019.


Drag from the left collection and drop into the right collection. This is somehow equivalent to a cut operation
Drag from the left collection and drop into the right collection. This is somehow equivalent to a copy operation
Drag and drop the items to reorder them


RESUME
SKILLS
PROJECTS
CONTACT ME
Hi.
I'm Kevin. A self-taught
Front-End Developer
with an Environmental Engineering and Electrical Engineering background.
Skills
Projects
Project 1
Project 2
Project 3
Project 4
Project 5
BACK TO TOP


- A Message from Warren E. Buffet
- News ReleasesUpdated August 10, 2015
- Annual & Interim ReportsUpdated August 7, 2015
- Warren Buffetts Letters to Berkshire ShareholdersUpdated February 28, 2015
- Special Letters From Warren & Charlie RE:Past, Present and Future
- Charlie Mungers Letters to Wesco Shareholders
- Link to SEC Filings
- Annual Meeting Information
- Links to Berkshire Subsidiary Companies
- Celebrating 50 Years of a Profitable Partnership(A commemorative book first sold at the 2015 Annual Meeting and now for sale on eBay.)
- Corporate Governance
- Comparative Rights and Relative Prices of Class A and B Stock
- Owners Manual
- Berkshire Activewear
- Letters from Warren E. Buffett Regarding Pledges to Make Gifts of Berkshire Stock


<floverdevel> 🙋🏻♂ Clean coder 🙋🏻♂ Automate all the things 👉🏻 I’m currently working on the Tab Finder Google Chrome extension </floverdevel>
<floverdevel> 🙋🏻♂ Clean coder 🙋🏻♂ Automate all the things 👉🏻 I’m currently working on the Tab Finder Google Chrome extension </floverdevel>


Sathya Technologies Courses
C#
Beginer
ASP.NET
New
C
Advanced
C++
Normal
Gmail
Inbox
20
Spam
10
Trash
34
Sent
70


test
Gain access to our full library of tutorials along with expert code reviews. Perfect for any developers who are serious about honing thier skills
$29 per month Full access for less than $1 a day
Sign Up


Advanced Configuration Features¶
Documentation of current Particle Cloud Framework features
- Multiplier
- Inherit Parent Variables
- Base Config
- Lookup
- Callback
- Update Protection
- Termination Protection
- Rollback
Multiplier¶
The multipler lets you easily create multiple instances of the same resource. This can be used in any quasiparticle and will create copies of the same particle with the unique keys being indexed from -0 to whatever multiplier you specify.
This is an example of how to use multipler to create 3 ec2 instances with names multi-name-0 , multi-name-1 , multi-name-2
quasiparticle_definition = {
"pcf_name":"multi_ec2",
"flavor":"quasiparticle",
"particles":[
{
"flavor":"ec2_instance",
"multiplier":3
"aws_resource": {
...
custom_config:{
"instance_name":"multi-name"
}
}
}
}
Inherit Parent Variables¶
In quasiparticles some particles may require certain variables from their parents to run. Variables can be dynamically passed to a parent’s child by using the notation $inherit$particle_type:pcf_name$variable. Any variable that in the parent’s current definition can be passed. If it is a nested variable then you can use . to signify nested. For example variable.nested_variable
For example a PrivateIpAddress can be passed to the child’s userdata as a param.
example_definition = {
"pcf_name": "pcf-example",
"flavor": "distributed_master_worker",
"particles":[{
"flavor": "ec2_instance",
"pcf_name": "parent-ec2",
"aws_resource": {
...
}
},
{
"flavor": "ec2_instance",
"pcf_name": "child-ec2",
"aws_resource":{
"custom_config": {
...
"userdata_params": {
"parentIP":"$inherit$ec2_instance:parent-ec2$PrivateIpAddress"
}
},
}
}
]
}
Base Config¶
If you have similar particles with only a few differences in a quasiparticle, you can use the base_particle_config flag to grab all configurations from another particle already defined in the quasiparticle. This flag takes in the pcf_name of the base particle.
For example, if you have multiple ec2 instances, but what them to share the same sg’s but want to change the instance size, you can use the flag and only override the instance param.
example_definition = {
"pcf_name": "pcf-example",
"flavor": "distributed_master_worker",
"particles":[{
"flavor": "ec2_instance",
"pcf_name": "base-ec2",
"aws_resource": {
...
"InstanceType": "t2.nano",
"KeyName": "key",
"SecurityGroupIds": [
"sg-abcd1234",
"sg-abcd2345",
],
"SubnetId": "subnet-abdc1234",
}
},
{
"flavor": "ec2_instance",
"pcf_name": "child-ec2",
"base_particle_config": "base-ec2",
"aws_resource":{
...
"InstanceType": "m3.medium",
}
}
]
}
Lookup¶
Lookup allows you to get id’s for resources by their names. In the particle definition, set the value of the id field to $lookup$(resource type)$(resource names)
When there is a list of names (security groups), separate them using :
As of now only an AWS lookup for SnapshotId, ResourceName, ImageId, SecurityGroupIds, Ami, and SubnetId are implemented.
For Ami, either “instance-profile” or “role” must be set in the (resource names) and appended by : and name.
particle_definition = {
"pcf_name": "pcf-example",
"flavor": "ec2_instance",
"aws_resource": {
"custom_config":{
"instance_name": "gg-instance",
},
"BlockDeviceMappings": [
{
"Ebs": {
"SnapshotId": "$lookup$snapshot$ami-build"
}
}
],
"InstanceType": "m4.large",
"KeyName": "secret-key",
"MaxCount": 1,
"MinCount": 1,
"SecurityGroupIds": "$lookup$security_groups$test_sg:test_sg2",
"SubnetId": "$lookup$subnet$public",
"IamInstanceProfile": {
"Arn": "$lookup$iam$instance-profile:InstanceProfile-Default"
},
"InstanceInitiatedShutdownBehavior": "stop",
"tags": {
"Test": "Tag"
}
}
}
Callback¶
Callbacks can be used to run a function after a state transition is triggered.
Parameters are passed to the function as a dictionary, as shown in the example
def example_start_callback():
print("callback triggered after start")
def example_terminate_callback(text):
print(text)
ec2_instance_example_json = {
"pcf_name": "ec2-example",
"flavor": "ec2_instance",
"callbacks": {
"start": {"function": example_start_callback},
"terminate": {"function": example_terminate_callback, "kwargs": {"text": "terminate"}}
}
}
Termination Protection¶
Termination protection is a flag that can be set for particles in a quasipaerticle. This allows for you to set the desired state of the quasiparticle to terminated and get to that state while still having resources you need to be persisted. For example, you may have a db as a parent and want terminate all other particles. You can set persist_on_terminate flag to true for the db particle and then simply terminate the quasiparticle.
example_definition = {
"pcf_name": "persist_rds_example",
"flavor": "quasiparticle",
"particles":
[
{
"flavor": "rds_instance",
"pcf_name": "rds-persist",
"persist_on_terminate": True,
"aws_resource": {
...
}
},
{
"flavor": "ec2_instance",
"pcf_name": "child-ec2",
"aws_resource":{
...
}
}
]
}
Update Protection¶
Update protection is a flag that can be set for particles. This prevents your particles from updating if the desired definition becomes different than the current definition. This is particularly useful for particles that maintain state and you don’t want an update to accidentally trigger an update causing a loss of state. To enable this feature set persist_on_update to True
example_definition = {
"pcf_name": "prevent_update",
"flavor": "particle",
"persist_on_update":True
Rollback¶
You can set the rollback flag to True when calling a quasiparticle apply, this will trigger if a particle fails to provision and will terminate all previously created particles. Rollback is set to False by default.
rollback_quasiparticle.apply(rollback=True)


--- title: "COVID-19 and R Part X" author: "Drew Tyre" date: "2020-03-26" output: word_document: default html_document: code_folding: hide draft: no slug: COVID-19_and_R_X tags_include: - R - OPD - COVID19 categories: Research og_image: /post/covid-19_in_r_x_files/figure-html/featured_image-1.png ---
Today’s post represents a complete reset, because the data structures at the JHU repository changed Monday and haven’t fully settled down yet. Country level data are good; they haven’t got state level data for the USA anymore. Germany seems to be #flatteningthecurve. USA, Australia, and Canada are still on exponential growth curves.
The first post in this series was a week and a half ago, in case you’re just joining and want to see the progression.
EDIT 2020-10-14: Prof. Niko Speybroeck pointed out I’d made an error in the derivative (left out a minus sign) and copy/pasted the wrong df for the confidence limits in the first plot. No changes to the conclusions though. All fixed now! Thanks!
DISCLAIMER: These unofficial results are not peer reviewed, and should not be treated as such. My goal is to learn about forecasting in real time, how simple models compare with more complex models, and even how to compare different models.1
The figure below is complex, so I’ll highlight some features first. The y axis is now Active and Recovered cases / 100,000 population to make it easier to compare locales. The SOLID LINES are exponential growth models that assume the rate of increase is constant. The dashed lines are predictions from that model. The red rectangle shows the range of ICU bed capacity per 100,000 population in each country. The lower limit assumes all reported cases need ICU care (unlikely, but worst case). The top of the rectangle assumes only 5% of cases need ICU support. That best case assumes that the confirmed cases are a good representation of the size of the outbreak (also unlikely, unfortunately). Note that the y axis is logarithmic. The x axis is now days since the 100th case in each country.
The most obvious feature on this plot is how the growth in cases is slowing in Germany. They are pulling this off with a massive testing effort that started early, in addition to getting people to move less. They are also reporting a very low death rate. Day 0 on this plot is the start of March for USA and Germany, and about March 10 for Canada and Australia.
If you’ve been following my earlier posts on the topic, you might notice that the prediction intervals on this figure are much, much narrower than previous plots. I’ve switched to plotting the cumulative “Active and Recovered” cases from the number of new cases per day. The variation (scatter around the line) is much smaller for the cumulative cases than new cases per day. That has two effects. First, the estimates of the growth rate become much more precise. Second, the smaller variability around the line directly reduces the variance of each future observation. These intervals are ignoring the correlation between one day and the next, so they are too narrow, but given that I am looking for the points to fall outside the intervals this is a conservative choice.
The other thing to remember is country level totals are obscuring significant variation, especially in the USA. Some states are already deep in the red zone (Louisiana, New York), while others like Nebraska have yet to show exponential growth. I don’t have up to date state level data to show this here, but hope to fix that soon.
The “recovered” data from JHU are full of missing values and other issues, because those numbers are not being reported consistently. I’ve calculated “Active and recovered” by subtracting deaths from confirmed cases. This is an overestimate of the load on the health care system, because people that recover are no longer a burden. Right now the number of recovered cases is low relative to new cases, but as the epidemic develops “Active and Recovered” will be worse as a estimate of health care burden.
Jessica Burnett asked for regression statistics to be on each panel. That might be TMI for most people, but I could calculate the doubling time and add that to the plot.
\[ \begin{align} y_{t} = & y_{0}10^{bt} \\ 2y_{0} = & y_{t}10^{bt} \\ 2 = & 10^{bt} \\ t = & log_{10}(2)/b \end{align} \]
So I need to extract the slope estimate \(b\) from each regression. First fit all those models. This is the same code used for the figure above2.
library("tidyverse")
library("lubridate")
library("broom")
savefilename <- "data/jhu_wide_2020-03-26.Rda"
# The following code is commented out and left in place. This isn't particularly good coding
# practice, but I don't want to have to rewrite it every day when I get the updated data.
# I archive the data rather than pull fresh because this data source is very volatile, and
# data that worked with this code yesterday might break today.
# jhu_url <- paste("https://raw.githubusercontent.com/CSSEGISandData/",
# "COVID-19/master/csse_covid_19_data/",
# "csse_covid_19_time_series/time_series_covid19_",sep = "")
#
# jhu_confirmed_global <- read_csv(paste0(jhu_url,"confirmed_global.csv")) # just grab it once from github
# jhu_deaths_global <- read_csv(paste0(jhu_url,"deaths_global.csv")) # just grab it once from github
# jhu_recovered_global <- read_csv(paste0(jhu_url,"recovered_global.csv")) # just grab it once from github
# # archive it!
# save(jhu_confirmed_global, jhu_deaths_global, jhu_recovered_global, file = savefilename)
load(savefilename)
country_data <- read_csv("data/countries_covid-19_old.csv") %>%
mutate(start_date = mdy(start_date))
only_country_data <- filter(country_data, is.na(province))
source("R/jhu_helpers.R")
# different data sources use different abbreviations for USA, and it is making me crazy.
countries <- c("US", "Australia", "Germany", "Canada")
countries2 <- c("United States", "Australia", "Germany", "Canada")
# Take the wide format data and make it long
all_country <- list(
confirmed = other_wide2long_old(jhu_confirmed_global, countries = countries),
deaths = other_wide2long_old(jhu_deaths_global, countries = countries)
# recovered data is a mess lots of missing values
# recovered = other_wide2long(jhu_recovered_global, countries = countries)
) %>%
bind_rows(.id = "variable") %>%
pivot_wider(names_from = variable, values_from = cumulative_cases) %>%
# roll up to country level
group_by(country_region, Date) %>%
summarize(cumulative_confirmed = sum(confirmed),
cumulative_deaths = sum(deaths)) %>%
group_by(country_region) %>%
mutate(incident_cases = c(0, diff(cumulative_confirmed)),
incident_deaths = c(0, diff(cumulative_deaths)),
active_recovered = cumulative_confirmed - cumulative_deaths) %>%
left_join(only_country_data, by = "country_region") %>%
mutate(icpc = incident_cases / popn / 10,
arpc = active_recovered / popn / 10,
group = country_region,
date_100 = Date[min(which(cumulative_confirmed >= 100))],
day100 = as.numeric(Date - date_100)) %>%
ungroup() %>%
mutate(country_region = factor(country_region, levels = countries))
# recreate this adding date_100
only_country_data <- all_country %>%
group_by(country_region) %>%
summarize(date_100 = first(date_100),
popn = first(popn),
icu_beds = first(icu_beds)) %>%
mutate(max_icu_beds = icu_beds * 20,
start_day = 0,
end_day = 28)
all_models <- all_country %>%
mutate(log10_ar = log10(active_recovered)) %>%
filter(day100 <= 13, day100 >= 0) %>% # model using first 2 weeks of data
group_by(country_region) %>%
nest() %>%
mutate(model = map(data, ~lm(log10_ar~day100, data = .)))
all_fit <- all_models %>%
mutate(fit = map(model, augment, se_fit = TRUE),
fit = map(fit, select, -c("log10_ar","day100"))) %>%
select(-model) %>%
unnest(cols = c("data","fit")) %>%
mutate(fit = 10^.fitted,
lcl = 10^(.fitted - .se.fit * qt(0.975, df = 12)),
ucl = 10^(.fitted + .se.fit * qt(0.975, df = 12)),
fitpc = fit / popn / 10,
lclpc = lcl / popn / 10,
uclpc = ucl / popn / 10)
#all_predicted <- all_by_province %>%
all_predicted <- cross_df(list(country_region = factor(countries, levels = countries),
day100 = 14:28)) %>%
# mutate(day = as.numeric(Date - start_date)) %>%
# filter(day > 12) %>% #these are the rows we want to predict with
group_by(country_region) %>%
nest() %>%
left_join(select(all_models, country_region, model), by="country_region") %>%
mutate(predicted = map2(model, data, ~augment(.x, newdata = .y, se_fit = TRUE)),
sigma = map_dbl(model, ~summary(.x)$sigma)) %>%
select(-c(model,data)) %>%
unnest(cols = predicted) %>%
ungroup() %>%
left_join(only_country_data, by = "country_region") %>%
mutate(
Date = date_100 + day100,
country_region = factor(country_region, levels = countries), # use factor to modify plot order
fit = 10^.fitted,
All the model objects are in a “list column” called model
. So now map()
with broom::tidy()
should
give us what we want.
all_models %>%
mutate(estimates = map(model, tidy)) %>%
unnest(cols = estimates) %>% # produces 2 rows per country, (intercept) and day100
filter(term == "day100") %>%
select(country_region, estimate, std.error) %>%
knitr::kable(digits = 3)
| country_region | estimate | std.error |
|---|---|---|
| Australia | 0.095 | 0.002 |
| Canada | 0.109 | 0.003 |
| Germany | 0.118 | 0.004 |
| US | 0.126 | 0.002 |
OK, so that’s what we want. However, one of my pet peeves is estimates/predictions without uncertainty
attached. So I also want to put confidence limits around the doubling time, and to do that I need
the variance of the doubling time. I have the variance (std.error^2
) of the rate of growth.
I can use the Delta method to approximate the variance of doubling time. Everything I know about
the Delta method I learned from Larkin Powell.
He wrote an awesome how-to for the Delta method.
\[ var(\hat t) = var(\hat b)\left[\frac{\partial\hat t }{\partial \hat b}\right]^2 \\ \frac{\partial\hat t }{\partial \hat b} = -\frac{log_{10}2}{b^{2}} \\ var(\hat t) = var(\hat b)\frac{log_{10}2^2}{b^{4}} \]
doubling_times <- all_models %>%
mutate(estimates = map(model, tidy)) %>%
unnest(cols = estimates) %>% # produces 2 rows per country, (intercept) and day100
filter(term == "day100") %>%
select(country_region, estimate, std.error) %>%
mutate(var_b = std.error^2,
t = log10(2) / estimate,
var_t = var_b * log10(2)^2 / estimate^4,
lcl_t = t - sqrt(var_t)*qt(0.975, 12),
ucl_t = t + sqrt(var_t)*qt(0.975, 12),
label = sprintf("%.2f (%.2f, %.2f)", t, lcl_t, ucl_t))
doubling_times %>%
select(country_region, label) %>%
knitr::kable()
| country_region | label |
|---|---|
| Australia | 3.16 (2.99, 3.33) |
| Canada | 2.77 (2.62, 2.91) |
| Germany | 2.56 (2.35, 2.76) |
| US | 2.38 (2.30, 2.47) |
Now make the plot, adding that in with a custom labelling function for the facets.
facet_labels <- doubling_times %>%
mutate(label = paste0(country_region,", doubling time [days (95% CL)]: ", label)) %>%
pull(label)
names(facet_labels) <- pull(doubling_times, country_region)
ggplot(data = filter(all_country, day100 >= 0),
mapping = aes(x = day100)) +
geom_point(mapping = aes(y = arpc, color = country_region)) +
facet_wrap(~country_region, dir="v", labeller = labeller(country_region = facet_labels)) +
scale_y_log10() +
theme(legend.position = "none",
legend.title = element_blank()) +
geom_line(data = all_fit,
mapping = aes(y = fitpc, color = country_region),
size = 1.25) +
geom_ribbon(data = all_fit,
mapping = aes(ymin = lclpc, ymax = uclpc),
alpha = 0.2) +
geom_line(data = all_predicted,
mapping = aes(y = fitpc, color = country_region),
linetype = 2) +
geom_ribbon(data = all_predicted,
mapping = aes(ymin = lplpc, ymax = uplpc),
alpha = 0.2) +
geom_rect(data = only_country_data,
mapping = aes(x = start_day, xmin = start_day, xmax = end_day, ymin = icu_beds, ymax = icu_beds * 20),
fill = "red", alpha = 0.2) +
labs(y = "Active and Recovered cases per 100,000 population", title = "Active and Recovered cases by days since 100th case",
x = "Days since 100th case",
subtitle = "Solid line: exponential model; Dashed line: forecast cases with 95% prediction intervals.",
caption = paste("Source data: https://github.com/CSSEGISandData/COVID-19 downloaded ",
format(file.mtime(savefilename), usetz = TRUE),
"\n Unofficial, not peer reviewed results.",
"\n Copyright Andrew Tyre 2020. Distributed with MIT License.")) +
geom_text(data = slice(only_country_data, 1),
mapping = aes(y = 1.4*icu_beds),
x = 0, #ymd("2020-03-01"),
label = "# ICU beds / 100K",
size = 2.5, hjust = "left") +
geom_text(data = slice(only_country_data, 1),
mapping = aes(y = 20*icu_beds),
x = 0, #ymd("2020-03-01"),
label = "# 20 times ICU beds / 100K",
size = 2.5, hjust = "left", vjust = "top")
Woo! Keep in mind that’s based on the first two weeks after the 100th case, so in Germany the doubling time is currently increasing. Australian cases are growing the slowest, doubling about every 3 days. The initial growth rates in Germany and the USA might not be different (overlapping confidence limits).
So that’s enough for today. Hopefully this will quiet the peanut gallery (inside joke, sorry). Tomorrow I’ll try to find a dataset that includes states.


Depei Zhang
P2: LC746. Min Cost Climbing Stairs
Leetcode runtime & memory (cpp): 4 ms (98.33%) & 8.7 MB
Solution:
P4: LC1143. Longest Common Subsequence
Leetcode runtime & memory (cpp): 12 ms (88.76%) & 14.8 MB
Solution:
P5: LC1092. Shortest Common Supersequence
Leetcode runtime & memory (cpp): 16 ms (86.78%) & 15.5 MB
Solution:


***1/2 out of ****
Year: 1999 Starring Jim Carrey, Danny DeVito, Courtney Love, Paul Giamatti, Vincent Schiavelli, Peter Bonerz, Jerry Lawler, Gerry Becker, Leslie Lyles Written by Scott Alexander and Larry Karaszewski Directed by Milos Forman Rated R
Perhaps the best question to ask of a biographical film on the late comedian Andy Kaufman is whether or not it finds Kaufman's true essence, if it helps you discover what Andy was really like. It is indeed ironic that "Man on the Moon" does exactly the opposite-and may be better off for it. Milos Forman's biopic on the mercurial performer doesn't claim to get a handle on what made Kaufman tick. It offers up suggestions and possibilities, but can't quite arrive at a conclusion. Why might this be a good thing? Because "Man on the Moon" has few pretensions. The film doesn't take one tack on Andy Kaufman and call it the ultimate truth; rather, it explains his ultimate mystery. No one knew who Andy was, not even his closest friends. What "Man on the Moon" displays is how Kaufman's comedy affected others, his friends, co-workers, and audiences. Aided by an astonishing performance by Jim Carrey in the lead role, Forman's rendition of this is impressively entertaining and strangely affecting.
Carrey plays Andy Kaufman, the late comedian whose life "Man on the Moon" chronicles. The film shows Andy as a showman from the start, "performing" to the characters on the wallpaper of his childhood bedroom. We then flash forward to Andy as a young man, performing in local nightclubs. Told by one owner that he must do a more conventional act, Andy replies he doesn't want to go for cheap laughs and refuses to merely "tell jokes." He gets his break when he goes on stage pretending to be a shy foreign man bumbling through his act-until he launches into a smashing Elvis impersonation that thoroughly impresses talent scout George Shapiro (Danny DeVito), who lands him appearances on "Saturday Night Live" and a plum role on the TV sitcom "Taxi" doing his foreign-man shtick as Latka, the lovable mechanic. Kaufman, however, treats his regular job almost as a chore, merely a vehicle he can use to pursue more creative endeavors. With the help of his friend and writing partner Bob Zmuda (Paul Giamatti) and eventual girlfriend (who meets Andy initially by accepting his challenge to a wrestling match) Lynne Marguiles (Courtney Love), Andy creates the repulsive lounge singer character Tony Clifton (for whom Andy demands appearances on "Taxi," with disastrous results), fools with the sketch-comedy show "Fridays," takes up pro wrestling as "Inter-gender Champion," getting into a fight with fan-favorite Jerry Lawler, and plays Carnegie Hall. Kaufman's life was tragically cut short in 1984 by a rare form of lung cancer. He was 35.
"Man on the Moon" clearly leans on how well Carrey performs in the lead role, and fortunately, he is fantastic. For a lifelong comedian who has spent almost his entire career mugging for the camera, this is an impressive accomplishment. Carrey truly embodies the character and spirit of Andy Kaufman. It's hard to explain. Certainly the actor does a fine job of imitating Kaufman's stunts. His Clifton impression is dead-on, his SNL "Mighty Mouse" singalong could easily be mistaken for the real thing, and his "feud" with Lawler that came to a head on David Letterman's "Late Night" is surprisingly convincing. But that's all imitation-impressive, but not indicative of a real performance. What Carrey really does well is to convince the audience that they are not watching a Jim Carrey movie. Without a doubt, we are always watching a movie about Andy Kaufman, not a movie about Jim Carrey playing Andy Kaufman. This is a real leap for Carrey. His star vehicles ("Ace Ventura," "The Mask," "Dumb and Dumber") were exactly that: means for Carrey to show off, whether you found him amusing or not. "The Truman Show" gave us some sign of him breaking out of this rut, but it was still a role that required him to mug, since he was playing a famous TV star whose life has been constructed to get precisely those reactions out of him. Here, he cannot do his usual act. He must convincingly embody another person. For my money, he did as good a job as anyone could have done.
The supporting performers turn in solid turns as Kaufman's closest companions. DeVito comes off well as George Shapiro, though the role seems to hamper the later recreation of "Taxi" scenes, since he can't reprise his part on that show. I liked seeing Paul Giamatti as Bob Zmuda. The man is a talented character actor who does more good work here. Courtney Love's part is surprisingly small, almost to the point of becoming the dreaded Superfluous Love Interest. To her credit, Love doesn't overact and doesn't distract, accepting her limited role gracefully. What could have been a major annoyance barely registers. Several star cameos show up in reenactments of Kaufman's antics. Judd Hirsch, Marilu Henner, Christopher Lloyd, and Carol Kane make appearances as "Taxi" cast members. Real former pro wrestler and current broadcaster Jerry Lawler appears in a rather large part, and does fairly good screen work, to my surprise. A scene where he and Kaufman explain their act to George Shapiro is priceless. Current WWF commentator Jim Ross also appears, to no one's surprise, as a wrestling announcer. Along to recreate the "Late Night" fight are Letterman himself and bandleader Paul Shaffer. SNL producer Lorne Michaels also plays himself. Seeing these now more grizzled stars playing younger versions of themselves is a bit jarring at first, but not hard to get used to.
"Man on the Moon" refuses to be a conventional biopic. Many will go into the film expecting to get some kind of great insight into Kaufman's life. Why was he the way he was? Why did he choose to pursue such a career, and why did that career take such unusual turns? "Man on the Moon" doesn't know. It doesn't claim to know. In many other films, this could be seen as a cop-out, but Forman's film is not, because it explains exactly why this approach has been taken. There are several telling exchanges between Kaufman and his business partners, friends, and lover. When Lynne tells Andy "There is no real you," the film's vision has become clear. No one knew who Andy Kaufman was. If you're looking for insight into that, you've come to the wrong place. What "Man on the Moon" claims is that Andy was all out there in his performances, but you had to figure out where that was.
Andy was not a comedian; he was a showman, a man seeking to get people's attention, to see their reaction to his performances. Some got it, some didn 't, and if you're going to appreciate his brand of "comedy," you had to first understand what he was trying to do. Explaining this is where "Man on the Moon" really succeeds, because it starts out with perhaps the most clever opening of the year: Carrey comes out, brandishing Kaufman's wide-eyed stare and tells the people in his Latka voice that since so much of it was false, he had to cut the movie so much that there was no movie left. He then plays his mini record player and begins rolling the credits. After a bit of silence, Andy returns and says that was to clear out all the people who wouldn't understand. This is Forman's way of letting you know that this will be a story told on Andy's terms, not one to give us a sentimental picture of his life, but one that will leave us guessing. Andy often had people so turned around that they didn't know if he was performing or being serious. When he read "The Great Gatsby" in its entirety to a theater full of rowdy college students, only those who stuck around really "got" the joke. Not many cast members got the joke when Tony Clifton trashed the "Taxi" set. Not many women got the joke when he put himself up as a misogynist wrestler. Even when he was diagnosed with cancer, no one believed him.
Likewise a whole lot of people won't really get "Man on the Moon." There is sure to be a whole lot of disappointment coming from audiences viewing this film. Some might see it as a mere chronology of Kaufman's life and career, pointless and empty. Others might think Kaufman was a repulsive person, not worthy of having a feature film based on his life. But "Man on the Moon" is really Andy's final performance, his final refusal to play by the rules and give the people what they think is best. The irony here is that everyone who is disappointed with this film, everyone who didn't get what they expected, are those that would be clowned by Andy consistently. So a lot of people are going to dislike Forman's film. So what? George Shapiro complained to Andy after a performance, "They hated you out there." And Andy said just what he' d say about this film: "That means we're a success."
-reviewed by Shay Casey
For more reviews, go to http://www.geocities.com/Hollywood/Land/4252/movies.html
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


Testing 4, 5, 6 7, 8, 9 10, 11, 12 Maybe some line breaks needed?Eh?
Test Another line One more The end


tQuery is a thin library on top of three.js It is an extension system for people to write plugins. To help them share their code and build on top of each other. It mimics jquery api, well know for its usuability. tQuery aims for "it is should not be harder than playing with lego bricks."
Three.js is actively delveloped by a team of skilled developpers. It got various rendering backends, importers for most 3D models format. It efficiently abstracts webgl complexity and provides a wide varieties of 3D objects. It got numberous examples 120+.
jQuery API is widely recognized for its usability. It is chained, instinctive and short. jQuery popularity is around 85% of market share. It shows its API is appealing to most developers. It plugins ecosystem is varied and lively, and contains impressive speciment.
tQuery aims to reproduce the success of jQuery plugin ecosytem by mimicing its API. Thus people who know jQuery will learn tQuery in no time. Thru three.js, they will be be able to reach webgl technology faster than before. Hopefully they will get exited and develop extensions for three.js :)
<!doctype html><title>Minimal tQuery Page</title> <script src="tquery-bundle.js"></script> <body><script> var world = tQuery.createWorld().fullpage().start(); var object = tQuery.createTorus().addTo(world); </script></body>


You will need:
Before you start:
Enter the details for your Tracker / SIM card:
| Tracker IMEI | |
| SIM APN | |
| SIM APN username (not required by all network operators) | |
| SIM APN password (not required by all network operators) | |
| Desired Update Interval (seconds) |
Messages are case sensitive and need to be exactly correct. Copy and paste are your friends!
Using a different phone, send two messages to the SIM card in the tracker:
The first SMS message:
{{ messsage1 }}
The second SMS message:
{{ messsage2 }}


Dating type
First year
Last year
Dating reference
Statistical foundation
Pith year
Death year
Provenance


SNOBOL4IO(1) | CSNOBOL4B 2.0 | January 1, 2015
NAME
snobol4io – SNOBOL4 file I/O
DESCRIPTION
Macro SNOBOL4 originally depended on FORTRAN libraries, unit
numbers and FORMATs for input and output. CSNOBOL4 uses the C
stdio(3) library instead, but unit numbers (INTEGERs between 1 and
256) and record lengths remain embedded in the Macro SNOBOL4 code.
I/O Associations
Output on a closed unit generates a fatal “Output error”,
see snobol4error(1).
The following variable/unit/file associations exist by default;
| Variable | Unit | Association
|
| INPUT | 5 | standard input (input)
|
| OUTPUT | 6 | standard output (output)
|
| TERMINAL | 7 | standard error (output)
|
| TERMINAL | 8 | /dev/tty (input)
|
Named files
Input and output filenames can be supplied to the INPUT() and
OUTPUT() functions via an optional fourth argument.
-
filename - (hyphen)
-
is interpreted as stdin on INPUT() and stdout on OUTPUT().
-
sub-process I/O using PIPE and Pseudo-terminals
-
If the filename begins with single a vertical bar (|),
the remainder is used
as a shell command whose stdin (in the case of OUTPUT()) or stdout
(in the case of INPUT()) will be connected to the file variable via
a pipe. If a pipe is opened by INPUT() input in “update” mode, the
connection will be bi-directional (on systems with socketpair and
Unix-domain sockets). See below for how to associate a variable for
I/O in both directions.
-
-
If the filename begins with two vertical bars (||) the remainder is
used as a shell command executed with stdin, stdout and stderr
attached to the slave side of a pseudo-terminal (pty), if the system C
library contains the forkpty(3) routine. Use of ptys are necessary
when the program to be invoked cannot be run without a "terminal" for
I/O. See below on how to properly associate the I/O variable.
-
magic paths /dev/stdin, /dev/stdout, and /dev/stderr
-
/dev/stdin, /dev/stdout, and /dev/stderr refer to the current
process standard input, standard output and standard error I/O streams
respectively regardless of whether those special filenames exist on
your system.
-
magic path /dev/fd/n
-
/dev/fd/n uses fdopen(3) to open a new I/O stream associated
with file descriptor number n, regardless of whether the special
device entries exist.
-
magic paths /tcp/hostname/service and /udp/hostname/service
-
/tcp/hostname/service can be used to open connection to a TCP
server. If the path ends in the optional suffix /priv the local
address will be bound to a port number below 1024, if process
privileges allow. /udp/hostname/service behaves similarly
for UDP.
-
magic pathname /dev/tmpfile
-
/dev/tmpfile opens an anonymous temporary file for reading and writing, see
tmpfile(3).
-
/dev/null and /dev/tty
-
On non-POSIX systems /dev/null and /dev/tty are magical, and
refer to the null device, and the user's terminal/console,
respectively.
I/O Options
Originally the third argument specified record length for INPUT(),
or a FORTRAN FORMAT for OUTPUT().
CSNOBOL4 interprets it as string of single letter options, commas are ignored.
Some options effect only the I/O variable named in the first argument,
others effect any variable associated with the unit number in the
second argument.
-
digits
-
A span of digits will set the input record length for the named I/O
variable. This controls the maximum string that will be returned for
regular text I/O, and the number of bytes returned for binary I/O.
Record length is per-variable association; multiple variables may be
associated with the same unit, but with different record lengths. The
default record length for input is 1024. Lines longer than the record
length will be silently truncated.
-
A
-
For OUTPUT() the unit will be opened for append access (and ignored by
INPUT()). All writes will occur at the end of the file at the time
of the write, regardless of the file position before the write.
-
B
-
The unit will be opened for binary access. On input, newline
characters have no special meaning; the number of bytes transferred
depends on record length (see above). On output, no newline is
appended.
-
-
For terminal devices, all input from this unit will be done without
special processing for line editing or EOF; the number of characters
returned depends on the record length.
Characters which deliver signals (including interrupt, kill, and suspend)
are still processed. Units (with different fds) opened on the same terminal
device operate independently; some can use binary mode, while others
operate in text mode.
-
C
-
Character at a time I/O. A synonym for B,1.
-
T
-
Terminal mode. Writes are performed “unbuffered” (see below), and
no newline characters are added. On input newline characters are
returned. Terminal mode effects only the referenced unit, and does
not require opening a new file descriptor (ie; by using a magic
pathname): OUTPUT(.TT, 8, "T", "-"). Terminal mode is useful for
outputting prompts in interactive programs.
-
Q
-
Quiet mode. Turns off input echo on terminals.
Effects only input on this file descriptor.
-
U
-
Update mode. The unit is opened for both input and output.
Example of associating a variable for I/O in both directions:
unit = IO_FINDUNIT()
INPUT(.name, unit, 'U', 'filepath')
OUTPUT(.name, unit)
-
-
Useful situations for this when filepath is /dev/fd/n where n
is a file descriptor number returned by SERV_LISTEN(), or
filepath specifies a pipe (|command) or pseudo-terminal
(||command) paths.
-
-
The above sequence is also useful with when combined with fixed record
length, binary mode and the SET() function for I/O to preexisting
files. Performing OUTPUT() first will create a regular file if it
does not exist, but will also truncate a preexisting file!
-
W
-
Unbuffered mode. Each output variable assignment causes an immediate I/O
transfer to occur by direct read(1) or write(1) system calls,
rather than collecting the data in a buffer for efficiency.
Other I/O extensions
-
SERV_LISTEN(), SET(), SSET()
-
see snobol4func(1).
I/O Layers
The Macro SNOBOL4 and POSIX I/O architectures
have subtleties which interact, and are explained here:
-
Variable association
-
Input and output is done by reading or writing variables associated
with a unit number for I/O.
-
-
Input (maximum) record lengths are associated each variable association!
-
Unit number
-
Multiple variables can be associated with the same unit number
using the INPUT() and OUTPUT() functions.
-
-
Each unit number refers to a stdio(3) stream
(except on broken systems like Windows, where socket handles
are incompatible with file handles, and all network I/O
is performed “unbuffered”).
-
-
Sequential named files can be associated with an I/O unit
when the -r option is given on the command line!
REWIND() should return to to after the program END label!
-
“Standard I/O” Stream
-
snobol4(1) performs MOST I/O through “Standard Input/Output”
streams. Multiple units can be associated with the same stdio stream
(FILE struct) using magic pathnames
(“-” and /dev/std{in,out,err}).
Buffering is performed by the stdio layer.
-
Operating System file descriptor
-
More than one stdio stream can be associated with the same O/S “fd”
(by opening magic pathname “/dev/fd/n”).
-
-
Each POSIX “fd” has a file position pointer, changed by
reading, writing and the REWIND(), SET() and SSET() functions.
-
-
Normally terminal device “special files” have one set of
mode settings, but CSNOBOL4 associates (saves and restores) different
terminal settings (echo and the number of characters returned on read)
based on fd numbers.
-
Operating System open file object
-
More than one “fd” slot can be associated with the same “open file”
object, either in multiple forks, or by dup(2) of the same fd.
This is often the case for stdin, stdout and stderr.
-
-
Open file objects have flags which effect all associated fds,
including input, output and append modes.
-
Operating System named file
-
Independent opens of the same named “regular” file will have
different open file objects, and thus have independent access modes
and file positions.
-
-
Terminal devices normally have one set of “line discipline”
mode settings, but CSNOBOL4 maintains different settings for each
file descriptor (see above).
BUGS
This page was cut and pasted from various parts of the original
snobol4(1) man page, and still needs review and cleanup.
All extensions should be annotated with the version they appeared in
(and what other implementations they're compatible or inspired by).
Record lengths.
Unit numbers.
SEE ALSO
snobol4(1)


| DOSE: |
550 mg |
oral |
DXM |
(daily) |
I was born and raised in Detroit, a place where hope doesn't really seem to float very much. It is for this reason that I started using DXM. My entire childhood and teen years were spent in a mostly solitary existence with no friends and two parents who submerged themselves more into their professional lives than anything. Last Christmas I started to use DXM. I was on probation and it seemed like the only substance that I could do without testing positive on my drug screens. No one around me knows that I use DXM and frankly, I'm too embarrassed to say anything about it to anyone.
I'm not really particular about what I take to get high off DXM, mostly I'll just pick whatever product has the most DXM with as little to no other nauseating ingredients. I take DXM before I go to work, school and basically before I go to do anything. I've always been a very depressed person, and have been on several antidepressants and other drugs they use to treat social anxiety. Before I started taking DXM I wore all of my emotions on my sleeve, I was such a sensitive person that I often failed in the workplace or in any situation bound to become mildly competitive. I found that with a bottle of soft gels or a smooth syrup, I could surround myself in just the right amount of fog to make the outside world not matter so much to my heart and soul.
There really isn't much more to say about my history with DXM. I haven't been taking it for more than a year, and I can't say that it has really helped me as much as it has made me unaware of what ails me emotionally and physically. While I'm on DXM, negativity and physical ailments such as migraines, which I used to get on a daily basis, seem to melt away into a space I can't quite put my finger on. Sometimes when I'm exceptionally high I feel as if my entire soul might melt away into that very same space. The person that I used to be has hidden herself way down in here somewhere, underneath the fog, where things just don't hurt as much.
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.


There are two ways to edit a spreadsheet :
1) Edit the data itself, such as the labels, numbers and formulas that make up a spreadsheet.
2) Edit the physical layout of the spreadsheet, such as adding or deleting rows and columns, widening or shrinking the width or heights of rows and columns.
Editing data in a cell
To edit data in a single cell, follow these steps:
1. Double-click the cell that contains the data you want to edit. Excel displays a cursor in your selected cell.
2. Edit your data by using the Backspace or Delete key or by typing new data.
If you click a cell, Excel displays the contents of that cell in the Formula bar. You can click and edit data directly in the Formula bar, which can be more convenient for editing large amounts of data.
You can copy and move cells in two ways:
> By using cut, copy and paste.
> By dragging with the mouse.
When you copy a cell, you duplicate the cell contents and paste them to a new location. When you move cells, you remove the cell contents and paste them to a new location. When you paste cells over existing cells, you overwrite the existing cell contents.
When you copy cells, they are duplicated in another location. Select the cells you want to copy and choose the copy command from the Edit Menu or Shortcut Menu or Toolbar Buttons. The Copy area is marked with an animated border. Choose the paste command from the Edit Menu or Shortcut Menu, the cells are copied to the destination cell/cells.
When you move cells they are cut and transferred to another location. Select the cells you want to move and choose the cut command from the Edit Menu or Shortcut Menu. The cut area is marked with an animated border. Choose the paste command from the Edit Menu or Shortcut Menu.
Copying and Moving Cells by Dragging
Using the mouse you can quickly copy and move cells. For copying, position the mouse pointer over the border of a selection. Hold down CTRL key and drag the border to the new location. Release the mouse button and then the CTRL key.
For moving, position the mouse pointer over the border of a selection and drag the border to the new location. Release the mouse button. Do not hold down CTRL key for moving the selected cells.


宏定义 |
| #define |
SIZE(a) (a) |
| #define |
LOS_ASSERT_COND(expression) |
| #define |
LOS_NO_WAIT 0 |
| |
Define the timeout interval as LOS_NO_WAIT.
|
| #define |
LOS_WAIT_FOREVER 0xFFFFFFFF |
| |
Define the timeout interval as LOS_WAIT_FOREVER.
|
| #define |
ALIGN(uwAddr, uwBoundary) LOS_Align(uwAddr, uwBoundary) |
| |
Align the beginning of the object with the base address uwAddr, with uwBoundary bytes being the smallest unit of alignment.
|
| #define |
TRUNCATE(uwAddr, uwSize) ((uwAddr) & ~((uwSize) - 1)) |
| |
Align the tail of the object with the base address uwAddr, with uwSize bytes being the smallest unit of alignment.
|
| #define |
READ_UINT8(ucValue, ucAddr) ((ucValue) = *((volatile UINT8 *)(ucAddr))) |
| |
Read a UINT8 value from ucAddr and stroed in ucValue.
|
| #define |
READ_UINT16(usValue, usAddr) ((usValue) = *((volatile UINT16 *)(usAddr))) |
| |
Read a UINT16 value from usAddr and stroed in usAddr.
|
| #define |
READ_UINT32(uwValue, uwAddr) ((uwValue) = *((volatile UINT32 *)(uwAddr))) |
| |
Read a UINT32 value from uwAddr and stroed in uwValue.
|
| #define |
READ_UINT64(ullValue, ullAddr) ((ullValue) = *((volatile UINT64 *)(ullAddr))) |
| |
Read a UINT64 value from ullAddr and stroed in ullValue.
|
| #define |
GET_UINT8(ucAddr) (*((volatile UINT8 *)(ucAddr))) |
| |
Get a UINT8 value from ucAddr.
|
| #define |
GET_UINT16(usAddr) (*((volatile UINT16 *)(usAddr))) |
| |
Get a UINT16 value from usAddr.
|
| #define |
GET_UINT32(uwAddr) (*((volatile UINT32 *)(uwAddr))) |
| |
Get a UINT32 value from uwAddr.
|
| #define |
GET_UINT64(ullAddr) (*((volatile UINT64 *)(ullAddr))) |
| |
Get a UINT64 value from ullAddr.
|
| #define |
WRITE_UINT8(ucValue, ucAddr) (*((volatile UINT8 *)(ucAddr)) = (ucValue)) |
| |
Write a UINT8 ucValue to ucAddr.
|
| #define |
WRITE_UINT16(usValue, usAddr) (*((volatile UINT16 *)(usAddr)) = (usValue)) |
| |
Write a UINT16 usValue to usAddr.
|
| #define |
WRITE_UINT32(uwValue, uwAddr) (*((volatile UINT32 *)(uwAddr)) = (uwValue)) |
| |
Write a UINT32 uwValue to uwAddr.
|
| #define |
WRITE_UINT64(ullValue, ullAddr) (*((volatile UINT64 *)(ullAddr)) = (ullValue)) |
| |
Write a UINT64 ullAddr to ullAddr.
|
| #define |
LOS_ASSERT(judge) |
函数 |
| UINT32 |
LOS_Align (UINT32 uwAddr, UINT32 uwBoundary) |
| |
Align the value (uwAddr) by some bytes (uwBoundary) you specify.
|
| VOID |
LOS_Msleep (UINT32 uwMsecs) |
| |
Sleep the current task.
|
| UINT32 |
LOS_Start (VOID) |
| |
System kernel initialization function.
|
| UINT32 |
LOS_KernelInit (VOID) |
| |
System kernel initialization function.
|


Copyright © 2013 for the individual papers by the papers' authors. Copying permitted only for private and academic purposes. This volume is published and copyrighted by its editors.


How can I download all the extra content (station trivia and connections)?
When you read the trivia for a station, or the connection information with other transit networks, UnderLX downloads a small piece of content for that station.
In case you want to use the app offline, you can download all this extra content at once:
This content is downloaded to the device's cache and might be automatically deleted, if Android needs to free up space. Also note that if you change the device's language, you might need to download the extra content again.
The complete extra content incurs a 2 MB download.


SETUID
Section: Linux Programmer's Manual (2)Updated: 2004-05-27
Index Return to Main Contents
NAME
setuid - set user identitySYNOPSIS
#include <sys/types.h>#include <unistd.h>
DESCRIPTION
setuid() sets the effective user ID of the calling process. If the effective UID of the caller is root, the real UID and saved set-user-ID are also set.Under Linux, setuid() is implemented like the POSIX version with the _POSIX_SAVED_IDS feature. This allows a set-user-ID (other than root) program to drop all of its user privileges, do some un-privileged work, and then re-engage the original effective user ID in a secure manner.
If the user is root or the program is set-user-ID-root, special care must be taken. The setuid() function checks the effective user ID of the caller and if it is the superuser, all process-related user ID's are set to uid. After this has occurred, it is impossible for the program to regain root privileges.
Thus, a set-user-ID-root program wishing to temporarily drop root privileges, assume the identity of a non-root user, and then regain root privileges afterwards cannot use setuid(). You can accomplish this with the (non-POSIX, BSD) call seteuid(2).
RETURN VALUE
On success, zero is returned. On error, -1 is returned, and errno is set appropriately.ERRORS
- EAGAIN
- The uid does not match the current uid and uid brings process over its RLIMIT_NPROC resource limit.
- EPERM
- The user is not privileged (Linux: does not have the CAP_SETUID capability) and uid does not match the real UID or saved set-user-ID of the calling process.
CONFORMING TO
SVr4, POSIX.1-2001. Not quite compatible with the 4.4BSD call, which sets all of the real, saved, and effective user IDs.NOTES
Linux Notes
Linux has the concept of file system user ID, normally equal to the effective user ID. The setuid() call also sets the file system user ID of the calling process. See setfsuid(2).If uid is different from the old effective uid, the process will be forbidden from leaving core dumps.
SEE ALSO
getuid(2), seteuid(2), setfsuid(2), setreuid(2), capabilities(7), credentials(7)COLOPHON
This page is part of release 3.22 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.
Index
This document was created by man2html, using the manual pages.
Time: 05:33:05 GMT, December 24, 2015


and maintain whitespace.
# Heading (H1)
## Sub Heading (H2)
### Steps (H3)
###List Items
* One
* Two
* Three
Emphasis, aka italics, with *asterisks* or _underscores_.
Strong emphasis, aka bold, with **asterisks** or __underscores__.
Combined emphasis with **asterisks and _underscores_**.
# Heading (H1)
## Sub Heading (H2)
### Steps (H3)
###List Items
* One
* Two
* Three
Emphasis, aka italics, with *asterisks* or _underscores_.
Strong emphasis, aka bold, with **asterisks** or __underscores__.
Combined emphasis with **asterisks and _underscores_**.
]]>
There are two ways to create links. Inline & reference:
[I'm an inline-style link](https://teradata.github.io/)
[I'm a reference-style link case does not matter][Teradata Github Landing]
[teradata github Landing]: https://teradata.github.io/
Inline image
![alt text here](app/assets/icons/teradata.svg)
Reference-style image:
![alt text][logo]
[logo]: app/assets/icons/teradata.svg "Teradata Labs"
[I'm an inline-style link](https://teradata.github.io/)
[I'm a reference-style link case does not matter][Teradata Github Landing]
[teradata github Landing]: https://teradata.github.io/
Inline image
![alt text here](app/assets/icons/teradata.svg)
Reference-style image:
![alt text][logo]
[logo]: app/assets/icons/teradata.svg "Teradata Labs"
]]>
Inline has `back-ticks` around it.
Blocks of code are either fenced by lines with three back-ticks ```
, or are indented with four spaces.
`this is an inline code snippet`
```javascript
var s = "JavaScript syntax highlighting";
alert(s);
```
```python
s = "Python syntax highlighting"
print s
```
`this is an inline code snippet`
```javascript
var s = "JavaScript syntax highlighting";
alert(s);
```
```python
s = "Python syntax highlighting"
print s
```
]]>
> Blockquotes are very handy in email to emulate reply text.
> This line is part of the same quote.
Quote break.
> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
> Blockquotes are very handy in email to emulate reply text.
> This line is part of the same quote.
Quote break.
> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
]]>
Three or more...
---
Hyphens
***
Asterisks
___
Underscores
Three or more...
---
Hyphens
***
Asterisks
___
Underscores
]]>
]]>
Use ]]>
element to parse the markdown files
Wrap your code snippets in ]]>
HTML
# Heading
## Sub Heading (H2)
### Steps (H2)
]]>
showdown.js
needs to be added as vendor and referenced in `index.html`.
Reference the script in the `index.html` file.
Then, import the [CovalentMarkdownModule] using the forRoot() method in your NgModule:


The traits technique discussed in this chapter is useful for solving the following kind of problem. Consider that you have a matrix that must work for all types of numbers, but the behavior of the matrix depends on the type of number in at least some measure. This means your matrix can't handle all numbers the same way.
Except for the behavioral difference, it sounds like the perfect problem for a template. But you can't use a single template, since you can't hang extra information on the number type because it's often just a built-in type. The template will do the same thing for every number type, which is just what you can't do in this case. You could specialize, but then you have to re-implement the entire matrix class for every type of number. It may well be that most of the class is the same. Worse yet, if you want to leave your interface open for use with some unknown future type, you're requiring that future user to reimplement the entire class as well.
What you really want is to put everything that doesn't change in one place, and repeatedly specify only the small part that does change with the type. The technique for doing this is generally referred to as using a traits parameter.


Hey, I'm Adrian.
I do some things.
I'm a freelance front-end web designer/developer, stationed in (read: near) Detroit, Michigan, looking to make this ol' World Wide Web my canvas. I believe in hand-crafted code, responsive design, accessibility, and intuitive user-interfaces. I write my HTML, CSS, Javascript, and jQuery code from the bottom up, but can find my way home in a CMS or framework setting as well.
I'm also a graduate student of Information Management & User-Experience at Wayne State University's School of Library of Information Science, and my day job is as a reference intern at a gorgeous public library. I'm a strong supporter of information literacy and transparency, cultural preservation, and libraries for the "future." Metadata is fun, digital curation is fun, helping people is very fun.
I'm very into words. Writing has been a mainstay in my life since I first picked up a rock and etched my feelings into it. I'm educated as a historian, and have experience writing almost every type of style there is. There are a lot of words in my head, and I'm loving every chance I get to use them. If editing is your thing, I've been around MLA, APA, and Chicago style guides for a while.
Do you like photography? I do too. I've been taking pictures since 2007, and even freelanced for a bit during my undergrad. I have experience with event, portrait, and commercial photography, and I find the sound of the shutter very relaxing. Adobe products have been my friend for a few now, and I'm very proficient with Adobe Bridge, Photoshop CS6, and Illustrator CS6.


testing
确定
❤
Manage my files
FileName
FileSize
Visits
FileDate
FileLink
About
The Desc...
1. Upload the file size is not more than 5M
2. Please properly keep network backup link


{% load static %}
Try Digital Ocean and get $100 in credits for 2 months!
All icons are from icons8.com
Header image on homepage from unDraw.co


We are here to make a difference !
So whether you are a talented Maker or a Retailer drop us a line to join our platform. We would love to hear from you


Even Steven Exit Wounds
By Ross Anthony
Here you'll find everything you'd expect from a film called "Exit Wounds" ... lots of gunfire, car chases, things blowing up and catching fire, expensive sports cars, cool good guys, crafty bad guys, hip music, tough guy one-liners, comedic sequences, and of course, gratuitous frontal nudity. I'm not quite sure the reason for the title, except that it sounds cool and implies plenty of bullets in flight. Wait, perhaps they were playing on the words in a more emotional sense, since Seagal is forced to "exit" a desirable position on the force. Naaaah, this is definitely a "shut the mind off and enjoy the action" type of film.
An opening action sequence makes that point crystal clear, Lone Ranger Seagal single-handedly saves the vice president from a well-armed motorcade ambush. In the very next scene, despite his heroism, Seagal is promptly reprimanded and demoted for his inability to follow orders. Soon enough Seagal finds himself station in the rough part of town where a group of cops welcome him with an electric zapper and a stress-management group with desks comically too small for his huge body.
The film does an excellent job of keeping action rolling and interjecting comic relief: Anthony Anderson in the Lamborgini scene, Tom Arnold in stress management, and as the credits roll the two of them chewing the fat improv-style will send you on your way chuckling.
Of course, the story line has more holes than Seagal's stylishly dark garbs after a rain of bullets. He's so cool, never a scratch. And a few of the "dialogue only" scenes grind to a jam even a crowbar couldn't free. Still, you can't argue with a good car chase or helicopter bursting into flames, strong pacing, tight direction, and good old-fashioned action ... a lot of fun. Also worthy of note, a nice performance by DMX.
Exit Wounds. Copyright © 2001. Rated R. * Starring Steven Seagal, DMX, Isaiah Washington, Michael Jai White, Anthony Anderson, Jill Hennessy, David Vadim, Tom Arnold. * Directed by Andrzej Bartkowiak. * Written by Ed Horowitz, Richard D'Ovidio. * Based on the novel by: John Westermann. * Produced by Joel Silver, Dan Cracchiolo at Warner Bros/Village Roadshow/NPV Ent./Silver Pictures.
Grade..........................B+
-- Copyright © 2000. Ross Anthony, currently based in Los Angeles, has scripted and shot documentaries, music videos, and shorts in 35 countries across North America, Europe, Africa and Asia.
For more reviews visit: http://www.RossAnthony.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


FlappySpaceShip
This application is an assignment for Programming Technologies and Programming Environments class at the University of Debrecen, Faculty of Informatics.
Install
You need Java 1.8 at least and Maven 3.x+.
mvn clean package
to build the standalone.jar
applicationcd target
to navigate to the build directoryjava -jar FlappySpaceShip-1.0-jar-with-dependencies.jar
to start the game
or
mvn exec:java
to run the game directly
What is the FlappySpaceShip?
This is an implementation of Flappy Bird using the JavaFX platform. Like the original, the user must use the space bar in order to flap the ship to fly, while avoiding being hit by pipes.


Auto Close based on Contextual Replay
Show Full Description
Description
Demonstrate hawk:AIs ability to avoid false positives on the same already validated scenario (=contextual replay). The scenario is executed in two steps:
- Initial transaction generates an Open Case in Case Manager as the account holder name “Wolfgang Berner” fuzzy matches 3 known Politically Exposed Person (PEP) and one Special Interest Person (SIP)
- Go into the case manager and set all matches to “No Match” and close the case
- Send the case again and it will appear in Auto-Close based on the previous decision made by the operator
If the scenario is executed as is you omit the first step as the step 1 is already done. To explicitly test scenario 1 use a new random IBAN for Wolfgang Berner (http://randomiban.com/?country=Germany) as the contextual replay is done on the name/IBAN combination.
Expected Result
- After setting the matches to “No Match” previously, case appears in “Auto-Close Cases” in Case Manager
API Request
{
"accountHoldingParty": "FUNDS_ORIGINATOR",
"appendedCustomData": {
"additionalCustomerId": "1231"
},
"balanceBeforeTransaction": 8473.25,
"balanceCurrency": "EUR",
"callbackUrl": "https://callback.url/1234",
"fundsBeneficiary": {
"accountNumber": "DE77500105177239612724",
"bankIdentifier": "SSKMDEMM",
"holder": "Bernhard Altendorfer"
},
"fundsOriginator": {
"accountNumber": "DE45500105177423817174",
"bankIdentifier": "SSKMDEMM",
"holder": "Wolfgang Berner"
},
"initiatedAmount": 5.29,
"initiatedCurrency": "EUR",
"initiatingParty": "FUNDS_ORIGINATOR",
"purposeCode": "SSBE",
"settledAmount": 5.29,
"settledCurrency": "EUR",
"tenantCustomerId": 12345,
"tenantProcessingTimestamp": "2019-10-16T14:38:47.812",
"tenantTransactionId": 12345,
"usage": "Testing Contextual Replay hawk:AI"
}
Result
No Scenario Processed...


SQPComparison application is a data structures comparison prototype focusing on Stack (S), Queue (Q) and Priority Queue (P). The “dummy application” which has only stack implemented, is a hands on tutorial on the three main method used in a Stack.
The main objective of this project is to demystify data structures to new developers and/or computer scientists and allow them to grasp those concepts in a less stressful environment. The SQPComparison application is expected to:
The SQPComparison is a mobile app designed to work on an Android platform. This application was built using the Android Studio Integrated Development Environment (IDE) as well as XML and Java.
SQPComparison Users: Any Android smartphone and tablet owner.
The application is composed of:
3.2.1 Button press and Event handler
In the beginning of the tutorial, the guide prompts the user to press the PUSH button in order to get started. The push button in this case represent one of the methods push() used often in a stack. When pressed, the push button will then activate the four words buttons that will serve as example for each methods.
As you can see above, the dialog changes when the push button is pressed. The functionality is implemented in MainActivity.java. When the push button is pressed, the four words buttons become visible to the user and the dialog gets updated to a new string, guiding the user to the next step of the tutorial.
The word buttons are buttons holding the words to be used throughout the tutorial. When pressed, each button disappears, converts to a word and populate one at a time the stack until full.
At every button press, the dialog provides the user with feedbacks and guides him to the following step.
Once the last word is pushed to the stack, the user gets notified that the stack is full, and it is time to move to the next step.
When the user has pushed all the elements into the stack, the guide is ready to introduce the user to another method called pop. The pop method removes the most recently added element that has not yet been removed.
In this prototype, the user will only be able to remove the latest element entered in the stack. This is subject to be changed further in development and other data structures will be used to implement the functions properly.
As elements are always added to the top of a stack, top returns the most recently added element that has not been removed. It behaves like pop without deleting the element.
Since the top button is the last element before the end of the tutorial. It is implied that the user has successfully achieved the tutorial and has a good understand of stack and its methods.
On button press, the function returns the top element in the stack. The guide gives its last feedback on the functionality of the method, then congratulates the user for the good work.
Furthermore, a sound plays in the background cheering and applauding the user’s success.
The screens below are the resulting app after the top button was pressed. On the left is the guide giving the last feedback and on the right is the congratulation message after the 6 seconds have passed.
Because the main objective of this project is to demystify multiple different data structures to young developers and allow them to grasp those concepts in a less stressful environment, a few more features will be added to the application before its deployment.
The videos below are an example of the new UI design for each data structure:


Green
#3cb878
Red
#f26c4f
GRAPHIC LANGUAGE
IHTSDO
THEMES
Museo is primarily set in dark grey, copy can be set in brand blue to provide visual contrast and direction to users.
CONTRASTING TYPOGRAPHY
Master brand blue is used as call out colour for headlines CTAs and framing devices where required.
Granular line work is handled with tertiary and secondary blue.
Pastel versions of red and green provide visual support for processes requiring clear labelling.
White is used across all module backgrounds.
Grey is applied to secondary type and bodycopy.
CORE COLOUR SET
Cyan (MASTER)
#00a7e1
Grey
#333333
White
#000000
Panels reference the corner radius of the serifed ‘i’ in the brand mark. A variance in the radius in one corner allows for an organic arrangement of modules.
PANELS & CURVES
The radius / Museo reference is continued through the application of line work, both within larger UI elements which require content framing devices through to detail level items such as iconography and accents on panels.
Secondary blue
#e8eded
Grey
#5e5f61
LINE WORK & ACCENTS
Tertiary blue
#8dccdc


With checkboxes, all options are visible and the user can make one or more selections. This component can be set
disabled and also displayed in a row.
Checkboxes are keyboard navigable via the tab key and selected with the
space bar.
On new version of chromium engine (Opera, Microsoft Edge, Chrome) checkbox component causes crash.
There is issue to follow.
There is presented workaround,
which disables focus outline.


About Me
Basic Information
Name: QIANG SUN
Student ID: 21804416
Lecutre: CITS5505
Group ID: 29
Reference:
1. W3C school, link: https://www.w3schools.com/default.asp
2. Google Map Api and Documentation, link: https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform
3. CITS3403 web information, link: http://teaching.csse.uwa.edu.au/units/CITS3403/index.php?fname=project-teams&project=yes
4. About Layouts from bootstrap, link: http://getbootstrap.com/css/
5. Stack Overflow


---
start: 2017-05-03 13:00
edition: 26
participate: "https://www.eventbrite.com/e/scaling-a-game-server-from-500-to-100000-users-tickets-34063918096"
talk: "https://goo.gl/forms/m9aPSXemMLPBj35k1"
subheader: "Scaling a Game Server: From 500 to 100,000 Users"
subnote:
agenda:
-
time: "6:45 pm - 7:30 pm"
title: "Scaling a Game Server: From 500 to 100,000 Users"
subtitle: "Sunil has redesigned a game server that was unable to handle 500 simultaneous users to a something that can handle 100,000 users. The talk discusses the architecture and technology choices that ensured scalability of . Technologies used are Python, gevent, Cassandra, redis, haproxy and WebSockets. The talk will touch upon how this architecture also applies to a typical web applications."
speaker_profile: "By: Sunil Mohan Adapa, Free Software developer and Application Developer at ThoughtWorks"
image: "adapa.jpg"
-
time: "7:30 pm - 7:45 pm"
title: "Break & Networking"
-
time: "7:45 pm - 8:30 pm"
title: "Continued..."
---


H2O is a new generation HTTP server that provides quicker response to users with less CPU utilization when compared to older generation of web servers. Designed from ground-up, the server takes full advantage of HTTP/2 features including prioritized content serving and server push, promising outstanding experience to the visitors of your web site.
Explanation of the benchmark charts can be found in the benchmarks page.
Key Features
- HTTP/1.0, HTTP/1.1
- HTTP/2
- full support for dependency and weight-based prioritization with server-side tweaks
- cache-aware server push
- TCP Fast Open
- TLS
- session resumption (standalone & memcached)
- session tickets with automatic key rollover
- automatic OCSP stapling
- forward secrecy & fast AEAD ciphers1
- private key protection using privilege separation
- static file serving
- FastCGI
- reverse proxy
- scriptable using mruby (Rack-based)
- graceful restart and self-upgrade
Notes:
- chacha20-poly1305: see Do the ChaCha: better mobile performance with cryptography


ValuesNov 21st
Photo credit: M Reza Faisal / Foter / CC BY-NC-ND
My Values
When I think of the times I've been the happiest, proudest, or most satisfied, these are the values that come to mind:
Creativity
Creativity is very near and dear to my heart, as it is something that has brought me much joy and freedom throughout my life. A majority of my past and current hobbies involve creativity. From drawing and painting to music, and now programming, I've always had some outlet for creativity. This is my way of expressing my own ideas or to capture and reimagine those of others.
Values in my Life
On a scale of 1-5, My rating for each of these values in terms of how I try to live up to them:
| Accomplishment | 3 |
| Ambition | 4 |
| Creativity | 5 |
| Helping Others | 3 |
| Integrity | 4 |
| Personal Development | 5 |
| Quality | 5 |
Advice
The last thing someone asked for my advice on was how to set up a many-to-many relationship in a database for my office. I went through the logic, outlined a plan, and left my last mark on the whiteboard before leaving on my last day at this job. It made me happy that my contribution will somehow help make things better and faster for other people in the future. I felt like it was an encapsulation of some of the things I have learned during my time with the company, and it was a way for me to contribute my creative energy in a meaningful and lasting way.
Values and Stereotype Threat
When I think about my values, I usually think of how I can improve my life by living up to them. It is also a way for me to reflect on if I have been living up to them. Sometimes, I notice that throughout my life that these values shift slightly in priority. For example, there were periods when I felt like I had almost no ambition at all, or at least I wasn't working towards fulfilling them. I'm not really sure how I'm going to mediate stereotype threat by thinking about my values, but I do know that I can't let it get in the way of my own personal fulfillment. Instead, I think that being more aware of myself and of my surroundings will help me to mediate stereotype threat. Practicing mindfullness meditation is helping me to better process my own thoughts and feelings which helps me to deal with things in all areas of my life.