| DOSE: T+ 0:00 |
1.25 hits |
oral |
LSD |
(blotter / tab) |
| T+ 0:50 |
0.75 hits |
oral |
LSD |
(blotter / tab) |
Some experienced substance users may find this idiotic, but I have taken LSD alone on two occasions. I have heard from numerous sources to always have a sitter while tripping. Believe me, I would have loved to have someone keep an eye on me, but in my world that's not possible. All my good friends are staunch Christians and sneer at me if I even mention Cannabis, never mind LSD. I had bought 3 hits a few months ago. Due to LSD's long duration I had difficulty finding a time to trip, as I was scared shitless of a night trip turning bad. Anyway, I dropped a blotter at around 2100 one night and had a rather disappointing 20 hour trip with none of the visuals I expected, although I enjoyed my music much like a Cannabis high. My other trip was rather different.
I had planned it for months. My parents were going away for the weekend with my sister. I was rather relaxed and in a positive mood. My final year exams lay ahead but it did not bother me. I had recently read Graham Hancocks 'Supernatural'(a brilliant read indeed!!!) and Dr. Rick Strassmans 'DMT- The spirit molecule' that opened up my
interest in psychedelics and entheogens. So I thought that taking psychedelics for the correct reasons(spirituality, enlightenment and consciousness exploration)could only yield positive results. I did not know how to prepare for the trip, but I knew preparation was crucial in the experience. So I listened to some Terence McKenna lectures, starting a week before the trip, to create the needed mindset.
I dropped 1.25 blotter at around 0800 am. By 0850 I was in the garden but feeling nothing, and thought I could just as well take the rest, so I dropped the remaining 3/4 hit. By 0900, back in the garden, I noticed birds were moving comically faster, as if in a 1920's movie, and soon began seeing tracers. By 0930 I was sitting by our fishpond delving into my own thoughts. Suddenly I heard a disturbing and unnerving
wail! I would describe it as a wail of a dying Banshee. It was long, shrill and painful and sounded, I would imagine, like a witch being burned at the stake. This startled but also fascinated me, and I was not at all scared but rather perplexed. I always have auditory hallucinations on Cannabis, which I use alone to boost my creativity and philosophical thinking, so maybe I was just used to trippy noises.
A number of minor events occurred, such as me hallucinating doors opening and closing, and patterns in the ceiling. One major realisation was that my tubby ginger cat was with me throughout the trip, which was startling as he never even sits by me usually. His ears were pointing towards all my auditory hallucinatios and it was as if he was protecting me in some way, and guiding me throughout the trip. He could hear everything I heard and could even sense my emotions, as he always started comforting me as I started feeling the trip was too much.
I went to my room and popped in some Infected Mushroom (Classical Mushroom), which is an amazing CD on Weed, but was dissapointing on Acid. I also listened to some Spectrum (it's Hardstyle Techno from my country, South Africa) which was interesting indeed.  I moved to the television to watch anything that would take my mind off my excruciating headache I developed. I watched
everything from whacky cartoons to Fashion TV, which was amazingly freaky to realise the true beauty of a woman. The Simpsons proved to be sickly funny and so reflective of modern day society, so it provoked thought and amused!
The moment that made the trip worthwhile was the movie 'Closer' with Jude Law and Natalie Portman. I remember feeling sad and touched by the opening scene and the sad Damien Rice tune that lingered in the background. I soon fell unconscious and awoke the next morning feeling relatively normal. As I descended the stairs to make myself some coffee, I started crying. I don't know why, but just thinking about that
'Closer' opening scene made me cry like Keith Richards without his dealer. I started thinking about my (currently vacant) love life, nature and the way that we humans are (using Terence's words) raping the planet. Although I was sad, my new emotional sensitivity was a welcome change to my normal masculine thought pattern.
Overall this trip was interesting enough, but that one moment, the emotional impact, is what made all the difference. It is not something I would try again soon because of the duration, but certainly in the future.
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.


TLE implements a general framework for robust fitting of finite mixture models. Parameter estimation is performed using the EM algorithm.
| Version: | 0.1.3 |
| Depends: | R (≥ 2.10), methods |
| Suggests: | mvtnorm, tcltk, flexmix |
| Published: | 2013-08-23 |
| Author: | P. Neytchev, P. Filzmoser, R. Patnaik, A. Eisl and R. Boubela |
| Maintainer: | Peter Filzmoser <P.Filzmoser at tuwien.ac.at> |
| License: | GPL (≥ 3) |
| NeedsCompilation: | no |
| CRAN checks: | tlemix results |
| Reference manual: | tlemix.pdf |
| Package source: | tlemix_0.1.3.tar.gz |
| Windows binaries: | r-devel: tlemix_0.1.3.zip, r-release: tlemix_0.1.3.zip, r-oldrel: tlemix_0.1.3.zip |
| OS X binaries: | r-release: tlemix_0.1.3.tgz, r-oldrel: tlemix_0.1.3.tgz |
| Old sources: | tlemix archive |
Please use the canonical form https://CRAN.R-project.org/package=tlemix to link to this page.


Hugo uses the excellent go html/template library for its template engine. It is an extremely lightweight engine that provides a very small amount of logic. In our experience that it is just the right amount of logic to be able to create a good static website. If you have used other template systems from different languages or frameworks you will find a lot of similarities in go templates.
This document is a brief primer on using go templates. Read More...
Step 1. Install Hugo Goto hugo releases and download the appropriate version for your os and architecture.
Save it somewhere specific as we will be using it in the next step.
More complete instructions are available at installing hugo
Step 2. Build the Docs Hugo has its own example site which happens to also be the documentation site you are reading right now.
Follow the following steps:
Clone the hugo repository Go into the repo Run hugo in server mode and build the docs Open your browser to http://localhost:1313 Corresponding pseudo commands: Read More...


Xi'an Juneng Superconducting Magnets Technology Co., Ltd. was established in 2011. It is a holding subsidiary of
Western Superconducting Materials Technology Co., Ltd. It has the production capacity of NbTi and Nb3Sn/Cu,
while Xi'an Juneng Superconducting Magnets Technology Co., Ltd. has the complete superconducting magnet research
and development and manufacturing capacity.
{$Categorys[67][catname]}


|
Panda3D
|
Public Member Functions | |
| def | __init__ (self) |
| def | delete (self) |
| def | enableGridInterest (self, enabled=True) |
| def | getGrid (self) |
| def | getGridInterestIds (self) |
| def | getGridInterestZoneId (self, gridDoId) |
| def | getGridZone (self) |
| def | isOnAGrid (self) |
| def | setGridCell (self, grid, zoneId) |
| def | updateGridInterest (self, grid, zoneId) |
Static Public Attributes | |
| dConfigParam | |
| types | |
Any object that expects to be parented to a grid should inherit from this. It works with GridParent to manage its grid cell hierarchy in the scenegraph.
| def __init__ | ( | self | ) |
Reimplemented in SmoothGridChild.
| def delete | ( | self | ) |
| def enableGridInterest | ( | self, | |
enabled = True |
|||
| ) |
| def getGrid | ( | self | ) |
| def getGridInterestIds | ( | self | ) |
| def getGridInterestZoneId | ( | self, | |
| gridDoId | |||
| ) |
| def getGridZone | ( | self | ) |
| def isOnAGrid | ( | self | ) |
| def setGridCell | ( | self, | |
| grid, | |||
| zoneId | |||
| ) |
Reimplemented in SmoothGridChild.
| def updateGridInterest | ( | self, | |
| grid, | |||
| zoneId | |||
| ) |
|
static |
|
static |


You can now get pronunciation lessons from Google
Have you ever mispronounced a word in front of others and felt embarrassed about it? This new Google feature is here to help you with that problem! Now, if you have a hard time pronouncing a word, you can just google ‘How to pronounce (the word)?’ and you’ll get the correct pronunciation right from Google.
 We don’t know where did Google get these pronunciations from, is it from an Academic English Dictionary or just from employees at Google (just kidding)?
No matter what, searching for pronunciations of words has never been this easy. There is also another feature in which you can speak the word again for Google to correct you if your device supports Google Assistant.
The feature is now only available in American English, not the British version we follow. It will also release Spanish later as well to support the feature. Let us know what you think about this feature from Google on our Facebook page! Stay tuned for more new updates from Google on TechNave.com.


Recent and upcoming hack nights, with links to each event's video livestream, projects, people, and data.
Register 4 San Juan » Register 4 San Francisco »


Basics
Codebase has a basic styling for various elements, applied to HTML tags directly (without CSS classes). Since v3.0 Codebase is built upon its own set of light-weight modern base styles. It no longer requires Normalize.
On this page:
Headings
h1 Heading
h2 Heading
h3 Heading
h4 Heading
h5 Heading
h6 Heading
Same as for paragraphs, headings have zero top margin while the bottom margin of headings is set as equal to one line-height of the default text (paragraph) size, i.e. 1.5rem.
Headings h1 to h5 are enlarged (and their line heights adjusted) for wider viewports at and above their alt
breakpoint, which is set by the variable $break-headers-alt
.
Headings are set to font-weight: normal
by default, so that you can use bold on particular words for emphasis.
All these same styles are also available as .h1
to .h6
block text utility classes.
Paragraphs
A simple paragraph:
Lorem ipsum dolor sit amet, vis in blandit singulis, an unum doming facilisi vim. Facete aliquam bonorum id quo, ex labore tincidunt mel, usu no quod liberavisse. Ex sea dolorum insolens assueverit, sed ut harum latine dignissim. Vis cibo vidit ea, eu duo debet platonem explicari, pro ex graece meliore. Illum graeci inciderint mei et, ei decore nostro vim.
As with headings, paragraphs have zero top margin, but they have a bottom margin equal to the line height of the default (paragraph) text size – thereby leaving an “empty line” gap between paragraphs.
Simple Text Elements
emphasis
bold
strong
citation
definition
abbreviation
inserted text
user input
sample output
marked (highlighted) text
small
Superscript: e.g. E = mc2
Subscript: e.g. H2O
ndash –
mdash —
hyperlink
inline code
Address
Preformatted text
/* <pre><code> */
10 print "Hello world";
20 goto 10;
Run
Lists
Ordered lists:
- List item
- List item
- List item
- List item
- List item
- List item
Unordered lists:
- List item
- List item
- List item
- List item
- List item
- List item
Definition lists:
- Title 1
- Data 1 Lorem ipsum dolor sit amet
- Title 2
- Data 2 Lorem ipsum dolor sit amet
- Title 3
- Data 3 Lorem ipsum dolor sit amet
Horizontal Rules
The horizontal rule tag is simply styled with a thin top border, so that it looks the same as border utilities and .table
borders.
Blockquotes
In Codebase, blockquotes receive some padding right and left, to give the effect of indentation. This side padding is set based upon the viewport width (i.e. in vw
), so that it is narrower on smaller viewports.
Otherwise, blockquotes have the same as paragraph styling.
Lorem ipsum dolor sit amet, adipiscing honestatis ius ut, nisl consulatu pro in. Imperdiet evertitur no usu, his te suavitate salutatus. Nullam ridens deterruisset an duo. Cum harum insolens ei, cum probo placerat praesent et.
Tables
This is what a basic (classless) table looks like using Codebase:
| Table Header 1 | Table Header 2 | Table Header 3 |
|---|---|---|
| Table content 1.1 | Table content 2.1 | Table content 3.1 |
| Table content 1.2 | Table content 2.2 | Table content 3.2 |
| Table content 1.3 | Table content 2.3 | Table content 3.3 |
No styling is applied to the table tag, except for bottom margin below the entire table (same as for paragraphs and headings). So, there is probably nothing that will interfere with other frameworks or plugins if you use them.
For more functionality and styling, see the Codebase table component.
Form Elements
Input Fields
In Codebase, form elements and buttons are all, by default, inline elements.
Various Codebase utility classes also work on form elements. See:
You’ll also want to see buttons, and see how to use buttons and forms together.
Textareas
Selects
Radio Boxes and Checkboxes
Images and Other Embedded Media
Images
In Codebase, images are block-level elements with max-width: 100%
so that large images are "responsive", shrinking to fit within containers (or viewports) narrower than the actual image width.
An image with a <figcaption>
, all enclosed in <figure>
:
Audio and Video
Audio controls:
Video controls:
Iframes
Iframes have their border reset to zero. No height or width is specified – that’s up to you to set for yourself according to your needs:


| Class | TermInfo |
| In: |
lib/terminfo.rb
terminfo.c |
| Parent: | Object |
| io | [R] |
TermInfo.tiocgwinsz(io) => [row, col]
TermInfo.tiocgwinsz returns the screen size of the terminal refered by io, using TIOCGWINSZ ioctl.
TermInfo.tiocswinsz(io, row, col)
TermInfo.tiocgwinsz update the screen size information of the terminal refered by io, using TIOCSWINSZ ioctl.
It returns nil.
TermInfo#control controls a terminal.
It prints the result of control_string to io specified at initialization.
TermInfo#control_string return a string to control terminal.
TermInfo#control_string([afflines,] capname, p1, p2, ...)
capname is a terminfo string capability such as "cuu", "el".
p1, p2, … are parameters for the capability.
afflines is a number of lines affected. (used for determining padding length)
TermInfo#setupterm(term, fd) => int
TermInfo#setupterm initializes TermInfo object.
term is a string of nil. If nil is given, the environment variable $TERM is used.
fd is a file descriptor for target terminal.
TermInfo#tigetflag(capname) => int
TermInfo#tigetflag returns a boolean capability specified by capname.
TermInfo#tigetnum(capname) => int
TermInfo#tigetnum returns a numeric capability specified by capname.
TermInfo#tigetstr(capname) => str
TermInfo#tigetstr returns a string capability specified by capname.
The return value should be printed after tputs is applied. Also tparm should be applied if it has parameters.
io.print ti.tputs(ti.tparm(ti.tigetstr("cuf"), 2))
Note that "cuf" means "cursor forward".
TermInfo#tparm(str, …) => str
TermInfo#tparm expands parameters in str returned by tigetstr.
TermInfo#tputs(str, affcnt) => str
TermInfo#tputs expands padding informaiton using padding characters. affcnt is a number of lines affected by the str.


org.drip.simm20.credit
Classes
CRBucket
CRNQBucketCorrelation
CRNQSettingsContainer
CRNQSystemics
CRQBucketCorrelation
CRQSettingsContainer
CRQSystemics
CRSystemics
CRThresholdContainer
SectorSystemics


Copyright © 2002–2003, Apple Inc.
Copyright © 2004–2021, The MacPorts Project.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.


Setup and Overview¶
There are two fundamental ways to start a new IdentityServer project:
- start from scratch
- start with the ASP.NET Identity template in Visual Studio
If you start from scratch, we provide a couple of helpers and in-memory stores, so you don’t have to worry about persistence right from the start.
If you start with ASP.NET Identity, we provide an easy way to integrate with that as well.
The quickstarts provide step by step instructions for various common IdentityServer scenarios. They start with the absolute basics and become more complex - it is recommended you do them in order.
Every quickstart has a reference solution - you can find the code in the IdentityServer4.Samples repo in the quickstarts folder.
Basic setup¶
The screen shots show Visual Studio - but this is not a requirement.
Creating the quickstart IdentityServer
Start by creating a new ASP.NET Core project.
Then select the “Empty” option.
Next, add the IdentityServer4 nuget package:
Alternatively you can use Package Manager Console to add the dependency by running the following command:
“Install-Package IdentityServer4”
Note
IdentityServer build numbers 1.x target ASP.NET Core 1.1, and IdentityServer build numbers 2.x targets ASP.NET Core 2.0 .
IdentityServer uses the usual pattern to configure and add services to an ASP.NET Core host.
In ConfigureServices
the required services are configured and added to the DI system.
In Configure
the middleware is added to the HTTP pipeline.
Modify your Startup.cs
file to look like this:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentityServer()
.AddDeveloperSigningCredential();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseIdentityServer();
}
}
AddIdentityServer
registers the IdentityServer services in DI. It also registers an in-memory store for runtime state.
This is useful for development scenarios. For production scenarios you need a persistent or shared store like a database or cache for that.
See the EntityFramework quickstart for more information.
The AddDeveloperSigningCredential
extension creates temporary key material for signing tokens.
Again this might be useful to get started, but needs to be replaced by some persistent key material for production scenarios.
See the cryptography docs for more information.
Note
IdentityServer is not yet ready to be launched. We will add the required services in the following quickstarts.
Modify hosting¶
By default Visual Studio uses IIS Express to host your web project. This is totally fine, except that you won’t be able to see the real time log output to the console.
IdentityServer makes extensive use of logging whereas the “visible” error message in the UI or returned to clients are deliberately vague.
We recommend to run IdentityServer in the console host. You can do this by switching the launch profile in Visual Studio. You also don’t need to launch a browser every time you start IdentityServer - you can turn that off as well:
In addition, it will be helpful to run IdentityServer on a consistent URL for these quickstarts.
You should also configure this URL in the launch profile dialog above, and use http://localhost:5000/
.
In the above screenshot you can see this URL has been configured.
Note
We recommend to configure the same port for IIS Express and self-hosting. This way you can switch between the two without having to modify any configuration in your clients.
To then choose the console host when you launch, you must select it in the launch menu from Visual Studio:
How to run the quickstart¶
As mentioned above every quickstart has a reference solution - you can find the code in the IdentityServer4.Samples repo in the quickstarts folder.
The easiest way to run the individual parts of a quickstart solution is to set the startup mode to “current selection”. Right click the solution and select “Set Startup Projects”:
Typically you start IdentityServer first, then the API, and then the client. Only run in the debugger if you actually want to debug. Otherwise Ctrl+F5 is the best way to run the projects.


