class: center, middle ### Extending Perl 6 ## Command Line Argument Parsing ## using Metaprogramming #### Brian Duggan
bduggan
<EMAIL_ADDRESS>--- class: center, middle count: false background-image: url(gears-background.png)
We craft software for companies that care about the details.
--- ### Extending Command Line Argument Parsing using Metaprogramming * Part I: Command Line Argument Parsing * Part II: using Metaprogramming --- class: center, middle # Part I # Command Line Argument Parsing --- class: center, middle Command line argument parsing ## Is often harder than it should be --- class: center, middle
--- class: center, middle
--- class: center, middle ## It shouldn't be so hard --- ## Command Line Argument Parsing
gm convert -size 120x120 cockatoo.jpg -resize 120x120 +profile "*" thumbnail.jpg
-- ## It's almost like calling a function. ```perl6 gm('convert', size => '120x120', input => 'cockatoo.jpg', resize => '120x120', profile => True, files => '*', output => 'thumbnail.jpg') ``` --- ## Command Line Argument Parsing
gm convert -size 120x120 cockatoo.jpg -resize 120x120 +profile "*" thumbnail.jpg
## But we need * positional or named parameters * required or optional parameters * typed parameters * parameters with short or long names * parameters with documentation * other...? --- class: center, middle ## Perl 6 subroutines support all these things. --- class: center, middle ## Perl 6 CLI arguments are mapped to parameters for MAIN() --- layout: true .footer[ basics ∙ positional/named ∙ required ∙ types ∙ defaults ∙ aliases ∙ constraints ∙ multi-dispatch ∙ docs ] --- ## Let's look at examples of: * Positional vs named parameters * Required parameters * Types * Defaults * Aliases * Constraints * Multiple dispatch * Documentation --- layout: true .footer[ **basics** ∙ positional/named ∙ required ∙ types ∙ defaults ∙ aliases ∙ constraints ∙ multi-dispatch ∙ docs ] --- ### But first: no argument parsing .right[greet] ```perl6 #!/usr/bin/env perl6 say "hello, world"; ``` ``` $ ./greet hello, world ``` You can always do your own thing using `@*ARGS` if you want.  Bool :$howru) { say "hello, $name"; say "how are you?" if $howru } ``` ``` Usage: greet --name=
[--howru] $ greet --name=Bob --howru hello, Bob how are you? ``` --- layout: true .footer[ basics ∙ positional/named ∙ required ∙ types ∙ **defaults** ∙ aliases ∙ constraints ∙ multi-dispatch ∙ docs ] --- ### Defaults ```perl6 sub MAIN($name = 'Bob') { say "hello, $name" } ``` ``` $ greet -h greet [
] ``` note: default value is not shown in the default usage ??? Note that the default is not in the usage. More on that later. --- layout: true .footer[ basics ∙ positional/named ∙ required ∙ types ∙ defaults ∙ **aliases** ∙ constraints ∙ multi-dispatch ∙ docs ] --- ### Aliases ```perl6 sub MAIN( Str :n( :name( $name ) ) ) { say "hi $name"; } ``` ``` Usage: greet [-n|--name=
] ``` --- layout: true .footer[ basics ∙ positional/named ∙ required ∙ types ∙ defaults ∙ aliases ∙ **constraints** ∙ multi-dispatch ∙ docs ] --- ### Constraints ```perl6 sub MAIN( $name where /:i 'bob' | 'robert' / ) { say "Is that you, Bob?" } ``` ``` $ greet Roberto Is that you, Bob? $ greet joe Usage: greet
``` ??? Again, notice that constraints are not there. --- layout: true .footer[ basics ∙ positional/named ∙ required ∙ types ∙ defaults ∙ aliases ∙ constraints ∙ **multi-dispatch** ∙ docs ] --- ### Multiple dispatch ```perl6 multi MAIN('bob') { say "Hello, Bob"; } multi MAIN('alice') { say "Hi, Alice"; } ``` ``` $ greet Usage: greet bob greet alice ``` ``` $ greet bob Hello, Bob ``` --- layout: true .footer[ basics ∙ positional/named ∙ required ∙ types ∙ defaults ∙ aliases ∙ constraints ∙ multi-dispatch ∙ **docs** ] --- ### Documentation ```perl6 #| Say hello to someone. multi MAIN('hello', Str :$name! #= the person to be greeted ) { say "hello, $name" } #| Say goodbye. multi MAIN('bye', Str :$name!) { say "Goodbye, $name, see you later." } ``` ``` Usage: greet --name=
hello -- Say hello to someone. greet --name=
bye -- Say goodbye. --name=
the person to be greeted ```
Note: named arguments must come first unless you set `my $*MAIN-ALLOW-NAMED-ANYWHERE = True`
update
(2017-07-03): This is changing to `my %*SUB-MAIN-OPTS = :named-anywhere`
??? #| attaches documentation to whatever comes next #= attaches docs to whatever came before the comment --- layout: true --- class: center, middle # Part II # Metaprogramming --- ### What more could we possibly want? --- ### What more could we possibly want? .small[ ``` usage: git [--version] [--help] [-C
] [-c name=value] [--exec-path[=
]] [--html-path] [--man-path] [--info-path] [-p|--paginate|--no-pager] [--no-replace-objects] [--bare] [--git-dir=
] [--work-tree=
] [--namespace=
]
[
] The most commonly used git commands are: add Add file contents to the index bisect Find by binary search the change that introduced a bug branch List, create, or delete branches checkout Checkout a branch or paths to the working tree clone Clone a repository into a new directory commit Record changes to the repository diff Show changes between commits, commit and working tree, etc fetch Download objects and refs from another repository grep Print lines matching a pattern init Create an empty Git repository or reinitialize an existing one log Show commit logs pull Fetch from and integrate with another repository or a local branch push Update remote refs along with associated objects rebase Forward-port local commits to the updated upstream head reset Reset current HEAD to the specified state rm Remove files from the working tree and from the index show Show various types of objects status Show the working tree status tag Create, list, delete or verify a tag object signed with GPG 'git help -a' and 'git help -g' lists available subcommands and some concept guides. See 'git help
' or 'git help
' to read about a specific subcommand or concept. ``` ] --- layout: true .footer[ metamodel ∙ defaults ∙ constraints ∙ subcommands ∙ suboptions ∙ modularize ∙ testing ] --- ### What more could we possibly want? * Subcommands * Subcommand-options * Display the defaults * Display the constraints * Modularize the code * Add testing --- layout: true .footer[ ** metamodel ** ∙ defaults ∙ constraints ∙ subcommands ∙ suboptions ∙ modularize ∙ testing ] --- ### How? Use the metamodel! * Types * Sub * Signature * Parameter * Constraint * Type .right[
] * Introspection methods * WHY -- docs * WHAT -- type of something * WHO -- symbol table * HOW -- metaclass
("Higher Order Workings") --- layout: true .footer[ metamodel ∙ ** defaults ** ∙ constraints ∙ subcommands ∙ suboptions ∙ modularize ∙ testing ] --- ### USAGE with defaults ```perl6 sub MAIN($name = 'bob') { } sub USAGE { for &MAIN.signature.params -> $param { my $default = $param.default; say $param.name; say $default(); } } ``` ``` $name bob ``` --- ### USAGE with defaults ```perl6 sub MAIN($name = 'bob') { } sub USAGE { for &MAIN.signature.params -> $param { my $default = $param.default; say $param.name; say $default(); } } ``` * `&Main` is an object of type `Sub`. .right[.black[Sub]] * The `Sub` class has a method `signature`. * `signature` returns an object of type `Signature`. .right[.black[Signature]] * `Signature` has a method `params`. * `params` returns a list of objects of type `Parameter`. .right[.black[Parameter]] * `Parameter` has a method `default`. * `default` returns a `Block`. .right[.black[Block]] * A `Block` can be called. .right[ .black[ http://docs.perl6.org/type/Sub ] ] --- layout: true .footer[ metamodel ∙ defaults ∙ ** constraints ** ∙ subcommands ∙ suboptions ∙ modularize ∙ testing ] --- ### USAGE with constraints ```perl6 sub MAIN($name where /:i 'bob' | 'robert' /) { } sub USAGE { for &MAIN.signature.params -> $p { for $p.constraints -> $c { say $c.^name; say $c; } } } ``` ``` Regex /:i 'bob' | 'robert' / ``` --- count: false ### USAGE with constraints ```perl6 sub MAIN($name where /:i 'bob' | 'robert' /) { } sub USAGE { for &MAIN.signature.params -> $p { for $p.constraints -> $c { say $c.^name; say $c; } } } ``` `$c.^name` is short for `$c.HOW($c).name`
`.HOW` returns a metaclass
alternatively
`.WHAT` returns a type object (i.e. a class)
`$c.WHAT.^name` is also `Regex`
`say $c` calls `$c.gist` --- ### USAGE with type ```perl6 sub MAIN(Str $name) { } sub USAGE { for &MAIN.signature.params -> $p { say $p.name; say $p.type.^name; } } ``` ``` $name Str ``` `$p` has type `Parameter`
`type` gives a type object for the type constraint --- ### USAGE with constant ```perl6 sub MAIN('bob') { } sub USAGE { say &MAIN.signature.params[0].constraints[0].^name; say &MAIN.signature.params[0].constraints[0].perl; } ``` ``` Junction all("bob") ``` --- ### USAGE with constant ```perl6 sub MAIN('bob') { } sub USAGE { if &MAIN.signature.params[0].constraints[0].perl ~~ / 'all("' (.*) '")' / { say ~$/[0]; } } ``` ``` bob ``` --- layout: true .footer[ metamodel ∙ defaults ∙ constraints ∙ ** subcommands ** ∙ suboptions ∙ modularize ∙ testing ] --- ### USAGE for subcommands ```perl6 multi MAIN('bob') { } multi MAIN('alice') { } sub subcommand($f) { $f.signature.params[0].constraints[0].perl ~~ / 'all("' (.*) '")' / and return ~$/[0]; } sub USAGE { for &MAIN.candidates -> $m { say subcommand($m); } } ``` ``` bob alice ``` --- layout: true .footer[ metamodel ∙ defaults ∙ constraints ∙ subcommands ∙ ** suboptions ** ∙ modularize ∙ testing ] --- ### USAGE for subcommands ```perl6 multi MAIN('bob', :$opt #= option for bob ) { ... } multi MAIN('alice', :$opt #= option for alice ) { ... } sub USAGE { for &MAIN.candidates -> $m { say subcommand($m); for $m.signature.params[1..*] -> $p { say $p.name ~ ' : ' ~ $p.WHY; } } } ``` ``` bob $opt : option for bob alice $opt : option for alice ``` --- layout: true .footer[ metamodel ∙ defaults ∙ constraints ∙ subcommands ∙ suboptions ∙ ** modularize ** ∙ testing ] --- ### Modularizing the code ``` $ tree . ├── alice.pm ├── bob.pm └── greet ``` --- ### Modularizing the code .right[alice.pm] ```perl6 multi MAIN('alice', ) is export { ... } ``` .right[bob.pm] ```perl6 multi MAIN('bob', ) is export { ... } ``` .right[greet] ```perl6 use alice; use bob; ``` --- ### Modularizing the code .right[alice.pm] ```perl6 multi cmd('alice', ) is export { ... } ``` .right[bob.pm] ```perl6 multi cmd('bob', ) is export { ... } ``` .right[greet] ```perl6 use alice; use bob; sub MAIN(*@args, *%args) { cmd(|@args, |%args) } ``` --- layout: true .footer[ metamodel ∙ defaults ∙ constraints ∙ subcommands ∙ suboptions ∙ modularize ∙ ** testing ** ] --- ### Testing ```perl6 use lib '.'; use Test; for
-> $cmd { use-ok $cmd; require ::("$cmd") <&cmd>; # ... more tests using cmd } done-testing; ``` ``` ok 1 - alice module can be use-d ok ok 2 - bob module can be use-d ok 1..2 ``` --- layout: true --- ### Summary * Lots of built-in support for argument parsing. * Args mapped to calling `&MAIN` using a rich metamodel. * You can introspect subroutines yourself for better documentation. * The built-in features can be a starting point for a bigger application. ### The End


My name is
, and during the
project,
I want to be someone who
Not
someone who
{{text[0]}}
{{text[1]}}
Ctrl+C or Command+C to copy the Evaluation Link below
Go To Evaluation!
Done
Ready for Evaluation!
More Options
{{categoryListing[key]}}
{{text[0]}}
{{text[1]}}
To randomize choices, click
Randomize
While evaluating this project, people should know
X


nekot
Generate JWT for a user with the given user ID.
User ID
Label
Save
.
.
Click on a user ID to generate JWT for them.


Introduction
HockeySDK lets the user decide wether to send a crash report or lets the developer send crash reports automatically without user interaction. In addition it is possible to attach more data like logs, a binary, or the users name, email or a user ID if this is already known.
Starting HockeySDK version 3.6 it is now possible to customize this even further and implement your own flow to e.g. ask the user for more details about what happened or his name and email address if your app doesn’t know that yet.
The following example shows how this could be implemented. We’ll present a custom UIAlertView asking the user for more details and attaching that to the crash report.
HowTo
- Setup the SDK
- Configure HockeySDK to use your custom alertview handler using the
[[BITHockeyManager sharedHockeyManager].crashManager setAlertViewHandler:(BITCustomAlertViewHandler)alertViewHandler;
method in your AppDelegate. - Implement your handler in a way that it calls
[[BITHockeyManager sharedHockeyManager].crashManagerhandleUserInput:(
BITCrashManagerUserInput)userInput withUserProvidedMetaData:(
BITCrashMetaData*)userProvidedMetaData]
with the input provided by the user. - Dismiss your custom view.
Example
@interface BITAppDelegate () <UIAlertViewDelegate>
@end
@implementation BITAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self.window makeKeyAndVisible];
[[BITHockeyManager sharedHockeyManager] configureWithIdentifier:@"<>"
delegate:nil];
// optionally enable logging to get more information about states.
[BITHockeyManager sharedHockeyManager].debugLogEnabled = YES;
[[BITHockeyManager sharedHockeyManager].crashManager setAlertViewHandler:^(){
NSString *exceptionReason = [[BITHockeyManager sharedHockeyManager].crashManager lastSessionCrashDetails].exceptionReason;
UIAlertView *customAlertView = [[UIAlertView alloc] initWithTitle: @"Oh no! The App crashed"
message: nil
delegate: self
cancelButtonTitle: @"Don't send"
otherButtonTitles: @"Send", @"Always send", nil];
if (exceptionReason) {
customAlertView.message = @"We would like to send a crash report to the developers. Please enter a short description of what happened:";
customAlertView.alertViewStyle = UIAlertViewStylePlainTextInput;
} else {
customAlertView.message = @"We would like to send a crash report to the developers";
}
[customAlertView show];
}];
[[BITHockeyManager sharedHockeyManager].authenticator authenticateInstallation];
return YES;
}
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
BITCrashMetaData *crashMetaData = [BITCrashMetaData new];
if (alertView.alertViewStyle != UIAlertViewStyleDefault) {
crashMetaData.userDescription = [alertView textFieldAtIndex:0].text;
}
switch (buttonIndex) {
case 0:
[[BITHockeyManager sharedHockeyManager].crashManager handleUserInput:BITCrashManagerUserInputDontSend withUserProvidedMetaData:nil];
break;
case 1:
[[BITHockeyManager sharedHockeyManager].crashManager handleUserInput:BITCrashManagerUserInputSend withUserProvidedMetaData:crashMetaData];
break;
case 2:
[[BITHockeyManager sharedHockeyManager].crashManager handleUserInput:BITCrashManagerUserInputAlwaysSend withUserProvidedMetaData:crashMetaData];
break;
}
}
@end


