Comparing different ways to build friend objects in Django
This post will briefly explore two different methods of creating models in Django for friends, relationships, followers or connections on a social network. The first method is one I learned from this youtube tutorial series by Max Goodridge when I first started learning Django.
1st Method: ManytoManyField to store friends
Using Django’s ManyToManyField
, we can define the following Friend
model:
from django.db import models
from accounts.models import UserProfile
class Friend(models.Model):
users = models.ManyToManyField(UserProfile)
current_user = models.ForeignKey(UserProfile, related_name="owner", null=True)
@classmethod
def make_friend(cls, current_user, new_friend):
friend, created = cls.objects.get_or_create(
current_user = current_user
)
friend.users.add(new_friend)
@classmethod
def remove_friend(cls, current_user, new_friend):
friend, created = cls.objects.get_or_create(
current_user = current_user
)
friend.users.remove(new_friend)
def __str__(self):
return str(self.current_user)
With this type of model, we define the following views to add and remove friends:
from django.shortcuts import render, get_object_or_404, redirect
from accounts.models import UserProfile
from django.contrib.auth.models import User
from friends.models import Friend
from django.contrib.auth.decorators import login_required
@login_required
def add_or_remove_friends(request, username, verb):
n_f = get_object_or_404(User, username=username)
owner = request.user.userprofile
new_friend = UserProfile.objects.get(user=n_f)
if verb == "add":
new_friend.followers.add(owner)
Friend.make_friend(owner, new_friend)
else:
new_friend.followers.remove(owner)
Friend.remove_friend(owner, new_friend)
return redirect(new_friend.get_absolute_url())
The Friend
model has a ForeignKey
relationship (“owner”), a given user, and a ManyToManyField
relationship with other UserProfile
objects.
I am using a UserProfile model to build the Friend
model and view. This is a common practice in Django, you can read more about it this article about extending the user model.
In this example, the UserProfile
also has a ManyToManyField
called followers that store the users following that user. I access this field in the add_or_remove_friends
method.
Because I am using UserProfile
model in the ManyToManyField
and ForeignKey
relationships in the Friend
model, in the add_or_remove_friends
view I need to first get the User
model by username, and then find the UserProfile
model.
The class methods in the Friend
model make use of a very helpful method called get_or_create
. This method returns the existing or new model, and a boolean value indicating whether or not a new object was created.
This approach is helpful when you want to track the users someone is following and the followers of any given user. For example, to get the users that follow a particular user, we can do the following in a template:
To get the users that a user follows, we could access the friend model in a view and then get a list of users in the ManyToManyField
:
def list_friends(request):
friend_object, created = Friend.objects.get_or_create(current_user=request.user.userprofile)
friends = [friend for friend in friend_object.users.all() if friend != request.user.userprofile]
return render(request, 'template.html', {"friends":friends})
Alternatively, we could write a class method to do this for is in the friend model.
This is a good way to track relationships if relationships is the only piece of information we need to track. However, if we want to track more information about a relationship, such as the date and time the relationship was formed, we will quickly see the limits of this model schema. The next method provides another way that allows us to store more information about each relationship.
2nd Method: ForeignKey with one relationship per object
Another popular solution for making a Friend
model in Django discussions around the internet describes the following method (originally seen on Stack Overflow in this post). Let’s call this model Connection
:
class Connection(models.Model):
created = models.DateTimeField(auto_now_add=True, editable=False)
creator = models.ForeignKey(User, related_name="friendship_creator_set")
following = models.ForeignKey(User, related_name="friend_set")
With this model, we would want to create additional class methods on our UserProfile
model to easily get a list of connections (users the user is following) and followers (users following the user) in a template or view:
from friends.models import Friendship
class UserProfile(models.Model):
...
def get_connections(self):
connections = Connection.objects.filter(creator=self.user)
return connections
def get_followers(self):
followers = Connection.objects.filter(following=self.user)
return followers
Accessing Connection Information in API Data
In a recent project I have been looking for a way to display all users in a network, and also show the connection status between each user listed and the currently logged-in user. This could be done by writing additional model methods on the UserProfile model and then access these methods in the template. Since I am using React.js to display the user list, I can’t access a model method in the template. Instead, I will have get the connection data inside of the API. Using the Django REST Framework, this can be accomplished with SerializerMethodField
.
Here’s a quick description of SerializerMethodField
from the Django REST Framework documentation:
This is a read-only field. It gets its value by calling a method on the serializer class it is attached to. It can be used to add any sort of data to the serialized representation of your object.
Here’s a view and serializer that I use to show all users in a social network, along with Boolean Fields that indicate if each user is following or followed by the logged-in user making the request.
api/views.py
class UserListAPIView(ListAPIView):
queryset = UserProfile.objects.all()
serializer_class = UserListSerializer
api/serializers.py
from ..models import UserProfile, Connection
class UserListSerializer(ModelSerializer):
following = serializers.SerializerMethodField()
follows_requesting_user = serializers.SerializerMethodField()
class Meta:
model = UserProfile
fields = [
'user',
'first_name',
'last_name',
'bio',
...
'following',
'follows_requesting_user',
'follow_link',
]
def get_following(self, obj):
creator = self.context['request'].user
following = obj.user
connected = Connection.objects.filter(creator=creator, following=following)
return len(connected)
def get_follows_requesting_user(self, obj):
creator = self.context['request'].user
following = obj.user
connected = Connection.objects.filter(creator=following, following=creator)
return len(connected)
Finally, here’s look into the index.js
file that includes the React component which consumes this API data:
assets/js/index.js
...
if(document.getElementById('users-container')) {
var UserList = React.createClass({
loadUsersFromServer: function(){
console.log('something')
$.ajax({
url: this.props.url,
datatype: 'json',
cache: false,
success: function(data){
this.setState({data:data});
}.bind(this)
})
},
getInitialState: function(){
return {data: []};
},
componentDidMount: function(){
this.loadUsersFromServer();
setInterval(this.loadUsersFromServer,
this.props.pollInterval)
},
render: function(){
if (this.state.data){
var userNodes = this.state.data.map(function(user){
return (

{user.following == 1 ? following : Follow}

{user.follows_requesting_user == 1 ? follows you : ''}

{user.first_name} {user.last_name}

{user.job_title} @ {user.current_company}

{user.is_facebook_connected ? <button className="btn btn-default">Facebook: Connected</button> :''}
{user.is_linkedin_connected ? <button className="btn btn-default">LinkedIn: Connected</button> :''}

View

)
})
}
return (

Women in the Lead Network

{userNodes}

)
}
})
ReactDOM.render(<UserList url='/api/users/' pollInterval={10000} />,
document.getElementById('users-container'))
}
A third way?
There is a lot you can do with Connection models. This models explored here are fairly simple “following” relationships. The following process does not require that the user being followed accepts the initiating users “follow”. Since I am designing this for a small, invite-only social-network, it is ok to keep things relatively simple for now.
The major difference between the first and second methods of building friendship/follower/connection models is that you can store more detailed information about each relationship. However, if we wanted to store data about the non-directional relationship between two people, we would have to make another model (perhaps with signals), or update the information in both Connection models (a -> b and b -> a).