Fragment of code for command for a form with one TextBox and a CommandButton: The TextBox contains a supported command such as [Pen(3)]:
The command from the application Window is executed in the Pegaesys window.
for example, the following program fragment prints a Note to the drawing:
for example, the following program fragment changes the current Pen to Pen 4:
for example, the following program fragment gets the EngLen report from Pegaes:
Note that the code for the above program does not have to be written; you can set the properties of Command1 and Text1 when you create the form. In this case, only the LinkExecute command would have to be coded for Sub Command1_Click ()


Clay Helton Has Message For USC Athletic Director Following Win
by Andrew HolleranFew head coaches have been on a hotter seat this season than Clay Helton. Almost everyone has thought that the Trojans would part ways with Helton following the year. USC has been linked to Urban Meyer, James Franklin and others for months.
Is USC actually going to fire Helton, though?
We might be trending in the opposite direction of that right now.
USC topped UCLA tonight, 52-35, to improve to 8-4 on the season. The Trojans’ president actually congratulated the team on the win.
ESPN insider Adam Rittenberg is also hearing that Helton has internal support to return.
“Clay Helton is doing what new athletic director Mike Bohn wanted and finishing strong. There’s momentum internally to bring him back. Will be an interesting week or two ahead. If Utah somehow stumbles tonight or next week, Trojans are in league title game,” he reports.
Helton had a message for USC’s athletic director following the win, too.
USC was presumed to be the biggest opening on the job market this offseason, and that’s still a definite possibility, but it’s looking like Helton might be back in 2020.
Stay tuned.


Here is where I am going to type up a brief description of myself and a little about my experience. Most of my information can be located in the about page where I will link to myself from here.


Category does not have any questions.

Please log in to take the assessment.
Question {{numQuestion}}
{{questions[index].text}}
Hint: {{questions[index].hint}}
Supplementary Reading{{error}}


Securing my Grafana dashboards with https using letsencrypt.org
Initial setup
Actually I followed the description of the following website (in german): Freifunk Winterberg
The procedure describes the setup of grafana using a SSL certificate provided by letsencrypt.org
Renewal of certificate
Once in while (I don’t remember the exact duration), you have to renew your certificate by using the following command:
sudo certbot certonly
After renewing the certificate you have to restart grafana:
sudo service grafana-server restart
Routing of incoming https traffic to grafana port (port 3000)
In order to redirect the https traffic to the grafana port (port 3000), you have to configure the routing with the followig command, which redirects traffic at port 443 (https) to port 3000 (grafana).
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3000
If you like to check your routing table, sue the following command:
iptables -t nat -L --line-numbers
If you want to delete some set routing, e.g in line number 1, use the following command:
iptables -t nat -D PREROUTING 1