Video: Nintendo Minute do the “Be The Pokemon” challenge to celebrate Pokemon Sword & Shield’s launch
by ssf1991It’s Friday, so Kit and Krysta are back with a brand new episode of Nintendo Minute. The pair are celebrating the release of Pokemon Sword and Shield in an interesting way. The duo said in the video description that “we hope you’ve all started your adventure in the Galar Region. We’re celebrating by BECOMING Pokémon. How do you think we did”? An announcement tweet from Nintendo containing the video is down below.


Collapsed content
Toggleable via the navbar brand.
HP :
Monsters Summoners
Monster
STATS
HP
0
/
0
Defence
0/0
Type
-
Power
0
-
0
Summon
Attack


Include attribute data-static-backdrop="yes" if not show close button and stop modal close via overlay click.
This is useful for overlays with required user interaction.
'
---
We would like to know who you are
I am a:
Domestic student means: La Trobe considers you a ‘domestic’ student if you are
a citizen or permanent resident of Australia; a citizen of New Zealand; or a permanent humanitarian
visa holder.
I am an:
International student means La Trobe considers you an ‘International’ student
if you are not a citizen or a permanent resident of Australia; not
a citizen of New Zealand; or not a permanent humanitarian visa holder.


Enjoy this exploration of Twitter users who follow @threestory. You can see the correlation (or lack thereof) between the number of people a user follows and the number of followers they have themselves. The size of each circle is relative to the number of tweets that user has tweeted. The circle color matches the background color of that user's Twitter profile (just for fun). Clicking on a circle will take you to that person's Twitter page.
User name
@Screen name
Followers: Followers
Following: Following
Tweets: Tweets


Post edited 1 x times, last by
I got 4 extra codes since the Beta is extended till the 4th... I don't know what to do with them, so I'll just dump them here :)
Bare in mind, these codes are for the PlayStation 4:
LJ5D-GMNT-KA34
GFC2-7LNA-Q5M8
QCT3-CBNL-KTB8
8FGC-RENC-98F6
This one might also work, I'm not sure if it's been redeemed or not:
49PT-EDNA-TJ5K


describe-jobs
--jobs <value>
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
A space-separated list of up to 100 job IDs.
Syntax:
"string" "string" ...
--cli-input-json (string) Performs service operation based on the JSON string provided. The JSON string follows the format provided by --generate-cli-skeleton. If other arguments are provided on the command line, the CLI values will override the JSON-provided values.
--generate-cli-skeleton (string) Prints a JSON skeleton to standard output without sending an API request. If provided with no value or the value input, prints a sample input JSON that can be used as an argument for --cli-input-json. If provided with the value output, it validates the command inputs and returns a sample output JSON for that command.
To describe a job
This example describes a job with the specified job ID.
Command:
aws batch describe-jobs --jobs bcf0b186-a532-4122-842e-2ccab8d54efb
Output:
{
"jobs": [
{
"status": "SUBMITTED",
"container": {
"mountPoints": [],
"image": "busybox",
"environment": [],
"vcpus": 1,
"command": [
"sleep",
"60"
],
"volumes": [],
"memory": 128,
"ulimits": []
},
"parameters": {},
"jobDefinition": "sleep60",
"jobQueue": "arn:aws:batch:us-east-1:012345678910:job-queue/HighPriority",
"jobId": "bcf0b186-a532-4122-842e-2ccab8d54efb",
"dependsOn": [],
"jobName": "example",
"createdAt":<PHONE_NUMBER>803
}
]
}
jobs -> (list)
The list of jobs.
(structure)
An object representing an AWS Batch job.
jobName -> (string)
The name of the job.jobId -> (string)
The ID for the job.jobQueue -> (string)
The Amazon Resource Name (ARN) of the job queue with which the job is associated.status -> (string)
The current status for the job.statusReason -> (string)
A short, human-readable string to provide additional details about the current status of the job.createdAt -> (long)
The Unix timestamp for when the job was created (when the task entered the PENDING state).startedAt -> (long)
The Unix timestamp for when the job was started (when the task transitioned from the PENDING state to the RUNNING state).stoppedAt -> (long)
The Unix timestamp for when the job was stopped (when the task transitioned from the RUNNING state to the STOPPED state).dependsOn -> (list)
A list of job names or IDs on which this job depends.
(structure)
An object representing an AWS Batch job dependency.
jobId -> (string)
The job ID of the AWS Batch job associated with this dependency.jobDefinition -> (string)
The job definition that is used by this job.parameters -> (map)
Additional parameters passed to the job that replace parameter substitution placeholders or override any corresponding parameter defaults from the job definition.
key -> (string)
value -> (string)
container -> (structure)
An object representing the details of the container that is associated with the job.
image -> (string)
The image used to start the container.vcpus -> (integer)
The number of VCPUs allocated for the job.memory -> (integer)
The number of MiB of memory reserved for the job.command -> (list)
The command that is passed to the container.
(string)
jobRoleArn -> (string)
The Amazon Resource Name (ARN) associated with the job upon execution.volumes -> (list)
A list of volumes associated with the job.
(structure)
A data volume used in a job's container properties.
host -> (structure)
The contents of the host parameter determine whether your data volume persists on the host container instance and where it is stored. If the host parameter is empty, then the Docker daemon assigns a host path for your data volume, but the data is not guaranteed to persist after the containers associated with it stop running.
sourcePath -> (string)
The path on the host container instance that is presented to the container. If this parameter is empty, then the Docker daemon has assigned a host path for you. If the host parameter contains a sourcePath file location, then the data volume persists at the specified location on the host container instance until you delete it manually. If the sourcePath value does not exist on the host container instance, the Docker daemon creates it. If the location does exist, the contents of the source path folder are exported.name -> (string)
The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. This name is referenced in the sourceVolume parameter of container definition mountPoints .environment -> (list)
The environment variables to pass to a container.
(structure)
A key-value pair object.
name -> (string)
The name of the key value pair. For environment variables, this is the name of the environment variable.value -> (string)
The value of the key value pair. For environment variables, this is the value of the environment variable.mountPoints -> (list)
The mount points for data volumes in your container.
(structure)
Details on a volume mount point that is used in a job's container properties.
containerPath -> (string)
The path on the container at which to mount the host volume.readOnly -> (boolean)
If this value is true , the container has read-only access to the volume; otherwise, the container can write to the volume. The default value is false .sourceVolume -> (string)
The name of the volume to mount.readonlyRootFilesystem -> (boolean)
When this parameter is true, the container is given read-only access to its root file system.ulimits -> (list)
A list of ulimit values to set in the container.
(structure)
The ulimit settings to pass to the container.
hardLimit -> (integer)
The hard limit for the ulimit type.name -> (string)
The type of the ulimit .softLimit -> (integer)
The soft limit for the ulimit type.privileged -> (boolean)
When this parameter is true, the container is given elevated privileges on the host container instance (similar to the root user).user -> (string)
The user name to use inside the container.exitCode -> (integer)
The exit code to return upon completion.reason -> (string)
A short (255 max characters) human-readable string to provide additional details about a running or stopped container.containerInstanceArn -> (string)
The Amazon Resource Name (ARN) of the container instance on which the container is running.