Authentication and Authorization: create users, handle login, protect pages
Description
The Yada Framework uses Spring Security to implement authentication (identifying the current user) and authorization (limiting access to web pages according to the user role). The YadaWebSecurity library must be added to the classpath in order for this to work.
Setup
The WebConfig
class must extend YadaWebSecurityConfig
instead of YadaWebConfig
:
@ComponentScan(basePackages = { "com.example.web" })
public class WebConfig extends YadaWebSecurityConfig {
The required YadaWebSecurity entities must also be added to persistence.xml
in order to create the DB schema:
<persistence-unit name="yadaPersistenceUnit">
<class>net.yadaframework.security.persistence.entity.YadaSocialCredentials</class>
<class>net.yadaframework.security.persistence.entity.YadaUserCredentials</class>
<class>net.yadaframework.security.persistence.entity.YadaUserProfile</class>
<class>net.yadaframework.security.persistence.entity.YadaRegistrationRequest</class>
<class>net.yadaframework.security.persistence.entity.YadaAutoLoginToken</class>
Some security parameters must be configured in conf.webapp.prod.xml
:
<config>
<security>
<sessionTimeoutMinutes>240</sessionTimeoutMinutes> (1)
<passwordLength min='5' max='128' /> (2)
<encodePassword>true</encodePassword> (3)
<maxFailedAttempts>10</maxFailedAttempts> (4)
<failedAttemptsLockoutMinutes>10</failedAttemptsLockoutMinutes> (5)
<autologinExpirationHours>48</autologinExpirationHours> (6)
<roles> (7)
<role>
<id>8</id>
<key>ADMIN</key>
</role>
<role>
<id>2</id>
<key>USER</key>
</role>
</roles>
</security>
| 1 | this value must be the same used in the web.xml <session-config><session-timeout> tag and is for checking session expiration |
| 2 | values for password validation |
| 3 | when true, passwords are encrypted in the database |
| 4 | the number of consecutive failed login attempts before an account is locked out |
| 5 | the number of minutes to wait for a locked out account before a new login attempt can be made |
| 6 | the validity time of autologin links |
| 7 | list of roles that users can have |
The list of roles defines an id and a key for every role a user can have in the application. A user can have more than one role. Role ids are just integer numbers with no special meaning, but they must be unique. Role keys can be any word that reminds of the activity the user can perform on the site. In this example, "USER" is any user with no particular privileges, and "ADMIN" is a site administrator. Role names should be specific to the application domain. For example, a "MANAGER" could handle users, a "GUEST" could have limited access, a "TEACHER" could see the score editing form. It’s important not to change either the id or the key once the application goes to production because these values are stored in the database.
- configuration of login/logout/success/failure urls - configuration of endpoint protection
User Profile
Every web application handles a specific kind of user with different attributes like name, address, age etc.
All user attributes are known as a "user profile".
The Yada Framework provides the YadaUserProfile
class with basic attributes like firstName
or avatar
image.
The web application must subclass it with its own UserProfile
class in order to add application-specific
attributes:
@Entity
public class UserProfile extends YadaUserProfile {
@Column(length = 32)
String nickname; // This is an example of UserProfile customization
The user login name is always the email address. Together with the password it is stored in the userCredentials
attribute of YadaUserProfile
, of type YadaUserCredentials
.
Initial user
Usually, in a web application, users either register themselves or are added by an administrator.
In any case, there must be an initial user with administrator rights that is already in the database
when the application starts for the first time.
This can be implemented by subclassing YadaUserSetup
in any bean, for example a "Setup" bean:
@Component
public class Setup extends YadaUserSetup<UserProfile> {
Just by doing this, the users defined in the configuration will be created, if not there already,
at each application startup.
This configuration in conf.webapp.prod.xml
creates one "admin" user (but it doesn’t have to be just one):
<config>
<setup>
<users>
<user>
<nickname>admin</nickname> <!-- This is an example of UserProfile customization -->
<EMAIL_ADDRESS><password>changeit</password>
<locale>en_US</locale>
<timezone>Europe/Rome</timezone>
<role>USER</role>
<role>ADMIN</role>
</user>
</users>
</setup>
The xml user definition can contain all attributes defined in the application-specific UserProfile class: they will be set using reflection.
|
Do not configure a password for production users otherwise all developers having access to the sources will know the password. If you don’t set a password, you will have to "reset" it the first time you want to log in. |
To delete all users (for development test):
delete from YadaUserCredentials_roles;
delete yup, yuc FROM YadaUserProfile yup join YadaUserCredentials yuc on yup.userCredentials_id = yuc.id;
|
You can create a "secret" production configuration with user setup information by editing the |
Password Reset
- form to ask password reset - send password reset email - form to reset the password
Login page
The login page can either be a full page or a modal, and must contain the login form.
The login form must have a username
and a password
field. The form must be submitted
to the configured loginProcessingUrl
endpoint via ajax or not depending on how it was opened (see later).
- failed attempts lockout message - login error message - password reset link - password reveal button - force password change after login
The login page/modal can either be opened by clicking on a login link or by requesting a protected url: in the latter case the request (ajax or not) will be saved and replayed after successful login.
|
A POST to a protected url that triggers the login process will be replayed as a GET (this is by Spring Security design) without the original payload. Never allow a post to a protected url unless the user is logged in already. |
The login link can either be ajax or normal:
-
Opening a login page with a normal request is trivial
-
Opening a modal with a normal request requires landing on some page (usually the home) with a model parameter that triggers the opening of the embedded login modal
-
Opening a login page with an ajax request requires that some element in the page (not the body) has the
yadafullPage
class. -
Opening a login modal with an ajax request requires an ajax login link and a controller that returns the login modal
The login page/modal is automatically opened when a protected url is requested. The method used (ajax/normal)
to open the login page/modal is the same of the initial request, that is saved for later.
This means that the configured .formLogin().loginPage
must handle both methods.
This is an example where a normal request opens the home page and triggers the opening of the login modal
by means of a login
model attribute:
@RequestMapping("/loginForm")
public String login(HttpServletRequest request, Model model, Locale locale) {
boolean loggedIn = yadaSecurityUtil.isLoggedIn();
if (!yadaWebUtil.isAjaxRequest()) {
// Normal request
if (!loggedIn) {
model.addAttribute("login", "login");
}
return home(request, model, locale);
} else {
// Ajax request
if (!loggedIn) {
return "/modalLogin";
} else {
return YadaViews.AJAX_SUCCESS; // Do nothing
}
}
}
|
The login link must not point to the same value configured in |
The login link must be shown only when the user is not logged in and replaced with the logout link otherwise:
<header th:with="loggedIn=${@yadaSecurityUtil.loggedIn()}">
<a th:unless="${loggedIn}" th:href="@{/loginForm}" class="yadaAjax">
Login
</a>
<a th:if="${loggedIn}" th:href="@{/logout}">
Logout
</a>
The login form must post using the same method (ajax or not) used to load it: if the modal
containing it was loaded via ajax it must post via ajax, and vice versa.
This is because if the login process is triggered by accessing a protected url in a normal request, the login form
must use a normal POST otherwise the saved request would be redirected to via ajax and may not be shown correctly.
If, on the contrary, the process is triggered when the initial request is ajax, the login form
must use ajax to POST otherwise the saved request would be loaded non-ajax and shown as a full page.
To achieve this, use the yadaIsAjaxResponse
model attribute that is always present when returning from
an ajax call:
<form th:action="@{/loginPost}" th:classappend="${yadaIsAjaxResponse}?yadaAjax" ... >
After successful login, the login modal should be closed and any dynamic parts of the page that differ
when a user is logged in should be replaced with the correct version: for example the login link
should become a logout link.
The easiest way to do so is to reload the entire page, but this can only be done when there is no
unsaved data that needs to be kept. The yada.reload()
function should do the trick.
Otherwise, some javascript should fetch the new page parts from the server and replace them
at the correct position.
In both cases this can be done in a yada:successHandler of the login form:
<form th:action="@{/loginPost}" yada:successHandler="postLogin" (1)
th:classappend="${yadaIsAjaxResponse}?yadaAjax"
role="form" method="post" id="loginForm">
...
<script th:inline="javascript">
function postLogin() {
const headerUrl = /*[[@{/justTheHeader}]]*/ "unset";
yada.ajax(headerUrl, null, function(responseText, $responseHtml) {
$("header").replaceWith($("header", $responseHtml)); (2)
$("#myLoginModal").modal("hide"); (3)
});
}
| 1 | postLogin will be called after successful form submission |
| 2 | the current page header is replaced by the header as seen by logged-in users |
| 3 | the login modal is closed |
Another option would be, after login, to redirect to some other page. This can be done by configuring the
DefaultTargetUrlAjaxRequest with "/yadaLoginSuccess?targetUrl=/myOtherUrl/"
.
|
As said above, a public page should not contain a form that posts to a protected endpoint. Such form should be shown only to logged-in users. This can be done either by conditionally showing the form or by placing it on a modal that is opened by clicking on a protected link. For example, a "save icon" could be an ajax link that returns a protected modal containing the save form. By clicking on the save icon, the user would first trigger the login process then the save form would be shown in the modal to the now logged-in user. |
|
Never open from a public page a modal containing a form to a protected page using javascript only because there won’t be a chance to trigger the login process. |
- UserProfileDao - registration controller: registration - checking session expiration - autologin - yadaLoginSuccess?targetUrl: why use it when you have a login successHandler that can do that?


JessConf is a one day, single-track, community run conference.
JessConf 2016 will be held on Jessie Island, Cowley Beach, Australia on {{ .Site.Params.date }}
The conference features speakers from around the world, presenting on a vast number of topics. The tracks are defined by no particular order, and are subject to change.


Reports section
highest number of airports
-
{{countryAirports.code}} - {{countryAirports.name}} - {{countryAirports.continent}} {{countryAirports.AirportsNumber}}
lowest number of airports
-
{{countryAirports.code}} - {{countryAirports.name}} - {{countryAirports.continent}} {{countryAirports.AirportsNumber}}
{{selectedCountry.code}} - {{selectedCountry.name}}
-
{{type}}
common Runways
-
{{commonRunway.indentification}} {{commonRunway.number}}


-
Flight: Twitter's Mobile Developer Conference
www.twitterflight.com
Flight is a gathering built by developers, for developers. You'll be right at home if you live, breathe and occasionally dream in Java, Objective-C, ...
-
#BRAvsCRO: 7 #WorldCup @TwitterData points you need to know | Twitter Blogs
blog.twitter.com
Follow @TwitterData and @TwitterSports throughout the #WorldCup for key metrics and trends.
-
Cover is joining Twitter
blog.coverscreen.com
We started Cover a year ago because we believed in two things: 1) the untapped potential of the supercomputers we carry in our pockets, and 2) the ...
-
HackerOne - Twitter
hackerone.com
Twitter helps you create and share ideas and information instantly, without barriers.
-
Twitter tops charts as best tech company to work for - CNET
www.cnet.com
Debuting on Glassdoor's 50 best places to work list for the first time, Twitter reigns over Facebook, Google, and Apple based on work satisfaction, ...
-
Hello Pants build | Twitter Blogs
blog.twitter.com
The story behind a new open source build system written in Python.
-
Manhattan, our real-time, multi-tenant distributed database for Twitter ...
blog.twitter.com
Twitter has unique and intensive storage requirements. We built a database, called Manhattan, that meets those requirements and allows self-service ...
-
Greater privacy for your Twitter emails with TLS | Twitter Blogs
blog.twitter.com
Protecting users’ privacy is a never-ending process, and we are committed to keeping our users’ information safe. Since mid-January, we have been ...
-
Introducing analytics for Twitter Cards | Twitter Blogs
blog.twitter.com
Today we’re beginning to roll out analytics for Twitter Cards to help you understand how your Cards are performing.
-
Twitter SVP Chris Fry Breaks Down How His Engineering Org Works
recode.net
A view from inside the aerie.
-
Twitter Engineering
engineering.twitter.com
Building the world’s first real-time distributed public platform connecting people to their interests, events and each other
-
M6.0 - 6km NW of American Canyon, California (BETA) 2014-08-24 10:20:44 UTC
comcat.cr.usgs.gov
USGS Earthquake Hazards Program, responsible for monitoring, reporting, and researching earthquakes and earthquake hazards
-
Son, It’s Time We Talk About Where Start-Ups Come From.
www.mcsweeneys.net
[Originally published February 4, 2014.]  Don’t those Silicon Valley entrepreneurs look ...
-
Working at Twitter
about.twitter.com
Come join us to help millions of people connect, express and discover the world on the Twitter platform.
-
Custom timelines in TweetDeck | Twitter Blogs
blog.twitter.com
Starting today, we are introducing the ability to create custom timelines in TweetDeck. Custom timelines, which were just announced, are a new type ...
-
WIRED
www.wired.com
Get in-depth coverage of current and future trends in technology, and how they are shaping business, entertainment, communications, science, ...
-
#PhotoshopRF
twitter.com
Connectez-vous à vos amis — et d'autres personnes fascinantes. Recevez des mises à jour instantanées sur les choses qui vous intéressent. Et regardez ...
-
Twitter details its anti-spam system, BotMaker
gigaom.com
Twitter has developed a system called BotMaker to deal with its spam problem. Essentially, BotMaker scans messages before they’re posted, after ...
-
Life Tips sur Twitter : "http://t.co/FneMhCy5vp"
twitter.com
Mot de passe oublié ? Vous utilisez déjà Twitter via SMS ?
-
New Tweet activity dashboard offers richer analytics | Twitter Blogs
blog.twitter.com
Our newly-revamped Tweet activity dashboard offers insights on engagement and impressions.
-
A Closer Look at Android RunTime (ART) in Android L
www.anandtech.com
Contrary to other mobile platforms such as iOS, Windows or Tizen, which run software compiled natively to their specific hardware architecture, the ...
-
Daniel Tosh
purchase.tickets.com
Daniel Tosh at The Paramount Theatre, Seattle, WA on Saturday, 9/14/13, 9:30PM PDT
-
What's New And Different About Apple's New Swift Programming Language?
www.fastcolabs.com
We tore apart Apple's 850-page iBook on its new, simpler programming language, to find out why Apple would introduce a new language--despite all ...
-
Twitter Officially Introduces The Mute Button For Android, iPhone And Web ...
techcrunch.com
Twitter has officially announced "mute," a new feature for its Android, iPhone and web clients that lets users selectively turn off the posts of ...
-
Native Ads Now Available For All MoPub Publishers :: MoPub
www.mopub.com
A complete solution for direct sold and exchange traded native ads, delivering the same control and transparency to publishers that we are known for.
-
Jeremy Gordon sur Twitter : ".@yildiz apparently there is no escape ...
twitter.com
Mot de passe oublié ? Vous utilisez déjà Twitter via SMS ?
-
This Is What You Build to Juggle 6,000 Tweets a Second | WIRED
www.wired.com
When you open the Twitter app on your smartphone and all those tweets, links, icons, photos, and videos materialize in front of you, they're not ...
-
World business, finance, and political news from the Financial Times - ...
www.ft.com
The latest UK and international business, finance, economic and political news, comment and analysis from the Financial Times on FT.com
-
akashgarg sur Twitter : "hacking..."
twitter.com
Mot de passe oublié ? Vous utilisez déjà Twitter via SMS ?


title: Getting started
To download a zip, go to Chart.js on Github and choose the version that is right for your application.
To install via npm / bower:
npm install chart.js --save
bower install Chart.js --save
Chart.js provides two different builds that are available for your use. The Chart.js
and Chart.min.js
files include Chart.js and the accompanying color parsing library. If this version is used and you require the use of the time axis, Moment.js will need to be included before Chart.js.
The Chart.bundle.js
and Chart.bundle.min.js
builds include Moment.js in a single file. This version should be used if you require time axes and want a single file to include, select this version. Do not use this build if your application already includes Moment.js. If you do, Moment.js will be included twice, increasing the page load time and potentially introducing version issues.
To import Chart.js using an old-school script tag:
<script src="Chart.js"></script>
<script>
var myChart = new Chart({...})
</script>
To import Chart.js using an awesome module loader:
// Using CommonJS
var Chart = require('src/chart.js')
var myChart = new Chart({...})
// ES6
import Chart from 'src/chart.js'
let myChart = new Chart({...})
// Using requirejs
require(['path/to/Chartjs'], function(Chart){
var myChart = new Chart({...})
})
To create a chart, we need to instantiate the Chart
class. To do this, we need to pass in the node, jQuery instance, or 2d context of the canvas of where we want to draw the chart. Here's an example.
<canvas id="myChart" width="400" height="400"></canvas>
// Any of the following formats may be used
var ctx = document.getElementById("myChart");
var ctx = document.getElementById("myChart").getContext("2d");
var ctx = $("#myChart");
Once you have the element or context, you're ready to instantiate a pre-defined chart-type or create your own!
The following example instantiates a bar chart showing the number of votes for different colors and the y-axis starting at 0.
<canvas id="myChart" width="400" height="400"></canvas>
<script>
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
</script>
It's that easy to get started using Chart.js! From here you can explore the many options that can help you customise your charts with scales, tooltips, labels, colors, custom actions, and much more.


Domestic Violence Survivors Toolkit
Welcome
Calculator
Resources
About Us
Log In
Sign Up
Login
The Log In Goes Here


On the Manage sellers page, you can decide who is allowed to publish services to a marketplace.
You have selected a marketplace for authorized sellers only. In this case, you have to admit one or more supplier, broker, or reseller organizations that are to be allowed to publish services to it. When the marketplace is created, the organization specified as the marketplace owner is automatically admitted, provided that it is assigned the supplier, broker, or reseller role. The page lists all sellers that are currently admitted.
As the marketplace owner, you can revoke the publishing approval for a seller at any time, for example if he is in arrears with his payments. If the seller already published services to the marketplace, these services are automatically deactivated. Customers can no longer subscribe to them. Existing subscriptions are not affected.
When you allow a seller to publish services or remove the authority for publishing, the administrators of the seller organization are automatically notified by email.
To allow a seller to publish services to the selected marketplace:
To remove the authority for publishing services for a seller:


Module ctwav
Creator Tools LUA Wav
Library for simple audio reading, writing and analysing.
Copyright © 2014, Christoph "Youka" Spanknebel
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Modified by Yaron Eshar and Mario Kurselj @ Native Instruments
Added the functions listed after the modify date, added ability to read all chunks, added parsing of smpl chunk, added ability to read more wave formats.
Modified: October 24, 2020
Reads or writes audio file in WAVE format with PCM integer samples. Function 'create_context' requires 2 arguments: a filename and a mode, which can be "r" (read) or "w" (write). A call returns one table with methods depending on the used mode. On reading, following methods are callable:
- get_filename()
- get_mode()
- get_file_size()
- get_channels_number()
- get_sample_rate()
- get_byte_rate()
- get_block_align()
- get_bits_per_sample()
- get_samples_per_channel()
- get_sample_from_ms(ms)
- get_ms_from_sample(sample)
- get_min_max_amplitude()
- get_position()
- set_position(pos)
- get_samples_interlaced(n)
- get_samples(n) September 30, 2020:
- get_min_amplitude()
- get_max_amplitude()
- get_chunk_list()
- get_chunk_size(chunk)
- get_chunk_position(chunk)
- get_manufacturer()
- get_product()
- get_sample_period()
- get_midi_root_note()
- get_midi_pitch_fraction()
- get_smpte_format()
- get_smpte_offset()
- get_loop_count()
- get_sampler_data_size()
- get_loop_cue()
- get_loop_type()
- get_loop_start()
- get_loop_end()
- get_loop_fraction()
- get_loop_times()
- get_loop_position(param)
On writing, following methods are callable:
- get_filename()
- get_mode()
- init(channels_number, sample_rate, bits_per_sample)
- write_samples_interlaced(samples)
- finish() September 30, 2020
- write_smpl_chunk(sample_rate,midi_root,num_loops,loop_type,loop_start,loop_end)
(WAVE format: https://ccrma.stanford.edu/courses/422/projects/WaveFormat/)


body:
Any body that you want to add to your request: this can be a Blob, BufferSource, FormData, URLSearchParams, or USVString object. Note that a request using the GET or HEAD method cannot have a body.
body:
Any body that you want to add to your request: this can be a Blob, BufferSource, FormData, URLSearchParams, or USVString object. Note that a request using the GET or HEAD method cannot have a body.


This appendix contains information regarding the modules that can be found in the contrib directory of the PostgreSQL distribution. These include porting tools, analysis utilities, and plug-in features that are not part of the core PostgreSQL system, mainly because they address a limited audience or are too experimental to be part of the main source tree. This does not preclude their usefulness.
When building from the source distribution, these modules are not built automatically, unless you build the "world" target (see step 2). You can build and install all of them by running:
gmake gmake install
in the contrib directory of a configured source tree; or to build and install just one selected module, do the same in that module's subdirectory. Many of the modules have regression tests, which can be executed by running:
gmake installcheck
once you have a PostgreSQL server running. (Note that gmake check is not supported; you must have an operational database server to perform these tests, and you must have built and installed the module(s) to be tested.)
If you are using a pre-packaged version of PostgreSQL, these modules are typically made available as a separate subpackage, such as postgresql-contrib.
Many modules supply new user-defined functions, operators, or types. To make use of one of these modules, after you have installed the code you need to register the new objects in the database system by running the SQL commands in the .sql file supplied by the module. For example,
psql -d dbname -f SHAREDIR/contrib/module.sql
Here, SHAREDIR means the installation's "share" directory (pg_config --sharedir will tell you what this is). In most cases the script must be run by a database superuser.
You need to run the .sql file in each database that you want the module's facilities to be available in. Alternatively, run it in database template1 so that the module will be copied into subsequently-created databases by default.
You can modify the first command in the .sql file to determine which schema within the database the module's objects will be created in. By default, they will be placed in public.
After a major-version upgrade of PostgreSQL, run the installation script again, even though the module's objects might have been brought forward from the old installation by dump and restore. This ensures that any new functions will be available and any needed corrections will be applied.


TimelineEntityGroupId
s for the data sets that need to be
scanned to serve the query.TimelineEntityGroupId
s for the data sets that need to be
scanned to serve the query.TimelineEntityGroupId
s for the data sets that need to be
scanned to serve the query.KeyValueBasedTimelineStore
.Copyright © 2017 Apache Software Foundation. All Rights Reserved.


Discover hidden places in the world around you
Download Excursion (Coming soon!)
Video not supported
Your personal travel guide
Excursion remembers places you like, and recommends new points of interest around you.
Coming Soon for iPhone and Android
Download Excursion (Coming soon!)


We are very aware of the privacy and confidentiality concerns of anyone who visits our website. We are firmly committed to protecting personal information. The following states our privacy policy:
Collecting and using information
When you visit and communicate with us via our website, we will not collect personal or confidential information about you, unless you provide us that information voluntarily.
We do not collect or use information for the purpose of advertising.
Distributing Information
If you choose to provide personal or confidential information to us voluntarily, we will not sell, license or transmit that information to anyone outside of our organization unless required to do so legally.
Confidentiality
We adhere to our policies of safeguarding confidential information. We strictly comply with standards of practice in confidentiality and ethics. All information is kept within our organization and the only employees that access confidential information are those with a justified business need and authorized to do so.
Linking to other sites
This website provides links to other sites which are not administered or controlled by us. The links are provided as a convenience to you. We do not endorse or guarantee references or sites listed and no inference should be drawn from the omission of other resources. Further, we can not be responsible for the content or privacy practices used by other site owners.
Changes to this Statement
The foregoing Web Privacy Policy is effective October 20, 2018. We may change this statement from time to time. This Statement is not intended to and does not create any contractual or other legal rights or obligations in or on behalf of any party.


The Release Candidate One for the Perl maintenance release 5.8.1 has been released.
Several hundred bugs have been fixed. See the appended perldelta for details. Please test extensively, especially if you had problems with the Perl 5.8.0 release.
While 5.8.1 is expected to resolve many problems people had with 5.8.0, there were certain changes made that we expect to cause some breakage. Therefore we will let Perl module authors and Perl users to test the RC1 for a few weeks.
This is a source code release only: you will need a C/C++ compilation environment to build it. If you haven't built Perl before from the sources, please read the INSTALL file carefully.
Report any problems using the perlbug utility, for example by
./perl -Ilib utils/perlbug
If the perlbug utility doesn't work, try sending email directly to<EMAIL_ADDRESS>In either method, please have a clear Subject line and a clear description of your problem. In the latter method please also include your configuration, which you can get for example by
./myconfig -V > cf
(the perlbug utility includes the configuration automatically)
The Release Candidate One is available from
http://www.cpan.org/authors/id/J/JH/JHI/perl-5.8.1-RC1.tgz
It is a GNU zipped tar file which will unpack to a directory called perl-5.8.1-RC1.
Enjoy,
Jarkko Hietaniemi 5.8.1 Maintenance Pumpking on behalf of the perl5-porters
2003-07-10
keys(%hash)
to test if empty''
perldelta - what is new for perl v5.8.1
This document describes differences between the 5.8.0 release and the 5.8.1 release.
If you are upgrading from an earlier release like 5.6.1, read first the perl58delta, which describes differences between 5.6.0 and 5.8.0.
Mainly due to security reasons, the ``random ordering'' of hashes
has been made even more random. Previously while the order of hash
elements from keys(), values(), and each()
was essentially random,
it was still repeatable. Now, however, the order varies between
different runs of Perl.
Perl has never guaranteed any ordering of the hash keys, and the ordering has already changed several times during the lifetime of Perl 5. Also, the ordering of hash keys has always been, and continues to be, affected by the insertion order.
The added randomness may affect applications.
One possible scenario is when output of an application has included
hash data. For example, if you have used the Data::Dumper module to
dump data into different files, and then compared the files to see
whether the data has changed, now you will have false positives since
the order in which hashes are dumped will vary. In general the cure
is to sort the keys (or the values); in particular for Data::Dumper to
use the Sortkeys
option; or if some particular order is really
important, use tied hashes.
More subtle problem is reliance on the order of ``global destruction''. That is what happens at the end of execution: Perl destroys all data structures, including user data. If your destructors (the DESTROY subroutines) have assumed any particular ordering to the global destruction, there might be problems ahead. For example, in a destructor of one object you cannot assume that objects of any other class are still available, unless you hold a reference to them. If the environment variable PERL_DESTRUCT_LEVEL is set to a non-zero value, or if Perl is exiting a spawned thread, it will also destruct the ordinary references and the symbol tables that are no longer in use. You can't call a class method or an ordinary function on a class that has been collected that way.
The hash randomisation is certain to reveal hidden assumptions about some particular ordering of hash elements, and outright bugs: it revealed a few bugs in the Perl core and core modules.
To disable the hash randomisation in runtime, set the environment
variable PERL_HASH_SEED to 0 (zero) before running Perl (for more
information see perlrun/PERL_HASH_SEED), or to disable the feature
completely in compile time, compile with -DNO_HASH_SEED
(see INSTALL).
See perlsec/``Algorithmic Complexity Attacks'' for the original rationale behind this change.
In Perl 5.8.0 all filehandles, including the standard filehandles, were implicitly set to be in Unicode UTF-8 if the locale settings indicated the use of UTF-8. This feature caused too many problems, so the feature was turned off and redesigned: see Core Enhancements.
The version strings or v-strings (see perldata/``Version Strings'') feature introduced in Perl 5.6.0 has been a source of some confusion-- especially when the user did not want to use it, but Perl thought it knew better. Especially troublesome has been the feature that before a ``=>'' a version string (a ``v'' followed by digits) has been interpreted as a v-string instead of a string literal. In other words:
%h = ( v65 => 42 );
has meant since Perl 5.6.0
%h = ( 'A' => 42 );
(at least in platforms of ASCII progeny) Perl 5.8.1 restores the more natural interpretation
%h = ( 'v65' => 42 );
The multi-number v-strings like v65.66 and 65.66.67 still continue to be v-strings.
The -C switch has changed in an incompatible way. The old semantics of this switch only made sense in Win32 and only in the ``use utf8'' universe in 5.6.x releases, and do not make sense for the Unicode implementation in 5.8.0. Since this switch could not have been used by anyone, it has been repurposed. The behavior that this switch enabled in 5.6.x releases may be supported in a transparent, data-dependent fashion in a future release.
For the new life of this switch, see UTF-8 no longer default under UTF-8 locales, and perlrun/-C.
Perl 5.8.1 uses the /d switch when running the cmd.exe shell
internally for system(), backticks, and when opening pipes to external
programs. The extra switch disables the execution of AutoRun commands
from the registry, which is generally considered undesirable when
running external programs. If you wish to retain compatibility with
the older behavior, set PERL5SHELL in your environment to cmd /x/c
.
In Perl 5.8.0 many Unicode features were introduced. One of them was found to be of more nuisance than benefit: the automagic (and silent) ``UTF-8-ification'' of filehandles, including the standard filehandles, if the user's locale settings indicated use of UTF-8.
For example, if you had en_US.UTF-8
as your locale, your STDIN and
STDOUT were automatically ``UTF-8'', in other words an implicit
binmode(..., ``:utf8'') was made. This meant that trying to print, say,
chr(0xff), ended up printing the bytes 0xc3 0xbf. Hardly what you had
in mind unless you were aware of this feature of Perl 5.8.0. The problem
is that the vast majority of people weren't: for example in RedHat releases
8 and 9 the default locale setting is UTF-8, so all RedHat users got
UTF-8 filehandles, whether they wanted it or not. The pain was
intensified by the Unicode implementation of Perl 5.8.0 (still) having nasty
bugs, especially related to the use of s/// and tr///.
(Bugs that have been fixed in 5.8.1)
Therefore a decision was made to backtrack the feature and change it
from implicit silent default to explicit conscious option. The new
Perl command line option -C
and its counterpart environment
variable PERL_UNICODE can now be used to control how Perl and Unicode
interact at interfaces like I/O and for example the command line
arguments. See perlrun for more information.
In Perl 5.8.0 the so-called ``safe signals'' were introduced. This means that Perl no longer handles signals immediately but instead ``between opcodes'', when it is safe to do so. The earlier immediate handling easily could corrupt the internal state of Perl, resulting in mysterious crashes.
However, the new safer model has its problems too. Because now an opcode, a basic unit of Perl execution, is never interrupted but instead let to run to completion, certain operations that can take a long time now really do take a long time. For example, certain network operations have their own blocking and timeout mechanisms, and being able to interrupt them immediately would be nice.
Therefore perl 5.8.1 introduces a ``backdoor'' to restore the pre-5.8.0
(5.7.3, really) signal behaviour. Just set the environment variable
PERL_SIGNALS to unsafe
, and the old immediate (and unsafe)
signal handling behaviour returns.
Formerly, the indices passed to FETCH
, STORE
, EXISTS
, and
DELETE
methods in tied array class were always non-negative. If
the actual argument was negative, Perl would call FETCHSIZE implicitly
and add the result to the index before passing the result to the tied
array method. This behaviour is now optional. If the tied array class
contains a package variable named $NEGATIVE_INDICES
which is set to
a true value, negative values will be passed to FETCH
, STORE
,
EXISTS
, and DELETE
unchanged.
The syntaxes
local ${$x} local @{$x} local %{$x}
now do localise variables, given that the $x is a valid variable name.
Unicode Character Database has been updated to 4.0.0 from 3.2.0.
Perl 5.8.0 forgot to add some deprecation warnings. These warnings have now been added.
Pseudo-hashes were deprecated in Perl 5.8.0 and will be removed in Perl
5.10.0, see perl58delta for details. Each attempt to access pseudo-hashes
will trigger the warning Pseudo-hashes are deprecated
. If you really want
to continue using pseudo-hashes but not to see the deprecation warnings, add:
no warnings 'deprecated';
Or you can continue to use the fields pragma, but please don't expect the data structures to be pseudohashes any more.
5.005-style threads (activated by use Thread;
) were deprecated in Perl
5.8.0 and will be removed in Perl 5.10.0, see perl58delta for details.
Each attempt to create a 5.005-style thread will trigger the warning
5.005 threads are deprecated
. If you really want to continue using
5.005 threads but not to see the deprecation warnings, add:
no warnings 'deprecated';
Version Strings (v-strings) have been deprecated. They will not be available after Perl 5.8. The marginal benefits of v-strings were greatly outweighed by the potential for Surprise and Confusion.
The $*
variable controlling multi-line matching has been
deprecated. It will not be available after Perl 5.8. The variable
has been deprecated for a long time, now it will just finally be
removed. The functionality has been supplanted by the /s
and
/m
modifiers on pattern matching.
B::Concise
B::Deparse
Benchmark - An optional feature, :hireswallclock
, now allows
for high resolution wall clock times (uses Time::HiRes).
CGI
charnames - One can now have custom character name aliases.
CPAN - There is now a simple command line frontend to the CPAN.pm module called cpan.
Data::Dumper - A new option, Pair, allows choosing the separator between hash keys and values.
DB_File
Devel::PPPort
Digest::MD5
Encode - significant updates on the encoding pragma functionality (tr/// and the DATA filehandle, formats). The ISO 8859-6 conversion table has been corrected (the 0x30..0x39 errorneously mapped to U+0660..U+0669, instead of U+0030..U+0039), the UTF7 encoding has been added.
libnet
Math::BigInt
MIME::Base64
Net::Ping
podlators
Pod::LaTeX
PodParsers
Pod::Perldoc
Scalar::Util - New utilities: refaddr, isvstring, looks_like_number, set_prototype.
Storable - can now store code references (via B::Deparse, so not foolproof).
Term::ANSIcolor
Test::Harness - now much more picky about extra or missing output from test scripts.
Test::More
Test::Simple
Text::Balanced
Time::HiRes - Use of nanosleep(), if available, allows mixing subsecond sleeps with alarms.
threads - Several fixes, for example for join()
problems and memory
leaks. In some platforms (like Linux) that use glibc the memory
footprint of one ithread has been reduced by several hundred kilobytes.
threads::shared - Many memory leaks have been fixed.
Unicode::Collate
Unicode::Normalize
Win32::GetFolderPath
The Perl debugger (lib/perl5db.pl) has now been extensively documented and bugs found while documenting have been fixed.
perldoc has been rewritten from scratch to be more robust and featureful.
perl573delta has been added to list the differences between the (now quite obsolete) development releases 5.7.2 and 5.7.3.
perl58delta has been added: it is the perldelta of 5.8.0, detailing the differences between 5.6.0 and 5.8.0.
perlartistic has been added: it is the Artistic License in pod format, making it easier for modules to refer to it.
perlgpl has been added: it is the GNU General Public License in pod format, making it easier for modules to refer to it.
perlos400 has been added to tell about the installation and use of Perl in OS/400 PASE.
The UNIX standard Perl location, /usr/bin/perl, is no longer overwritten by default if it exists. This change was very prudent because so many UNIX vendors already provide a /usr/bin/perl, but simultaneously many system utilities may depend on that exact version of Perl, so better not to overwrite it.
One can now specify installation directories for site and vendor man and HTML pages, and site and vendor scripts. See INSTALL.
gcc versions 3.x introduced a new warning that caused a lot of noise
during Perl compilation: gcc -Ialreadyknowndirectory (warning:
changing search order)
. This warning has now been avoided by
Configure weeding out such directories before the compilation.
One can now build subsets of Perl core modules by using the
Configure flags -Dnoextensions=
and -Donlyextensions=
,
see INSTALL
Mac OS X now installs with Perl version number embedded in installation directory names for easier upgrading of user-compiled Perl, and the installation directories in general are more standard. (In other words, the default installation no longer breaks the Apple-provided Perl.)
In newer FreeBSD releases Perl 5.8.0 compilation failed because of trying to use <malloc.h>, which in FreeBSD is just a dummy file, and a fatal error to even try to use. Now <malloc.h> is not used.
Tru64 gcc 3.2.1 -O3 toke.c dropped to -O2 because of gigantic memory use otherwise.
Tru64 can now build Perl with the newer Berkeley DBs.
Perl has been ported to IBM's OS/400 PASE environment. The best way to build a Perl for PASE is to use an AIX host as a cross-compilation environment. See README.os400.
Perl is now known to build also in Hitachi HI-UXMPP.
Building Perl on WinCE has been much enhanced, see the wince subdirectory.
Yet another cross-compilation option has been added, now Perl builds on OpenZaurus, see the Cross subdirectory.
There have been many fixes in the area of anonymous subs, lexicals and closures. Although this means that Perl is now more ``correct'', it is possible that some existing code will break that happens to rely on the faulty behaviour. In practice this is unlikely unless your code contains a very complex nesting of anonymous subs, evals and lexicals.
binmode(SOCKET, ``:utf8'') only worked on the input side, not on the output side of the socket. Now it works both ways.
For threaded Perls certain system database functions like getpwent()
and getgrent()
now grow their result buffer dynamically, instead of
failing. This means that at sites with lots of users and groups the
functions no longer fail by returning only partial results.
Perl 5.8.0 had accidentally broken the capability for users to define their own uppercase<->lowercase Unicode mappings (as advertised by the Camel). This feature has been fixed and is also documented better.
In 5.8.0 this
$some_unicode .= <FH>;
didn't work correctly but instead corrupted the data. This has now been fixed.
FETCH etc may now safely access tied values (ie resulting in a recursive call to FETCH etc).
Linenumbers in Perl scripts may now be greater than 65536, or 2**16. (Perl scripts have always been able to be larger than that, it's just that the linenumber for reported errors and warnings have ``wrapped around''.) While scripts that large usually indicate a need to rethink your code a bit, such Perl scripts do exist, for example as results from generated code. Now linenumbers can go all the way to<PHONE_NUMBER>, or 2**32.
Encode: if a filehandle has been marked as to have an encoding, unmappable characters are detected already during input, not later (when the corrupted data is being used).
PerlIO::scalar; reading from non-string scalars (like the special variables, see perlvar) now works.
Linux
HP-UX
VMS
Win32
fork()
emulation has been fixed.
The return value of the ioctl()
built-in function was accidentally
broken in 5.8.0. This has been corrected.
The internal message loop executed by perl during blocking operations
sometimes interfered with messages that were external to Perl.
This often resulted in blocking operations terminating prematurely or
returning incorrect results, when Perl was executing under environments
that could generate Windows messages. This has been corrected.
Pipes and sockets are now automatically in binary mode.
The four-argument form of select()
did not preserve $! (errno) properly
when there were errors in the underlying call. This is now fixed.
All the warnings related to pack()
and unpack()
were made more
informative and consistent.
The old version
A thread exited while %d other threads were still running
was misleading because the ``other'' included also the thread giving the warning.
It is not illegal to clear a restricted hash, so the warning was removed.
keys(%hash)
to test if empty''
Use of %hash
in scalar context (like for example as the test of if
)
is not available for tied hashes. Currently any tied hash, elements or not,
returns a true value in scalar context. This is probably not what you
had in mind, so Perl aborts.
You must specify the block of code for sub
.
The old version
Invalid [] range "%s" in transliteration operator
was simply wrong because there are no ``[] ranges'' in tr///.
Self-explanatory.
The padding spaces would appear after the newline, which is probably not what you had in mind.
If you think this
$x & $y == 0
tests whether the bitwise AND of $x and $y is zero, you will like this warning.
This warning should have been already in 5.8.0, since they are.
You cannot read()
(or sysread())
from a closed or unopened filehandle.
This warning should have been already in 5.8.0, since they are.
Something pulled the plug on a live free variable, Perl plays safe by bailing out.
An illegal user-defined Unicode casemapping was specified.
Something modified the values being iterated over. This is not good.
These news matter to you only if you either write XS code or like to
hack Perl internals, or like to run Perl with the -D
option.
The embedding examples of perlembed have been reviewed to be
uptodate and consistent: for example, the correct use of
PERL_SYS_INIT3()
and PERL_SYS_TERM().
Extensive reworking of the pad code has been conducted by Dave Mitchell.
Extensive work on the v-strings by John Peacock.
UTF-8 length and position cache: to speed up the handling of Unicode (UTF-8) scalars, a cache was introduced. Potential problems if an extension bypasses the official APIs and directly modifies the PV of an SV: the UTF-8 cache does not get cleared as it should.
APIs obsoleted in Perl 5.8.0s like sv_2pv, sv_catpvn, sv_catsv, sv_setsv, are again available.
Certain Perl core C APIs like cxinc and regatom are no longer available. They never should have been, and if you application depends on them, you should (be ashamed and) contact perl5-porters to discuss what are the proper APIs.
Certain APIs like Perl_list are no longer available without their
Perl_ prefix. If your XS module stops working because some functions
cannot be found, in many cases a simple fix is to add the Perl_
prefix to the function and the thread context aTHX_
as the first
argument of the function call. For cleaner embedding you can also
force this for all APIs by defining at compile time the cpp define
PERL_NO_SHORT_NAMES.
Perl_save_bool()
has been added.
utf8::is_utf8() has been added as a quick way to test whether a scalar is encoded internally in UTF-8 (Unicode).
-DL
removed (the leaktest had been broken and unsupported for years,
use alternative debugging mallocs or tools like valgrind and Purify).
Verbose modifier v
added for -DXv
and -Dsv
, see perlrun.
In Perl 5.8.0 there were about 69000 separate tests in about 700 test files, in Perl 5.8.1 there are about 75000 separate tests in about 750 test files. The exact numbers depend on the Perl configuration and on the operating system platform.
The hash randomisation mentioned in Incompatible Changes is definitely problematic: it will wake dormant bugs and shake out bad assumptions.
Many of the rarer platforms that worked 100% or pretty close to it with perl 5.8.0 have been left a little bit untended since their maintainers have been otherwise busy lately, and therefore there will be more failures on those platforms. Such platforms include Mac OS Classic, IBM z/OS (and other EBCDIC platforms), and NetWare. The most common Perl platforms (Unix and Unix-like, Microsoft platforms, and VMS) have large enough testing and expert population that they are doing well.
The choice of malloc (the C-level memory management interface) when building Perl is problematic in FreeBSD.
Using FreeBSD's system malloc for Perl was found to be very slow: in some cases that was 200 times slower than using the Perl malloc. One such case is file input: for example
# slurping the whole compressed Perl source code into $a if (open F,"perl-5.8.1.tar.gz") { local $/; $a=<F> }
is about 200-250 times slower with the system malloc than with the Perl malloc.
One could use Perl's malloc (Configure -Dusemymalloc), but that was found to cause random core dumps in FreeBSD with multithreaded programs. No such problems were found in other platforms, however.
A decision was made to stick with the system malloc, regardless of the performance problems.
As of the 5.8.0 release, sysopen()/sysread()/syswrite()
do not behave
like they used to in 5.6.1 and earlier with respect to ``text'' mode.
These built-ins now always operate in ``binary'' mode (even if sysopen()
was passed the O_TEXT flag, or if binmode()
was used on the file
handle). Note that this issue should only make a difference for disk
files, as sockets and pipes have always been in ``binary'' mode in the
Windows port. As this behavior is currently considered a bug,
compatible behavior may be re-introduced in a future release. Until
then, the use of sysopen(), sysread()
and syswrite()
is not supported
for ``text'' mode operations.
IBM z/OS and other EBCDIC platforms continue to be problematic regarding Unicode support.
If you find what you think is a bug, you might check the articles recently posted to the comp.lang.perl.misc newsgroup and the perl bug database at http://bugs.perl.org/ . There may also be information at http://www.perl.com/ , the Perl Home Page.
If you believe you have an unreported bug, please run the perlbug
program included with your release. Be sure to trim your bug down
to a tiny but sufficient test case. Your bug report, along with the
output of perl -V
, will be sent off to<EMAIL_ADDRESS>to be
analysed by the Perl porting team. You can browse and search
the Perl 5 bugs at http://bugs.perl.org/
The Changes file for exhaustive details on what changed.
The INSTALL file for how to build Perl.
The README file for general stuff.
The Artistic and Copying files for copyright information.


This is the generated documentation for Free Draw.
Those functions will move the pen while drawing.
move backward given a certain distance
moveBackward(50);
move forward given a certain distance
moveForward(100);
move forward to a certain point
moveTo(10, 10);
back to the center, ready to move up
moveToCenter();
Those functions will move the pen without drawing.
jump backward given a certain distance
jumpBackward(50);
jump forward given a certain distance
jumpForward(50);
jump to a certain point
jumpTo(10, 10);
Those functions set the properties of the pen (color, etc.).
set the cap of the pen. cap is one of "butt", "round", "square"
penCap("square");
change the color of the pencil (use "random" for a random color)
penColor("blue");
set the width of the pen
penWidth(10);
Those functions draw shapes and images.
draw a rectangle
rect(20, 10, "red");
display a character with an optional effect ("mirror", "big", etc.), above the current drawing.
show("knight"); show("princess", "small");
write a text in the drawing.
text("Hello"); text("Hello", "20px sans-serif");
clear the drawing and move back to center
clearPaint();
Angles use degrees (°): One full turn is equal to 2π radians (2π rad) and is equal to 360 degrees (360°).
turn counter-clockwise given a certain number of degree
turnLeft(45);
turn clockwise given a certain number of degree
turnRight(90);
set the direction to a certain number of degree
direction(90);
react to events "mouse", "keyboard", and "tick"
function f(x, y) { ... }; when("mouse", f);
function f(key) { ... }; when("key", "a", f); when("key", "all", f);
function fct(seconds) { ... }; when("tick", fct);
Clear all events.
clearEvents();
return the current position as an object with x, y, and orientation
getCurrentPosition();
return a random number between min and max
random(1, 10);
return a random color
randomColor();
require a script library
require("myOwnFigure");
set the background scene
setScene("park");


© 2019 Max Khrapov
Licensed under the Apache License, Version 2.0 (the "License")
https://www.apache.org/licenses/LICENSE-2.0
https://www.sansumoku.com/
https://github.com/mkhrapov/sansumoku
Sansumoku is a board game for 2 players. It is a mash-up of Ultimate Tic-Tac-Toe and Sudoku. If you are familiar with these 2 games, you will feel right at home on the Sansumoku board. If not, read on for very detailed instructions on how to play.
Sansumoku is played on a 9x9 grid of 81 cells that is further subdivided into nine 3x3 sections. The players place digits 1 through 9 into cells, one per turn. The first player, Blue, has blue digits. The second player, Orange, has orange digits.
Placing 3 digits of the player's color in a row in a section (horizontally, vertically, or diagonally, same as in regular Tic Tac Toe) will win the section for the player. Hence the game's name. San·su·moku is pseudo-Japanese for "three digits in a row". Winning 3 sections in a row (horizontally, vertically, or diagonally) will win the entire game.
Initially the entire board is open and Blue can place first digit anywhere. The first digit in a section must be 1. The software program helpfully places light blue 1s into every cell to indicate that those cells are open for play.
Let's say Blue plays in the central section, in its top left cell. This most recent move is highlighted in bright blue. If most recent move were by Orange player, the cell would be highlighted in bright orange. This feature is especially useful when playing against the computer. Because Blue played in a top left cell, Orange now must play in top left section. As there are no additional constraints, all cells in top left section are open for play, but Orange must play 1.
Let's have Orange play in the top center cell of its allowed section. Now Blue must play in the top central section of the board. There are additional constraints in play now. They are the same as in Sudoku. Because there is a 1 already in 4th column of the board, a 1 cannot be placed in the left column of the top central section. And because there is a 1 in top row of the board, a 1 cannot be placed in the top row of the top central section. So there are only 4 cells that are open for play now.
Let's have Blue play in the central cell. Now Orange must play in the central section. Because there is already a 1 in this section, Orange must play 2. In general, the software will show you all cells open for play, and what digit must be played in each section.
How to win a section
Consider the following position.
Orange has just played in the central section, bottom left cell. This cell is now highlighted. Blue now has to play in the bottom left section. If Blue plays in the center row, right cell, Blue will have digits 1, 2, and 3 arranged in a horizontal row. This wins the section. Please note that it can be a set of any three digits in any order. As long as they are aligned in a horizontal, vertical, or diagonal row, they win the section. Blue does not have to play this move, but if Blue did, the bottom left section would be won by Blue. Orange would then have to play in the center right section. The board would look like this.
There is another way to win a section — by constraint. Consider the following board position.
Blue has just played in the top center section, bottom right cell. This position is now highlighted. Orange has to play in the bottom right section. The section is currently empty, so Orange has to play 1. It may not play 1 in top row, because there is a 1 in top row of the bottom left section. It may not play 1 in center row, because there is a 1 in the center row of bottom center section. It may not play 1 in bottom left cell, because there is a 1 in the left column of the center right section. It may not play 1 in bottom center cell, because there is a 1 in the center column of the top right section. Orange must play 1 in the bottom right cell. But what happens when Orange does play in the bottom right cell? Blue now has to play 2 in the same section. All the open cells in this section have the same constraints for 2. The only cell that has no constraints is already occupied by 1. Blue has no options to play! In this case Orange wins this section, but as a consolation prize, Blue now has the right to play in any legal cell in any open section. Section won by constraint is marked with a grayed out circle. The board now looks like this.
Another case where an opponent gets this wildcard play is when the opponent is sent to a section already fully occupied or already won by either player. Consider the following board position. Blue has just played in the bottom right section, top right cell. Orange ordinarily would have to play in top right section. The top right section, though, has already been won and thus is not open for play. In this case Orange gets the right to play in any open section's any legal cell. The board looks like this.
How to win the game
In the game state shown below, Blue has to play in the bottom right section. If Blue plays in the top center cell, the player will have 3 digits of blue color in a row, thus winning that section. Because Blue already has won bottom left and bottom center sections, by winning bottom right section Blue will have won 3 sections in a row, thus winning the entire game.
Blue's winning the entire game is shown by the heavy red stripe going through the won sections. They must be in a row horizontally, vertically, or diagonally. The game is over. If neither player is able to win three sections in a row and the board is full, then the game is a draw.


#include <RobotState.h>
◆ ~RobotState()
| virtual RobotState::~RobotState |
( |
| ) |
|
|
inlinevirtual |
◆ InitRobot()
| virtual bool RobotState::InitRobot |
( |
Controller * |
| ) |
|
|
inlinevirtual |
◆ ReadyRobot()
| virtual bool RobotState::ReadyRobot |
( |
Controller * |
| ) |
|
|
inlinevirtual |
◆ RunningRobot()
| virtual bool RobotState::RunningRobot |
( |
Controller * |
| ) |
|
|
inlinevirtual |
◆ ShutdownRobot()
| virtual bool RobotState::ShutdownRobot |
( |
Controller * |
| ) |
|
|
inlinevirtual |
◆ StoppedRobot()
| virtual bool RobotState::StoppedRobot |
( |
Controller * |
| ) |
|
|
inlinevirtual |
The documentation for this class was generated from the following file:


The repertoiremap file starts with a header that may consist of the following
keywords:
- comment_char
- is followed by a character that will be used as the comment character for
the rest of the file. It defaults to the number sign (#).
- escape_char
- is followed by a character that should be used as the escape character for
the rest of the file to mark characters that should be interpreted in a
special way. It defaults to the backslash (\).
The mapping section starts with the keyword CHARIDS in the
first column.
The mapping lines have the following form:
- <symbolic-name> <code-point> comment
- This defines exactly one mapping, comment being optional.
The mapping section ends with the string END CHARIDS.


Menu
engAgent
Donna Black
5
Level
10%
Menu
Close Menu
Home
Performance
Learning
Rewards
Social
Settings
My Dashboard
79.96%
Service Level
View Details
00:00:14
Avg Speed of Answer
View Details
01:13:39
ACW Time
View Details
03:39:59
Login Time
View Details
Learning
New
general
Mandatory
History
Interests
News
Tech
Calls
Language
Spanish
French
Outbound
Extra Points
Photos
50 min
Contact Center Basics
30 min
Vocal Victories
30 min
Workforce Management
30 min
Learning Spanish - Part 2
Training Course
Time
Last Review
Action
Contact Center Basics
10 mins
05/27/2017
Vocal Victories
15 mins
05/27/2017
Workforce Management
17 mins
05/27/2017
Qality Assurance
25 mins
05/27/2017
Digital Customer Service.
28 mins
05/27/2017
New Procedures
45 min
05/27/2017
Successful Sales
35 mins
05/27/2017
Supervision
39 mins
05/27/2017
Security Training
50 min
06/07/2017
Training Course
Time
Last Review
Action
Security Training
50 min
06/07/2017
New Procedures
45 min
05/27/2017
Training Course
% Complete
Status
Last Review
Onboarding
100%
Completed
05/27/2017
IB calls
85.7%
In Progress
06/07/2017
Get ready for Mailing
0%
New
06/07/2017
Security Training
2.1%
In Progress
06/07/2017
New Procedures
80.9%
In Progress
06/07/2017
Learning Spanish - Part 1
1.5%
In Progress
06/11/2017


ogg123(1) Vorbis Tools ogg123(1) NAME ogg123 - plays Ogg Vorbis files SYNOPSIS ogg123 [ -vqrzZVh ] [ -k seconds ] [ -x nth ] [ -y ntimes ] [ -b buf‐ fer_size ] [ -d driver [ -o option:value ] [ -f filename ] ] file ... | directory ... | URL ... DESCRIPTION ogg123 reads Ogg Vorbis audio files and decodes them to the devices spec‐ ified on the command line. By default, ogg123 writes to the standard sound device, but output can be sent to any number of devices. Files can be read from the file system, or URLs can be streamed via HTTP. If a directory is given, all of the files in it or its subdirectories will be played. OPTIONS --audio-buffer n Use an output audio buffer of approximately 'n' kilobytes. -@ playlist, --list playlist Play all of the files named in the file 'playlist'. The playlist should have one filename, directory name, or URL per line. Blank lines are permitted. Directories will be treated in the same way as on the command line. -b n, --buffer n Use an input buffer of approximately 'n' kilobytes. HTTP-only option. -p n, --prebuffer n Prebuffer 'n' percent of the input buffer. Playback won't begin until this prebuffer is complete. HTTP-only option. -d device, --device device Specify output device. See DEVICES section for a list of devices. Any number of devices may be specified. -f filename, --file filename Specify output file for file devices. The filename "-" writes to standard out. If the file already exists, ogg123 will overwrite it. -h, --help Show command help. -k n, --skip n Skip the first 'n' seconds. 'n' may also be in minutes:seconds or hours:minutes:seconds form. -K n, --end n Stops playing 'n' seconds from the start of the stream. 'n' may also have the same format as used in the --skip option. -o option[:value], --device-option option[:value] Sets the option option to value for the preceding device. See DEVICES for a list of valid options for each device. -q, --quiet Quiet mode. No messages are displayed. -V, --version Display version information. -v, --verbose Increase verbosity. -x n, --nth Play every 'n'th decoded block. Has the effect of playing audio at 'n' times faster than normal speed. -y n, --ntimes Repeat every played block 'n' times. Has the effect of playing audio 'n' times slower than normal speed. May be with -x for interesting fractional speeds. -r, --repeat Repeat playlist indefinitely. -z, --shuffle Play files in pseudo-random order. -Z, --random Play files in pseudo-random order forever. DEVICES ogg123 supports a variety of audio output devices through libao. Only those devices supported by the target platform will be available. The -f option may only be used with devices that write to files. Options supported by all devices: debug Turn on debugging output [if any] for a chosen driver. matrix:value Force a specific output channel ordering for a given device. value is a comma seperated list of AO style chan‐ nel names, eg, L,R,C,LFE,BL,BR,SL,SR. verbose Turn on verbose output for a chosen driver. the -v option will also set the driver verbose option. quiet Force chosen driver to be completely silent. Even errors will not produce any output. -q will also set the driver quiet option. aixs AIX live output driver. Options: dev:value Set AIX output device to value alsa Advanced Linux Sound Architecture live output driver. Options: buffer_time:value Override the default hardware buffer size (in millisec‐ onds). dev:value ALSA device label to use. Examples include "hw:0" for the first soundcard and "hw:1" for the second. The alsa driver normally chooses one of "surround71", "surround51", "sur‐ round40" or "default" automatically depending on number of output channels. For more information, see http://alsa.opensrc.org/ALSA+device+labels period_time:value Override the default hardware period size (in microsec‐ onds). period_time:value Override the default hardware period size (in microsec‐ onds). use_mmap:value value is set to "yes" or "no" to override the compiled-in default to use or not use mmap device access. In the past, some buggy alsa drivers have behaved better when not using mmap access at the penalty of slightly higher CPU usage. arts aRts Sound Daemon live output driver. Options: multi:value value is set to "yes" or "no" to allow opening the aRts playback device for multiply concurrent playback. Although the driver works properly in multi mode, it is known to occasionally crash the aRts server itself. Default behav‐ ior is "no". au Sun audio file output. Writes the audio samples in AU format. The AU format supports writing to unseekable files like standard out. In such circumstances, the AU header will specify the sample format, but not the length of the recording. esd Enlightened Sound Daemon live output. Options: host:value value specifies the hostname where esd is running. This can include a port number after a colon, as in "whizbang.com:555". (Default = localhost) irix IRIX live output audio driver. macosx MacOS X 'AUHAL' live output driver. This driver supports MacOS X 10.5 and later (10.4 and earlier uses an earlier, incompatable interface). Options: buffer_time:value Set the hardware buffer size to the equivalent of value milliseconds. nas Network Audio Server live output driver. Options: buf_size:value Set size of audio buffer on server in bytes. host:value Set location of NAS server; See nas(1) for format. null Null driver. All audio data is discarded. (Note: Audio data is not written to /dev/null !) You could use this driver to test raw decoding speed without output overhead. oss Open Sound System driver for Linux and FreeBSD, versions 2, 3 and 4. Options: dsp:value DSP device for soundcard. Defaults to /dev/dsp. pulse Pulseaudio live audio sound driver. Options: server:value Specifies location of remote or alternate Pulseaudio server. sink:value Specifies a non-default Pulseaudio sink for audio stream. raw Raw file output. Writes raw audio samples to a file.  Default is native order. roar Roar Audio Daemon live output driver. Options: host:value Specifies location of remote Roar server to use. sndio OpenBSD SNDIO live output driver. Options: dev:value Specifies audio device to use for playback. sun Sun Audio live output driver for NetBSD, OpenBSD, and Solaris. Options: dev:value Audio device for soundcard. Defaults to /dev/audio. wav WAV file output. Writes the sound data to disk in uncompressed form. If multiple files are played, all of them will be concate‐ nated into the same WAV file. WAV files cannot be written to unseekable files, such as standard out. Use the AU format instead. wmm Windows MultiMedia live output driver for Win98 and later. Options: dev:value Selects audio device to use for playback by device name. id:value Selects audio device to use for playback by device id (card number). EXAMPLES The ogg123 command line is fairly flexible, perhaps confusingly so. Here are some sample command lines and an explanation of what they do. Play on the default soundcard: ogg123 test.ogg Play all of the files in the directory ~/music and its subdirectories. ogg123 ~/music Play a file using the OSS driver: ogg123 -d oss test.ogg Pass the "dsp" option to the OSS driver: ogg123 -d oss -o dsp:/dev/mydsp Use the ESD driver ogg123 -d esd test.ogg Use the WAV driver with the output file, "test.wav": ogg123 -d wav -f test.wav test.ogg Listen to a file while you write it to a WAV file: ogg123 -d oss -d wav -f test.wav test.ogg Note that options apply to the device declared to the left: ogg123 -d oss -o dsp:/dev/mydsp -d raw -f test2.raw -o byte‐ order:big test.ogg Stress test your harddrive: ogg123 -d oss -d wav -f 1.wav -d wav -f 2.wav -d wav -f 3.wav -d wav -f 4.wav -d wav -f 5.wav test.ogg Create an echo effect with esd and a slow computer: ogg123 -d esd -d esd test.ogg INTERRUPT You can abort ogg123 at any time by pressing Ctrl-C. If you are playing multiple files, this will stop the current file and begin playing the next one. If you want to abort playing immediately instead of skipping to the next file, press Ctrl-C within the first second of the playback of a new file. Note that the result of pressing Ctrl-C might not be audible immediately, due to audio data buffering in the audio device. This delay is system dependent, but it is usually not more than one or two seconds. FILES /etc/libao.conf Can be used to set the default output device for all libao pro‐ grams. ~/.libao Per-user config file to override the system wide output device settings. BUGS Piped WAV files may cause strange behavior in other programs. This is because WAV files store the data length in the header. However, the out‐ put driver does not know the length when it writes the header, and there is no value that means "length unknown". Use the raw or au output driver if you need to use ogg123 in a pipe. AUTHORS Program Authors: Kenneth Arnold<EMAIL_ADDRESS>Stan Seibert<EMAIL_ADDRESS>Manpage Author: Stan Seibert<EMAIL_ADDRESS>SEE ALSO libao.conf(5), oggenc(1), vorbiscomment(1), ogginfo(1) Xiph.Org Foundation 2010 March 24 ogg123(1)


TWISTER A film review by Michael John Legeros Copyright 1996 Michael John Legeros
(WB) Directed by Jan De Bont Written by Michael Crichton and Anne-Martin Martin Cast Helen Hunt, Bill Paxton, Cary Elwes, Jami Gertz MPAA Rating "PG-13" (for "intense depiction of very bad weather") Running Time 117 minutes Reviewed at Wynnsong 10, Durham, NC (10MAY96)
==
Auntie Em! Auntie Em! The summer-movie season has officially blown into town with TWISTER, the first must-see movie of the year. Though both underwritten and lacking the momentum of his last film, SPEED, director Jan De Bont's take on Oklahoma storm chasing still impresses with some of the most spectacular special effects ever seen on screen. Industrial Light and Magic (ILM) has blended the authentic with the computer-generated to create a series a storms the likes of which Dorothy and Toto never saw. You'll marvel at the dark, swirling clouds of debris and other matter-- flying cows and tractors and houses, oh my! A tanker-truck that drops out of the sky is a sight, though my favorite is the splintering screen of a doomed drive-in that's showing THE SHINING. The FX also get better as they go. De Bont wisely rations the thrills, saving the best for last. (I could've done without the continuity gaffes, though. Just how *does* a red truck stay shiny after riding through a storm?)
The effects are great, but the script is a *mess*. Blame Michael Crichton, Anne-Marie Martin, and a host of script doctors for, oh, predictable plotting, dumb drama, and characters as corny as Kansas in August. The non-star cast does what they can with the material. Helen Hunt and Bill Paxton, playing soon-to-be-divorced scientists, are very sincere shouting lines like "Come on!", "There's no time!", and "Take cover!" (Did the MST3K gang also do a rewrite?) Other cast members include Cary Elwes as a rival storm chaser, Philip Seymour Hoffman as a tie-dyed metalhead who is particularly fond of the meteorological-by- way-of-MTV term "Suck Zone", and Jamie Gertz as Paxton's character's fiancee. (Ms. Gertz plays a "reproductive therapist," if you can believe it. She's there to scream, ask questions, and provide comic relief. That is, until she predictably can't take it anymore.)
There's a lot going on in this movie and, unfortunately, very little of it makes (focused) sense. The central character motivation is a geeky combination of science and thrill-seeking; these guys love to take risks because they love to study storms. De Bont attempts to inject other elements into the film, but they don't work as written. For example, we could do without the tragic fate of Hunt's character's aunt. She exists to reinforce the Very Noble goal of better weather predicting, by showing that tornadoes often cause huge amounts of damage and injury and often without warning. No duh. The sequence is a melodramatic cheap shot and doesn't belong here. Not in a movie that's just out for thrills. In fact, the "back stories" are all pretty bad, but like most storm chasers-- or, if you prefer, most summer-movie audiences-- we're in for the ride. We certainly expect more than a few lulls before we get to see a TWISTER.
Finally, something should be said about the shameless inclusion of pop songs on the soundtrack. They're played too prominently in the background, intruding for no other seeming reason than to sell something else for Time-Warner. The mix of musical genres and styles is often distracting and certainly doesn't blend with the other accompaniment, a windy orchestral score from composer Mark Mancina. (The score is also a bit much, I must say. Must movie music be so overblown? Is James Horner teaching classes in this stuff?) The exception is a short sequence that combines Rainbow, Rossini, and Rogers and Hammerstein; it happens early the film and is one of the few places on the soundtrack that doesn't feel prepackaged.
Grade: B-
--
Mike Legeros - Raleigh, NC
<EMAIL_ADDRESS>(h) -<EMAIL_ADDRESS>(w)
Visit me in MOVIE HELL
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


User Name
account_circle
Profile
face
Today's Müd Board
collections
Photo Log
camera_alt
Camera
settings
Settings
info_outline
About Us
clear
Log Out
menu
Add Image
All
Australia
Brazil
Canada
France
Germany
Mexico
New Zealand
Italy
South Africa
Spain
Portugal
U.S.A.
United Kingdom
Address:
Telephone:
Rating:
Website:
"Happiness radiates like the fragrance from a flower and draws all good things towards you. Maharishi Mahesh Yogi"
How are you feeling today?
Save
add
apps
file_download
Sign in with facebook


This document by HeloSpark is licensed under a Creative Commons Attribution 4.0 International License.


{% extends "registration/base.html" %} {% load bootstrap4 %} {% block title %}Request Unrestricted Access{% endblock %} {% block meta_description %}Request unrestricted access to the cases made available by the Caselaw Access Project{% endblock %} {% block main_content %}
If you are a research scholar and your work requires access to the full text of more than 500 cases per day, you may apply for unrestricted access to the full text of all cases made available by the Caselaw Access Project.
To be eligible, you must demonstrate that you are a research scholar and you must enter into a special bulk access agreement with LexisNexis, which prohibits you from (1) using the cases for non-research or commercial purposes and (2) sharing bulk caselaw with others.
We offer several ways to obtain unrestricted access:
If you are a member of the Harvard community with a Harvard email address, you can sign the Harvard bulk access agreement and you will immediately have full access from Harvard IP addresses.
Sign this application to request access and your application will be reviewed shortly.
If you would like to explore commercial use of unrestricted data or have other questions, please contact us.
{% endblock %}


expression
{{ vm.untrusted }}
ng-bind
w/ ng-non-bindable
{{ vm.untrusted }}
w/ $sanitize
{{ vm.sanitized }}
w/ ng-bind-html
w/ $sanitize & ng-bind-html
w/ $sce.trustAsHtml & ng-bind-html


| DOSE: |
25 mg |
oral |
2C-C |
(capsule) |
Prior Experience: I have experience with 2C-D, 2C-E, LSA, Methylone, and Cannabis for psychedelics
Mindset: Lonely and trouble with personal issues
Method of Dosing: Oral, capsule.
Trip Dose: 25mgs
Medications: None.
For me, this was my first time taking this phenethylamine. I had two friends J and his girlfriend L also tripping with me dosing at relatively the same time (5-10 minutes after me). We all decided to me down at the lake. Besides me it was J, L, and ‘sepulfreak’. I arrived with sepulfreak and dosed while I was watching the sunset and soon afterward J and L showed up to do the same.
I eventually got rid of the slightly bitter, non-persistent taste of the 2-cc by drinking more water. I took it mixed with water and measured out with a medicine spoon like I use with kids. I helped gather up some of the equipment for fishing (sleeping bag to sit on, lantern, tackle box, poles, a folding chair, and more). We all walked down and set everything up for the experience. I heard from J and L that theirs was already starting to set in, but I am weird with most drugs, especially psychedelics. Most usually take longer to work on me even on an empty stomach, which we all had. In a trip later on for example, my friend had already peaked, and I still had yet to start my journey.
Back on topic, we all sat down either on the picnic table, or the sleeping bag and continued conversing. Sepulfreak was already starting to catfish and I was feeling disconnected as usual with the group I am with. Feeling more anti-social and irritable, not to mention I had stuff on my mind; I walked back behind them and started up the slope. I decided not to walk away and to just mess with them while I still had straight thinking for my own amusement. They were wondering where I went to while actually I was actually very close by hiding behind a tree. J spotted me and threw a small rock as a joke. J and L picked up on my current emotions and invited me back to talk inquiring about what was wrong.
As usual I clamped up and just sat next to sepulfreak on the bag staring out onto the lake. I pretty much talked them in loops and they gave up. I loved watching the mist rise on the lake, which would later play a part in my experience. J offered me to taste his cherry cigar, which actually tasted very good and left me licking my lips for five minutes. I had already begun to notice the sense enhancement!
J set up the folding chair for L and she sat down next to me. J sat in between us on the bag and sepulfreak pulled out the acoustic guitar he brought down with him. I laid there listening to him toying around with us, sometimes playing a song, and sometimes making unusual noises with the strings. It was somewhat annoying because I’d started to trip. I looked into the sky and started breathing heavy from the intensity. The sky looked so beautiful and rainbow patterns layered over my vision. I think the moon or the sun left some pattern in the sky as well even though it was night by then but I couldn’t tell. I looked away after a little bit and rested my head on the sleeping bag. J was next to me and looked at me with worry. I was totally fine but he thought otherwise.
I was shaking because it was moist out and cooler that evening since rain was on the way late in the evening. My breathing from my enjoyment of the sky also set up red flags for him.  Then came the laugher, which 2C-C brings. I was feeling crappy from my emotions but it melted away then with one swift statement. Since J was tripping he couldn’t help laughing either but he told me to get up because he thought something was happening to me and to move around. He joked with me saying “We’re going to take you to the hospital and you’re going to tell them what you took and you’re not going to mention any name” with a smile on his face.
To make him feel better I sat up, I didn’t want to because I felt pretty decent lying like that, and I laughed hard at him.  I guess he had that effect on me too. He offered me some tea and convinced me to walk around some. With them still sitting I kept dosing myself more and more glimpses of the sky. Each time I looked up I felt an intense euphoria in my stomach from the beauty and significance of the painting above me. Flickers of very distant lightening, far enough to not hear, began to animate within it. It made me breathe the same was as I would from an orgasm the beauty was so intense.
After five times, J asked me if I was ok. It puzzled me he would ask this because my hearing was softened and the lantern was purring next to me. I didn’t know he could hear me breathing.
It must have been pretty loud. Sepulfreak decided it was time for us to walk around the park and the woods of trails. We fixed everything up and headed towards the other half of the small wooden bridge than ran over a stream. Halfway on the rocky path after the bridge that curved into the woods, they continued on, but I halted because my vision wasn’t so good in the dark from the 2C-C and I couldn’t keep up with them or see where not to step to maintain my footing. I headed back and towards the shelter/shower building closer towards the lake to have my own personal experience. I reevaluated my role in life, the player that I am in the game.
I must have spent about 15 minutes on the steps of the small shelter when they yelled out for me. That path led back towards our setup, which I could see them coming out towards and the lantern relighting. I walked back over and sat down on the table next to J and L next to him. We conversed for a while and I brought up the friendly skunk that I saw the last time I was there with sepulfreak and another friend. Sure enough, my paranoia came true and little foot tracks started at us from the left. Sepulfreak also had just reeled in what turned out to me a snapping turtle, which made sense the way it was acting. (J was still clearheaded enough to recognize this from the way it fought) He was amused by it and started playing by putting stuff in its mouth to snap. Anyhow, I couldn’t the footsteps until J noticed and boldly made us aware that the skunk was on its way.
We all ran off towards the shelter I was at earlier, sepulfreak having the turtle in hand. The land near the water there is like a beach so there’s lots of sand. He set it down and started teasing it more. That didn’t last more than another 15 minutes because the skunk found us and had made its way over to us. I freaked more than I would have sober-minded, and the thing was 3 meters away from me by the time I noticed it. I yelled, “skunk!” and ran towards the shelter with them not far behind and the turtle at the water by then. He had sent it towards the geese at the edge for a laugh.
The skunk must be pretty tame or grew up without parents because not once did it ever spray us. I found it rather amusing watching the skunk walk a little closer to a stop and play around in the sand rolling and kicking it up in the air like a cat would. Three of us were in the shelter, but sepulfreak ran elsewhere. Eventually he scared and chased off the skunk within a short time and took J and L for another walk on a separate trail behind us. Again I couldn’t follow in my current state.
Doing the best I could, I walked back a little bit and started getting severe visual distortions from the darkness and the shelter building light bleeding through the leaves above me. I felt nervous and felt like the ground was coming alive, especially because of the numerous tree roots and branches I was stepping on. My surroundings took on the role of those from Dorothy’s walk in the enchanted forest in The Wizard of Oz. I walked out of there.
This walk wasn’t as long for them and I heard them coming up behind me returning. J walked up to me really close in my face from the side like we were both looking at something that was there. He said something that I forget now but whatever it was I went hysterical! I lost all control and couldn’t stop laughing! It was pretty high pitched and kept going each time until I ran out of breath. The laughter wasn’t scary at all but rather enjoyable. I think even they got a kick out of it.
We walked back to the fishing site and stayed for a little longer. I saw a little bit more visuals here and there like Oriental things on the mood (dragons etc.) or the breathtaking patterns I saw in the sky earlier. I got massive food cravings and the visuals aided in it. I kept pestering them about food and describing many different flavorable types in great detail like I was eating it. Then I took a long, hard look at the bait. Hotdogs. When noone was looking I grabbed two and stuffed them in my mouth to eat one-by-one. It wasn’t the best but it was food. I got caught with the last bite and sepulfreak told me not to eat all the bait, which I explained I wasn’t. I didn’t see it worth eating anymore, so I went back to eating in my mind.
The storm was approaching as foretold by the lightening in a big clearing further away and the thunder. I liked watching it and wanted to stay a little longer but we had to pack up and leave.
Overall the experience was half-clearheaded and not scary at all, even going in with the mindset that I did. I had difficulty as usual with some motor skills because of the euphoria like when I helped sepulfreak move the picnic table closer to the site, or when I was walking around during the way up on the trip. I really enjoyed myself and got to notice that it has a boosting effect on laughter, or at least with me. The sensory enhancement was great but I made up for it with my lack of night vision. This is definitely something I could do again without a second thought.
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.


| Loading... |
This page lists all projects from GitHub ZopeFoundation organization, and shows the latest version published on the Python Package Index and the explicitly declared supported Python versions from trove classifiers for that version.
The data are updated daily by a cron script.


{% extends "indexNL.html" %} {% comment %} Login page to authenticate users. {% endcomment %} {% block content %}
You are now logged out. Please click here to return to the main page


Library fl.int.DFA
Library fl.int.ChomskyInduction
Library fl.int.Intersection
Library fl.int.Base2
Library fl.int.Union
Library fl.aut.misc
Library fl.aut.regexp
Library fl.aut.glue
Library fl.aut.re_standard
Library fl.aut.automata
Library fl.aut.re_fa
Library fl.aut.tactics
Library fl.aut.base
Library fl.aut.myhill_nerode
Library fl.aut.transitive_closure
Library fl.GLL.Definitions
Library fl.GLL.GLL
Library fl.cfg.Dec_Empty
Library fl.cfg.Base
- Base Library for ICL
- Size recursion
- Iteration
- Decidability
- Lists
- Filter
- Element removal
- Cardinality
- Duplicate-free lists
- Power lists
- Finite closure iteration
- Deprecated names, defined for backward compatibilitly
Library fl.cfg.ElimU
Library fl.cfg.Lists
Library fl.cfg.ElimE
Library fl.cfg.Binarize
Library fl.cfg.Definitions
Library fl.cfg.Symbols
Library fl.cfg.Inlining
- Substitution in grammars
- Elimination of a deterministic rule
- Elimination of a list of deterministic rules
Library fl.cfg.Chomsky
Library fl.cfg.Dec_Word
Library fl.cfg.Separate
Library fl.cfg.Derivation
Library fl.Boolean_Grammars.ThreeValuedLangDef
This page has been generated by coqdoc


Yours Truly, Famous Inc.
Ivan Golvinov
Liquidapsive (Liqui-dap-sive)
Built by Nicholas Davison for Digitaria


Taxidermy live-edge mixtape, keytar tumeric locavore meh selvage deep v letterpress vexillologist lo-fi tousled church-key thundercats. Brooklyn bicycle rights tousled, marfa actually.