Author | Ciprian Trusca
This is an attempt to pass forward the knowledge gained when working on a distributed computing project. I try to answer my own questions here, so I lay out the information here the way I would have like to find it when I started


Frame Session API & Latency example
Region Selector:
Select the fastest location
North Virginia
California
Ohio
Mumbai, India
Loading...


This is my final project. The LED fan clock using Arduino Nano instead. I haven't finished it yet, but I will.
 Also, I'm going to 3D model a case for it, and put it on my clock.
I have spent about 3 hours so far, and I might have to spend couple more hours to finish it. Since the
instruction is unclear, I had to see the circuit diagram for this.
I downloaded a Youtuber's program for Arduino to save time. But I couldn't finish it on time.
I learned that you should decide what to do quite early if you want to do something big and complicated.
I also learned that there are many unexpected situations even though the instructions are given. The one
thing I should have done was to spend more time on doing it, but the exam week was way more busy than I thought.


What you need
This section is: Business activities
For this section you may need to know:
- the anticipated net profit for the next 12 months
- approximately how many people your business employs
- approximately how many people work on activities covered by Money Laundering Regulations
You'll also need to know:
- in which countries your customers live or work
- your franchisor's name
- how you record transactions
- your professional adviser's name and address


Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity. -- David Gelernter, "Machine Beauty", Basic Books (1998) [ source]


The Mummy (1999) Brendan Fraser, Rachel Weisz, John Hannah, Arnold Vosloo, Kevin J. O'Connor, Jonathan Hyde, Oded Fehr, Erick Avari, Stephen Dunham, Corey Johnson, Tuc Watkins, Omid Djalili, Aharon Ipale, Bernard Fox, Patricia Velasquez, Carl Chase, Mohammed Afifi. Screen story by Stephen Sommers, Lloyd Fonvielle, Kevin Jarre. Directed and written by Stephen Sommers. 124 minutes. Rated PG-13, 2 stars (out of five stars)
Review by Ed Johnson-Ott, NUVO Newsweekly www.nuvo-online.com Archive reviews at http://us.imdb.com/M/reviews_by?Edward+Johnson-ott To receive reviews by e-mail at no charge, send subscription requests to<EMAIL_ADDRESS>If you plan to see "The Mummy," there are a few things you should know. First, although loosely based on the well-known monster movie, it's not particularly scary.  Second, as an "Indiana Jones" derivative, it's not particularly involving. The story takes forever to get rolling and the convoluted plot serves mostly as an excuse to whip out loads of flashy special effects. Third, some of those effects are nifty, but few are convincing and too many are simply cheesy. Fourth, most of the jokes aren't funny. Apparently realizing their creation was structurally unsound, the filmmakers attempt to distract viewers with an endless stream of wisecracks from the principal characters. Wrapping things up (ahem), I suggest you skip "The Mummy."
The plot goes like this. In the mid-1920s, a plucky librarian (Rachel Weisz) reluctantly hires a ne'er-do-well adventurer (Brendan Fraser) to search for ruins of the ancient Egyptian city Hamunaptra, buried deep in the desert. They travel the Nile along with a competing team of cowboys bent on plundering the treasures of Hamunaptra. Once in the city, an unusually nasty mummy called Imhotep is accidentally raised from the dead by the cowpokes. The cranky 3,000-year-old immediately begins snagging body parts from those who released him, hoping to reconstitute his body so that he can unleash plagues on Egypt and bring his girlfriend back to life, presumably to rule the world at his side. And you thought Bill Clinton was a contemporary phenomenon.
"The Mummy" could have worked as a horror story, an adventure tale, or even a spoof, but writer-director Stephen Sommers ("Deep Rising") stumbles by haplessly trying to combine all three. While taking crib notes from the "Indiana Jones" movies, he should have studied more carefully, because he makes some fundamental errors here.
To succeed, films of this genre require a memorable villain. "The Mummy" starts with one, but undermines its effectiveness through bad writing. Even in the most dire circumstances, the lead characters continue trading one-liners as if they were playing flag football on a Sunday afternoon instead of facing death from a supernatural malevolent creature - - if they don't take the monster seriously, why should we?
Fraser and Weisz spend so much time swapping comedic insults that they come off like a road company version of Sam and Diane from "Cheers." They are lightweights; two crazy kids on a madcap escapade. Brendan Fraser is a talented actor, but the script cripples his character, casting him as an enterprising puppy dog instead of a real swashbuckler. As Indiana Jones, Harrison Ford tossed off his share of caustic remarks, but he clearly recognized his opponents as genuine menaces. Fraser's character seems more like a big kid on nitrous oxide during a marathon paintball tournament.
The impact of the storyline is also lessened by the way the characters deal with death.  Only once in the entire movie does anyone pause to display a moment of regret that a friend has been killed.
After a while, my investment in the storyline disappeared completely and I just sat back and watched the special effects while waiting for the overlong film to end. "The Mummy" overflows with computer generated images of varying degrees of originality and quality. A prologue in ancient Egypt shows a lavish rendering of Hamunaptra in its prime, but the backgrounds are chintzy matte paintings and the computer renderings have that overly creamy look, similar to the CGI films shown in motion simulator rides.
Later, flesh-eating bugs create some minor scares, although they too have the same cut-rate CGI appearance. Images of faces mystically appearing in sandstorms are more effective and shots of freshly revived mummies, while reminiscent of the skeletal version of the "Terminator," are nicely rendered. But effects do not a movie make and all the flashy imagery in "The Mummy" can't compensate for its soulless feel.
The few scenes I enjoyed featured Bernard Fox, Dr. Bombay from the old "Bewitched" TV series, as a dotty soldier of fortune. I had no idea the veteran actor was still alive and his blustery performance was a pleasure. In just a few minutes of screen time, he showed more personality than the rest of the cast combined.
In his review of "The Mummy," Roger Ebert gave the film three out of four stars, acknowledging that it was trash, but arguing that it was enjoyable trash. I understand the sentiment, but his choice surprises me. If I'm in the mood for a so-bad-that-it's-good movie, I'll seek out something memorably awful, like "Roadhouse" or "Showgirls." "The Mummy" isn't bad enough to make my guilty pleasure list. It's merely one more overblown exercise in big budget lameness.
© 1999 Ed Johnson-Ott
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


--- layout: page title: About Me description: This is what I do. background: '/img/bg-about.jpg' ---
I’m Abella Othow, and I have more than 10 years of experience in international relations with diplomatic and program management skills.
As a program manager, I learned what makes effective diplomat and easy to go alone with other beside the traditional diplomatic skills. Working as a business and diaspora program manager, I have become more interested to apply data analytics to the fields.
My professional expertise in social data analysis provide valuable insights and new perspective on public affairs. My interest in working with data allowed apply the computer programming languages to do various statistical analysis and machine learning on various data. I am ready for long-time cooperation.


tags
- atl 1
- blue apron 1
- chicken 1
- chinese 1
- cooking 3
- dumplings 1
- foody 2
- iMovie 1
- internet 2
- keynote 1
- learning 3
- life 1
- postman 1
- presentation 1
- presenting 1
- programming 6
- rails 2
- recipes 1
- reflections 1
- restaurants 1
- ruby 2
- tools 1
atl
blue apron
chicken
chinese
cooking
dumplings
foody
iMovie
internet
keynote
learning
life
postman
presentation
presenting
programming
- » postman tips and tricks
- » hackathon firsts but not lasts
- » first group project reflections
- » double and....mind blown
- » CNAME no evil...
- » new chapter through the iron yard


Travel credit cards pack a punch. We’ve all seen the beautiful, shiny credit cards that boast big benefits along with big fees. But as the user, it can be stressful and confusing to apply. BofA needed a way to guide users through all of the small print.
Erica, the bank’s financial digital assistant, would be the sole path to apply for a few months after release, and we were asked to create a response that would give users all the info they needed to apply.
When we release new features for Erica, we have to think of every possible way an user may ask a question, and every possible response Erica can give. As designer, I’m responsible for outlining that logic structure into flows, creating visuals for the conversational interface, and delivering this documentation to tech.
The premium travel card space is highly competitive and highly rewarding. People spend hours comparing credit cards from companies like Chase and American Eagle, hoping to get the best deal of points and perks for a steep annual fee. When we kicked off this feature, our pod focused on our users first. When they asked Erica for help with the Premium Rewards Elite card, what were they really saying? We narrowed this down to three personas:
I know I want a new elite card, but is this one better than the rest?
Maybe I want a new card? Can I get all the info first?
I defintely don’t want this card, but I’ll take a look at what else you got.
which helped us determine three objectives for the feature.
But exactly is the competition? What do the users need to know to push the Elite card to the top of their list?
| American Express Platinum | Chase Sapphire Reserve | Premium Rewards Elite | |
|---|---|---|---|
| Annual Fee | $550 | $550 | $550 |
| Welcome Bonus | 60k after spending 5k | 50k after spending 4k | 50k after spending 3k |
| Earning Rate | 5 pts/$1 on Amex travel flights, hotels 1 pt /$1 evrything else |
3 pts/$1 dining and travel 1 pt/$1 on everything else |
2 pts/$1 dining and travel 1.5 pt/$1 on everything else |
| Annual Credits | $200 airline incidentals, $200 Uber | $300 in travel, $120 Doordash | $300 airline incidentals, 20% off all flights, $150 misc |
The Premium Rewards card boasts pretty solid benefits, and these perks are multiplied for our Preferred Rewards customers. We can see the edge that our card has, and now know what information to focus on. But how do we present it?
This was the draft mockup I made after our kick off. This was all of the immediate info our marketing team wanted us to include, but I had a few concerns.
To understand how other companies handled the complicated typography around credit card deals on a mobile screen, I did a quick and easy competitive analysis.
I liked the idea of exploring with interesting typography, or experimenting with icons in a way we haven't tried with Erica yet. The benefit of a multi modal experience is that we can push the visual envelope sometimes, so I was able to develop three ideas to bring to our first round of design review.
The biggest takeaways I had from our design review was that we had to cut down on the words on copy, make it easy to scan quickly, and try to keep Erica friendly rather than a salesperson (salesrobot)?
And as much as I felt that the icons were an interesting path to explore, our tech teams let us know that it was out of scope for this feature. So, we focused on our third option and addressing the feedback.
And this made it through, and can be seen in production today. If you’d like to see the whole interaction, go ahead and ask your Erica on your Bank of America app.
This was a fun quick project to work on in Erica, and the first time we were seeing Erica try to market a product to our users. We wanted to keep Erica’s friendly and informative personality intact, but also fufill the strategy laid out by marketing. While this was a relatively simple feature to get through, I learned a few things through this process:
- It’s better to invite tech to the conversation early and often, so I didn’t spend too much time developing icons
- In conversational design, you’re always thinking about what the user is asking for. From that lens, we did a good job answering all aspects of that question and allowing the conversation to continue down a different path
- If I had more time, I’d love to explore interesting animations and illustrations