674
|
|
Oracle Performance Tuning and Optimization
by Edward Whalen
Sams, Macmillan Computer Publishing
ISBN: 067230886x Pub Date: 04/01/96
|
22
1000
Chapter 13 System Processors
This chapter gives a brief overview of how system processors work and how performance is affected by various aspects of the computer hardware architecture. Of course, you cannot tune your CPUs, but you should look at how the hardware works to better understand the system.
This chapter first looks at the various components of computer hardware and then looks at some of these components in more detail. It is important to remember how the components react with each other to understand why you favor certain components such as memory.
Overview of Computer Architecture
Your computer system is made up of hundreds and thousands of individual components all working in harmony to process data. Each of these components has its own job to perform; each has its own performance characteristics.
The brain of the system is the Central Processing Unit (CPU), which actually processes all the calculations and instructions that run on the computer. The job of the rest of the system is to keep the CPU busy with instructions to process. A well-tuned system runs at maximum performance if the CPU or CPUs are busy 100 percent of the time.
So how does the system keep the CPUs as busy as possible? In general, the system is made up of different layers, or tiers, of progressively slower components. Because the faster components are typically the most expensive, you must perform a balancing act between speed and cost efficiency.
The following sections look at the performance tiers.
CPU and Cache
The CPU and the CPU cache are the fastest components of the system. The cache is very high-speed memory used to store recently used data and instructions so that it can provide quick access if this data is used again in a short time. Most CPU hardware designs actually have a cache built into the CPU chip. This internal cache is known as a Level 1 (or L1) cache. Typically, an L1 cache is very smallon the order of 8 to 16 kilobytes in size.
When a certain piece of data is wanted, the hardware first looks in the L1 cache. If the data is there, the hardware processes that data immediately. If the data is not available in the L1 cache, the hardware looks in the L2 cache, which is external to the CPU chip. The L2 cache is located very close to the CPU chip because speed is important. The L2 cache is connected to the CPU chips on the same side of the memory bus as the CPU. To get to main memory, you need to use the memory bus, which affects the speed of the memory access.
Although the L2 cache is twice as slow as the L1 cache, it is usually much larger. Its larger size provides a better chance of getting a cache hit. Typical L2 caches range from 128K to 4M in size.
Slower yet is the speed of the system memory. It is probably five times slower than the L2 cache. The size of system memory can range from 4M for a small desktop PC up to 2 to 4 gigabytes for large server machines. Some supercomputers have even more system memory than that.
If data or instructions have not been found in any of the system caches or the system memory, an I/O is done through the I/O bus. Any I/Os generated outside of system memory are at least 50 times slower than access from memory. Depending on the storage device and the data being accessed, the
dc8
access time may even be slower than that.
If data is not available on the systems local disks and must be acquired through a local area network (LAN), accesses are even slower. In the world of the CPU, cache, and memory, it takes an eternity to get data from over a network.
Suppose that it takes 1 second to get a piece of data from the L1 cache in the CPU chip. It takes approximately 2 seconds to get that data from the L2 cache. If the data is not available in the L2 cache and must be retrieved from main system memory, it can take up to 10 seconds to retrieve that data. If the data is not in system memory and you have to go to disk, it can take from 8 to 10 minutes to retrieve the data. If you have to get that data from another machine on the network, it can take up to a half hour or more (see Figure 13.1).
Figure 13.1 Powers of 10.
As you can see from the time line, there is an enormous difference between retrieving data from the L1 cache and retrieving data from the disk. This is why we spend so much time trying to take advantage of the SGA in memory. This is also why hardware vendors spend so much time designing CPU caches and fast memory busses.
Now look at some of these components and at the different types of computers and architectures.
CPU Design
The CPU is the brains of the computer. This is where most of the instruction processing happens. Although some intelligent devices such as disk controllers can process some instructions, the instructions these devices can handle are limited to the control of data moving to and from the devices.
The CPU works off of the system clock and executes instructions based on clock signals. The clock rate and type of CPU determine how fast these instructions are executed.
The CPU usually falls into one of two groups of processors: Complex Instruction Set Computer (CISC) or Reduced Instruction Set Computer (RISC), as described following.
CISC Processors
CISC processors (such as the type of processors Intel builds) are by far the most popular processors sold today. CISC processors are more traditional and offer a large instruction set to the program developer. Some of these instructions can be quite complicated; most instructions require several clock cycles to complete.
CISC processors are very complex and difficult to build. Because these CPU chips contain millions of internal components, the components are extremely close together. The physical closeness causes problems because there is no room for error. Each year, technology allows more complex and faster chips to be built but eventually, physics will limit what can be done.
CISC processors carry out a wide range of tasks and can sometimes perform two or more instructions at a time in parallel. CISC processors perform most tasks such as RDBMS processing very well.
55e
|


{% block content %} {% if form.has_errors %}
Your username and password didn't match. Please try again.
{% endif %}
Change your password
{% csrf_token %}
Submitting，Please wait a moment...
{% endblock %}


This is some text
This is a paragraph inside the div.
This is a paragraph outside the div.
Remove content of the div element


Animal cruelty is now a felony nationwide after Trump green lights Congressional bill
by Scripps NationalPresident Donald Trump signed a bill into law on Monday to make animal cruelty a felony nationwide.
Earlier this month, the U.S. Senate unanimously voted to pass the PACT Act.
The "Preventing Animal Cruelty and Torture (PACT) Act" was introduced by Congressmen Vern Buchanan and Ted Deutch. The House voted to pass the act on Oct. 23.
“This is a milestone for pet owners and animal lovers across the country,” Buchanan said. “For the first time, a national law has been passed by Congress to protect animals from cruelty and abuse.”
The act specifically bans crushing, burning, drowning, suffocating, impaling or otherwise subjecting animals to serious bodily harm.
"This is commonsense, bipartisan legislation to bring some compassion to our animal laws," Deutch said.
 The underlying acts themselves are still legal under federal law.
The PACT Act aims to close those loopholes.
“The torture of innocent animals is abhorrent and should be punished to the fullest extent of the law,” Buchanan said. “Protecting animals from cruelty is a top priority for me and I’m proud to work with Congressman Deutch on this important issue.”
Reporting from WFTS was included in this report.


Add Bun
Add/Upload a new Bun
Main
|
View Buns
|
View Users
|
Add User
|
Logout
Bun Upload Form
Bun name
User ID
Version
Long Description
Icon File
Select logo image
Bun File
Select bun file in tar.gz format


Caution!
Are you sure you want to delete the note ""?
Once it is deleted, it cannot be recovered.
Warning: this action will destroy all current data, and cannot be undone. Be careful!
Paste JSON data for an exported note below, and click "Import".
Copy the content below, and paste it someplace to save it, or into an import window in another instance of Noted.
Noted is a note-taking and to-do list app for your browser.
Noted uses HTML5 local storage to record your data — your information is never sent to any server. That means it’s fast and totally private. But it also means there’s no syncing, and your notes are only available on the specific computer, using the specific browser used to create them.
To give you something to work with, you can export Noted data as JSON (a lightweight, open data format), which you can re-import in another browser or on another computer.
Noted is released as open source software under the MIT License. Coming soon: a zip package so you can easily download and run a local instance, for speedier use.
Noted is released under the terms of the MIT License. The upshot is, you may use this for pretty much anything, commercial or non-commercial, as long as you retain the copyright notices. Thanks!
Noted makes use of the hard work of many people.
Thanks to the jQuery and jQuery UI teams, Henri, Mark, and the texture folks for making this possible.


Git is a distributed revision control system.
Git is very flexible and can be used in a variety of ways, but lets look at a simple workflow for small teams
Two developers are task with working on a new feature in the same repository, for this example we will call them John and Marry
You can thinking of cloning as a SVN Checkout, except you grab a independent repo you can work on
git clone http://jlay@localhost:8080/gitserver/SMARTTagDocs.git
When you clone a repo, git will automatically create a link to the origin so you can push upstream
John and Mary both clone the repo and can now work independently on their respective features
git status # View the state of the repo git addNote: this will only commit to the local repo and will not affect the main repository# Stage a file git commit # Commit a file
Pushing is like a SVN Check-in. John has finish his feature and is ready to commit to the main branch
git push origin master
This will push his changes to the main repository
Mary has finish her feature and pushes to master
git push origin master
Since her local history has diverged from the central repository Git will refuse the commit. Mary must rebase on top of Johns commits. The important part of this command is the --rebase which tell Git to to move all of Mary's commites to the tip of the master brance keeping a linear commit log
git pull --rebase origin master
The previous workflow was a very basic example
Creating a branch per feature allows developer to work independently of the master or develop branch
Once the feature is ready a pull request can be made allowing the reviewer to accept the request or provide comment and reject it
The Feature Branch Workflow still uses a central repository, and master still represents the official project history. But, instead of committing directly on their local master branch, developers create a new branch every time they start work on a new feature. Feature branches should have descriptive names, like animated-menu-items or issue-#1061. The idea is to give a clear, highly-focused purpose to each branch.
Our current repository is one single repo, which is nice cause when you update it will grab everything. However it can also show changes not part of the code you are working on and do not want to commit. Git modules allow you to link one repo to another. For instance you could set SMART_Library as a submodule to Admin Portal
/


"Life is not meant to be lived in one place!"
"I wish I knew all this when I visited your neighbours!!"
Click here to search in our hotels and restaurants database


libnghttp2_asio: High level HTTP/2 C++ library¶
libnghttp2_asio is C++ library built on top of libnghttp2 and provides high level abstraction API to build HTTP/2 applications. It depends on Boost::ASIO library and OpenSSL. Currently libnghttp2_asio provides server and client side API.
libnghttp2_asio is not built by default. Use --enable-asio-lib
configure flag to build libnghttp2_asio. The required Boost libraries
are:
- Boost::Asio
- Boost::System
- Boost::Thread
We have 3 header files for this library:
asio_http2.h is included from the other two files.
To build a program with libnghttp2_asio, link to the following libraries:
-lnghttp2_asio -lboost_system
If boost::asio::ssl
is used in application code, OpenSSL is also
required in link line:
-lnghttp2_asio -lboost_system -lssl -lcrypto
Server API¶
To use server API, first include following header file:
#include <nghttp2/asio_http2_server.h>
Also take a look at that header file asio_http2_server.h.
Server API is designed to build HTTP/2 server very easily to utilize C++11 anonymous function and closure. The bare minimum example of HTTP/2 server looks like this:
using namespace nghttp2::asio_http2;
using namespace nghttp2::asio_http2::server;
int main(int argc, char *argv[]) {
boost::system::error_code ec;
http2 server;
server.handle("/", [](const request &req, const response &res) {
res.write_head(200);
res.end("hello, world\n");
});
if (server.listen_and_serve(ec, "localhost", "3000")) {
std::cerr << "error: " << ec.message() << std::endl;
}
}
First we instantiate nghttp2::asio_http2::server::http2
object.
nghttp2::asio_http2::server::http2::handle
function registers
pattern and its handler function. In this example, we register "/" as
pattern, which matches all requests. Then call
nghttp2::asio_http2::server::http2::listen_and_serve
function with
address and port to listen to.
The req
and res
represent HTTP request and response
respectively. nghttp2::asio_http2_::server::response::write_head
constructs HTTP response header fields. The first argument is HTTP
status code, in the above example, which is 200. The second argument,
which is omitted in the above example, is additional header fields to
send.
nghttp2::asio_http2::server::response::end
sends response body.
In the above example, we send string "hello, world".
The life time of req and res object ends after the callback set by
nghttp2::asio_http2::server::response::on_close
function.
Application must not use those objects after this call.
Serving static files and enabling SSL/TLS¶
In this example, we serve a couple of static files and also enable SSL/TLS.
#include <nghttp2/asio_http2_server.h>
using namespace nghttp2::asio_http2;
using namespace nghttp2::asio_http2::server;
int main(int argc, char *argv[]) {
boost::system::error_code ec;
boost::asio::ssl::context tls(boost::asio::ssl::context::sslv23);
tls.use_private_key_file("server.key", boost::asio::ssl::context::pem);
tls.use_certificate_chain_file("server.crt");
configure_tls_context_easy(ec, tls);
http2 server;
server.handle("/index.html", [](const request &req, const response &res) {
res.write_head(200);
res.end(file_generator("index.html"));
});
if (server.listen_and_serve(ec, tls, "localhost", "3000")) {
std::cerr << "error: " << ec.message() << std::endl;
}
}
We first create boost::asio::ssl::context
object and set path to
private key file and certificate file.
nghttp2::asio_http2::server::configure_tls_context_easy
function
configures SSL/TLS context object for HTTP/2 server use, including NPN
callbacks.
In the above example, if request path is "/index.html", we serve
index.html file in the current working directory.
nghttp2::asio_http2::server::response::end
has overload to take
function of type nghttp2::asio_http2::generator_cb
and application
pass its implementation to generate response body. For the
convenience, libnghttp2_asio library provides
nghttp2::asio_http2::file_generator
function to generate function
to server static file. If other resource is requested, server
automatically responds with 404 status code.
Server push¶
Server push is also supported.
#include <nghttp2/asio_http2_server.h>
using namespace nghttp2::asio_http2;
using namespace nghttp2::asio_http2::server;
int main(int argc, char *argv[]) {
boost::system::error_code ec;
boost::asio::ssl::context tls(boost::asio::ssl::context::sslv23);
tls.use_private_key_file("server.key", boost::asio::ssl::context::pem);
tls.use_certificate_chain_file("server.crt");
configure_tls_context_easy(ec, tls);
http2 server;
std::string style_css = "h1 { color: green; }";
server.handle("/", [&style_css](const request &req, const response &res) {
boost::system::error_code ec;
auto push = res.push(ec, "GET", "/style.css");
push->write_head(200);
push->end(style_css);
res.write_head(200);
res.end(R"(
<!DOCTYPE html>
<title>HTTP/2 FTW</title>
<link href="/style.css" rel="stylesheet" type="text/css">

This should be green

)");
});
server.handle("/style.css",
[&style_css](const request &req, const response &res) {
res.write_head(200);
res.end(style_css);
});
if (server.listen_and_serve(ec, tls, "localhost", "3000")) {
std::cerr << "error: " << ec.message() << std::endl;
}
}
When client requested any resource other than "/style.css", we push
"/style.css". To push resource, call
nghttp2::asio_http2::server::response::push
function with desired
method and path. It returns another response object and use its
functions to send push response.
Enable multi-threading¶
Enabling multi-threading is very easy. Just call
nghttp2::asio_http2::server::http2::num_threads
function with the
desired number of threads:
http2 server;
// Use 4 native threads
server.num_threads(4);
Client API¶
To use client API, first include following header file:
#include <nghttp2/asio_http2_client.h>
Also take a look at that header file asio_http2_client.h.
Here is the sample client code to access HTTP/2 server and print out response header fields and response body to the console screen:
#include <iostream>
#include <nghttp2/asio_http2_client.h>
using boost::asio::ip::tcp;
using namespace nghttp2::asio_http2;
using namespace nghttp2::asio_http2::client;
int main(int argc, char *argv[]) {
boost::system::error_code ec;
boost::asio::io_service io_service;
// connect to localhost:3000
session sess(io_service, "localhost", "3000");
sess.on_connect([&sess](tcp::resolver::iterator endpoint_it) {
boost::system::error_code ec;
auto req = sess.submit(ec, "GET", "http://localhost:3000/");
req->on_response([](const response &res) {
// print status code and response header fields.
std::cerr << "HTTP/2 " << res.status_code() << std::endl;
for (auto &kv : res.header()) {
std::cerr << kv.first << ": " << kv.second.value << "\n";
}
std::cerr << std::endl;
res.on_data([](const uint8_t *data, std::size_t len) {
std::cerr.write(reinterpret_cast<const char *>(data), len);
std::cerr << std::endl;
});
});
req->on_close([&sess](uint32_t error_code) {
// shutdown session after first request was done.
sess.shutdown();
});
});
sess.on_error([](const boost::system::error_code &ec) {
std::cerr << "error: " << ec.message() << std::endl;
});
io_service.run();
}
nghttp2::asio_http2::client::session
object takes
boost::asio::io_service
object and remote server address. When
connection is made, the callback function passed to
nghttp2::asio_http2::client::on_connect
is invoked with connected
address as its parameter. After this callback call, use
nghttp2::asio_http2::session::submit
to send request to the
server. You can submit multiple requests at once without waiting for
the completion of previous request.
The life time of req and res object ends after the callback set by
nghttp2::asio_http2::server::request::on_close
function.
Application must not use those objects after this call.
Normally, client does not stop even after all requests are done unless
connection is lost. To stop client, call
nghttp2::asio_http2::server::session::shutdown()
.
Recieve server push and enable SSL/TLS¶
#include <iostream>
#include <nghttp2/asio_http2_client.h>
using boost::asio::ip::tcp;
using namespace nghttp2::asio_http2;
using namespace nghttp2::asio_http2::client;
int main(int argc, char *argv[]) {
boost::system::error_code ec;
boost::asio::io_service io_service;
boost::asio::ssl::context tls(boost::asio::ssl::context::sslv23);
tls.set_default_verify_paths();
// disabled to make development easier...
// tls_ctx.set_verify_mode(boost::asio::ssl::verify_peer);
configure_tls_context(ec, tls);
// connect to localhost:3000
session sess(io_service, tls, "localhost", "3000");
sess.on_connect([&sess](tcp::resolver::iterator endpoint_it) {
boost::system::error_code ec;
auto req = sess.submit(ec, "GET", "http://localhost:3000/");
req->on_response([&sess](const response &res) {
std::cerr << "response received!" << std::endl;
res.on_data([&sess](const uint8_t *data, std::size_t len) {
std::cerr.write(reinterpret_cast<const char *>(data), len);
std::cerr << std::endl;
});
});
req->on_push([](const request &push) {
std::cerr << "push request received!" << std::endl;
push.on_response([](const response &res) {
std::cerr << "push response received!" << std::endl;
res.on_data([](const uint8_t *data, std::size_t len) {
std::cerr.write(reinterpret_cast<const char *>(data), len);
std::cerr << std::endl;
});
});
});
});
sess.on_error([](const boost::system::error_code &ec) {
std::cerr << "error: " << ec.message() << std::endl;
});
io_service.run();
}
The above sample code demonstrates how to enable SSL/TLS and receive
server push. Currently,
nghttp2::asio_http2::client::configure_tls_context
function setups
NPN callbacks for SSL/TLS context for HTTP/2 use.
To receive server push, use
nghttp2::asio_http2::client::request::on_push
function to set
callback function which is invoked when server push request is
arrived. The callback function takes
nghttp2::asio_http2::client::request
object, which contains the
pushed request. To get server push response, set callback using
nghttp2::asio_http2::client::request::on_response
.
As stated in the previous section, client does not stop automatically
as long as HTTP/2 session is fine and connection is alive. We don't
call nghttp2::asio_http2::client::session::shutdown
in this
example, so the program does not terminate after all responses are
received. Hit Ctrl-C to terminate the program.
Multiple concurrent requests¶
#include <iostream>
#include <nghttp2/asio_http2_client.h>
using boost::asio::ip::tcp;
using namespace nghttp2::asio_http2;
using namespace nghttp2::asio_http2::client;
int main(int argc, char *argv[]) {
boost::system::error_code ec;
boost::asio::io_service io_service;
// connect to localhost:3000
session sess(io_service, "localhost", "3000");
sess.on_connect([&sess](tcp::resolver::iterator endpoint_it) {
boost::system::error_code ec;
auto printer = [](const response &res) {
res.on_data([](const uint8_t *data, std::size_t len) {
std::cerr.write(reinterpret_cast<const char *>(data), len);
std::cerr << std::endl;
});
};
std::size_t num = 3;
auto count = std::make_shared<int>(num);
for (std::size_t i = 0; i < num; ++i) {
auto req = sess.submit(ec, "GET",
"http://localhost:3000/" + std::to_string(i + 1));
req->on_response(printer);
req->on_close([&sess, count](uint32_t error_code) {
if (--*count == 0) {
// shutdown session after |num| requests were done.
sess.shutdown();
}
});
}
});
sess.on_error([](const boost::system::error_code &ec) {
std::cerr << "error: " << ec.message() << std::endl;
});
io_service.run();
}
Here is the sample to send 3 requests at once. Depending on the
server settings, these requests are processed out-of-order. In this
example, we have a trick to shutdown session after all requests were
done. We made count
object which is shared pointer to int and is
initialized to 3. On each request closure (the invocation of the
callback set by nghttp2::asio_http2::client::request::on_close
),
we decrement the count. If count becomes 0, we are sure that all
requests have been done and initiate shutdown.


Garbagepla.net does not work without javascript. Enable javascript from your browser's preferences and then reload this page to use the map.