Last night i had an encounter with the controversial red rock opium. Having read the report on this site concerning the substance i was naturally skeptical, and even though i purchased it from a highly trusted source who had been smoking it for 3 weeks, i was inclined to believe even he had been duped and that this was in fact incense. It came in rocks nearly identical to those pictured on the website, though it was blacker looking. My source claimed he had seen it distilled from the raw opium and that this was the result, and swore by its effectiveness. I sprinkled a small portion on some marijuana in a small pipe and smoked it with a friend who had had the opportunity to try opium before (i had not, though i have had both morphine and codeine before, and both administered by doctors). It should be noted here that the doctors observed that i had an unusual tolerance toward morphine despite the fact that i had never previously used opiates.
We smoked this and there was a mild flowery taste accompanied by the familiar feeling of being high (though it seemed to have a distinct punch to it), but we both were already high and figured the effects we were experiencing were from the pot. I went to dinner disappointed, but by the time a good three hours had passed i was surprised at how high i still was. Still not believing it was opium i contacted my source and showed him the information on this website. He was concerned that maybe HE had been screwed and brought some of the rock over and we smoked a pipe with a bit of rock on top of some pot, then a bong of just the opium. At this point i was UNBELIEVABLY high, but for some reason still unconvinced. I was lying back in my chair and not wanting to move anywhere. He rolled up a tobacco cigarrette with a healthy portion of the opium on it and we walked outside smoking it together.
By the time we got to my friends' house i was hammered in a way i have not been in a long time (and i smoke marijuana regularly). This was definitively NOT just pot and definitively like i remember both morphine and codeine, but because the method of administration was different (not ingested or injected) i believe there were some qualitative differences.
I remained high for a good three and a half hours before i had anything else, and there was the onset of a distinctive 'crash' which was accompanied by a strong desire to do more. This was identical to the feeling of stopping my codeine medication after a month of regular use.
CONCLUSION: While there may be people out there selling bunk red rock opium, and the government hasn't found any that contains opiates, there is not enough credible evidence to rule out the existence of opium [or some other psychoactive substance] in a form that resembles this type of incense. I found it to be a great experience (i really want more right now) but a bit too druggy for my average thursday night. Don't go around buying all the red rock you can find though: chances are you are getting screwed.
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.


Archives
-
{% for post in site.posts %}
{% include archives.html %}
{% endfor %}
--- layout: null title: "404" --- {% assign auth = site.data.authors[site.author] %}{% assign copyname = site.data.authors[site.author].name %}{% capture year %}{{ site.time | date: '%Y' }}{% endcapture %}{% capture copyright %}Copyright © {% unless site.meta.copyright.year and year == site.meta.copyright.year %}{{ site.meta.copyright.year }} - {% endunless %}{{ year }} {{ copyname }}{% endcapture %}
Click on one of the links below to get back to the main page, or go through the archives below them to find the post you were trying to read


Part variants
- button
- button-primary
- button-secondary
- button-tertiary
- button-success
- button-warning
- button-danger
- button-dark
- button-medium
- button-light
- button-background
- button-foreground
- button-primary-xs
- button-primary-sm
- button-primary-lg
- button-primary-xl
- button-secondary-xs
- button-secondary-sm
- button-secondary-lg
- button-secondary-xl
- button-tertiary-xs
- button-tertiary-sm
- button-tertiary-lg
- button-tertiary-xl
- button-success-xs
- button-success-sm
- button-success-lg
- button-success-xl
- button-warning-xs
- button-warning-sm
- button-warning-lg
- button-warning-xl
- button-danger-xs
- button-danger-sm
- button-danger-lg
- button-danger-xl
- button-dark-xs
- button-dark-sm
- button-dark-lg
- button-dark-xl
- button-medium-xs
- button-medium-sm
- button-medium-lg
- button-medium-xl
- button-light-xs
- button-light-sm
- button-light-lg
- button-light-xl
- button-background-xs
- button-background-sm
- button-background-lg
- button-background-xl
- button-foreground-xs
- button-foreground-sm
- button-foreground-lg
- button-foreground-xl
Usage - NOT RECOMMENED
- Step 1: Import the style
Using the CLI:
unistylus add "components/button-all"
Or, include SCSS:
@import '@unistylus/bootstrap/components/button-all';
Or, include CSS:
<link rel="stylesheet" href="https://unpkg.com/<EMAIL_ADDRESS>And, include JS (if available):
<script src="https://unpkg.com/<EMAIL_ADDRESS>- Step 2: Use the class
<!-- See the list of classes above. -->


Gateway
BOT
17-May-19 04:46 PM
[dscrd-hush] <dukeleto> that quote seemed appropriate
[dscrd-hush] <ITM> @ComputerGenie - ChickenPool I just predict it will increase.  Its just a feel and not a measure.
[dscrd-hush] <JWolf (WW Clan leader)> 4sure
[dscrd-hush] <ITM> @jl777c We can make investor vote also, 50% miners 50% holders, they vote once every day until 10000 blocks.
[dscrd-hush] <ComputerGenie - ChickenPool> I just predict it will increase.
Me too, that's why I'm "OK" with mining at a "loss" because I know that if nothing else inflation will bring it up after years
[dscrd-hush] <jl777c> why do all this complex stuff, if a 50/50 solution is a halfway decent solution?
[dscrd-hush] <JWolf (WW Clan leader)> it will but not %300
[dscrd-hush] <ITM> @jl777c It's way more fun.
[dscrd-hush] <ComputerGenie - ChickenPool> but not %300?
[dscrd-hush] <ComputerGenie - ChickenPool> if you mean price, 300% is pittance imo
[dscrd-hush] <JWolf (WW Clan leader)> the diff
[dscrd-hush] <ComputerGenie - ChickenPool> ahhh
[dscrd-hush] <ComputerGenie - ChickenPool> that would depend on how bored some folks got
[dscrd-hush] <JWolf (WW Clan leader)> true
[dscrd-hush] <JWolf (WW Clan leader)> I just dont see it...
[dscrd-hush] <Luffy> Hi to all
[dscrd-hush] <gilardh> Could we keep some of the money for the 71,000 coin lost due to Sprout being stuck in the old HSH v2? Could this be used to reimburse those who claim it later (holder)? I throw the idea, it may not be good.
[dscrd-hush] <gilardh> Hi @Luffy
[dscrd-hush] <JWolf (WW Clan leader)> people are still mining it lol
[dscrd-hush] <Luffy> Mining in old chain?
[dscrd-hush] <Luffy> maybe botnet...
[dscrd-hush] <ComputerGenie - ChickenPool> would be more for @gilardh's suggestion than any other active suggestion thus far
[dscrd-hush] <jl777c> 71000 reserved to cover sprout claims is a very good idea
[dscrd-hush] <ITM> so 71000 we keep for sprout, 160000 we burn(premine burn) and the rest we distribute?
[dscrd-hush] <gilardh> For information, i have no HUSH on cryptopia or HUSH blocked in the old chain (with shielded addresses 'zc')
[dscrd-hush] <jl777c> seems a sane division
[dscrd-hush] <jl777c> of course the details of the distribution needs to be defined
[dscrd-hush] <jl777c> but maybe first reach a general consensus that this threeway allocation makes sense first?
[dscrd-hush] <gilardh> If this is possible especially concerning the claims of 'zc' and cryptopia.
[dscrd-hush] <gilardh> I find it a shame to burn pieces but it's one of the easiest parts to achieve. Premine burn or send bounties to help the coin, that's the question.
[dscrd-hush] <jl777c> sprout claims can be verified as long as the old chain is kept around
[dscrd-hush] <jl777c> burning the premine, i think is a unique act by any project
[dscrd-hush] <jl777c> would be newsworthy
[dscrd-hush] <ITM> @jl777c distribution will need to be define. But all is ideas still.community will need time to put there input and then maybe 2-3months time final decision can be made.
[dscrd-hush] <jl777c> i think the high level allocation of the funds should happen much faster. best way to distribute could well take 2 to 3 months
[dscrd-hush] <jl777c> or maybe we just pick a method to distribute one week with a portion, and the next week another method, ...
[dscrd-hush] <gilardh> @jl777c It is possible to download the old chain (via the old wallet) and easily navigate in with an application locally or website? I think yes.
(edited)
[dscrd-hush] <jl777c> just sync up to the old chain, z_importviewkey. to verify balance
[dscrd-hush] <jl777c> or even z_importkey as there is no other value to the privkey


--- layout: post status: publish published: true title: "绩点计算1.0怀旧版补发" author: Leask author_login: leask author_email<EMAIL_ADDRESS>author_url: https://leaskh.com wordpress_id: 307 wordpress_url: http://leaskh.wordpress.com/2008/01/31/%e7%bb%a9%e7%82%b9%e8%ae%a1%e7%ae%971-0%e6%80%80%e6%97%a7%e7%89%88%e8%a1%a5%e5%8f%91 date: '2008-01-31 12:24:47 +0800' date_gmt: '2008-01-31 12:24:47 +0800' categories: - "华师增院绩点助手" tags: [] comments: [] ---