| Achievements |
Ranking |
Tournament |
GOAT Points |
Tournament |
Ranking |
Achievements |
| Ach P |
GS P |
BW P |
Rnk P |
W@E5 P |
W@1 P |
YER P |
Tourn Pts |
Pts |
Season |
Pts |
Tourn Pts |
YER P |
W@1 P |
W@E5 P |
Rnk P |
BW P |
GS P |
Ach P |
| 4 |
0 |
4 |
13 |
5 |
5 |
8 |
35 |
50 |
2000 |
50 |
35 |
8 |
5 |
5 |
13 |
4 |
0 |
4 |
| 4 |
4 |
13 |
5 |
235 |
250 |
All Seasons |
250 |
235 |
8 |
13 |
4 |
4 |
|
|
Best Rank |
|
|
|
|
|
Best Rank |
|
|
|
|
Peak Elo Rating |
|
|
|
|
|
Peak Elo Rating |
|
|
|
|
Total Ranking |
|
|
Career Rnk |
|
|
Total Ranking |
|
|
|
Head-to-Head |
|
|
|
|
|
Head-to-Head |
|
|
Grand Slam |
|
|
|
|
|
Grand Slam |
|
|
Best Seasons |
|
|
|
|
|
Best Seasons |
|
|
Greatest Rivalr |
|
|
|
|
|
Greatest Rivalr |
|
|
Performance |
|
|
|
|
|
Performance |
|
|
Statistics |
|
|
|
|
|
Statistics |
|
|
Total Ach |
|
|
Career Ach |
|
|
Total Ach |
|
|
|
Total |
|
|
Loading...


Best score:
0
score
Your current score:
0
points
Use keboard to move
Start Game
Quit
Go Upwards
Go Downwards


×
× 𝕩
→full documentation
Sign of 𝕩.
𝕩
¯1
𝕩 < 0
0
𝕩 = 0
1
𝕩 > 0
Pervasive.
× ¯5‿0‿5‿1 ⟨ ¯1 0 1 1 ⟩
𝕨 × 𝕩
𝕨 multiplied by 𝕩.
𝕨
1 × 2 2 2 × 2‿3‿4 ⟨ 4 6 8 ⟩


You transform a willing creature you touch, along with everything it's wearing and carrying, into a misty cloud for the duration. The spell ends if the creature drops to 0 hit points. An incorporeal creature isn't affected.
While in this form, the target's only method of movement is a flying speed of 10 feet. The target can enter and occupy the space of another creature. The target has resistance to nonmagical damage, and it has advantage on Strength, Dexterity, and Constitution saving throws. The target can pass through small holes, narrow openings, and even mere cracks, though it treats liquids as though they were solid surfaces. The target can't fall and remains hovering in the air even when stunned or otherwise incapacitated.
While in the form of a misty cloud, the target can't talk or manipulate objects, and any objects it w as carrying or holding can't be dropped, used, or otherwise interacted with. The target can't attack or cast spells.


To get historical Brain ML Stock Ranking data, call the History method with the dataset Symbol. If there is no data in the period you request, the history result is empty.
# DataFrames two_day_history_df = self.History(self.two_day_symbol, 100, Resolution.Daily) three_day_history_df = self.History(self.three_day_symbol, 100, Resolution.Daily) five_day_history_df = self.History(self.five_day_symbol, 100, Resolution.Daily) ten_day_history_df = self.History(self.ten_day_symbol, 100, Resolution.Daily) thirty_day_history_df = self.History(self.month_symbol, 100, Resolution.Daily) history_df = self.History([self.two_day_symbol, self.three_day_symbol, self.five_day_symbol, self.ten_day_symbol, self.month_symbol], 100, Resolution.Daily) # Dataset objects two_day_history_bars = self.History[BrainStockRanking2Day](self.two_day_symbol, 100, Resolution.Daily) three_day_history_bars = self.History[BrainStockRanking3Day](self.three_day_symbol, 100, Resolution.Daily) five_day_history_bars = self.History[BrainStockRanking5Day](self.five_day_symbol, 100, Resolution.Daily) ten_day_history_bars = self.History[BrainStockRanking10Day](self.ten_day_symbol, 100, Resolution.Daily) month_history_bars = self.History[BrainStockRanking21Day](self.month_symbol, 100, Resolution.Daily)
// Dataset objects var twoDayHistory = History<BrainStockRanking2Day>(_2DaySymbol, 100, Resolution.Daily); var threeDayHistory = History<BrainStockRanking3Day>(_3DaySymbol, 100, Resolution.Daily); var fiveDayHistory = History<BrainStockRanking5Day>(_5DaySymbol, 100, Resolution.Daily); var tenDayHistory = History<BrainStockRanking10Day>(_10DaySymbol, 100, Resolution.Daily); var monthHistory = History<BrainStockRanking21Day>(_monthSymbol, 100, Resolution.Daily); // Slice objects var history = History(new[] {_2DaySymbol, _3DaySymbol, _5DaySymbol, _10DaySymbol, _monthSymbol}, 100, Resolution.Daily);
For more information about historical data, see History Requests.


What is life like here?
SPRINT 1
CULTURAL
TECHNICAL
SPRINT 2
CULTURAL
TECHNICAL
SPRINT 3
CULTURAL
TECHNICAL
SPRINT 4
CULTURAL
TECHNICAL
SPRINT 5
CULTURAL
TECHNICAL


There are many different ways you can use our services to search for and share information, to communicate with other people or to create new content. When you share information with us, for example by creating a Cont3nt.com Account, we can make those services even better to show you more relevant search results and ads, to help you connect with people or to make sharing with others quicker and easier. As you use our services, we want you to be clear how we're using information and the ways in which you can protect your privacy.
We have tried to keep it as simple as possible, but if you're not familiar with terms like cookies, IP addresses, pixel tags and browsers, then read about these key terms first. Your privacy matters to Cont3nt.com so whether you are new to Cont3nt.com or a long-time user, please do take the time to get to know our practices and if you have any questions contact us at<EMAIL_ADDRESS>We collect information to provide better services to all of our users from figuring out basic stuff like which language you speak, to more complex things like which ads you'll find most useful or the people who matter most to you online.
We may collect device-specific information (such as your hardware model, operating system version, unique device identifiers, and mobile network information including phone number). Cont3nt.com may associate your device identifiers or phone number with your Cont3nt.com Account.
When you use our services or view content provided by Cont3nt.com, we may automatically collect and store certain information in server logs. This may include:
When you use a location-enabled Cont3nt.com service, we may collect and process information about your actual location, like GPS signals sent by a mobile device. We may also use various technologies to determine location, such as sensor data from your device that may, for example, provide information on nearby Wi-Fi access points and cell towers.
Certain services include a unique application number. This number and information about your installation (for example, the operating system type and application version number) may be sent to Cont3nt.com when you install or uninstall that service or when that service periodically contacts our servers, such as for automatic updates.
We may collect and store information (including personal information) locally on your device using mechanisms such as browser web storage (including HTML 5) and application data caches.
We use various technologies to collect and store information when you visit a Cont3nt.com service, and this may include sending one or more cookies or anonymous identifiers to your device. We also use cookies and anonymous identifiers when you interact with services we offer to our partners, such as advertising services or Cont3nt.com features that may appear on other sites.
We use the information we collect from all of our services to provide, maintain, protect and improve them, to develop new ones, and to protect Cont3nt.com and our users. We also use this information to offer you tailored content like giving you more relevant search results and ads.
We may use the name you provide for your Cont3nt.com Profile across all of the services we offer that require a Cont3nt.com Account. In addition, we may replace past names associated with your Cont3nt.com Account so that you are represented consistently across all our services. If other users already have your email, or other information that identifies you, we may show them your publicly visible Cont3nt.com Profile information, such as your name and photo.
When you contact Cont3nt.com, we may keep a record of your communication to help solve any issues you might be facing. We may use your email address to inform you about our services, such as letting you know about upcoming changes or improvements.
We use information collected from cookies and other technologies, like pixel tags to improve your user experience and the overall quality of our services. For example, by saving your language preferences, we'll be able to have our services appear in the language you prefer. When showing you tailored ads, we will not associate a cookie or anonymous identifier with sensitive categories, such as those based on race, religion, sexual orientation or health.
We may combine personal information from one service with information, including personal information, from other Cont3nt.com services for example to make it easier to share things with people you know.
We will ask for your consent before using information for a purpose other than those that are set out in this Privacy Policy.
Cont3nt.com processes personal information on our servers in many countries around the world. We may process your personal information on a server located outside the country where you live.
People have different privacy concerns. Our goal is to be clear about what information we collect, so that you can make meaningful choices about how it is used. For example, you can:
Last modified: March 1, 2012


A simple python3 library using keras and tensorflow to do Deep Learning on Graphs, with a strong emphasis on Codes that chance the Shape of the Graph in a way that can be used for Autoencoder
We split our Code into two different Apis: a low level Layer Api, and a high Level Functional Api. We also provide 5 different example Applications to get you started using grapa as fast as possible.
pip install grapatf
Contents:


Dignity profit falls 30 per cent as fewer people die
by Edward ThicknesseDignity, the UK’s only listed funeral firm, saw its underlying operating profit slip 30 per cent for the year to date, driven by a significantly lower number of deaths.
Profit fell from £68.6m in 2018 to £47.9m this year. Underlying revenue also fell eight per cent, from 244.2m in 2018 to 225.4m.
Read more: Funeral firm Dignity suspends dividend as deaths slump
Compared to the same period last year, 432,000 people died in the 39 weeks up to the end of September, down from 455,000 in 2018.
The UK is set for its lowest year of deaths since 2014, with a total number of 577,000, 3.7 per cent lower than in 2018.
The group’s performance was in line with company expectations, and was bolstered by a market share of 11.9 per cent.
Mike McCollum, the group’s chief executive, said: “I am pleased with the group’s progress so far this year.
“Although deaths are lower, market share remains robust, the transformation plan remains on track and our journey to build a more modern technologically enabled business that offers clients a high-quality service at a variety of price points remains firmly intact.”
The group’s outlook remains unchanged from its previous results, but will be heavily dependent on the number of deaths.
In March, the Competition and Markets Authority (CMA) said they would launch an enquiry into the funeral sector due to fears over increased pricing.
The cost of the average funeral has risen 6 per cent a year for the past 14 years, a rate double that of inflation.
Read more: Grave danger: Dignity posts falling profit as death rate dips
The CMA said it was concerned that people in vulnerable circumstances could find themselves under pressure.
Dignity’s share price fell over 2 per cent in early trading, to 516.5p.
Main image credit: Getty


A Teehan+Lax Labs experiment for creating interactive Google Street View hyper-lapse animations. Learn more about this project.
Create your own


Module github_sync
Expand source code
import os
import json
import requests
from github import Github, InputGitAuthor
import conf
dir_path = os.path.dirname(os.path.realpath(__file__))
# OAUTH APP
clientId = conf.clientID
clientSecret = conf.clientSecret
def ask_user_permission(code):
""" Get user permission when authenticating via Github.
Args:
code (str): an alpha-numeric string that gets a unique code for the user who is attempting to authenticate.
Returns:
res (dict): a dictionary containing user info for permission.
"""
res = None
body = {
"client_id": clientId,
"client_secret": clientSecret,
"code": code
}
req = requests.post('https://github.com/login/oauth/access_token', data=body,
headers={"accept": "application/json"})
print(body, req)
if req.status_code == 200:
res = req.json()
return res
def get_user_login(res):
""" Get Github user information.
Args:
res (dict): a dictionary containing user info for permission, returned by ask_user_permission(code).
Returns:
userlogin (str): a string representing the user nickname.
usermail (str): a string representing the user email address.
access_token (str): a string representing the user access token.
"""
userlogin, usermail = None, None
print("user requesting github login:", res)
access_token = res["access_token"]
req_user = requests.get("https://api.github.com/user",
headers={"Authorization": "token "+access_token})
if req_user.status_code == 200:
res_user = req_user.json()
userlogin = res_user["login"]
usermail = res_user["email"]
return userlogin, usermail, access_token
def get_github_users(userlogin):
""" Match user with collaborators of Github repository.
This function checks if the user trying to authenticate is part of a specific Github repository.
Args:
userlogin (str): a string representing the user nickname.
Returns:
is_valid_user (boolean): a boolean operator that states if user is a collaborator (True) or not (False).
"""
is_valid_user = False
if conf.token != '' and conf.owner != '' and conf.repo_name != '':
req = requests.get("https://api.github.com/repos/"+conf.owner+"/"+conf.repo_name+"/collaborators",
headers={"Authorization": "token "+conf.token})
if req.status_code == 200:
users = [user['login'] for user in req.json()]
if userlogin in users:
is_valid_user = True
return is_valid_user
def push(local_file_path, branch='main', gituser=None, email=None, bearer_token=None, action=''):
""" Create a new file or update an existing file in a Github repository.
This function allows to publish and/or update content on another Github repository.
Args:
local_file_path (str): a string representing the local path of the file that needs to be published or updated.
branch (str): a string representing the branch from/to which publicate or update. 'main' is default.
gituser (str): a string representing the Github user that will carry out the action. 'None' is default.
email (str): a string representing the email address of gituser. 'None' is default.
bearer_token (str): a string representing the token to have permission to carry out the action. 'None' is default.
action (str): a string representing the optional message text that can be included in the commit. It is ampty by default.
"""
token = conf.token if bearer_token is None else bearer_token # editor
user = conf.author if gituser is None else gituser # editor
usermail = conf.author_email if email is None else email
owner = conf.melody_owner
repo_name = conf.melody_repo_name
g = Github(token)
repo = g.get_repo(owner+"/"+repo_name)
author = InputGitAuthor(user, usermail) # commit author
# necessary to commit filename without path
absolute_file_path = os.path.basename(local_file_path)
try:
# Retrieve the online file to get its SHA and path
contents = repo.get_contents(
conf.melody_sub_dir+'/'+absolute_file_path)
update = True
message = "updated file "+absolute_file_path+" "+action
except:
update = False
message = "created file "+absolute_file_path+" "+action
# Both create/update file replace the file with the local one
with open(local_file_path) as f:
data = f.read() # could be done in a smarter way
if update == True: # If file already exists, update it
# Add, commit and push branch
repo.update_file(contents.path, message, data,
contents.sha, author=author)
else:
try:
# If file doesn't exist, create it in the same relative path of the local file
# Add, commit and push branch
repo.create_file(conf.melody_sub_dir+'/'+absolute_file_path, message, data,
branch=branch, author=author)
except Exception as e:
print(e)
Functions
def ask_user_permission(code)
-
Get user permission when authenticating via Github.
Args
code
:str
- an alpha-numeric string that gets a unique code for the user who is attempting to authenticate.
Returns
res (dict): a dictionary containing user info for permission.
Expand source code
def ask_user_permission(code): """ Get user permission when authenticating via Github. Args: code (str): an alpha-numeric string that gets a unique code for the user who is attempting to authenticate. Returns: res (dict): a dictionary containing user info for permission. """ res = None body = { "client_id": clientId, "client_secret": clientSecret, "code": code } req = requests.post('https://github.com/login/oauth/access_token', data=body, headers={"accept": "application/json"}) print(body, req) if req.status_code == 200: res = req.json() return res
def get_github_users(userlogin)
-
Match user with collaborators of Github repository.
This function checks if the user trying to authenticate is part of a specific Github repository.
Args
userlogin
:str
- a string representing the user nickname.
Returns
is_valid_user (boolean): a boolean operator that states if user is a collaborator (True) or not (False).
Expand source code
def get_github_users(userlogin): """ Match user with collaborators of Github repository. This function checks if the user trying to authenticate is part of a specific Github repository. Args: userlogin (str): a string representing the user nickname. Returns: is_valid_user (boolean): a boolean operator that states if user is a collaborator (True) or not (False). """ is_valid_user = False if conf.token != '' and conf.owner != '' and conf.repo_name != '': req = requests.get("https://api.github.com/repos/"+conf.owner+"/"+conf.repo_name+"/collaborators", headers={"Authorization": "token "+conf.token}) if req.status_code == 200: users = [user['login'] for user in req.json()] if userlogin in users: is_valid_user = True return is_valid_user
def get_user_login(res)
-
Get Github user information.
Args
res
:dict
- a dictionary containing user info for permission, returned by ask_user_permission(code).
Returns
userlogin (str): a string representing the user nickname. usermail (str): a string representing the user email address. access_token (str): a string representing the user access token.
Expand source code
def get_user_login(res): """ Get Github user information. Args: res (dict): a dictionary containing user info for permission, returned by ask_user_permission(code). Returns: userlogin (str): a string representing the user nickname. usermail (str): a string representing the user email address. access_token (str): a string representing the user access token. """ userlogin, usermail = None, None print("user requesting github login:", res) access_token = res["access_token"] req_user = requests.get("https://api.github.com/user", headers={"Authorization": "token "+access_token}) if req_user.status_code == 200: res_user = req_user.json() userlogin = res_user["login"] usermail = res_user["email"] return userlogin, usermail, access_token
def push(local_file_path, branch='main', gituser=None, email=None, bearer_token=None, action='')
-
Create a new file or update an existing file in a Github repository.
This function allows to publish and/or update content on another Github repository.
Args
local_file_path
:str
- a string representing the local path of the file that needs to be published or updated.
branch
:str
- a string representing the branch from/to which publicate or update. 'main' is default.
gituser
:str
- a string representing the Github user that will carry out the action. 'None' is default.
email
:str
- a string representing the email address of gituser. 'None' is default.
bearer_token
:str
- a string representing the token to have permission to carry out the action. 'None' is default.
action
:str
- a string representing the optional message text that can be included in the commit. It is ampty by default.
Expand source code
def push(local_file_path, branch='main', gituser=None, email=None, bearer_token=None, action=''): """ Create a new file or update an existing file in a Github repository. This function allows to publish and/or update content on another Github repository. Args: local_file_path (str): a string representing the local path of the file that needs to be published or updated. branch (str): a string representing the branch from/to which publicate or update. 'main' is default. gituser (str): a string representing the Github user that will carry out the action. 'None' is default. email (str): a string representing the email address of gituser. 'None' is default. bearer_token (str): a string representing the token to have permission to carry out the action. 'None' is default. action (str): a string representing the optional message text that can be included in the commit. It is ampty by default. """ token = conf.token if bearer_token is None else bearer_token # editor user = conf.author if gituser is None else gituser # editor usermail = conf.author_email if email is None else email owner = conf.melody_owner repo_name = conf.melody_repo_name g = Github(token) repo = g.get_repo(owner+"/"+repo_name) author = InputGitAuthor(user, usermail) # commit author # necessary to commit filename without path absolute_file_path = os.path.basename(local_file_path) try: # Retrieve the online file to get its SHA and path contents = repo.get_contents( conf.melody_sub_dir+'/'+absolute_file_path) update = True message = "updated file "+absolute_file_path+" "+action except: update = False message = "created file "+absolute_file_path+" "+action # Both create/update file replace the file with the local one with open(local_file_path) as f: data = f.read() # could be done in a smarter way if update == True: # If file already exists, update it # Add, commit and push branch repo.update_file(contents.path, message, data, contents.sha, author=author) else: try: # If file doesn't exist, create it in the same relative path of the local file # Add, commit and push branch repo.create_file(conf.melody_sub_dir+'/'+absolute_file_path, message, data, branch=branch, author=author) except Exception as e: print(e)


Well... yes. In part, this site was built to demonstrate my full stack development skills. Blogs are common on
the web, and quickly developing a simple blog-app on my site seemed like a core checklist item.
Of course, it equally serves as a place where I can provide more insight into my decision making process. And
more generally, share some of my thoughts and perspective.


Inspiring children with a love of reading
Our next reading clubs are on:
Saturday, July 11, 2020
from 9 a.m. to 12 p.m.
(always the second Saturday of the month)
Our next reading clubs are on:
from 9 a.m. to 12 p.m.
(always the second Saturday of the month)


THE WEDDING PLANNER A film review by Steve Rhodes Copyright 2001 Steve Rhodes RATING (0 TO ****): ***
When casting a light comedy, Jennifer Lopez and Matthew McConaughey would probably be two of the last names that would come to mind. But in Adam Shankman's THE WEDDING PLANNER these choices prove superb.
The frequently inspired script is by Pamela Falk and Michael Ellis -- a pair of love birds, according to the press kit, whose relationship did not survive the many years it took to get the script produced. THE WEDDING PLANNER is a film that's easy to fall in love with, but, like the writers' romance, the relationship gets rocky. After a marvelously successful first half, the romantic comedy runs out of humor, leaving the love story alone to carry the second part. It turns out, however, that the film is at its most romantic precisely when it's the funniest.
Mary Fiore (Lopez) is the wedding planner.  But she is a planner par excellence, running weddings with hilarious, military precision. "Cover me. The FOB is MIA", she barks to her assistant, Penny (Judy Greer), over her wireless microphone. (Translation: The father of the bride is missing.)
After Dr. Steve Edison (Matthew McConaughey), Mary's knight in shining armor rescues her from a killer dumpster, it's love at first site. There is, however, the slightest of problems. Steve turns out to be the groom of her high profile new client, Fran Donolly (Bridgette Wilson-Sampras). To add further complications, Mary's father (Alex Rocco) introduces her to Massimo Lanzetta (Justin Chambers), her newly arranged husband-to-be. The last time Mary saw Massimo, he was a mud-munching little kid in Sicily. Judging from his accent, he just got off the boat.
The chemistry between the control-freak wedding planner and the more laid back pediatrician is delightful. They create sparks on the screen even though their relationship is confined to a single kiss.
The movie is easily one of the mildest PG-13 films in recent memory. Save a reference to a female organ and an innocent and sweetly funny scene involving a male nude statue, the movie would have been at most PG. THE WEDDING PLANNER is a comedy that warms your heart instead of grossing out your stomach. Imagine that. It's no coincidence that some of the key scenes happen while an old film is playing in the background. In many ways, THE WEDDING PLANNER is a charming throwback to a simpler time at the cinema. But the film never feels dated. It's a dynamite date movie and a good family film as well.
THE WEDDING PLANNER runs 1:40. It is rated PG-13 for language and some sexual humor and would be acceptable for all ages.
Email<EMAIL_ADDRESS>Web: http://www.InternetReviews.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