Buttigieg dominates Iowa field in new CNN poll
by Selim AlgarThe mayor is suddenly major.
Amplifying a recent surge, Pete Buttigieg dominated his rivals in a new CNN/Des Moines Register/Mediacom poll of likely Iowa caucus voters released Saturday.
The mayor of South Bend, Indiana, hit the 25 percent mark – a 16-point climb since September that put him nearly 10 percentage points clear of his main rivals.
Sen. Elizabeth Warren polled at 16 percent with Bernie Sanders right behind at 15 percent, according to the tally.
While Buttigieg’s numbers have fattened since September, Warren’s polling dropped by six percentage points and Biden dipped by five.
Sanders has picked up four percentage points since that stretch.
The latest poll comes on the heels of several other surveys that show Buttigieg abruptly vaulting to the top of the Democratic pack with Iowa voters.
No other candidates managed to crack double digits, according to the survey.
Minnesota Sen. Amy Klobuchar had 6 percent, and a cluster of five candidates limped along with 3 percent.
Former New York City mayor Michael Bloomberg, who has not yet declared his candidacy, had 2 percent.


Download
On-line REPL
If you just want to try it:BiwaScheme REPL
Release version
zip and tgzLatest version
You can also download the latest verison from the git repository:
http://github.com/yhara/biwascheme
If you just want to try it:BiwaScheme REPL
You can also download the latest verison from the git repository:
http://github.com/yhara/biwascheme


Dropdown
Action
Another action
Something else here
Separated link
To the bear!
Hello World!
My name is Qilin!
This is my button!
Line 1
Line 2
Line 3
Hello!
List item 2
Click me!!!


3-alarm fire burns through Jersey City home
by Eyewitness NewsJERSEY CITY, New Jersey (WABC) -- A three-alarm fire is burning through a home in Jersey City.
The fire broke out in a home on Neptune Avenue at around 4:50 a.m. Wednesday.
So far, no injuries have been reported.
The cause of the fire is under investigation.


Moderator: Joe M.
Karl G. wrote:I am recompiling right now. I just realized that there are NO spells in the game because I accidentally erased them all 5 mins ago >.< CRAP!
deathstalker wrote:ok is server down right now i just tried logging on
and this is what i got evidyon-launcher.exe has stopped working
Karl G. wrote:no. I am adding more with the next update.
Return to Evidyon Alpha - Private
Users browsing this forum: No registered users and 0 guests


| Past ( Like to do) | Present ( Doin now) | Future (Love to dev) |
|---|---|---|
| I am Poramase Tong (PT) I came from Thailand last 10 years ago. I have worked in restaurant industry over 10 years. I am bartender and manager to help them grow hugh profit. |
for better carreer !!! to go to study at codefellows to be software developer is to change my future!! |
future will be what I love to do and really want to be "Python develop & AI and Machine Learning" |
| Can't wait to go visit | As job seeker |
|


Projects
Home
Other pages
Projects
Active
Active
Contract with Zelden Company
Created
14.08.2014
Completion with:
40%
Active
Active
Develop chat app
Created
14.08.2014
Stage completed:
35%/20%/10%
Active
Active
Develop Android app
Created
14.08.2014
Completion with:
49%
Completed
Completed
Contract with support
Created
14.08.2014
Completion with:
100%
Active
Active
New product line
Created
14.08.2014
Completion with:
85%


Sloppiness and the Role of Experimental Design
- Apgar et al. use OED to estimate parameters in the signaling model of Brown et al.
- Considered a pool of 164,500 experiments
- Results:
- All parameters can be estimated to high accuracy.
- The optimal experiments are biochemically interesting.
- No fundamental limits to how accurately parameters can be estimated (with enough experimental effort)
Apgar, Joshua F., et al. "Sloppy models, parameter uncertainty, and the role of experimental design." Molecular BioSystems 6.10 (2010): 1890-1900.
Estimating Parameters of Brown et al.
- 5 Experiments could constrain parameters to 10%.
- These experiments had to be chosen carefully.
- Original data constrained parameters (best case) to within a factor of 50.
Apgar, Joshua F., et al. "Sloppy models, parameter uncertainty, and the role of experimental design." Molecular BioSystems 6.10 (2010): 1890-1900.
How much data is necessary?
Original Experiments
- 68 Data points
- No error bars (assumed 20%)
- Only observed a few of the species in the network
Optimal Experiments
- 5 Experiments
- Measured all species
- 100 time points
- 10% errror bars
- 200 times as many measurements
- Eigenvalues span 5 orders of magnitude (still sloppy)
The three primary conclusions remain unchanged.
Chachra, Ricky, Mark K. Transtrum, and James P. Sethna. "Comment on “Sloppy models, parameter uncertainty, and the role of experimental design”." Molecular BioSystems 7.8 (2011): 2522-2522.
The Cause and Cure of Sloppiness
- Random Matrix Theory
- Cause of Sloppiness:
- Systematic Correlations in the affect of parameters on predictions
- Cure of Sloppiness
- Choose experiments that reduce horizontal structure in $J$.
- Biologically motivated experiments
- Generally more dense time points are not effective
- Possible to choose experiments to
- Minimize parameter errors.
- Minimize range of eigenvalues.
Tönsing, Christian, Jens Timmer, and Clemens Kreutz. "Cause and cure of sloppiness in ordinary differential equation models." Physical Review E 90.2 (2014): 023303.


ÁBEL CSENDES
DESIGNER
Experienced 3D and UI Designer with a demonstrated history of working in the entertainment industry. Skilled
in Adobe Creative Suite, Animation, UI Wireframing and Prototyping. Passion for digital arts and design.
With the buttons below, you can visit my different portfolios. Thank you!
Coded by Ábel Csendes 2020


Welcome to {{tenant_name}}.
For security reasons, please verify your email to complete your registration.
Click on the below link to Verify your account and start shopping for your favorite products!


--- layout: post title: "Simple 3-Point Checklist to get the perfect squat!" subtitle: "Tuck, Lift and Lower - says Peter Tucci, Obé fitness trainer." date: 2021-01-16 18:32:13 +0530 background: '/assets/images/Health.jpg' published: true categories: [ Health ] tags: [ health, squat, exercise, workout, simple, lower, trainer ] ---
Squats are one of the simplest and most common lower body exercises—trainers love ’em, and for good reason—but they also happen to be one of the easiest to mess up.
Leaning too far forward, dipping your butt too low (or not low enough), and failing to engage your core can all quickly mess with your form and keep you from reaping the full benefits of the move.
"When you’re doing a squat, you’re obviously bending at your knees and lowering your body, but some things start to happen during that lowering process," says Peter Tucci, Obé fitness trainer.
Your body is always going to try and fight against the move by arching your back—so it’s up to you to tune in and correct it.
"You need to get that butt underneath you," says Tucci. "Don’t tuck to an extreme, but before you lower make sure there isn’t an arch in your back."

When you’re squatting, it’s important to keep your chest held proud and avoid slumping your body forward (which is what it’s going to try and do on its own).
Focus on keeping your head up and shoulders back, and engage your core to provide the central strength you need to make it possible.
"Think about keeping your belly button in tight, as if there’s a magnet between it and your spine," says Tucci.
Finally, when it comes time to dip down to the floor, you want to make sure your weight is back in your heels, which will help to balance your body’s center of gravity and keep you from falling forward.

Hold for a beat, then drive through your heels to push back up to stand.


Flex containers only know how to position elements that are one level deep (i.e., their child elements).
They don’t care one bit about what’s inside their flex items. This means that grouping flex items is another weapon in your layout-creation arsenal.
Wrapping a bunch of items in an extra results in a totally different web page.
Cross-axis (vertical) alignment
The available options for align-items is similar to justify-content:
center
flex-start (top)
flex-end (bottom)
stretch
baseline
wrapping flex items
Flexbox is a more powerful alternative to float-based grids. Not only can it render items as a grid—it can change their alignment,
direction, order, and size, too. To create a grid, we need the flex-wrap property.
flex container direction
“Direction” refers to whether a container renders its items horizontally or vertically.So far,
all the containers we’ve seen use the default horizontal direction,
which means items are drawn one after another in the same row before popping down to the next column when they run out of space.
alignment considerations
flex container order
Up until now, there’s been a tight correlation between the order of our HTML elements and the way boxes are rendered in a web page.
flex item order
Flex item alignment
We can do the same thing with vertical alignment.
center
flex-start (top)
flex-end (bottom)
stretch
baseline
Flexible items
Flex items are flexible: they can shrink and stretch to match the width of their containers.
The flex property defines the width of individual items in a flex container.
static item widths
flex items and auto-margins
Auto-margins in flexbox are special. They can be used as an alternative to an extra div when trying to align a group of items to the left/right of a container. Think of auto-margins as a “divider” for flex items in the same container.
.container {
margin-left: auto;
}
summary
Use display: flex; to create a flex container.
Use justify-content to define the horizontal alignment of items.
Use align-items to define the vertical alignment of items.
Use flex-direction if you need columns instead of rows.
Use the row-reverse or column-reverse values to flip item order.
Use order to customize the order of individual elements.
Use align-self to vertically align individual items.
Use flex to create flexible boxes that can stretch and shrink.