CRUEL INTENTIONS (M). (Columbia Tristar) Director: Roger Kumble Stars: Sarah Michelle Gellar, Ryan Phillippe, Reese Witherspoon, Selma Blair, Louise Fletcher, Sean Patrick Thomas, Joshua Jackson, Eric Mabius, Christine Baranski, Swoosie Kurtz, Alaina Reed Hall, Hiep Thi Le, Deborah Offner, Drew Snyder, Herta Ware Running time: 97 minutes.
This contemporary, steamy and hip version of Dangerous Liaisons is aimed at the cinema literate, adolescent audience of the '90's.
In updating Choderlos De Laclos' 1782 novel of debauchery, deception and sexual betrayal to the 20th century, first time director Roger Kumble reaffirms the timelessness of the story and its themes. He maintains the essential ideas of the original novel, but brings a hip, street wise sensibility to the plot and breathes new life into the self absorbed, ruthless characters. Kumble still sets this modern version amidst a world of wealth and immense privilege, in which the beautiful people arrogantly believe that the normal rules of society do not apply to them. Sebastian Valmont (the hunky Ryan Phillippe) and his beautiful step sister Kathryn (Sarah Michelle Gellar, from I Know What You Did Last Summer, and tv's Buffy The Vampire Slayer, etc) desperately lust after each other. Left alone in their plush Manhattan apartment while their parents holiday, they direct their energies into seducing many of their contemporaries and then casually destroying their reputations.
But the stakes are dramatically upped when Sebastian sets out to seduce Annette (Reese Witherspoon, recently seen in Pleasantville, etc), the daughter of his school's new headmaster. In a recent magazine interview Annette publicly avowed to maintain her virginity until she marries the man she loves. Meanwhile, Kathryn sets out to tarnish the reputation of Cecile (newcomer Selma Blair), the new girl friend of an ex-lover who dumped her in humiliating circumstances. At stake is Sebastian's prized 1956 vintage Jaguar. But Sebastian has underestimated the cunning of his manipulative sister, who is willing to play people off against one another, especially when the stakes are so high and personal.
Neither the contemporary setting, the hunky young cast, nor the cutting edge soundtrack detract from the savage nature of the amoral games that the pair play for their own sense of personal gratification. There is more than a whiff of sex here, although some fans may be disappointed to learn they don't get to see Buffy in the buff.
The charismatic and handsome Phillipe (the best thing in the recent 54) continues to impress with another superb performance. He conveys Sebastian's transformation from cynical, shallow cad, and gives the flashy character some unexpected depth. Gellar relishes this opportunity to play against type, and is superb as the bitchy and manipulative Kathryn, who is prepared to use anyone to achieve her aims. Witherspoon is also good as the vulnerable and naive Annette, the intended victim of these dangerous games who unexpectedly triumphs. Oscar winner Louise Fletcher, Swoosie Kurtz and Christine Baranski round out the cast in smaller roles as some of the adult characters caught up in the cruel machinations.
Cruel Intentions has a sophisticated style that will also strongly appeal to an adult audience not normally drawn towards shallow teen dramas.
*** greg king http://www.netau.com.au/gregking
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


Implementation of the SMuRF algorithm of Devriendt et al. (2018) <arXiv:1810.03136> to fit generalized linear models (GLMs) with multiple types of predictors via regularized maximum likelihood.
| Version: | 1.0.0 |
| Depends: | R (≥ 3.1) |
| Imports: | catdata, glmnet, graphics, MASS, Matrix, methods, mgcv, parallel, RColorBrewer, Rcpp (≥ 0.12.12), speedglm, stats |
| LinkingTo: | Rcpp, RcppArmadillo (≥ 0.8.300.1.0) |
| Suggests: | bookdown, knitr, roxygen2 (≥ 6.0.0), testthat |
| Published: | 2018-12-09 |
| Author: | Tom Reynkens [aut, cre], Sander Devriendt [aut], Katrien Antonio [aut] |
| Maintainer: | Tom Reynkens <tomreynkens at hotmail.com> |
| BugReports: | https://gitlab.com/TReynkens/smurf/issues |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| URL: | https://gitlab.com/TReynkens/smurf |
| NeedsCompilation: | yes |
| Materials: | NEWS |
| CRAN checks: | smurf results |
| Reference manual: | smurf.pdf |
| Vignettes: |
Introduction to the smurf package |
| Package source: | smurf_1.0.0.tar.gz |
| Windows binaries: | r-devel: smurf_1.0.0.zip, r-release: smurf_1.0.0.zip, r-oldrel: smurf_1.0.0.zip |
| OS X binaries: | r-release: smurf_1.0.0.tgz, r-oldrel: smurf_1.0.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=smurf to link to this page.


This project consists of a simulation framework and a collection of simulations written in Scala. Examples include reaction diffusion, fractals, snakes, stocks, dice, fluid flow, and many more.
Download this zip file and unzip it. Then in the bin directory run one of commands indicated below.


#include <textview.h>
Inheritance diagram for TTerminal::
Public Methods | |
| TTerminal (const TRect &bounds, TScrollBar *aHScrollBar, TScrollBar *aVScrollBar, ushort aBufSize) | |
| ~TTerminal () | |
| virtual int | do_sputn (const char *s, int count) |
| void | bufInc (ushort &val) |
| Boolean | canInsert (ushort amount) |
| short | calcWidth () |
| virtual void | draw () |
| ushort | nextLine (ushort pos) |
| ushort | prevLines (ushort pos, ushort lines) |
| Boolean | queEmpty () |
Protected Methods | |
| void | bufDec (ushort &val) |
Protected Attributes | |
| ushort | bufSize |
| char* | buffer |
| ushort | queFront |
| ushort | queBack |
| ushort | curLineWidth |
Definition at line 70 of file textview.h.
|
|
Creates a TTerminal object with the given bounds, horizontal and vertical scroll bars, and buffer by calling TTextDevice constructor with the bounds and scroller arguments, then creating a buffer (pointed to by buffer) with bufSize equal to `aBufSize'.
|
|
|
Deallocates the buffer and calls ~TTextDevice(). |
|
|
Used to manipulate queue offsets with wrap around: if `val' is zero, `val' is set to (bufSize - 1); otherwise, `val' is decremented. |
|
|
Used to manipulate a queue offsets with wrap around: increments `val' by 1, then if `val' >= bufSize, `val' is set to zero. |
|
|
Undocumented. |
|
|
Returns True if the number of bytes given in amount can be inserted into the terminal buffer without having to discard the top line. Otherwise, returns False. |
|
|
Overrides the corresponding function in class streambuf. This is an internal function that is called whenever a character string is to be inserted into the internal buffer. Reimplemented from TTextDevice. |
|
|
Called whenever the TTerminal scroller needs to be redrawn; for example, when the scroll bars are clicked on, the view is unhidden or resized, the delta values are changed, or when added text forces a scroll. Reimplemented from TView. |
|
|
Returns the buffer offset of the start of the line that follows the position given by `pos'. |
|
|
Returns the offset of the start of the line that is `lines' lines previous to the position given by `pos'. |
|
|
|
The size of the terminal's buffer in bytes. Definition at line 140 of file textview.h. |
|
|
Pointer to the first byte of the terminal's buffer. Definition at line 144 of file textview.h. |
|
|
Undocumented. Definition at line 162 of file textview.h. |
|
|
Offset (in bytes) of the last byte stored in the terminal buffer. Definition at line 152 of file textview.h. |
|
|
Offset (in bytes) of the first byte stored in the terminal buffer. Definition at line 148 of file textview.h. |


Flashlight
Remotely control your phone flashlight!
Status:
Loading
Loading
v1.1, Made with Google Firebase by Lucas.


There was a time when I enjoyed the simple luxury of growing my own 'very special' indoor garden. Like many people who have such an indoor garden, I had lots and lots of excess leaves which I was constantly pruning off as I continuously topped the plants (to conserve space and increase yield) and trimmed off big top leaves so that light could reach branches at the bottoms of the plants.
For a long while, I smoked the leaves (using a bong) and enjoyed the freedom of toking up without having to pay for it. This was great but sometimes I wanted to puff in places where having a bong was impractical so I looked for a way to process the leaves into something more potent and more palatable. After trying a few different things with varying results, I got the bright idea to put the leaves in a juicer to extract what I could. I have a very good juice machine that can extract juice from about anything.
I fed several handfuls of fresh leaves into the machine which yielded a very small amount (maybe 1/2 fluid oz) of nearly black liquid that smelled very similar to grass clippings (the type that stick to the bottom of your mower). The liquid was very dark green and permanently stained my white juicer. I added enough leaf pulp (from the strainer of the juice extractor) to make a juicy paste, then formed the paste into a 'cake' or 'bar' on some wax paper. Over a few days, the little bar dried and shrunk somewhat. It still smelled like grass clippings. The resulting bar of 'Hillbilly Hash' was easy to smoke in the same method as hash and produced an equivalent high to smoking the same amount of decent buds. When smoking Hillbilly Hash, I can still taste the grass clipping flavor but it is actually pretty pleasant and is far and away better that smoking plain leaves. That's my recipe and I'm sticking to it!
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.


Introduction
A world language is spoken internationally and is learned and spoken by a large number of people as a second language.
A world language is characterized not only by the total number of speakers (native and second language speakers), but also by its geographical distribution, as well as use in international organizations and diplomatic relations.
One of the most widely spoken and fastest spreading world languages today is English, which has over 1.1 billion first- and second-language users worldwide.[3]
French
Language family
- Indo-European
- Italic
- Romance
- Western Romance
- Gallo-Romance
- Oïl
- French
French (le français, pronounced [lə fʁɑ̃sɛ] or [lə fʁɑ̃se] (About this soundlisten) or la langue française [la lɑ̃ɡ fʁɑ̃sɛːz]) is a Romance language of the Indo-European family. It descended from the Vulgar Latin of the Roman Empire, as did all Romance languages. French evolved from Gallo-Romance, the spoken Latin in Gaul, and more specifically in Northern Gaul.
Its closest relatives are the other langues d'oïl—languages historically spoken in northern France and in southern Belgium, which French (Francien) has largely supplanted. French was also influenced by native Celtic languages of Northern Roman Gaul like Gallia Belgica and by the (Germanic) Frankish language of the post-Roman Frankish invaders.
Today, owing to France's past overseas expansion, there are numerous French-based creole languages, most notably Haitian Creole. A French-speaking person or nation may be referred to as Francophone in both English and French.
The HTML code for this language is fr and to add it inside your html tags is your document is as follows:
lang="fr"
English
Early forms
- Old English
- Middle English
- Early Modern English
English is a West Germanic language that was first spoken in early medieval England and eventually became a global lingua franca.[5][6] It is named after the Angles, one of the Germanic tribes that migrated to the area of Great Britain that later took their name, as England. Both names derive from Anglia, a peninsula in the Baltic Sea. The language is closely related to Frisian and Low Saxon, and its vocabulary has been significantly influenced by other Germanic languages, particularly Norse (a North Germanic language), and to a greater extent by Latin and French.[7]
English has developed over the course of more than 1,400 years. The earliest forms of English, a group of West Germanic (Ingvaeonic) dialects brought to Great Britain by Anglo-Saxon settlers in the 5th century, are collectively called Old English. Middle English began in the late 11th century with the Norman conquest of England; this was a period in which the language was influenced by French.[8] Early Modern English began in the late 15th century with the introduction of the printing press to London, the printing of the King James Bible and the start of the Great Vowel Shift.[9]>
The HTML code for this language is en and to add it inside your html tags is your document is as follows:
lang="en"
German
Native speakers
- 90 million (2010)[1] to 95 million (2014)[2]
- L2 speakers: 10–15 million (2014)[2][3]
German (Deutsch [dɔʏtʃ] (About this soundlisten)) is a West Germanic language that is mainly spoken in Central Europe. It is the most widely spoken and official or co-official language in Germany, Austria, Switzerland, South Tyrol in Italy, the German-speaking Community of Belgium, and Liechtenstein. It is also one of the three official languages of Luxembourg and a co-official language in the Opole Voivodeship in Poland.
The languages which are most similar to German are the other members of the West Germanic language branch: Afrikaans, Dutch, English, the Frisian languages, Low German/Low Saxon, Luxembourgish, and Yiddish. There are also strong similarities in vocabulary with Danish, Norwegian and Swedish, although those belong to the North Germanic group. German is the second most widely spoken Germanic language, after English.
One of the major languages of the world, German is a native language to almost 100 million people worldwide and the most widely spoken native language in the European Union.[2][8] German is the third most commonly spoken foreign language in the EU after English and French, making it the second biggest language in the EU in terms of overall speakers.[9]
German is also the second most widely taught foreign language in the EU after English at primary school level (but third after English and French at lower secondary level),[10] the fourth most widely taught non-English language in the US[11] (after Spanish, French and American Sign Language), and the second most commonly used scientific language[12] as well as the third most widely used language on websites after English and Russian.[13]
The German-speaking countries are ranked fifth in terms of annual publication of new books, with one tenth of all books (including e-books) in the world being published in the German language.[14] In the United Kingdom, German and French are the most-sought after foreign languages for businesses (with 49% and 50% of businesses identifying these two languages as the most useful, respectively).[15]
The HTML code for this language is de and to add it inside your html tags is your document is as follows:
lang="de"
Chinese
Official language in
Mandarin
- China
- Singapore
- Taiwan
Cantonese
- Hong Kong
- Macau
Chinese (simplified Chinese: 汉语; traditional Chinese: 漢語; pinyin: Hànyǔ; literally: 'Han language'; or especially though not exclusively for written Chinese: 中文; Zhōngwén; 'Chinese writing') is a group of related, but in many cases not mutually intelligible, language varieties, forming the Sinitic branch of the Sino-Tibetan language family. Chinese is spoken by the ethnic Chinese majority and many minority ethnic groups in China. About 1.2 billion people (around 16% of the world's population) speak some form of Chinese as their first language.
The varieties of Chinese are usually described by native speakers as dialects of a single Chinese language, but linguists note that they are as diverse as a language family.[b] The internal diversity of Chinese has been likened to that of the Romance languages, but may be even more varied. There are between 7 and 13 main regional groups of Chinese (depending on classification scheme), of which the most spoken by far is Mandarin (about 800 million, e.g. Southwestern Mandarin), followed by Min (75 million, e.g. Southern Min), Wu (74 million, e.g. Shanghainese), Yue (68 million, e.g. Cantonese), etc.[4]
Most of these groups are mutually unintelligible, and even dialect groups within Min Chinese may not be mutually intelligible. Some, however, like Xiang and certain Southwest Mandarin dialects, may share common terms and a certain degree of intelligibility. All varieties of Chinese are tonal and analytic.
The HTML code for this language is zh and to add it inside your html tags is your document is as follows:
lang="zh"
Hebrew
Language family
- Afro-Asiatic
- Semitic
- Central Semitic
- Northwest Semitic
- Canaanite
- Hebrew
Hebrew (/ˈhiːbruː/; עִבְרִית, Ivrit Hebrew pronunciation: [ivˈʁit] or [ʕivˈɾit] (About this soundlisten)) is a Northwest Semitic language native to Israel; the modern version of which is spoken by over 9 million people worldwide.[8] Historically, it is regarded as the language of the Israelites and their ancestors, although the language was not referred to by the name Hebrew in the Tanakh.[note 1] The earliest examples of written Paleo-Hebrew date from the 10th century BCE.[9] Hebrew belongs to the West Semitic branch of the Afroasiatic language family. Hebrew is the only living Canaanite language left, and the only truly successful example of a revived dead language.[10][11]
Hebrew had ceased to be an everyday spoken language somewhere between 200 and 400 CE, declining since the aftermath of the Bar Kokhba revolt.[2][12][note 2] Aramaic and to a lesser extent Greek were already in use as international languages, especially among elites and immigrants.[14] Hebrew survived into the medieval period as the language of Jewish liturgy, rabbinic literature, intra-Jewish commerce, and poetry. Then, in the 19th century, it was revived as a spoken and literary language. It became the lingua franca of Palestine's Jews, and subsequently of the State of Israel. According to Ethnologue, in 1998, it was the language of 5 million people worldwide.[5] After Israel, the United States has the second largest Hebrew-speaking population, with 220,000 fluent speakers,[15] mostly from Israel.
Modern Hebrew is the official language of the State of Israel, while premodern Hebrew is used for prayer or study in Jewish communities around the world today. The Samaritan dialect is also the liturgical tongue of the Samaritans, while modern Hebrew or Arabic is their vernacular. As a foreign language, it is studied mostly by Jews and students of Judaism and Israel, and by archaeologists and linguists specializing in the Middle East and its civilizations, as well as by theologians in Christian seminaries.
The HTML code for this language is he and to add it inside your html tags is your document is as follows:
lang="he"


MTRACE(1) Debian MTRACE(1) NAME mtrace - Interpret output from MALLOC_TRACE SYNOPSIS mtrace [OPTION]... [Binary] MtraceData DESCRIPTION The mtrace interprets the output from when the MALLOC_TRACE environment variable is set. AUTHOR mtrace was written by Ulrich Drepper as part of the GNU C Library. This man page was written by Jeff Bailey<EMAIL_ADDRESS>3rd Berkeley Distribution November 2003 MTRACE(1)


{% extends 'layouts/base.html' %}
{% load staticfiles %}
{% block content %}
{% include 'layouts/header.html' %}
Staff requesting jobs
| Reqid |
Photo |
Name |
Job Title |
Job Content |
Date |
Actions |
{% for request in will_requests %}
| {{request.id}} |
|
{{request.user.username}} |
{{request.job.title}} |
{{request.job.description}} |
{{request.created_date}} |
|
{% endfor %}
Staff working on jobs
| Date of Event |
Job Title |
Job Content |
Staff Members |
Print |
{% for job in jobs %}
| {{job.created_date}} |
{{job.title}} |
{{job.description}} |
{{job.staff_members.count}} |
Detail
|
{% endfor %}
{% include 'layouts/footer.html' %}
{% endblock %}


Probolinggo's waterfall
First important thing to know is how to get there, for us it was simpler to just
take the train again! (Here’s more information
to get to Probolinggo from Yogyakarta) The train ride was uneventful and
when we arrived to Probolinggo we decided to walk to the hotel. And for once I
didn’t regret it! The town is pretty small so most of the hotels are located near
the train station which is more or less in the center of the town.
Once at the hotel we were guided to our room and received a tiny surprised. No bed
sheet. Well to be exact, half of a blanket (Yes, yes half don’t ask me why) We were
expecting a bad hotel. The hotel in the area don’t have a great reputation. Since
it’s one of the closest town to the Bromo volcano, the hotel don’t have to make an
effort to have clients. Therefore, all hotels are pretty expensive and kind of
shitty (sorry for my language) But hey, there was a breakfast included! Not the
finest, but it was accomplishing its purpose! Anyway we slept with our towels as
blankets and we didn’t took shower (no warm water…) and honestly it was still worth
it
to be able to admired the amazing sceneries of that area.
Now to get to the volcano and the waterfall we didn’t want to get a tourist bus, so
of course we rented a bike!
(Here more
information about renting motorbike) In this
case we searched a little for a guy that was allowing people to go around the
volcano with the bike (there’s a lot of sand and dust, it’s not great for motor…) We
finally found one and after getting lost to get to his shop and we were able to rent
a bike.
Now we began our journey to the waterfall with our trusty google map. But that trust
will misguide us greatly. The route itself was filled with fabulous mountain views
and field view all the way. As we were getting closer, according to google map, we
were using weirder and unusual streets. They were slowly becoming motocross track
more than roads. We kept going up and up and the road was becoming more sandy with a
few scattered patch of asphalt.  Rock and bump on the road gives an amazing result to my butt. During
our stop someone passed by and stopped to talk to us. He kept repeating that we were
in the wrong way and to we needed to follow him. At first we were ignoring him a
little telling him we were fine and that we didn’t need help. The guy didn’t really
spoke english but keep telling us we were in the wrong way for the waterfall. We
tried to look on google or use google translate but of course we were in the middle
of nowhere so no cell reception. Eventually, he look in his tank to see if he had
enough gaz, then ask his girlfriend to wait on the side of the road. We thought that
it was a too good of a staging to be a scam so we followed him. As we were getting
back down the road with all of its rock and sand it was getting harder for Alexis to
keep the control of the bike.
Eventually the front wheel got stuck on the side of a
rock, which make me move too much and pushed Alexis. All of this lead both of us to
flip over the motorbike.
Yep, our first accident! Not in traffic, but in the
middle
of nowhere. But don’t worry there was plenty of spectator since a car was coming
toward us. By some miracle, I ended landing on both of my feet in the middle of the
road on the only spot of asphalt. I do have a really good guardian angel. My bear
didn’t have the same luck. Well he didn’t help his luck either, wearing flip flops
and a top tank to do motorbike… So as he was trying to land on his feet, flip flop
one flew one way and they flip flop two flew the other way and Alexis rolled over in
the rocks. And my heart spot, in my head we were already in an hospital. But Alexis
do know how do fall properly so he got away with very few scratches and bruise. Once
he got his flip flop back, he got the bike back and we were ready to leave again.
Except that the guy ask me to get on his bike to avoid another accident… That was
the most stressful ride of my life. I wasn’t planning on riding a bike behind
someone else since I was wearing really really short short. Well after 30 min ride
on a small side road in the middle of nowhere we ended up at the beginning of the
trail for the waterfall.
In the end, the guy asked us for 50 000 ruppia, but in exchange he managed to allow
us to get to the entrance of the trail with our own motorbike. Normally you are not
allowed to do so, you have to pay a “moto guy” to transport you to the entrance
where you will be charge another 45 000 ruppia. Just a warning, they will annoy you
to get a guide and to buy a pocho or other waterproof accessories. You don’t need a
guide to get to the waterfall, it’s pretty easy to find. If you don’t want to be
wet, then buy them, since you will have to go under the waterfall, yes under!
You need to walk 1 km to get to the actual waterfall from the main entrance. Part of
that walk will be in a river and climbing the side of a rock (wet rock). Once you
have climbed the rock in question, you end up in the middle of the waterfall. There
is literally water falling everywhere around you.  Once we finished taking picture, we went back to our hotel
completely wet and bit bruised but amazed by our experience.