Tomorrow Never Dies
A Review
By Jeremiah Rickert
Starring: Pierce Brosnan, Jonathan Pryce, Michelle Yeoh, Teri Hatcher Directed by: Roger Spottiswoode
I had been comfortable with the idea of Pierce Brosnan as 007 since the early 80s when he was originally slated for the role. Goldeneye was a slight disappointment, however, as James Bond just didn't seem much like James Bond. With Tomorrow Never Dies, both Brosnan and those who write for him as Bond seem comfortable with each other, and the long lasting series of action films seems destined to continue for a long time.
This latest offering, for the most part, can compete with various Bond classics on some levels, but falls a bit short in others. The plot concerns the attempt of Media Mogul Elliot Carver to dominate the reporting of news by making news. Carver is played with beautiful, slimy, arrogance by Jonathan Pryce (Glengarry Glen Ross, Evita, Miss Saigon, Brazil). He wants to push China and Great Britain into a war and make sure his cameras are there to see it. He tricks a British frigate into invading China's waters, and then sinks it and shoots down a Chinese plane with his hidden stealth boat. This forces the two great superpowers into a showdown, with him in between, firing in both directions, and getting the news scoop at the same time. It's up to Bond to reveal Carver's hand and stop what could lead to a nuclear war.
On the way Bond runs into an old flame played by Teri Hatcher (Lois and Clark, Heaven's Prisoners), and a Chinese agent with the same mission played by Michelle Yeoh (Supercop). Yeoh lights up the screen with her martial arts acrobatics and some of the same swaggering and gadgets that Bond is famous for. I have to say I would look foward to her appearing in future Bond films. Despite the fact that they both work "alone" as agents for their respective nations, Yeoh's Mai Lin and Brosnan's James Bond make a good team. Joe Don Baker also reprises his role as the American CIA agent who seems to loud and boisterous to do anything remotely secret. (Am I the only one who remembers he was a villain in "The Living Daylights?)
The action in this film is good, and there is not too much of it, as there was in Goldeneye. The stunts are outlandish and over-the-top as in most Bond films, and we were treated to some bond traditions such as the obligatory car chase and some underwater action, not to mention a nail-biting opening sequence where Bond flies by the seat of his pants. (Literally). There was a lot in this film that you just do not see in the run-of-the-mill action film, or if you do, it is so watered down that the excitement is completely lost. (See The Peacemaker).
Finally, the thing that nagged at me throughout the whole movie was the interaction between Bond and his former flame, played by Teri Hatcher.  The usually aloof and arrogant James Bond looked whiny and depressed, and that cut into the Bond mystique. It's almost like PC has caught up with the world's least PC agent. They dealt with that issue in a very hilarious way in Goldeneye, but I think they dropped the ball on this one. I wonder if it has anything to do with the death of Albert "Cubby" Broccoli, who had been the series producer for some time. I was reminded of similar scenes in Batman Forever (well, just about every Batman film really) where the Bat and the Belle De Jour (Nicole Kidman in this case) discuss his Dark Past, and reflect on his deep dark character flaws, and he opens up and is just a man. James Bond is not A MAN, he's THE MAN. That is the way that Fleming created him, and that is way he should be, humanizing a character that is so well-established, changing them, is a detriment, not an improvement.
Despite that major flaw, I found that the villian was slimy and great in the Bond Tradition, yet still a progression from those in the past, the action was wacky and "yeah-right" but still entertained, and the writers managed to write one-liners and jokes that were funny, and not so obvious, like the best from the Connery and Moore days. There was a good balance of Humour and Action and Suspense, but the little bits of Character Drama threw off that balance a bit. Despite that, I enjoyed the film, and think it's the best Bond film since For Your Eyes Only.
My rating, of the $6.50 I paid for it, it was worth $6.50
(c) 1997 Jeremiah Rickert
--
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


Movie Tickets
Choose a movie:
Movie
Faster and Furioser 22
Pirates of the Carribbean 8: Johnny Needs a Paycheck
American Pie in the Sky 5
Tim Burton Doing His Same Old Schtick
Super Heavy and Emotional Best Picture Shoe-in
Low Brow Parody Movie That Happens Every Year
Choose One
Adult
Child
Senior
Choose Showing
3:00pm
7:00pm
9:00pm
Purchase ticket
Your ticket
Movie:
Showtime
Price: $


| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 | // SPDX-License-Identifier: MIT pragma solidity 0.8.3; import "./tellor3/TellorStorage.sol"; import "./TellorVars.sol"; import "./interfaces/IGovernance.sol"; /** @author Tellor Inc. @title Token @dev Contains the methods related to transfers and ERC20, its storage * and hashes of tellor variables that are used to save gas on transactions. */ contract Token is TellorStorage, TellorVars { // Events event Approval( address indexed _owner, address indexed _spender, uint256 _value ); // ERC20 Approval event event Transfer(address indexed _from, address indexed _to, uint256 _value); // ERC20 Transfer Event // Functions /** * @dev Getter function for remaining spender balance * @param _user address of party with the balance * @param _spender address of spender of parties said balance * @return Returns the remaining allowance of tokens granted to the _spender from the _user */ function allowance(address _user, address _spender) external view returns (uint256) { return _allowances[_user][_spender]; } /** * @dev This function returns whether or not a given user is allowed to trade a given amount * and removing the staked amount from their balance if they are staked * @param _user address of user * @param _amount to check if the user can spend * @return true if they are allowed to spend the amount being checked */ function allowedToTrade(address _user, uint256 _amount) public view returns (bool) { if ( stakerDetails[_user].currentStatus != 0 && stakerDetails[_user].currentStatus < 5 ) { // Subtracts the stakeAmount from balance if the _user is staked return (balanceOf(_user) - uints[_STAKE_AMOUNT] >= _amount); } return (balanceOf(_user) >= _amount); // Else, check if balance is greater than amount they want to spend } /** * @dev This function approves a _spender an _amount of tokens to use * @param _spender address * @param _amount amount the spender is being approved for * @return true if spender approved successfully */ function approve(address _spender, uint256 _amount) external returns (bool) { require(_spender != address(0), "ERC20: approve to the zero address"); _allowances[msg.sender][_spender] = _amount; emit Approval(msg.sender, _spender, _amount); return true; } /** * @dev This function approves a transfer of _amount tokens from _from to _to * @param _from is the address the tokens will be transferred from * @param _to is the address the tokens will be transferred to * @param _amount is the number of tokens to transfer * @return true if spender approved successfully */ function approveAndTransferFrom( address _from, address _to, uint256 _amount ) external returns (bool) { require( (IGovernance(addresses[_GOVERNANCE_CONTRACT]) .isApprovedGovernanceContract(msg.sender) || msg.sender == addresses[_TREASURY_CONTRACT] || msg.sender == addresses[_ORACLE_CONTRACT]), "Only the Governance, Treasury, or Oracle Contract can approve and transfer tokens" ); _doTransfer(_from, _to, _amount); return true; } /** * @dev Gets balance of owner specified * @param _user is the owner address used to look up the balance * @return Returns the balance associated with the passed in _user */ function balanceOf(address _user) public view returns (uint256) { return balanceOfAt(_user, block.number); } /** * @dev Queries the balance of _user at a specific _blockNumber * @param _user The address from which the balance will be retrieved * @param _blockNumber The block number when the balance is queried * @return The balance at _blockNumber specified */ function balanceOfAt(address _user, uint256 _blockNumber) public view returns (uint256) { TellorStorage.Checkpoint[] storage checkpoints = balances[_user]; if ( checkpoints.length == 0 || checkpoints[0].fromBlock > _blockNumber ) { return 0; } else { if (_blockNumber >= checkpoints[checkpoints.length - 1].fromBlock) return checkpoints[checkpoints.length - 1].value; // Binary search of the value in the array uint256 _min = 0; uint256 _max = checkpoints.length - 2; while (_max > _min) { uint256 _mid = (_max + _min + 1) / 2; if (checkpoints[_mid].fromBlock == _blockNumber) { return checkpoints[_mid].value; } else if (checkpoints[_mid].fromBlock < _blockNumber) { _min = _mid; } else { _max = _mid - 1; } } return checkpoints[_min].value; } } /** * @dev Burns an amount of tokens * @param _amount is the amount of tokens to burn */ function burn(uint256 _amount) external { _doBurn(msg.sender, _amount); } /** * @dev Allows for a transfer of tokens to _to * @param _to The address to send tokens to * @param _amount The amount of tokens to send */ function transfer(address _to, uint256 _amount) external returns (bool success) { _doTransfer(msg.sender, _to, _amount); return true; } /** * @notice Send _amount tokens to _to from _from on the condition it * is approved by _from * @param _from The address holding the tokens being transferred * @param _to The address of the recipient * @param _amount The amount of tokens to be transferred */ function transferFrom( address _from, address _to, uint256 _amount ) external returns (bool success) { require( _allowances[_from][msg.sender] >= _amount, "Allowance is wrong" ); _allowances[_from][msg.sender] -= _amount; _doTransfer(_from, _to, _amount); return true; } // Internal /** * @dev Helps burn TRB Tokens * @param _from is the address to burn or remove TRB amount * @param _amount is the amount of TRB to burn */ function _doBurn(address _from, uint256 _amount) internal { // Ensure that amount of balance are valid if (_amount == 0) return; require( allowedToTrade(_from, _amount), "Should have sufficient balance to trade" ); uint128 _previousBalance = uint128(balanceOf(_from)); uint128 _sizedAmount = uint128(_amount); // Update total supply and balance of _from _updateBalanceAtNow(_from, _previousBalance - _sizedAmount); uints[_TOTAL_SUPPLY] -= _amount; } /** * @dev Helps swap the old Tellor contract Tokens to the new one * @param _to is the address to send minted amount to * @param _amount is the amount of TRB to send */ function _doMint(address _to, uint256 _amount) internal { // Ensure to address and mint amount are valid require(_amount != 0, "Tried to mint non-positive amount"); require(_to != address(0), "Receiver is 0 address"); uint128 _previousBalance = uint128(balanceOf(_to)); uint128 _sizedAmount = uint128(_amount); // Update total supply and balance of _to address uints[_TOTAL_SUPPLY] += _amount; _updateBalanceAtNow(_to, _previousBalance + _sizedAmount); emit Transfer(address(0), _to, _amount); } /** * @dev Completes transfers by updating the balances on the current block number * and ensuring the amount does not contain tokens staked for mining * @param _from address to transfer from * @param _to address to transfer to * @param _amount to transfer */ function _doTransfer( address _from, address _to, uint256 _amount ) internal { // Ensure user has a correct balance and to address require(_amount != 0, "Tried to send non-positive amount"); require(_to != address(0), "Receiver is 0 address"); require( allowedToTrade(_from, _amount), "Should have sufficient balance to trade" ); // Update balance of _from address uint128 _previousBalance = uint128(balanceOf(_from)); uint128 _sizedAmount = uint128(_amount); _updateBalanceAtNow(_from, _previousBalance - _sizedAmount); // Update balance of _to address _previousBalance = uint128(balanceOf(_to)); _updateBalanceAtNow(_to, _previousBalance + _sizedAmount); emit Transfer(_from, _to, _amount); } /** * @dev Updates balance for from and to on the current block number via doTransfer * @param _value is the new balance */ function _updateBalanceAtNow(address _user, uint128 _value) internal { Checkpoint[] storage checkpoints = balances[_user]; // Checks if no checkpoints exist, or if checkpoint block is not current block if ( checkpoints.length == 0 || checkpoints[checkpoints.length - 1].fromBlock != block.number ) { // If yes, push a new checkpoint into the array checkpoints.push( TellorStorage.Checkpoint({ fromBlock: uint128(block.number), value: _value }) ); } else { // Else, update old checkpoint TellorStorage.Checkpoint storage oldCheckPoint = checkpoints[ checkpoints.length - 1 ]; oldCheckPoint.value = _value; } } } |


In this course you will gain knowledge and experience from the innovative
process used by thai startups, using the intructor's own Thiland-based environmental
In this course you will gain knowledge and experience from the innovative
process used by thai startups, using the intructor's own Thiland-based environmental


The consecutive odds ratios of the binomial $(n, p)$ distribution help us derive an approximation for the distribution when $n$ is large and $p$ is small in such a way that $np$ remains moderate. The approximation is sometimes called "the law of small numbers" because it approximates the distribution of the number of successes when the chance of success is small: you only expect a small number of successes.
As an example, here is the binomial $(1000, 2/1000)$ distribution. Note that $1000$ is large, $2/1000$ is pretty small, and $1000 \times (2/1000) = 2$ is a natural number of successes to be thinking about.
n = 1000
p = 2/1000
k = np.arange(16)
binom_probs = stats.binom.pmf(k, n, p)
binom_dist = Table().values(k).probability(binom_probs)
Plot(binom_dist)
Though the possible values of the number of successes in 1000 trials can be anywhere between 0 and 1000, the probable values are all rather small because $p$ is small. That is why we didn't even bother computing the probabilities beyond $k = 15$.
Since the histogram is all scrunched up near 0, only very few bars have noticeable probability. It really should be possible to find or approximate the chances more simply than by using the binomial formula.
To see how to do this, we will start with $P(0)$.
Let $n \to \infty$ and $p_n \to 0$ in such a way that $np_n \to \mu > 0$. Let $P_n(k)$ be the binomial $(n, p_n)$ probability of $k$ successes.
Then $$ P_n(0) = (1 - p_n)^n = \big{(} 1 - \frac{np_n}{n} \big{)}^n \to e^{-\mu} ~~~ \text{as } n \to \infty $$
If you can't see the limit directly, appeal to our familiar exponential approxmation:
$$ \log(P_n(0)) = n \log \big{(} 1 - \frac{np_n}{n} \big{)} = n \cdot \log \big{(} 1 - p_n \big{)} \sim n(-p_n) = -np_n \sim -\mu $$when $n$ is large, because $p_n \sim 0$ and $np_n \sim \mu$.
In general, for fixed $k > 1$,
\begin{align*} P_n(k) &= P_n(k-1)R_n(k) \\ \\ &= P_n(k-1)\frac{n-k+1}{k} \cdot \frac{p_n}{1-p_n} \\ \\ &= P_n(k-1) \big{(} \frac{np_n}{k} - \frac{(k-1)p_n}{k} \big{)} \frac{1}{1 - p_n} \\ \\ &\sim P_n(k-1) \cdot \frac{\mu}{k} \end{align*}when $n$ is large, because $k$ is constant, $p_n \to 0$, and $1-p_n \to 1$. By induction, this implies the following approximation for each fixed $k$.
$$ P_n(k) ~ \sim ~ e^{-\mu} \cdot \frac{\mu}{1} \cdot \frac{\mu}{2} \cdots \frac{\mu}{k} ~ = ~ e^{-\mu} \frac{\mu^k}{k!} $$if $n$ is large, under all the additional conditions we have assumed. Here is a formal statement.
Let $n \to \infty$ and $p_n \to 0$ in such a way that $np_n \to \mu > 0$. Let $P_n(k)$ be the binomial $(n, p_n)$ probability of $k$ successes. Then for each $k$ such that $0 \le k \le n$,
$$ P_n(k) \sim e^{-\mu} \frac{\mu^k}{k!} ~~~ \text{for large } n $$This is called the Poisson approximation to the binomial. The parameter of the Poisson is $\mu \sim np_n$ for large $n$.
The distribution is named after its originator, the French mathematician Siméon Denis Poisson (1781-1840).
The terms in the approximation are proportional to the terms in the series expansion of $e^{\mu}$: $$ \frac{\mu^k}{k!}, ~~ k \ge 0 $$ The expansion is infinite, but we are only going upto a finite, though large, number of terms $n$. You now start to see the value of being able to work with probability spaces that have an infinite number of possible outcomes.
We'll get to that in a later section. For now, let's see if the approximation we derived is any good.
Use stats.poisson.pmf
just as you would use stats.binomial.pmf
, but keep in mind that the Poisson has only one parameter.
Suppose $n = 1000$ and $p = 2/1000$. Then the exact binomial chance of 3 successes is
stats.binom.pmf(3, 1000, 2/1000)
The approximating Poisson distribution has parameter $1000 \times (2/1000) = 2$, and so the Poisson approximation to the probability above is
stats.poisson.pmf(3, 2)
Not bad. To compare the entire distributions, first create the two distribution objects:
k = range(16)
bin_probs = stats.binom.pmf(k, 1000, 2/1000)
bin_dist = Table().values(k).probability(bin_probs)
poi_probs = stats.poisson.pmf(k, 2)
poi_dist = Table().values(k).probability(poi_probs)
The prob140
function that draws overlaid histograms is called Plots
(note the plural). The syntax has alternating arguments: a string name you provide for a distribution, followed by that distribution, then a string name for the second distribution, then that distribution.
Plots('Binomial (1000, 2/1000)', bin_dist, 'Poisson (2)', poi_dist)
Does it look as though there is only one histogram? That's because the approximation is great! Here are the two histograms individually.
Plot(bin_dist)
Plot(poi_dist)
A reasonable question to ask at this stage is, "Well that's all very nice, but why should I bother with approximations when I can just use Python to compute the exact probabilities using stats.binom.pmf
?"
Part of the answer is that if a function involves parameters, you can't understand how it behaves by just computing its values for some particular choices of the parameters. In the case of Poisson probabilities, we will also see shortly that they form a powerful distribution in their own right, on an infinite set of outcomes.


Ornamentum dropdown is an simple dropdown with extended features that a conventional dropdown not supports. as same as the Data Table it was built for focusing on deliver a feature rich, highly configurable,UI framework agnostic, fully responsive and minimal peer dependency support dropdown in top of the Angular Framework.
The following example shows how Ornamentum Dropdown looks like and responsible code segment for the dropdown is shown down below.
{{demoSnippet.yarn}}
{{demoSnippet.npm}}
{{demoSnippet.import}}
{{demoSnippet.stylesImport}}
Ornamentum data table was depend of set of peer dependencies. before library usage, those dependencies need to pre-installed before use. which are,
Below structure shows the available features and functionalities that user allows to configure on dropdown. in each section explain and describes particular feature or functionality in depth with examples.


Low Income Scheme
Sprint 2 - Bill persona
My name is Bill and I am 70. I live on my own in Newcastle.
I have a state pension and a small work pension which barely cover my rent and council tax.
I would like help to pay for the cost of Dental treatment and glasses. I was told about the Low income Scheme and I would like to apply to see if I can get help.


HPROF is a tool for heap and CPU profiling shipped with every JDK release. It is a dynamic-link library (DLL) that interfaces with the Java Virtual Machine (JVM) using the Java Virtual Machine Tool Interface (JVM TI). The tool writes profiling information either to a file or to a socket in ASCII or binary format. This information can be further processed by a profiler front end tool.
The HPROF tool is capable of presenting CPU usage, heap allocation statistics, and monitor contention profiles. In addition, it can report complete heap dumps and states of all the monitors and threads in the JVM. In terms of diagnosing problems, HPROF is useful when analyzing performance, lock contention, memory leaks, and other issues.
In addition to the HPROF library, the JDK includes the source for HPROF as JVM TI demonstration code. This code is located in the $JAVA_HOME/demo/jvmti/hprof
directory.
The following sections describe troubleshooting techniques with HPROF tool.
Invoke the HPROF tool as shown in Example 2-6.
Example 2-6 How to Invoke HPROF Tool
$ java -agentlib:hprof ToBeProfiledClass
$ java -agentlib:hprof=heap=sites ToBeProfiledClass
Depending on the type of profiling requested, HPROF instructs the JVM to send it the relevant events. The tool then processes the event data into profiling information. For example, the following command obtains the heap allocation profile:
The complete list of options is printed when the HPROF agent is provided with the help
option, as shown in Example 2-7.
Example 2-7 HPROF Agent Help
$ java -agentlib:hprof=help
HPROF: Heap and CPU Profiling Agent (JVMTI Demonstration Code)
hprof usage: java -agentlib:hprof=[help]|[<option>=<value>, ...]
Option Name and Value Description Default
--------------------- ----------- -------
heap=dump|sites|all heap profiling all
cpu=samples|times|old CPU usage off
monitor=y|n monitor contention n
format=a|b text(txt) or binary output a
file=<file> write data to file java.hprof[{.txt}]
net=<host>:<port> send data over a socket off
depth=<size> stack trace depth 4
interval=<ms> sample interval in ms 10
cutoff=<value> output cutoff point 0.0001
lineno=y|n line number in traces? y
thread=y|n thread in traces? n
doe=y|n dump on exit? y
msa=y|n Oracle Solaris micro state accounting n
force=y|n force output to <file> y
verbose=y|n print messages about dumps y
Obsolete Options
----------------
gc_okay=y|n
<>
Examples
--------
- Get sample cpu information every 20 millisec, with a stack depth of 3:
java -agentlib:hprof=cpu=samples,interval=20,depth=3 classname
- Get heap usage information based on the allocation sites:
java -agentlib:hprof=heap=sites classname
Notes
-----
- The option format=b cannot be used with monitor=y.
- The option format=b cannot be used with cpu=old|times.
- Use of the -Xrunhprof interface can still be used, e.g.
java -Xrunhprof:[help]|[<option>=<value>, ...]
will behave exactly the same as:
java -agentlib:hprof=[help]|[<option>=<value>, ...]
Warnings
--------
- This is demonstration code for the JVMTI interface and use of BCI,
it is not an official product or formal part of the JDK.
- The -Xrunhprof interface will be removed in a future release.
- The option format=b is considered experimental, this format may change
in a future release.
By default, heap profiling information (sites and dump) is written out to java.hprof.txt
(in ASCII) in the current working directory.
The output is normally generated when the JVM exits, although this can be disabled by setting the doe
(dump on exit) option to n
(doe=n
). In addition, a profile is generated when Ctrl+\ (on Oracle and Linux operating systems) or Ctrl-Break (on Windows) is pressed. On Oracle Solaris and Linux operating systems a profile is also generated when a QUIT
signal is received by a process (kill -QUIT
pid). If Ctrl+\ or Ctrl-Break is pressed multiple times, then multiple profiles are generated to the one file.
The output in most cases will contain IDs for traces, threads, and objects. Each type of ID will typically start with a different number than the other IDs. For example, traces might start with 300000
.
Example 2-8 is a heap allocation profile generated by running the Java compiler (javac
) on a set of input files. Only parts of the profiler output are shown here.
Example 2-8 Heap Allocation Profle
$ javac -J-agentlib:hprof=heap=sites Hello.java
SITES BEGIN (ordered by live bytes) Wed Oct 4 13:13:42 2006
percent live alloc'ed stack class
rank self accum bytes objs bytes objs trace name
1 44.13% 44.13% 1117360 13967 1117360 13967 301926 java.util.zip.ZipEntry
2 8.83% 52.95%<PHONE_NUMBER>7<PHONE_NUMBER>7 301927 com.sun.tools.javac.util.List
3 5.18% 58.13% 131088 1 131088 1 300996 byte[]
4 5.18% 63.31% 131088 1 131088 1 300995 com.sun.tools.javac.util.Name[]
A crucial piece of information in the heap profile is the amount of allocation that occurs in various parts of the program. The preceding SITES
records show that 44.13% of the total space was allocated for the java.util.zip.ZipEntry
objects.
A good way to relate allocation sites to the source code is to record the dynamic stack traces that led to the heap allocation. Example 2-9 shows another part of the profiler output. It illustrates the stack traces referred to by the four allocation sites in the preceding output.
Example 2-9 Profiler Ouput for Stack Traces
TRACE 301926: java.util.zip.ZipEntry.<init>(ZipEntry.java:101) java.util.zip.ZipFile+3.nextElement(ZipFile.java:417) com.sun.tools.javac.jvm.ClassReader.openArchive(ClassReader.java:1374) com.sun.tools.javac.jvm.ClassReader.list(ClassReader.java:1631) TRACE 301927: com.sun.tools.javac.util.List.<init>(List.java:42) com.sun.tools.javac.util.List.<init>(List.java:50) com.sun.tools.javac.util.ListBuffer.append(ListBuffer.java:94) com.sun.tools.javac.jvm.ClassReader.openArchive(ClassReader.java:1374) TRACE 300996: com.sun.tools.javac.util.Name$Table.<init>(Name.java:379) com.sun.tools.javac.util.Name$Table.<init>(Name.java:481) com.sun.tools.javac.util.Name$Table.make(Name.java:332) com.sun.tools.javac.util.Name$Table.instance(Name.java:349) TRACE 300995: com.sun.tools.javac.util.Name$Table.<init>(Name.java:378) com.sun.tools.javac.util.Name$Table.<init>(Name.java:481) com.sun.tools.javac.util.Name$Table.make(Name.java:332) com.sun.tools.javac.util.Name$Table.instance(Name.java:349)
Each frame in the stack trace contains a class name, a method name, a source file name, and the line number. The user can set the maximum number of frames collected by the HPROF agent. The default limit is four. Stack traces reveal not only which methods performed heap allocation, but also which methods were ultimately responsible for making calls that resulted in memory allocation.
A heap dump can be obtained using the heap=dump
option. The heap dump is in either ASCII or binary format, depending on the setting of the format option. Tools such as jhat
use binary format and therefore, the format=b
option is required. See The jhat Utility) for more details. When the binary format is specified, the dump includes primitive type instance fields and primitive array content.
Example 2-10 shows the command that produces a complete dump in ASCII text format of the current live objects in the heap from executing the javac
compiler:
Example 2-10 Dump in ASCII Text
$ javac -J-agentlib:hprof=heap=dump Hello.java
HEAP DUMP BEGIN (39793 objects, 2628264 bytes) Wed Oct 4 13:54:03 2006 ROOT 50000114 (kind=<thread>, id=200002, trace=300000) ROOT 50000006 (kind=<JNI global ref>, id=8, trace=300000) ROOT 50008c6f (kind=<Java stack>, thread=200000, frame=5) : CLS 50000006 (name=java.lang.annotation.Annotation, trace=300000) loader 90000001 OBJ 50000114 (sz=96, trace=300001, class=java.lang.Thread@50000106) name 50000116 group 50008c6c contextClassLoader 50008c53 inheritedAccessControlContext 50008c79 blockerLock 50000115 OBJ 50008c6c (sz=48, trace=300000, class=java.lang.ThreadGroup@50000068) name 50008c7d threads 50008c7c groups 50008c7b ARR 50008c6f (sz=16, trace=300000, nelems=1, elem type=java.lang.String[]@5000008e) [0] 500007a5 CLS 5000008e (name=java.lang.String[], trace=300000) super 50000012 loader 90000001 : HEAP DUMP END
The output is a large file. It consists of the root set as determined by the garbage collector, and an entry for each Java object in the heap that can be reached from the root set. The following is a selection of records from a sample heap dump.
Each record is a ROOT
, OBJ
, CLS
, or ARR
to represent a root, an object instance, a class, or an array. The hexadecimal numbers are identifiers assigned by HPROF. These numbers are used to show the references from an object to another object. In the preceding example, the java.lang.Thread
instance 50000114
has a reference to its thread group (50008c6c
) and other objects.
In general, as the output is very large, it is necessary to use a tool to visualize or process the output of the heap dump. One such tool is jhat
. See The jhat Utility.
The HPROF tool can collect CPU usage information by sampling threads. Example 2-11 shows how to generate a CPU usage sampling profile by running the javac
compiler.
Example 2-11 CPU Usage Sampling Profile
$ javac -J-agentlib:hprof=cpu=samples Hello.java
CPU SAMPLES BEGIN (total = 462) Wed Oct 4 13:33:07 2006
rank self accum count trace method
1 49.57% 49.57% 229 300187 java.util.zip.ZipFile.getNextEntry
2 6.93% 56.49% 32 300190 java.util.zip.ZipEntry.initFields
3 4.76% 61.26% 22 300122 java.lang.ClassLoader.defineClass2
4 2.81% 64.07% 13 300188 java.util.zip.ZipFile.freeEntry
5 1.95% 66.02% 9 300129 java.util.Vector.addElement
6 1.73% 67.75% 8 300124 java.util.zip.ZipFile.getEntry
7 1.52% 69.26% 7 300125 java.lang.ClassLoader.findBootstrapClass
8 0.87% 70.13% 4 300172 com.sun.tools.javac.main.JavaCompiler.<init>
9 0.65% 70.78% 3 300030 java.util.zip.ZipFile.open
10 0.65% 71.43% 3 300175 com.sun.tools.javac.main.JavaCompiler.<init>
...
CPU SAMPLES END
The HPROF agent periodically samples the stack of all running threads to record the most frequently active stack traces. The count
field above indicates how many times a particular stack trace was found to be active. These stack traces correspond to the CPU usage hot spots in the application.
The HPROF tool can collect CPU usage information by injecting code into every method entry and exit, thereby keeping track of exact method call counts and the time spent in each method. This process uses the bytecode index (BCI) and runs considerably slower than the cpu=samples
option. Example 2-12 shows part of the CPU usage times profile output collected from a run of the javac
compiler.
Example 2-12 CPU Usage Times Profile
$ javac -J-agentlib:hprof=cpu=times Hello.java
CPU TIME (ms) BEGIN (total =<PHONE_NUMBER>) Wed oct 4 13:43:42 2006
rank self accum count trace method
1 3.70% 3.70% 1 311243 com.sun.tools.javac.Main.compile
2 3.64% 7.34% 1 311242 com.sun.tools.javac.main.Main.compile
3 3.64% 10.97% 1 311241 com.sun.tools.javac.main.Main.compile
4 3.11% 14.08% 1 311173 com.sun.tools.javac.main.JavaCompiler.compile
5 2.54% 16.62% 8 306183 com.sun.tools.javac.jvm.ClassReader.listAll
6 2.53% 19.15% 36 306182 com.sun.tools.javac.jvm.ClassReader.list
7 2.03% 21.18% 1 307195 com.sun.tools.javac.comp.Enter.main
8 2.03% 23.21% 1 307194 com.sun.tools.javac.comp.Enter.complete
9 1.68% 24.90% 1 306392 com.sun.tools.javac.comp.Enter.classEnter
10 1.68% 26.58% 1 306388 com.sun.tools.javac.comp.Enter.classEnter
...
CPU TIME (ms) END
In this output, the count represents the true count of the number of times this method was entered, and the percentages represent a measure of thread CPU time spent in this method.