I'm a PHP developer
Organizer of Triangle PHP and Director of WWCode Raleigh/Durham
I work at a company that builds tools for network security threat assessment
A lot of our systems were built to replace paper processes
They often closely map to this physical form.
Status labels are like a rubber stamp
Status doesn't always communicate why or what happened
Piles indicate status of the form
Status is a reflection of something that happened
There is ONE of each status + reasons/details
Events can record what happened
The fundamental idea of Event Sourcing is that of ensuring every change to the state of an application is captured in an event object, and that these event objects are themselves stored in the sequence they were applied for the same lifetime as the application state itself.
state transitions are important
We need an audit log and proof of state
This history is more important than the current state
Able to replay these events to rebuild state
Events don't change
The part of the code that will change is most likely the result that follows that event.
The structure of the resulting data is more likely to change than the behavior
There are many classes involved:
<?php
namespace App\Enrollment\Domain\Events;
use App\Enrollment\Domain\CourseOfferingId;
use App\Enrollment\Domain\StudentId;
use App\Support\Domain\Uuid;
use App\Support\EventHandling\Event;
class EnrollmentRequestRejected implements Event
{
/**
* @var Uuid
*/
public $enrollmentRequestId;
/**
* @var StudentId
*/
public $studentId;
/**
* @var CourseOfferingId
*/
public $courseOfferingId;
public function __construct(Uuid $enrollmentRequestId, StudentId $studentId, CourseOfferingId $courseOfferingId)
{
$this->enrollmentRequestId = $enrollmentRequestId;
$this->studentId = $studentId;
$this->courseOfferingId = $courseOfferingId;
}
/**
* @return array
*/
public function serialize()
{
return [
'id' => $this->enrollmentRequestId->toString(),
'student_id' => $this->studentId->toNative(),
'course_offering_id' => $this->courseOfferingId->toNative(),
];
}
/**
* @param array $data
*
* @return static
*/
public static function deserialize($data)
{
return new StudentRequestedEnrollment(
Uuid::fromString($data['id']),
StudentId::fromNative($data['student_id']),
CourseOfferingId::fromNative($data['course_offering_id'])
);
}
}
<?php
namespace App\Support\Domain;
use App\Support\EventHandling\Event;
use DateTime;
class DomainMessage
{
/**
* @var string
*/
private $streamId;
/**
* @var int
*/
private $version;
/**
* @var Event
*/
private $payload;
/**
* @var DateTime
*/
private $recordedOn;
/**
* @param $streamId
* @param int $version
* @param Event $payload
* @param DateTime $recordedOn
*
* @internal param string $id
*/
public function __construct($streamId, $version, Event $payload, DateTime $recordedOn)
{
$this->streamId = (string) $streamId;
$this->version = $version;
$this->payload = $payload;
$this->recordedOn = $recordedOn;
}
/**
* @param $streamId
* @param int $version
* @param Event $payload
*
* @return DomainMessage
* @internal param string $id
*/
public static function recordNow($streamId, $version, Event $payload)
{
return new DomainMessage($streamId, $version, $payload, new DateTime());
}
/**
* {@inheritDoc}
*/
public function getStreamId()
{
return $this->streamId;
}
/**
* {@inheritDoc}
*/
public function getVersion()
{
return $this->version;
}
/**
* {@inheritDoc}
*/
public function getPayload()
{
return $this->payload;
}
/**
* {@inheritDoc}
*/
public function getRecordedOn()
{
return $this->recordedOn;
}
/**
* {@inheritDoc}
*/
public function getType()
{
return get_class($this->payload);
}
}
A domain specific database
A functional database based on a publish-subscribe messages pattern
O:92:"ITECS\Scholarships\Selection\Domain\Scholarship\AwardWasAssignedToCandidateByCommitteeMember":9:{
s:6:"amount" ;O:39: "ITECS\Scholarships\Common\Values\Amount":1:{
s:46:"ITECS\Scholarships\Common\Values\Amountmoney" ;
O:11: "Money\Money":2:{
s:19:"Money\Moneyamount" ;i:285000 ;s:21:"Money\Moneycurrency" ;
O:14: "Money\Currency":1:{
s:20:"Money\Currencyname" ;s:3:"USD" ;
}
}
} s:11:"applicantId" ;
s:9:"222222235" ;
s:13:"scholarshipId" ;
O:61: "ITECS\Scholarships\Selection\Domain\Scholarship\ScholarshipId":1:{
s:76:"ITECS\Scholarships\Selection\Domain\Scholarship\ScholarshipIdscholarshipId" ;
i:360 ;
} s:17:"selectionCriteria" ;O:59: "ITECS\Scholarships\Selection\Domain\Scholarship\CriteriaSet":1:{
s:69:"ITECS\Scholarships\Selection\Domain\Scholarship\CriteriaSetcriteria" ;a:1:{
i:0 ;O:93: "ITECS\Scholarships\Selection\Domain\Scholarship\SelectionCriteria\MemberOfDepartmentCriterion":4:{
s:106:"ITECS\Scholarships\Selection\Domain\Scholarship\SelectionCriteria\MemberOfDepartmentCriteriondepartments" ;a:1:{
i:0 ;O:43: "ITECS\Scholarships\Common\Values\Department":2:{
s:50:"ITECS\Scholarships\Support\Types\CodedValuelabel" ;s:17:"Civil Engineering" ;s:49:"ITECS\Scholarships\Support\Types\CodedValuecode" ;s:2:"CE" ;
}
} s:99:"ITECS\Scholarships\Selection\Domain\Scholarship\SelectionCriteria\SelectionCriterionisRequirement" ;b:1 ;s:101:"ITECS\Scholarships\Selection\Domain\Scholarship\SelectionCriteria\SelectionCriterionotherProperties" ;a:3:{
s:4:"type" ;s:10:"department" ;s:5:"value" ;a:1:{
i:0 ;s:2:"CE" ;
} s:8:"priority" ;i:1 ;
} s:14:"*description" ;N;
}
}
} s:17:"committeeMemberId" ;s:8:"elstamey" ;s:4:"term" ;s:18:"Both Fall & Spring" ;s:19:"snapshottedCriteria" ;a:1:{
i:0 ;a:3:{
s:8:"required" ;b:1 ;s:7:"matched" ;b:1 ;s:11:"description" ;s:69:"Must be a student within one of these departments: Civil Engineering." ;
}
} s:13:"applicantName" ;s:13:"Alana Feeney" ;s:9:"occuredOn" ;O:8: "DateTime":3:{
s:4:"date" ;s:26:"2015-12-07 14:26:12.000000" ;s:13:"timezone_type" ;i:3 ;s:8:"timezone" ;s:16:"America/New_York" ;
}
}
{
"namespace":"App\\StudentInformation\\Entities\\Student",
"identity":"ophelia.zieme",
"data":{
"id":"ophelia.zieme",
"ferpa":"0",
"personal":{
"first_name":"Evan",
"middle_name":"Jalon",
"last_name":"Armstrong",
"dob":"2007-06-16",
"gender":"M"
},
"contact":{
"student_id":"000811740",
"username":"ophelia.zieme",
<EMAIL_ADDRESS>"phone":"935-516-1228"
},
"address":{
"physical":{
"street1":"707 Nasir Pass",
"street2":"Jett Loop",
"street3":null,
"street4":"",
"city":"Clemmons",
"state":"NC",
"zip":"27012",
"country":"USA"
},
"permanent":{
"street1":"759 Bashirian Plains",
"street2":null,
"street3":null,
"street4":"",
"city":"Clemmons",
"state":"NC",
"zip":"27012",
"country":"USA"
}
},
"citizenship":{
"nc_resident":true,
"country":"USA",
"visa":null
}
}
}
<?php
namespace App\Enrollment\ReadModel;
use App\Enrollment\Domain\Events\EnrollmentRequestRejected;
use App\Enrollment\Domain\Events\StudentRequestedEnrollment;
use App\Support\ReadModel\Replayable;
use App\Support\ReadModel\SimpleProjector;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Connection;
class EnrollmentRequestProjector extends SimpleProjector implements Replayable
{
/**
* @var Connection
*/
private $connection;
/**
* @var string table we're playing events into
*/
private $table = 'proj_enrollment_requests';
public function __construct(Connection $connection)
{
$this->connection = $connection;
}
public function beforeReplay()
{
$builder = $this->connection->getSchemaBuilder();
$builder->dropIfExists('proj_enrollment_requests_tmp');
$builder->create('proj_enrollment_requests_tmp', function (Blueprint $schema) {
$schema->string('id');
$schema->string('student_id');
$schema->string('course_offering_id');
$schema->string('status');
$schema->primary('id');
});
$this->table = 'proj_enrollment_requests_tmp';
}
public function afterReplay()
{
$builder = $this->connection->getSchemaBuilder();
$builder->dropIfExists('proj_enrollment_requests');
$builder->rename('proj_enrollment_requests_tmp', 'proj_enrollment_requests');
$this->table = 'proj_enrollment_requests';
}
/**
* @param StudentRequestedEnrollment $event
*/
public function applyStudentRequestedEnrollment(StudentRequestedEnrollment $event)
{
$enrollmentRequest = new EnrollmentRequest();
$enrollmentRequest->setTable($this->table);
$enrollmentRequest->id = $event->enrollmentRequestId->toString();
$enrollmentRequest->student_id = $event->studentId->toNative();
$enrollmentRequest->course_offering_id = $event->courseOfferingId->toNative();
$enrollmentRequest->status = 'requested';
$enrollmentRequest->save();
}
/**
* @param EnrollmentRequestRejected $event
*/
public function applyEnrollmentRequestRejected(EnrollmentRequestRejected $event)
{
$enrollmentRequest = new EnrollmentRequest();
$enrollmentRequest->setTable($this->table);
$enrollmentRequest = EnrollmentRequest::where('id', $event->enrollmentRequestId->toString());
$enrollmentRequest->status = 'rejected';
$enrollmentRequest->save();
}
}
<?php
namespace App\Enrollment\ReadModel;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
/**
* @codeCoverageIgnore
*/
class EnrollmentRequest extends Model
{
protected $table = 'proj_enrollment_requests';
public $incrementing = false;
public $timestamps = false;
public static function current()
{
return static::where('student_id', auth()->user()->name)->get();
}
public static function lookupRequestsFor($username)
{
return static::where('student_id', $username)->get();
}
public function offering()
{
return $this->hasOne(CourseOffering::class, 'id', 'course_offering_id');
}
}
<?php
namespace App\Enrollment\Commands;
use App\Support\CommandHandling\Command;
use App\Common\SemesterTerm;
use DateTime;
use Illuminate\Http\Request;
class ScheduleEnrollmentPeriod implements Command
{
const DATE_FORMAT = DateTime::ATOM;
/**
* @var DateTime
*/
public $open;
/**
* @var DateTime
*/
public $close;
/**
* @var SemesterTerm
*/
public $strm;
public function __construct(DateTime $open, DateTime $close, SemesterTerm $strm)
{
$this->open = $open;
$this->close = $close;
$this->strm = $strm;
}
public static function fromRequest(Request $request)
{
return new static(
static::parseDate($request->input('open'),'opened'),
static::parseDate($request->input('close'),'closed'),
SemesterTerm::fromNative($request->input('strm'))
);
}
/**
* The UI is presently sending a date 'Y-m-d' rather than a date-time, so attempt to parse as both if needed.
*
* @param $dateStr
* @param $name
* @return bool|DateTime
*/
private static function parseDate($dateStr, $name)
{
// It should be noted that the time zone is presently set arbitrarily to EST all year around.
// The standard HTML5 datetime-local (if we use it) will provide the local timezone selected.
// The browser-supplied local timezone will possibly be different from the system timezone.
// This will not be a problem right now, but may become confusing if open/close specify hours
$dt = DateTime::createFromFormat(self::DATE_FORMAT, $dateStr."T00:00:00-05:00");
if ($dt === FALSE) {
$dt = DateTime::createFromFormat(self::DATE_FORMAT, $dateStr);
}
// This may be a bit defensive but createFromFormat does not throw exceptions
// we don't expect bad dates to be passed in because it should be validated by the caller
if ($dt === FALSE) {
throw new \InvalidArgumentException(sprintf("%s date '%s' does not conform to the required format of '%s'",$name, $dateStr, self::DATE_FORMAT));
}
return $dt;
}
/**
* @return array
*/
public function serialize()
{
return [
'open' => $this->open->format(self::DATE_FORMAT),
'close' => $this->close->format(self::DATE_FORMAT),
'strm' => $this->strm->toNative(),
];
}
/**
* @param array $data
*
* @return static
*/
public static function deserialize($data)
{
return new ScheduleEnrollmentPeriod(
DateTime::createFromFormat(self::DATE_FORMAT, $data['open']),
DateTime::createFromFormat(self::DATE_FORMAT, $data['close']),
SemesterTerm::fromNative($data['strm'])
);
}
}
<?php
namespace app\Enrollment\Commands;
use App\Enrollment\Domain\EnrollmentPeriod;
use App\Enrollment\IdentityProvider;
use App\Support\CommandHandling\CommandHandler;
use App\Support\Repository\EventSourcingRepository;
use Illuminate\Auth\Access\AuthorizationException;
class EnrollmentPeriodHandler extends CommandHandler
{
/**
* @var IdentityProvider
*/
private $auth;
/**
* @var EventSourcingRepository
*/
private $repository;
public function __construct(IdentityProvider $auth, EventSourcingRepository $repository)
{
$this->auth = $auth;
$this->repository = $repository;
}
/**
* @param ScheduleEnrollmentPeriod $command
* @throws AuthorizationException
*/
public function handleScheduleEnrollmentPeriod(ScheduleEnrollmentPeriod $command)
{
$this->auth->getEOLCoordinatorId();
$request = EnrollmentPeriod::schedule($command->open, $command->close, $command->strm);
$this->repository->persist($request);
}
}
Emily Stamey @elstamey
Joind.in: https://joind.in/talk/a0c6e


Your movie Ticket will cost Ksh .Thank You!
Any Questions, comments or suggestions, feel free to contact us via
Follow us on Twitter, Facebook and Google Plus.


- Guest Associate Editor
- Special Section on “Evolutionary Computation” of Nonlinear Theory and Its Applications (IEICE)
- Reviewer
- IEEE Transactions on Evolutionary Computation
- IEEE Transactions on Cybernetics
- IEEE Transactions on Emerging Topics in Computational Intelligence
- IEEE Access
- Information Science
- Swarm and Evolutionary Computation
- Applied Soft Computing
- Soft Computing
- International Journal of Bio-Inspired Computation
- Mathematics and Computers in Simulation
- and more
- Program Committee Member
- GECCO 2018, 2019,2020
- CEC 2018, 2019, 2020
- AAAI 2019
- Society Member
- ACM SIGEVO
- IEEE CIS
- Chinese Association of Automation
- Chinese Association for Artificial Intelligence


Uno Zen v{{EntryTitle}} was released! Just enter in the folder of your theme and run: sh scripts/update.sh Useful links:


--- layout: posts title: VINCI Publications author: Sophie Engle icon: fas fa-thumbs-up ---
Congratulations to Casey Haber and Lyndon Ong Yiu (both undergraduate CS majors) on their short paper publication "Do Defaults Matter? Evaluating the Effect of Defaults on User Preference for Multi-Class Scatterplots" and to Seimei Matsusaki and Xi Han (both MSCS graduates) on their poster on "Interactive Exploration of Multidimensional YouTube Data Using the GPLOM Technique" in the 9th International Symposium on Visual Information Communication and Interaction (VINCI)!


|
DeBox Analytics
|
The External Dependency Manager for Unity (EDM4U) (formerly Play Services Resolver / Jar Resolver) is intended to be used by any Unity plugin that requires:
Updated releases are available on GitHub
Many Unity plugins have dependencies upon Android specific libraries, iOS CocoaPods, and sometimes have transitive dependencies upon other Unity plugins. This causes the following problems:
EDM provides solutions for each of these problems.
The Android Resolver component of this plugin will download and integrate Android library dependencies and handle any conflicts between plugins that share the same dependencies.
Without the Android Resolver, typically Unity plugins bundle their AAR and JAR dependencies, e.g. a Unity plugin SomePlugin
that requires the Google Play Games Android library would redistribute the library and its transitive dependencies in the folder SomePlugin/Android/
. When a user imports SomeOtherPlugin
that includes the same libraries (potentially at different versions) in SomeOtherPlugin/Android/
, the developer using SomePlugin
and SomeOtherPlugin
will see an error when building for Android that can be hard to interpret.
Using the Android Resolver to manage Android library dependencies:
The iOS Resolver component of this plugin integrates with CocoaPods to download and integrate iOS libraries and frameworks into the Xcode project Unity generates when building for iOS. Using CocoaPods allows multiple plugins to utilize shared components without forcing developers to fix either duplicate or incompatible versions of libraries included through multiple Unity plugins in their project.
The Unity Package Manager (UPM) makes use of NPM registry servers for package hosting and provides ways to discover, install, upgrade and uninstall packages. This makes it easier for developers to manage plugins within their projects.
However, installing additional package registries requires a few manual steps that can potentially be error prone. The Unity Package Manager Resolver component of this plugin integrates with UPM to provide a way to auto-install UPM package registries when a .unitypackage
is installed which allows plugin maintainers to ship a .unitypackage
that can provide access to their own UPM registry server to make it easier for developers to manage their plugins.
Finally, the Version Handler component of this plugin simplifies the process of managing transitive dependencies of Unity plugins and each plugin's upgrade process.
For example, without the Version Handler plugin, if:
SomePlugin
includes EDM4U
plugin at version 1.1.SomeOtherPlugin
includes EDM4U
plugin at version 1.2.The version of EDM4U
included in the developer's project depends upon the order the developer imports SomePlugin
or SomeOtherPlugin
.
This results in:
EDM4U
at version 1.2, if SomePlugin
is imported then SomeOtherPlugin
is imported.EDM4U
at version 1.1, if SomeOtherPlugin
is imported then SomePlugin
is imported.The Version Handler solves the problem of managing transitive dependencies by:
When using the Version Handler to manage EDM4U
included in SomePlugin
and SomeOtherPlugin
, from the prior example, version 1.2 will always be the version activated in a developer's Unity project.
Plugin creators are encouraged to adopt this library to ease integration for their customers. For more information about integrating EDM4U into your own plugin, see the Plugin Redistribution section of this document.
The Android Resolver and iOS Resolver components of the plugin only work with Unity version 4.6.8 or higher.
The Version Handler component only works with Unity 5.x or higher as it depends upon the PluginImporter
UnityEditor API.
The Unity Package Manager Resolver component only works with Unity 2018.4 or above, when scoped registry support was added to the Unity Package Manager.
Before you import EDM4U into your plugin project, you first need to consider whether you intend to redistribute EDM4U
along with your own plugin.
If you're a plugin maintainer, redistributing EDM4U
inside your own plugin will ease the integration process for your users, by resolving dependency conflicts between your plugin and other plugins in a user's project.
If you wish to redistribute EDM4U
inside your plugin, you must follow these steps when importing the external-dependency-manager-*.unitypackage
, and when exporting your own plugin package:
external-dependency-manager-*.unitypackage
into your plugin project by running Unity from the command line, ensuring that you add the -gvh_disable
option.Assets/PlayServicesResolver
directory.-gvh_disable
option.You must specify the -gvh_disable
option in order for the Version Handler to work correctly!
For example, the following command will import the external-dependency-manager-<IP_ADDRESS>.unitypackage
into the project MyPluginProject
and export the entire Assets folder to MyPlugin.unitypackage
:
The Version Handler component relies upon deferring the load of editor DLLs so that it can run first and determine the latest version of a plugin component to activate. The build of EDM4U
plugin has Unity asset metadata that is configured so that the editor components are not initially enabled when it's imported into a Unity project. To maintain this configuration when importing the external-dependency-manager.unitypackage
into a Unity plugin project, you must specify the command line option -gvh_disable
which will prevent the Version Handler component from running and changing the Unity asset metadata.
The Android Resolver copies specified dependencies from local or remote Maven repositories into the Unity project when a user selects Android as the build target in the Unity editor.
external-dependency-manager-*.unitypackage
to your plugin project (assuming you are developing a plugin). If you are redistributing EDM4U with your plugin, you must follow the import steps in the Getting Started section!Copy and rename the SampleDependencies.xml file into your plugin and add the dependencies your plugin requires.
The XML file just needs to be under an Editor
directory and match the name *Dependencies.xml
. For example, MyPlugin/Editor/MyPluginDependencies.xml
.
For example, to add the Google Play Games library (com.google.android.gms:play-services-games
package) at version 9.8.0
to the set of a plugin's Android dependencies:
The version specification (last component) supports:
9.8.0
9.8.+
would match 9.8.0, 9.8.1 etc. choosing the most recent version.LATEST
or +
. We do not recommend using this unless you're 100% sure the library you depend upon will not break your Unity plugin in future.The above example specifies the dependency as a component of the Android SDK manager such that the Android SDK manager will be executed to install the package if it's not found. If your Android dependency is located on Maven central it's possible to specify the package simply using the androidPackage
element:
By default the Android Resolver automatically monitors the dependencies you have specified and the Plugins/Android
folder of your Unity project. The resolution process runs when the specified dependencies are not present in your project.
The auto-resolution process can be disabled via the Assets > External Dependency Manager > Android Resolver > Settings
menu.
Manual resolution can be performed using the following menu options:
Assets > External Dependency Manager > Android Resolver > Resolve
Assets > External Dependency Manager > Android Resolver > Force Resolve
Resolved packages are tracked via asset labels by the Android Resolver. They can easily be deleted using the Assets > External Dependency Manager > Android Resolver > Delete Resolved Libraries
menu item.
Some AAR files (for example play-services-measurement) contain variables that are processed by the Android Gradle plugin. Unfortunately, Unity does not perform the same processing when using Unity's Internal Build System, so the Android Resolver plugin handles known cases of this variable substitution by exploding the AAR into a folder and replacing ${applicationId}
with the bundleID
.
Disabling AAR explosion and therefore Android manifest processing can be done via the Assets > External Dependency Manager > Android Resolver > Settings
menu. You may want to disable explosion of AARs if you're exporting a project to be built with Gradle / Android Studio.
Some AAR files contain native libraries (.so files) for each ABI supported by Android. Unfortunately, when targeting a single ABI (e.g x86), Unity does not strip native libraries for unused ABIs. To strip unused ABIs, the Android Resolver plugin explodes an AAR into a folder and removes unused ABIs to reduce the built APK size. Furthermore, if native libraries are not stripped from an APK (e.g you have a mix of Unity's x86 library and some armeabi-v7a libraries) Android may attempt to load the wrong library for the current runtime ABI completely breaking your plugin when targeting some architectures.
AAR explosion and therefore ABI stripping can be disabled via the Assets > External Dependency Manager > Android Resolver > Settings
menu. You may want to disable explosion of AARs if you're exporting a project to be built with Gradle / Android Studio.
By default the Android Resolver will use Gradle to download dependencies prior to integrating them into a Unity project. This works with Unity's internal build system and Gradle / Android Studio project export.
It's possible to change the resolution strategy via the Assets > External Dependency Manager > Android Resolver > Settings
menu.
Using the default resolution strategy, the Android resolver executes the following operations:
Plugins/Android
from the project.*Dependencies.xml
files.download_artifacts.gradle
with Gradle to resolve conflicts and, if successful, download the set of resolved Android libraries (AARs, JARs).applicationId
in the AndroidManifest.xml with the project's bundle ID. This means resolution must be run if the bundle ID is changed again.Plugins/Android
so they will be included when Unity invokes the Android build.Unity 5.6 introduced support for customizing the build.gradle
used to build Unity projects with Gradle. When the Patch mainTemplate.gradle setting is enabled, rather than downloading artifacts before the build, Android resolution results in the execution of the following operations:
Plugins/Android
from the project and remove sections delimited with // Android Resolver * Start
and // Android Resolver * End
lines.*Dependencies.xml
files..srcaar
files in the build to .aar
and exclude them from being included directly by Unity in the Android build as mainTemplate.gradle
will be patched to include them instead from their local maven repositories.mainTemplate.gradle
at the line matching the pattern ‘.*apply plugin: 'com.android.(application|library)’.*or the section starting at the line
// Android Resolver Repos Start`. If you want to control the injection point in the file, the section delimited by the lines // Android Resolver Repos Start
and // Android Resolver Repos End
should be placed in the global scope before the dependencies
section.mainTemplate.gradle
at the line matching the pattern ***DEPS***
or the section starting at the line // Android Resolver Dependencies Start
. If you want to control the injection point in the file, the section delimited by the lines // Android Resolver Dependencies Start
and // Android Resolver Dependencies End
should be placed in the dependencies
section.mainTemplate.gradle
at the line matching the pattern android +{
or the section starting at the line // Android Resolver Exclusions Start
. If you want to control the injection point in the file, the section delimited by the lines // Android Resolver Exclusions Start
and // Android Resolver Exclusions End
should be placed in the global scope before the android
section.The Android Resolver creates the ProjectSettings/AndroidResolverDependencies.xml
to quickly determine the set of resolved dependencies in a project. This is used by the auto-resolution process to only run the expensive resolution process when necessary.
It's possible to display the set of dependencies the Android Resolver would download and process in your project via the Assets > External Dependency Manager > Android Resolver > Display Libraries
menu item.
The iOS resolver component of this plugin manages CocoaPods. A CocoaPods Podfile
is generated and the pod
tool is executed as a post build process step to add dependencies to the Xcode project exported by Unity.
Dependencies for iOS are added by referring to CocoaPods.
external-dependency-manager-*.unitypackage
to your plugin project (assuming you are developing a plugin). If you are redistributing EDM4U with your plugin, you must follow the import steps in the Getting Started section!Copy and rename the SampleDependencies.xml file into your plugin and add the dependencies your plugin requires.
The XML file just needs to be under an Editor
directory and match the name *Dependencies.xml
. For example, MyPlugin/Editor/MyPluginDependencies.xml
.
For example, to add the AdMob pod, version 7.0 or greater with bitcode enabled:
The CocoaPods
are either:
Xcode project
integration.pod
tool is used as intended to generate a xcworkspace which references the CocoaPods. We call this Xcode workspace
integration.The resolution strategy can be changed via the Assets > External Dependency Manager > iOS Resolver > Settings
menu.
In order to modify the generated Podfile you can create a script like this:
Adding registries to the Unity Package Manager (UPM) is a manual process. The Unity Package Manager Resolver (UPMR) component of this plugin makes it easy for plugin maintainers to distribute new UPM registry servers and easy for plugin users to manage UPM registry servers.
external-dependency-manager-*.unitypackage
to your plugin project (assuming you are developing a plugin). If you are redistributing EDM4U with your plugin, you must follow the import steps in the Getting Started section!Copy and rename the SampleRegistries.xml file into your plugin and add the registries your plugin requires.
The XML file just needs to be under an Editor
directory and match the name *Registries.xml
or labeled with gumpr_registries
. For example, MyPlugin/Editor/MyPluginRegistries.xml
.
For example, to add a registry for plugins in the scope com.coolstuff
:
When UPMR is loaded it will prompt the developer to add the registry to their project if it isn't already present in the Packages/manifest.json
file.
For more information, see Unity's documentation on scoped package registries.
It's possible to add and remove registries that are specified via UPMR XML configuration files via the following menu options:
Assets > External Dependency Manager > Unity Package Manager Resolver > Add Registries
will prompt the user with a window which allows them to add registries discovered in the project to the Unity Package Manager.Assets > External Dependency Manager > Unity Package Manager Resolver > Remove Registries
will prompt the user with a window which allows them to remove registries discovered in the project from the Unity Package Manager.Assets > External Dependency Manager > Unity Package Manager Resolver > Modify Registries
will prompt the user with a window which allows them to add or remove registries discovered in the project.UPMR can be configured via the Assets > External Dependency Manager > Unity Package Manager Resolver > Settings
menu option:
Add package registries
when enabled, when the plugin loads or registry configuration files change, this will prompt the user to add registries that are not present in the Unity Package Manager.Prompt to add package registries
will cause a developer to be prompted with a window that will ask for confirmation before adding registries. When this is disabled registries are added silently to the project.Enable Analytics Reporting
when enabled, reports the use of the plugin to the developers so they can make imrpovements.Verbose logging
when enabled prints debug information to the console which can be useful when filing bug reports.The Version Handler component of this plugin manages:
exportpath
label.Since the Version Handler needs to modify Unity asset metadata (.meta
files), to enable / disable components, rename and delete asset files it does not work with Unity Package Manager installed packages. It's still possible to include EDM4U in Unity Package Manager packages, the Version Handler component simply won't do anything to UPM plugins in this case.
If a plugin is imported at multiple different versions into a project, if the Version Handler is enabled, it will automatically check all managed assets to determine the set of assets that are out of date and assets that should be removed. To disable automatic checking managed assets disable the Enable version management
option in the Assets > External Dependency Manager > Version Handler > Settings
menu.
If version management is disabled, it's possible to check managed assets manually using the Assets > External Dependency Manager > Version Handler > Update
menu option.
Plugins managed by the Version Handler, those that ship with manifest files, can displayed using the Assets > External Dependency Manager > Version Handler > Display Managed Packages
menu option. The list of plugins are written to the console window along with the set of files used by each plugin.
Plugins managed by the Version Handler, those that ship with manifest files, can be removed using the Assets > External Dependency Manager > Version Handler > Uninstall Managed Packages
menu option. This operation will display a window that allows a developer to select a set of plugins to remove which will remove all files owned by each plugin excluding those that are in use by other installed plugins.
Files managed by the Version Handler, those labeled with the gvh
asset label, can be checked to see whether anything needs to be upgraded, disabled or removed using the Assets > External Dependency Manager > Version Handler > Update
menu option.
Some developers move assets around in their project which can make it harder for plugin maintainers to debug issues if this breaks Unity's special folders rules. If assets are labeled with their original install / export path (see gvhp_exportpath
below), Version Handler can restore assets to their original locations when using the Assets > External Dependency Manager > Version Handler > Move Files To Install Locations
menu option.
Some behavior of the Version Handler can be configured via the Assets > External Dependency Manager > Version Handler > Settings
menu option.
Enable version management
controls whether the plugin should automatically check asset versions and apply changes. If this is disabled the process should be run manually when installing or upgrading managed plugins using Assets > External Dependency Manager > Version Handler > Update
.Rename to canonical filenames
is a legacy option that will rename files to remove version numbers and other labels from filenames.Prompt for obsolete file deletion
enables the display of a window when obsolete files are deleted allowing the developer to select which files to delete and those to keep.Allow disabling files via renaming
controls whether obsolete or disabled files should be disabled by renaming them to myfilename_DISABLED
. Renaming to disable files is required in some scenarios where Unity doesn't support removing files from the build via the PluginImporter.Enable Analytics Reporting
enables / disables usage reporting to plugin developers to improve the product.Verbose logging
enables very noisy log output that is useful for debugging while filing a bug report or building a new managed plugin.Use project settings
saves settings for the plugin in the project rather than system-wide.The Version Handler employs a couple of methods for managing version selection, upgrade and removal of plugins.
myfile.txt
would be `myfile_version-x.y.z.txt). This allows the Version Handler to determine which set of files are the same file at different versions, select the most recent version and prompt the developer to clean up old versions.Unity plugins can be managed by the Version Handler using the following steps:
gvh
asset label to each asset (file) you want Version Handler to manage.gvh_version-VERSION
label to each asset where VERSION
is the version of the plugin you're releasing (e.g 1.2.3).gvhp_exportpath-PATH
label to each asset where PATH
is the export path of the file when the .unitypackage
is created. This is used to track files if they're moved around in a project by developers.gvh_targets-editor
label to each editor DLL in your plugin and disable editor
as a target platform for the DLL. The Version Handler will enable the most recent version of this DLL when the plugin is imported.MY_UNIQUE_PLUGIN_NAME_VERSION.txt
that lists all the files in your plugin relative to the project root. Then add the gvh_manifest
label to the asset to indicate this file is a plugin manifest.gvhp_manifestname-NAME
label to your manifest file to provide a human readable name for your package. If this isn't provided the name of the manifest file will be used as the package name. NAME can match the pattern ‘[0-9]+[a-zA-Z -]’ where a leading integer will set the priority of the name where 0
is the highest priority and preferably used as the display name. The lowest value (i.e highest priority name) will be used as the display name and all other specified names will be aliases of the display name. Aliases can refer to previous names of the package allowing renaming across published versions.If you follow these steps:
To build this plugin from source you need the following tools installed:
You can build the plugin by running the following from your shell (Linux / OSX):
or Windows:
Each time a new build of this plugin is checked into the source tree you need to do the following:
pluginVersion
in build.gradle
CHANGELOG.md
with the new version number and changes included in the release../gradle release
which performs the following:external-dependency-manager-*.unitypackage
exploded
directory.plugin
directory. The GUIDs of all asset metadata is modified due to the version number change. Each file within the plugin is versioned to allow multiple versions of the plugin to be imported into a Unity project which allows the most recent version to be activated by the Version Handler component../gradle gitTagRelease
which performs the following:git add -A
to pick up all modified, new and deleted files in the tree.git commit --amend -a
to create a release commit with the release notes in the change log.git tag -a RELEASE -m "version RELEASE"
to tag the release.


Press release
A survey has found a sharp rise in the number of young people considering a career in engineering.
There has been a sharp rise in the number of young people considering a career in engineering, Vince Cable announced today (15 February 2014).
A BIS -commissioned survey has found that the number of 11 to 14 year olds thinking about working in engineering has jumped by 6%. Significantly, the survey showed a 6% rise in the number of girls saying they would consider an engineering career, an industry that acknowledges the need to recruit more women. More parents (a rise of 4%) also said they would encourage their children to become engineers.
The increases followed Tomorrow’s Engineers Week , which ran from 4 to 8 November 2013, when government, employers and educators came together to enthuse young people, particularly girls, about the rewarding careers on offer in engineering.
Secretary of State for Business Innovation and Skills Vince Cable said:
It is encouraging to see that our efforts to highlight the importance of engineering as a career has had a positive affect and that more women and girls are seeing it as an exciting career.
As a country we excel in hi-tech industries but we need the engineers to maintain our competitive advantage. Government alone cannot solve this. We need to work with industry, universities, colleges and schools to keep momentum and guarantee the pipeline of talent so that businesses are not disadvantaged.
Chief Executive of EngineeringUK Paul Jackson said:
Tomorrow’s Engineers Week is an example of the positive impact that can be made when organisations work together. The week has proven an effective calendar item for raising awareness of engineering careers and EngineeringUK will be delighted to coordinate it on behalf of the engineering community in 2014.
Government and industry launched Tomorrow’s Engineers Week following the ‘Perkins Review of Engineering Skills’, which focused on the need to shore up the pipeline of skills throughout the whole engineering sector. Professor John Perkins found the challenges start when pupils are still at school and choose subjects following GCSEs . Engineers must have a strong foundation in maths and science, especially physics but the number of young people choosing these subjects post-16 is relatively low, especially among women. The government is addressing this problem through a redesign of the curriculum and teacher development.
BIS also announced a number of additional measures last year (2013) to address the shortage of engineers including:
1.Research was undertaken by Vision Critical on behalf of BIS . The poll of 1,000 children aged 11 to 14 years and 1,000 parents of children aged 11 to 14 years based in England and Wales was conducted between 18 and 24 October 2013 prior to Tomorrow’s Engineers Week and between 13 and 17 November following the week. The research can be found at ‘Professor John Perkins’ review of engineering skills’
2. Tomorrow’s Engineers Week (#TEWeek13) took place from 4 to 8 November 2013 and aimed to change perceptions of engineering among young people, their parents and teachers.
3.Funding Partners for Tomorrow’s Engineers Week were: EngineeringUK, The Royal Academy of Engineering, the Institution of Mechanical Engineers, the Institution of Chemical Engineers, the Institution of Engineering and Technology, and the Institution of Civil Engineers.
4.Wider partners included All Party Parliamentary Group on Apprenticeships, Arup, Atkins, BAE Systems, British Science Association, Career Academies UK, The Edge Foundation, EEF the Manufacturers Organisation, the Engineering and Physical Sciences Research Council, Facebook, GE Aviation, Girlguiding, GlaxoSmithKline, J8 Precision, Jaguar Land Rover, Little Miss Geek, Motorsports Industry Association, National Apprenticeship Service, National Careers Service, Next Generation Skills, Siemens, Sciencegrrl, Sheffield Forgemasters International Ltd, Skills Funding Agency, the Skills Show, the Society of Motor Manufacturers and Traders, The Science Museum, STEMNET, Teach First, Teeside Local Government, UK Association for Interactive Entertainment, UKCES, the V&A Museum, the Women’s Engineering Society, Women in Science and Engineering, World Skills UK.
5.The Department for Business, Innovation and Skills ( BIS ) is the department for economic growth. The department invests in skills and education to promote trade, boost innovation and help people to start and grow a business. BIS also protects consumers and reduces the impact of regulation.
6.The government’s economic policy objective is to achieve ‘strong, sustainable and balanced growth that is more evenly shared across the country and between industries’. It set 4 ambitions in the ‘Plan for Growth’ , published at Budget 2011:
Work is underway across government to achieve these ambitions, including progress on more than 250 measures as part of the Growth Review. Developing an Industrial Strategy gives new impetus to this work by providing businesses, investors and the public with more clarity about the long-term direction in which the government wants the economy to travel.
7. BIS has recently announced a £400 million STEM teaching capital fund to tackle diversity challenges facing the engineering industry.
Published: 15 February 2014


- rand(int, int) - Static method in class ml.utils.Matlab
-
Generate an nRow-by-nCol matrix containing pseudo-random values drawn
from the standard uniform distribution on the open interval (0,1).
- rand(int) - Static method in class ml.utils.Matlab
-
Generate an n-by-n matrix containing pseudo-random values drawn
from the standard uniform distribution on the open interval (0,1).
- randn(int, int) - Static method in class ml.utils.Matlab
-
Generate an nRow-by-nCol matrix containing pseudo-random values drawn
from the standard normal distribution.
- randn(int) - Static method in class ml.utils.Matlab
-
Generate an n-by-n matrix containing pseudo-random values drawn
from the standard normal distribution.
- randperm(int) - Static method in class ml.utils.Matlab
-
Random permutation.
- rank(Matrix) - Static method in class la.decomposition.SingularValueDecomposition
-
Compute the rank of a matrix.
- rank(Matrix) - Static method in class ml.utils.Matlab
-
Compute the rank of a matrix.
- rdivide(Matrix, double) - Static method in class ml.utils.Matlab
-
Right array division.
- rdivideAssign(Matrix, double) - Static method in class ml.utils.InPlaceOperator
-
res = res / v
- readCorpus(ArrayList<TreeMap<Integer, Integer>>) - Method in class ml.topics.LDA
-
Load corpus
and documents
from a ArrayList<TreeMap<Integer, Integer>>
instance.
- readCorpus(String) - Method in class ml.topics.LDA
-
Load corpus
and documents
from a LDAInput file.
- readCorpus(int[][]) - Method in class ml.topics.LDA
-
Feed documents from a 2D integer array.
- readCorpus(Matrix) - Method in class ml.topics.LDA
-
Load corpus
and documents
from a RealMatrix
instance.
- readCorpus(Matrix) - Method in class ml.topics.TopicModel
-
Read corpus from a V-by-N document-term-count matrix
for this topic model.
- readCorpusFromDocTermCountArray(ArrayList<TreeMap<Integer, Integer>>) - Method in class ml.topics.Corpus
-
Load corpus
and documents
from a ArrayList<TreeMap<Integer, Integer>>
instance.
- readCorpusFromDocTermCountArray(ArrayList<TreeMap<Integer, Integer>>) - Method in class ml.topics.LdaGibbsSampler
-
Load corpus
and documents
from a ArrayList<TreeMap<Integer, Integer>>
instance.
- readCorpusFromDocTermCountFile(String) - Method in class ml.topics.Corpus
-
Load corpus
and documents
from a text file located at String
docTermCountFilePath.
- readCorpusFromDocTermCountFile(String) - Method in class ml.topics.LDA
-
Load corpus
and documents
from a text file located at String
docTermCountFilePath.
- readCorpusFromDocTermCountFile(String) - Method in class ml.topics.LdaGibbsSampler
-
Load corpus
and documents
from a text file located at String
docTermCountFilePath.
- readCorpusFromLDAInputFile(String) - Method in class ml.topics.Corpus
-
Load corpus
and documents
from a LDAInput file.
- readCorpusFromLDAInputFile(String) - Method in class ml.topics.LdaGibbsSampler
-
Load corpus
and documents
from a LDAInput file.
- readCorpusFromMatrix(Matrix) - Method in class ml.topics.Corpus
-
Load corpus
and documents
from a RealMatrix
instance.
- readCorpusFromMatrix(Matrix) - Method in class ml.topics.LdaGibbsSampler
-
Load corpus
and documents
from a RealMatrix
instance.
- readDataSet(ArrayList<String>) - Static method in class la.io.Data
-
Read a data set from a string array.
- readDataSet(String) - Static method in class la.io.Data
-
Read a data set from a LIBSVM formatted file.
- readDataSet(ArrayList<String>) - Static method in class la.io.DataSet
-
Read a data set from a string array.
- readDataSet(String) - Static method in class la.io.DataSet
-
Read a data set from a LIBSVM formatted file.
- readDataSetFromFile(String) - Static method in class la.io.Data
-
Read a data set from a LIBSVM formatted file.
- readDataSetFromFile(String) - Static method in class la.io.DataSet
-
Read a data set from a LIBSVM formatted file.
- readDataSetFromFile(String) - Static method in class la.io.DataVectors
-
Read data vectors from a LIBSVM formatted file.
- readDataSetFromStringArray(ArrayList<String>) - Static method in class la.io.Data
-
Read a data set from a string array.
- readDataSetFromStringArray(ArrayList<String>) - Static method in class la.io.DataSet
-
Read a data set from a string array.
- readDataVectorsFromStringArray(ArrayList<String>) - Static method in class la.io.DataVectors
-
Read data vectors from a string array.
- readFileAsString(String) - Static method in class ml.utils.Utility
-
Read the contents from a text file into a string.
- ReflectedLogisticRegression - Class in ml.temporal
-
- ReflectedLogisticRegression(double) - Constructor for class ml.temporal.ReflectedLogisticRegression
-
- ReflectedLogisticRegression(Options) - Constructor for class ml.temporal.ReflectedLogisticRegression
-
- Regression - Class in ml.regression
-
Abstract super class for all regression methods.
- Regression() - Constructor for class ml.regression.Regression
-
- Regression(double) - Constructor for class ml.regression.Regression
-
- Regression(int, double) - Constructor for class ml.regression.Regression
-
- Regression(Options) - Constructor for class ml.regression.Regression
-
- regularizationType - Variable in class ml.temporal.TemporalLogisticRegression
-
Regularization type.
- repmat(Matrix, int, int) - Static method in class ml.utils.Matlab
-
Replicate and tile an array.
- repmat(Matrix, int[]) - Static method in class ml.utils.Matlab
-
Replicate and tile an array.
- reshape(Matrix, int[]) - Static method in class ml.utils.Matlab
-
Reshape a matrix to a new shape specified by a two dimensional
integer array.
- reshape(Matrix, int, int) - Static method in class ml.utils.Matlab
-
Reshape a matrix to a new shape specified number of rows and
columns.
- reshape(Vector, int[]) - Static method in class ml.utils.Matlab
-
Reshape a vector to a matrix with a shape specified by a two dimensional
integer array.
- reshape(Vector, int, int) - Static method in class ml.utils.Matlab
-
Reshape a vector to a new shape specified number of rows and
columns.
- rho - Variable in class ml.temporal.TemporalLogisticRegression
-
- RobustPCA - Class in ml.recovery
-
A Java implementation of robust PCA which solves the
following convex optimization problem:
min ||A||_* + lambda ||E||_1
s.t.
- RobustPCA(double) - Constructor for class ml.recovery.RobustPCA
-
Constructor for Robust PCA.
- root - Variable in class ml.recommendation.util.Tree
-
Geo-tree root: {idx:0, parentIdx:-1}
- rows - Variable in class ml.utils.FindResult
-
- rowVector2RowMatrix(Vector) - Static method in class ml.utils.Matlab
-
- run(Matrix, double, double, Matrix) - Static method in class ml.optimization.AcceleratedGradientDescent
-
Main entry for the accelerated proximal gradient algorithm.
- run(Matrix, double, double, double, Matrix) - Static method in class ml.optimization.AcceleratedProximalGradient
-
Main entry for the accelerated proximal gradient algorithm.
- run(Matrix, double, double, double, double, Matrix) - Static method in class ml.optimization.BoundConstrainedPLBFGS
-
Main entry for the LBFGS algorithm with bound constraints.
- run(Matrix, double, Matrix, Matrix, double, Matrix) - Static method in class ml.optimization.BoundConstrainedPLBFGS
-
Main entry for the LBFGS algorithm with bound constraints.
- run(Matrix, double, double, Matrix) - Static method in class ml.optimization.LBFGS
-
Main entry for the LBFGS algorithm.
- run(Vector, double, double, Vector) - Static method in class ml.optimization.LBFGSForVector
-
Main entry for the LBFGS algorithm.
- run(Matrix, double, double, Matrix) - Static method in class ml.optimization.LBFGSOnSimplex
-
Main entry for the LBFGS algorithm.
- run(Matrix, double, double, Matrix) - Static method in class ml.optimization.NonlinearConjugateGradient
-
Main entry for the algorithm.
- run(Matrix, double, double, Matrix) - Static method in class ml.optimization.NonnegativePLBFGS
-
Main entry for the LBFGS algorithm.
- run(Matrix, Matrix, Matrix, Matrix, Matrix, Matrix, double, Matrix) - Static method in class ml.optimization.PrimalDualInteriorPoint
-
Run this optimization algorithm.
- run(Matrix, Matrix, Matrix, Matrix, Matrix, Matrix, double, Matrix, Matrix, Matrix) - Static method in class ml.optimization.PrimalDualInteriorPoint
-
Run this optimization algorithm.
- run() - Method in class ml.recovery.MatrixCompletion
-
Run matrix completion.
- run() - Method in class ml.recovery.RobustPCA
-
Run robust PCA.
- run(Matrix, double) - Static method in class ml.recovery.RobustPCA
-
Compute robust PCA for an observation matrix which solves the
following convex optimization problem:
min ||A||_* + lambda ||E||_1
s.t.
- run() - Method in class ml.subspace.DimensionalityReduction
-
Do dimensionality reduction.
- run() - Method in class ml.subspace.Isomap
-
- run(Matrix, int, int) - Static method in class ml.subspace.Isomap
-
Isomap (isometric feature mapping).
- run() - Method in class ml.subspace.KernelPCA
-
- run(Matrix, int) - Static method in class ml.subspace.KernelPCA
-
Kernel PCA.
- run() - Method in class ml.subspace.LLE
-
- run(Matrix, int, int) - Static method in class ml.subspace.LLE
-
LLE (Locally Linear Embedding).
- run() - Method in class ml.subspace.MDS
-
- run(Matrix, int) - Static method in class ml.subspace.MDS
-
Dimensionality reduction by MDS.
- run() - Method in class ml.subspace.PCA
-
- run(Matrix, int) - Static method in class ml.subspace.PCA
-
PCA.
- run() - Method in class ml.topics.LdaGibbsSampler
-
- run(LDAOptions) - Method in class ml.topics.LdaGibbsSampler
-
- run(Corpus, LDAOptions) - Static method in class ml.topics.LdaGibbsSampler
-
- runKMeans() - Static method in class ml.clustering.KMeans
-
- runNMF() - Static method in class ml.clustering.NMF
-


Ajit Pawar blackmailed into joining hands with BJP: Raut
Shiv Sena leader Sanjay Raut on Saturday claimed that Nationalist Congress Party's Ajit Pawar was "blackmailed" into joining hands with the BJP to form government in Maharashtra.
He said Ajit Pawar might return to the NCP fold.
BJP's Devendra Fadnavis on Saturday took oath as Maharashtra chief minister, while Ajit Pawar as his deputy.
"NCP leader Dhananjay Munde has been contacted. Ajit Pawar may also return (to NCP fold). We have information how Ajit Pawar has been blackmailed and will expose this soon," Raut told reporters.
Munde, who is said to have been in touch with Fadnavis since the last few days, had gone incommunicado. He is said be supporting Ajit Pawar.
Munde was elected from Parli where he defeated his cousin and BJP leader Pankaja Munde.
"The new government was formed at 7 in the morning. In the cover of darkness only sins are committed," Raut said.


It's Virat Kohli's 31st birthday today, wishes pour in for Team India captain
by TIMESOFINDIA.COMHighlights
- Virat Kohli has played 82 Tests, 239 ODIs and 72 T20Is in his career so far
- Kohli has 43 ODI centuries under his belt, second most in the world. Tendulkar tops the list with 49 ODI tons
- In October last year, Kohli became the fastest batsman to score 10,000 ODI runs
NEW DELHI: Team India captain Virat Kohli turned 31 on Tuesday.
Kohli, who made his international debut in August 2008 in an ODI against Sri Lanka in Dambulla, has played 82 Tests, 239 ODIs and 72 T20Is in his career so far.
With 11520 ODI runs in 239 matches (230 innings), Kohli is the second Indian after batting legend Sachin Tendulkar with most runs.
He also has 43 ODI centuries under his belt, second most in the world. Tendulkar tops the list with 49 ODI tons.
In October last year, Kohli became the fastest batsman to score 10,000 ODI runs.
Kohli, on his birthday, took to Twitter and shared an emotional post about a note that he has written to a 15-year-old Kohli.
On Kohli's special day, wishes poured in from all quarters for the Indian captain.


This is a an example of the jTour plugin with two steps and some options
$(document).ready(function() { var tourdata = [ { html: "Hello World" },{ html: "Welcome to the Tour", live: 5000, delayIn: 500 } ]; var myTour = jTour(tourdata); myTour.start(); });


Well the day started out, was christmas, after opening presants and such we went out for dinner with my family(3pm). On arival we were told the resteraunt was not ready to seat people yet, so were asked to wait at the bar, so I had a pint of Guinness. We then were seated, me and my grandmother (I'm 17 years old in case anyone's wondering) had a litre of red wine between us. They took a hell of a long time serving us, during this I was getting stuck into the red wine. The portions we got were pretty small. About during the main course I ordered another pint of Guinness.
After that we went home. I was feeling fairly tipsy, but clearly wanted to get more drunk. So I went round to my friends house with a bottle of mulled wine, how festive! But before I went I thought it would be a laugh to put on this tiger skin furry thong my mother got as a gag anyways. I went round to my friend's house and finished that while my friend had vodka if I remember right. I was fairly drunk by this point.
I got a text from another friend who said he had gotten some pills. I was quite glad, since I do quite enjoy them. I bought five of them. I've taken pills before, as many as 9 in one night (of course through the night not all at once). I thought to myself that to get a good effect I should take all 5 at once, especially since last time I got some and they turned out to be fake. I took all of the pills at once and waited for the effects.
For some reason I decided I should go home, and headed home at 8pm. From this point on I have no recollection, but I was informed by my parents. I came in, went up to my room, and sat on my laptop for a while. Apparently I was saying things like 'I CANT SEE!!!! THIS IS AMAIZING!!!! COULD DO WITH MORE!!!!' although I can't remember. My mother who was going to bed came in to my room at 11pm and found me rolling around the floor, she panicked and phoned my friend demanding to know what I had taken, and he told her to phone my dealer. My dealer told her that I had 5 tablets so she phoned for an ambulance.
The ambulance came and they managed to get me downstairs into the hallway. The ambulance man tried to help me to the ambulance but I pushed him out the front door. The police then came and told me to come with them to the ambulance, I agreed and went with them. Outside my front door, with many on lookers my jeans fell to my knee's exposing the furry thong, the policeman let out a laugh and asked my parents for a belt.
En route to the hospital I apparently asked the ambulance man what was wrong with the man lying down, and wether he was taking a heart attack or not. The ambulance man responded by saying that there was no one there. In the hospital I asked a few of the nurses if they wanted to have sex, needless to say none wanted to! I was asked to take my clothes off and put on a gown. I managed to get my clothes off and ended up running about naked, apparently shaking my penis at the staff and a female patient (who was apparently also under the effect of E).
After another attempt at getting my gown the doctor attempted to put in an I.V drip of saline solution to rehydrate me, which I repetedly ripped out of my hand (this is my earliest memory of the events). I remember seeing the blood pouring out my hand and the saline squirting out the needle. Since I was being dificult to work with they gave me a diazepam to calm me down. Can't say I remember any diference.
Apparently after the syringe was in I gave the doctor a huge lecture on the pharmacology of MDMA and telling him I was ok. On the contrary I had a resting pulse of 190 bpm (tachyarythmia), and the doctor repetedly was asking if I was having chest pain, convinced that if my pulse remained at that rate I would take a heart attack. Later on at about 3am I was becoming more consious of what I was doing. I remember walking out and asking the nurses if I could go home and they said 'no' because I still had a pulse of 190 bpm and had some sort of remote ECG connected up to me which they were closely monitoring.
The next morning I was let home at 10am since my pulse had lowered to 100 bpm. Well it's been a couple of weeks since then and i've not taken ecstasy since. I must say I'm quite tempted to but I don't want to risk anything like this happening again, I was lucky not to damage my heart and I was very lucky I never got charged by the police.
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.


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.util.EventObject atg.service.event.GenericEvent
public class GenericEvent
| Field Summary | |
|---|---|
static int[] |
ALL_TYPES
An array of all of the event type constants for this event. |
static java.lang.String |
CLASS_VERSION
Class version string |
protected java.util.Date |
mDate
The time as a Date when the event was fired. |
protected long |
mTime
The time in milliseconds when the event was fired. |
protected java.sql.Timestamp |
mTimestamp
The time as a Timestamp when the event was fired |
protected int |
mType
The type of this event. |
static int |
TYPE_VANILLA
A generic event type. |
| Fields inherited from class java.util.EventObject |
|---|
source |
| Constructor Summary | |
|---|---|
GenericEvent(java.lang.Object pSource)
Constructs a generic event with the default, generic type. |
|
GenericEvent(java.lang.Object pSource,
int pEventType)
Constructs a generic event of the given type. |
| Method Summary | |
|---|---|
int[] |
getAllTypes()
|
java.lang.Object |
getSource()
|
long |
getTime()
|
java.util.Date |
getTimeAsDate()
|
java.sql.Timestamp |
getTimeAsTimestamp()
|
int |
getType()
|
| Methods inherited from class java.util.EventObject |
|---|
toString |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static java.lang.String CLASS_VERSION
public static final int TYPE_VANILLA
public static int[] ALL_TYPES
protected long mTime
protected int mType
protected java.util.Date mDate
protected java.sql.Timestamp mTimestamp
| Constructor Detail |
|---|
public GenericEvent(java.lang.Object pSource)
public GenericEvent(java.lang.Object pSource, int pEventType)
| Method Detail |
|---|
public long getTime()
public java.util.Date getTimeAsDate()
public java.sql.Timestamp getTimeAsTimestamp()
public int getType()
public int[] getAllTypes()
public java.lang.Object getSource()
getSource
in class java.util.EventObject
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


| DOSE: | 1.0 g | smoked | Salvia divinorum | (leaves) |
| BODY WEIGHT: | 155 lb |
Later that eve, I got 3 good hits together and sat down with the bong. I laid out a cushion in the floor in case I wanted to lay down. I let my Wife lay down in the next room, which could've been a mistake, because when Salvia divinorum hits, you are gone. I took a hit, held it in and then repeated. By the time I finished the 3rd, I barely made it to the cushion...
Well, let me say now that I have always considered myself a very 'spiritual' person, very experienced in 'psychedelics' and was unafraid of whatever may come…what DID pass was, in fact, somewhat disturbing:
As I literally fell to the cushion, I was transported to a 'farm'. This farm was run by a very 'American Gothic' couple, except the woman had a rather 'Swiss Miss' look to her, older, but with broad white collar and nurse-like cap... Anyway, I could really only 'see' them through goggle-shaped windows about 3 feet in front of me. They were watching me staked out in their garden as thousands of furry red and black caterpillars gnawed me into the earth! There was a grinding sound of the continuous chewing as I was being pulled into the soil and the older farmer couple kept repeating over and over 'Pembly Grimseed', 'Pembly Grimseed'…
To tell the truth, I was a bit dismayed at being treated as fertilizer and admittedly was expecting my usual transcendent psychedelic experience, but as soon as I figured out what was happening and struggled a bit, The caterpillars became the legs of larger tarantulas more intent on letting me know who was in control and the annoying-but-painless composting of my body by the caterpillars was by far the more attractive situation! I so wanted to play another (any other) role on this 'farm', but fertilizer I was…
I tried to get a better look at the rather benign older couple repeating 'Pembly Grimseed' ad infinitum, but the goggle-windows began to fog over and I realized that only my left arm was being chewed and then upon coming back to THIS beloved 'reality', in a cold sweat no less, I realized just HOW GONE I had been! I washed up and went and crawled into bed with my wonderful wife, very thankful to be alive and well!
The whole thing lasted about 20 minutes and although a was very depressed afterwards, I realize this morning that I never was 'afraid' at all and I wasn't really connected consciously to the body being chewed. I know that the body must die and go back to the earth etc. But, it's not the most pleasant image to watch!
All morning, I have been recalling the apparent name of this Farm, 'Pembly Grimseed' and the lyric to an old song keeps flooding my mind. It's a piece of 'Supper's Ready' by Genesis w/ Peter Gabriel called 'Willow Farm': 'When you go down to Willow Farm, to search for butterflies…you've been here all the time, so like it or not, you'll like what you got, cuz you're under the soil, yes deep in the soil!'
I am gonna try it again, mainly because I think I see the lesson here, but if this seemingly benign couple continue to treat me this way… I think I'll vacation elsewhere than 'Pembly Grimseed Farm'!
| Exp Year: 2001 | ID: 9889 |
| Gender: Male | |
| Added: Jul 11, 2005 | Views: 2483 |
| [ View as PDF (for printing) ] [ View as LaTeX (for geeks) ] [ Switch Colors ] |
| Erowid Experience Vault | © 1995-2008 Erowid |


GOV.UK Verify
You can prove your identity with GOV.UK Verify to get your State Pension if:
- you have already reached State Pension age
- you will reach State Pension age in the next 4 months
If you have not used GOV.UK Verify before, it will take you
about 5 minutes to get set up.
GOV.UK
VERIFY


The aim of this puzzle is to simulate games of War, given two initial decks. It is a good start to develop a function to compare the value of 2 cards. Once you have it, it is basically a lot of control flow statemens to handle wars, and the possible outcomes of a round. My solution gives a simple example of error management in Python.
# Game configuration : the differents cards possible and their value # We would only need to modify this dictionnary if the order of the # card changed, or if we wanted to play with a 32 card game for example values = {'2D':2, '2H':2, '2C':2, '2S':2, '3D':3, '3H':3, '3C':3, '3S':3, '4D':4, '4H':4, '4C':4, '4S':4, '5D':5, '5H':5, '5C':5, '5S':5, '6D':6, '6H':6, '6C':6, '6S':6, '7D':7, '7H':7, '7C':7, '7S':7, '8D':8, '8H':8, '8C':8, '8S':8, '9D':9, '9H':9, '9C':9, '9S':9, '10D':10, '10H':10, '10C':10, '10S':10, 'JD':11, 'JH':11, 'JC':11, 'JS':11, 'QD':12, 'QH':12, 'QC':12, 'QS':12, 'KD':13, 'KH':13, 'KC':13, 'KS':13, 'AD':14, 'AH':14, 'AC':14, 'AS':14} def compare(c1, c2): ''' returns : - 0 if card1 and card 2 have equal values - 1 if card1 wins over card2 - 1 if card2 wins over card1''' global values if values[c1] < values[c2]: return -1 elif values[c1] > values[c2]: return 1 else: return 0 # Reads input to initialize decks deck1, deck2 = [], [] for i in range(int(input())): deck1.append(input()) for i in range(int(input())): deck2.append(input()) nbRounds = 0 while True: # Each loop is one game round # pile1 and pile2 are the cards played this turn by player 1 and 2 try: pile1, pile2 = [deck1.pop(0)], [deck2.pop(0)] except IndexError: # this error means one of the two decks is empty winner = '1' if len(deck1) > 0 else '2' print(winner, nbRounds) break nbRounds+=1 # In case of war(s) try: # While there is a war, each player plays 3 other cards while compare(pile1[-1], pile2[-1]) == 0: for i in range(4): pile1.append(deck1.pop(0)) pile2.append(deck2.pop(0)) except IndexError: # an index error means one of the two decks got empty # during a war, and both players are equally first print('PAT') break # Moves the 2 piles to the round winner's deck bottom if compare(pile1[-1], pile2[-1]) == -1: deck2 = deck2 + pile1 + pile2 else: deck1 = deck1 + pile1 + pile2


Decrypts a string.
Unprotect-String [-ProtectedString] <String> [-AsSecureString] [<CommonParameters>]
Unprotect-String [-ProtectedString] <String> -Certificate <X509Certificate2> [-UseDirectEncryptionPadding] [-AsSecureString] [<CommonParameters>]
Unprotect-String [-ProtectedString] <String> -Thumbprint <String> [-UseDirectEncryptionPadding] [-AsSecureString] [<CommonParameters>]
Unprotect-String [-ProtectedString] <String> -PrivateKeyPath <String> [-Password <Object>] [-UseDirectEncryptionPadding] [-AsSecureString] [<CommonParameters>]
Unprotect-String [-ProtectedString] <String> -Key <Object> [-AsSecureString] [<CommonParameters>]
Unprotect-String
decrypts a string encrypted via the Data Protection API (DPAPI), RSA, or AES. It uses the DP/RSA APIs to decrypted the secret into an array of bytes, which is then converted to a UTF8 string. Beginning with Carbon 2.0, after conversion, the decrypted array of bytes is cleared in memory.
Also beginning in Carbon 2.0, use the AsSecureString
switch to cause Unprotect-String
to return the decrypted string as a System.Security.SecureString
, thus preventing your secret from hanging out in memory. When converting to a secure string, the secret is decrypted to an array of bytes, and then converted to an array of characters. Each character is appended to the secure string, after which it is cleared in memory. When the conversion is complete, the decrypted byte array is also cleared out in memory.
Unprotect-String
can decrypt using the following techniques.
This is the default. The string must have also been encrypted with the DPAPI. The string must have been encrypted at the current user's scope or the local machine scope.
RSA is an assymetric encryption/decryption algorithm, which requires a public/private key pair. It uses a private key to decrypt a secret encrypted with the public key. Only the private key can decrypt secrets. Protect-String
decrypts with .NET's System.Security.Cryptography.RSACryptoServiceProvider
class.
You can specify the private key in three ways:
System.Security.Cryptography.X509Certificates.X509Certificate2
object, via the Certificate
parameterThumbprint
parameter, or via the PrivateKeyPath
parameter, which can be a certificat provider path, e.g. it starts with cert:\
.PrivateKeyPath
parameterAES is a symmetric encryption/decryption algorithm. You supply a 16-, 24-, or 32-byte key, password, or passphrase with the Key
parameter, and that key is used to decrypt. You must decrypt with the same key you used to encrypt. Unprotect-String
decrypts with .NET's System.Security.Cryptography.AesCryptoServiceProvider
class.
Symmetric encryption requires a random, unique initialization vector (i.e. IV) everytime you encrypt something. If you encrypted your original string with Carbon's Protect-String
function, that IV was pre-pended to the encrypted secret. If you encrypted the secret yourself, you'll need to ensure the original IV is pre-pended to the protected string.
The help topic for Protect-String
demonstrates how to generate an AES key and how to encode it as a base-64 string.
The ability to decrypt with AES was added in Carbon 2.3.0.
| Name | Type | Description | Required? | Pipeline Input | Default Value |
|---|---|---|---|---|---|
| ProtectedString | String | The text to decrypt. |
true | true (ByValue) | |
| Certificate | X509Certificate2 | The private key to use for decrypting. |
true | false | |
| Thumbprint | String | The thumbprint of the certificate, found in one of the Windows certificate stores, to use when decrypting. All certificate stores are searched. The current user must have permission to the private key. |
true | false | |
| PrivateKeyPath | String | The path to the private key to use for encrypting. Must be to an |
true | false | |
| Password | Object | The password for the private key, if it has one. It really should. Can be a |
false | false | |
| UseDirectEncryptionPadding | SwitchParameter | If true, uses Direct Encryption (PKCS#1 v1.5) padding. Otherwise (the default), uses OAEP (PKCS#1 v2) padding. See Encrypt for information. |
false | false | False |
| Key | Object | The key to use to decrypt the secret. Must be a |
true | false | |
| AsSecureString | SwitchParameter | Returns the unprotected string as a secure string. The original decrypted bytes are zeroed out to limit the memory exposure of the decrypted secret, i.e. the decrypted secret will never be in a |
false | false | False |
$password = Unprotect-String -ProtectedString $encryptedPassword
Decrypts a protected string which was encrypted at the current user or default scopes using the DPAPI. The secret must have been encrypted at the current user's scope or at the local computer's scope.
Protect-String -String 'NotSoSecretSecret' -ForUser | Unprotect-String
Demonstrates how Unprotect-String takes input from the pipeline. Adds 'NotSoSecretSecret' to the pipeline.
Unprotect-String -ProtectedString $ciphertext -Certificate $myCert
Demonstrates how to encrypt a secret using RSA with a System.Security.Cryptography.X509Certificates.X509Certificate2
object. You're responsible for creating/loading it. The New-RsaKeyPair
function will create a key pair for you, if you've got a Windows SDK installed.
Unprotect-String -ProtectedString $ciphertext -Thumbprint '44A7C27F3353BC53F82318C14490D7E2500B6D9E'
Demonstrates how to decrypt a secret using RSA with a certificate in one of the Windows certificate stores. All local machine and user stores are searched. The current user must have permission/access to the certificate's private key.
Unprotect -ProtectedString $ciphertext -PrivateKeyPath 'C:\Projects\Security\publickey.cer'
Demonstrates how to encrypt a secret using RSA with a certificate file. The file must be loadable by the System.Security.Cryptography.X509Certificates.X509Certificate
class.
Unprotect -ProtectedString $ciphertext -PrivateKeyPath 'cert:\LocalMachine\My\44A7C27F3353BC53F82318C14490D7E2500B6D9E'
Demonstrates how to encrypt a secret using RSA with a certificate in the store, giving its exact path.
Unprotect-String -ProtectedString 'dNC+yiKdSMAsG2Y3DA6Jzozesie3ZToQT24jB4CU/9eCGEozpiS5MR7R8s3L+PWV' -Key 'gT4XPfvcJmHkQ5tYjY3fNgi7uwG4FB9j'
Demonstrates how to decrypt a secret that was encrypted with a key, password, or passphrase. In this case, we are decrypting with a plaintext password. This functionality was added in Carbon 2.3.0.
Unprotect-String -ProtectedString '19hNiwW0mmYHRlbk65GnSH2VX7tEziazZsEXvOzZIyCT69pp9HLf03YBVYGfg788' -Key (Read-Host -Prompt 'Enter password (must be 16, 24, or 32 characters long):' -AsSecureString)
Demonstrates how to decrypt a secret that was encrypted with a key, password, or passphrase. In this case, we are prompting the user for the password. This functionality was added in Carbon 2.3.0.
Unprotect-String -ProtectedString 'Mpu90IhBq9NseOld7VO3akcJX+nCIZmJv8rz8qfyn7M9m26owetJVzAfhFr0w0Vj' -Key ([byte[]]@(163,163,185,174,205,55,157,219,121,146,251,116,43,203,63,38,73,154,230,112,82,112,151,29,189,135,254,187,164,104,45,30))
Demonstrates how to decrypt a secret that was encrypted with a key, password, or passphrase as an array of bytes. This functionality was added in Carbon 2.3.0.


Implementation of the PC algorithm. [1] Spirtes, Glymour, and Scheines, Causation, Prediction, and Search, 2nd ed. [2] Kalisch & Buhlmann, J Machine Learning Res 8, 613 (2007)
Test whether edge should be oriented under PC algorithm rules for non-collider edges.
| Parameters: |
|
|---|---|
| Returns: | True if edge should be oriented, False otherwise |
Identify and orient colliders in skeleton.
| Parameters: | skel – skeleton graph calculated by get_skel |
|---|---|
| Returns: | partially oriented graph as determined by colliders |
Orient remaining edges after colliders have been oriented.
| Parameters: | G – partially oriented graph (colliders oriented) |
|---|---|
| Returns: | maximally oriented DAG |
Run PC algorithm on statistical data.
| Parameters: |
|
|---|---|
| Returns: | G: causal DAG sep_set: d-separation dict, key = separated node pairs, value = d-separating set |


ok this has nothing to do with hadoop access. even a simple program that
uses sc.parallelize blows up in this way.
so spark-shell works well on the same machine i launch this from.
if i launch a simple program without using kryo for serializer and closure
serialize i get a different error. see below.
at this point it seems to me i have some issue with task serialization???
13/10/18 11:20:37 INFO StandaloneExecutorBackend: Got assigned task 0
13/10/18 11:20:37 INFO StandaloneExecutorBackend: Got assigned task 1
13/10/18 11:20:37 INFO Executor: Running task ID 1
13/10/18 11:20:37 INFO Executor: Running task ID 0
13/10/18 11:20:37 INFO Executor: Fetching
http://<IP_ADDRESS>:41629/jars/simple-project_2.9.3-1.0.jar with timestamp
1382109635095
13/10/18 11:20:37 INFO Utils: Fetching
http://<IP_ADDRESS>:41629/jars/simple-project_2.9.3-1.0.jar to
/tmp/fetchFileTemp378181753997570700.tmp
13/10/18 11:20:37 INFO Executor: Adding
file:/var/lib/spark/app-20131018112035-0014/1/./simple-project_2.9.3-1.0.jar
to class loader
13/10/18 11:20:37 INFO Executor: caught throwable with stacktrace
java.io.StreamCorruptedException: invalid type code: 00
at
java.io.ObjectInputStream$BlockDataInputStream.readBlockHeader(ObjectInputStream.java:2467)
at
java.io.ObjectInputStream$BlockDataInputStream.refill(ObjectInputStream.java:2502)
at
java.io.ObjectInputStream$BlockDataInputStream.read(ObjectInputStream.java:2661)
at
java.io.ObjectInputStream$BlockDataInputStream.read(ObjectInputStream.java:2583)
at java.io.DataInputStream.readFully(DataInputStream.java:178)
at java.io.DataInputStream.readLong(DataInputStream.java:399)
at
java.io.ObjectInputStream$BlockDataInputStream.readLong(ObjectInputStream.java:2803)
at java.io.ObjectInputStream.readLong(ObjectInputStream.java:958)
at
org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:72)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:969)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1852)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1756)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1326)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
at
org.apache.spark.scheduler.ResultTask.readExternal(ResultTask.scala:135)
at
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1795)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1754)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1326)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
at
org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:39)
at
org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:61)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:153)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
On Fri, Oct 18, 2013 at 10:59 AM, Koert Kuipers<EMAIL_ADDRESS>wrote:
> i created a tiny sbt project as described here:
> apache.org/docs/latest/quick-start.html#a-standalone-app-in-scala<http://spark.incubator.apache.org/docs/latest/quick-start.html#a-standalone-app-in-scala>
>
> it has the correct dependencies: spark-core and the correct hadoop-client
> for my platform. i tried both the generic spark-core dependency and
> spark-core dependency compiled against my platform. it runs fine in local
> mode, but when i switch to the cluster i still always get the following
> exceptions on tasks:
>
> 13/10/18 10:25:53 ERROR Executor: Uncaught exception in thread
> Thread[pool-5-thread-1,5,main]
>
> java.lang.NullPointerException
> at
> org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:187)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
> at java.lang.Thread.run(Thread.java:662)
>
> after adding some additional debugging to Executor i see the cause is this:
> 13/10/18 10:54:47 INFO Executor: caught throwable with stacktrace
> java.lang.NullPointerException
> at
> org.apache.spark.executor.Executor$TaskRunner$$anonfun$run$2.apply(Executor.scala:155)
> at
> org.apache.spark.executor.Executor$TaskRunner$$anonfun$run$2.apply(Executor.scala:155)
> at org.apache.spark.Logging$class.logInfo(Logging.scala:48)
> at org.apache.spark.executor.Executor.logInfo(Executor.scala:36)
> at
> org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:155)
>
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
> at java.lang.Thread.run(Thread.java:662)
>
> so it seems the offending line is:
> logInfo("Its epoch is " + task.epoch)
>
> i am guessing accessing epoch on the task is throwing the NPE. any ideas?
>
>
>
> On Thu, Oct 17, 2013 at 8:12 PM, Koert Kuipers<EMAIL_ADDRESS>wrote:
>
>> sorry one more related question:
>> i compile against a spark build for hadoop 1.0.4, but the actual
>> installed version of spark is build against cdh4.3.0-mr1. this also used to
>> work, and i prefer to do this so i compile against a generic spark build.
>> could this be the issue?
>>
>>
>> On Thu, Oct 17, 2013 at 8:06 PM, Koert Kuipers<EMAIL_ADDRESS>wrote:
>>
>>> i have my spark and hadoop related dependencies as "provided" for my
>>> spark job. this used to work with previous versions. are these now supposed
>>> to be compile/runtime/default dependencies?
>>>
>>>
>>> On Thu, Oct 17, 2013 at 8:04 PM, Koert Kuipers<EMAIL_ADDRESS>>>>
>>>> yes i did that and i can see the correct jars sitting in lib_managed
>>>>
>>>>
>>>> On Thu, Oct 17, 2013 at 7:56 PM, Matei Zaharia<EMAIL_ADDRESS>>>>> > wrote:
>>>>
>>>>> Koert, did you link your Spark job to the right version of HDFS as
>>>>> well? In Spark 0.8, you have to add a Maven dependency on "hadoop-client"
>>>>> for your version of Hadoop. See
>>>>> http://spark.incubator.apache.org/docs/latest/quick-start.html#a-standalone-app-in-scala
for
>>>>> example.
>>>>>
>>>>> Matei
>>>>>
>>>>> On Oct 17, 2013, at 4:38 PM, Koert Kuipers<EMAIL_ADDRESS>wrote:
>>>>>
>>>>> i got the job a little further along by also setting this:
>>>>> System.setProperty("spark.closure.serializer",
>>>>> "org.apache.spark.serializer.KryoSerializer")
>>>>>
>>>>> not sure why i need to... but anyhow, now my workers start and then
>>>>> they blow up on this:
>>>>>
>>>>> 13/10/17 19:22:57 ERROR Executor: Uncaught exception in thread
>>>>> Thread[pool-5-thread-1,5,main]
>>>>> java.lang.NullPointerException
>>>>> at
>>>>> org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:187)
>>>>> at
>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
>>>>> at
>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
>>>>> at java.lang.Thread.run(Thread.java:662)
>>>>>
>>>>>
>>>>> which is:
>>>>> val metrics = attemptedTask.flatMap(t => t.metrics)
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Thu, Oct 17, 2013 at 7:30 PM, dachuan<EMAIL_ADDRESS>wrote:
>>>>>
>>>>>> thanks, Mark.
>>>>>>
>>>>>>
>>>>>> On Thu, Oct 17, 2013 at 6:36 PM, Mark Hamstra <
>>>>>><EMAIL_ADDRESS>wrote:
>>>>>>
>>>>>>> SNAPSHOTs are not fixed versions, but are floating names associated
>>>>>>> with whatever is the most recent code. So, Spark 0.8.0 is the
current
>>>>>>> released version of Spark, which is exactly the same today as
it was
>>>>>>> yesterday, and will be the same thing forever. Spark 0.8.1-SNAPSHOT
is
>>>>>>> whatever is currently in branch-0.8. It changes every time new
code is
>>>>>>> committed to that branch (which should be just bug fixes and
the few
>>>>>>> additional features that we wanted to get into 0.8.0, but that
didn't quite
>>>>>>> make it.) Not too long from now there will be a release of Spark
0.8.1, at
>>>>>>> which time the SNAPSHOT will got to 0.8.2 and 0.8.1 will be forever
frozen.
>>>>>>> Meanwhile, the wild new development is taking place on the master
branch,
>>>>>>> and whatever is currently in that branch becomes 0.9.0-SNAPSHOT.
This
>>>>>>> could be quite different from day to day, and there are no guarantees
that
>>>>>>> things won't be broken in 0.9.0-SNAPSHOT. Several months from
now there
>>>>>>> will be a release of Spark 0.9.0 (unless the decision is made
to bump the
>>>>>>> version to 1.0.0), at which point the SNAPSHOT goes to 0.9.1
and the whole
>>>>>>> process advances to the next phase of development.
>>>>>>>
>>>>>>> The short answer is that releases are stable, SNAPSHOTs are not,
and
>>>>>>> SNAPSHOTs that aren't on maintenance branches can break things.
You make
>>>>>>> your choice of which to use and pay the consequences.
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Oct 17, 2013 at 3:18 PM, dachuan<EMAIL_ADDRESS>wrote:
>>>>>>>
>>>>>>>> yeah, I mean 0.9.0-SNAPSHOT. I use git clone and that's what
I
>>>>>>>> got.. what's the difference? I mean SNAPSHOT and non-SNAPSHOT.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Oct 17, 2013 at 6:15 PM, Mark Hamstra <
>>>>>>>><EMAIL_ADDRESS>wrote:
>>>>>>>>
>>>>>>>>> Of course, you mean 0.9.0-SNAPSHOT. There is no Spark
0.9.0, and
>>>>>>>>> won't be for several months.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thu, Oct 17, 2013 at 3:11 PM, dachuan<EMAIL_ADDRESS>>>>>>>>>>
>>>>>>>>>> I'm sorry if this doesn't answer your question directly,
but I
>>>>>>>>>> have tried spark 0.9.0 and hdfs 1.0.4 just now, it
works..
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Thu, Oct 17, 2013 at 6:05 PM, Koert Kuipers<EMAIL_ADDRESS>>>>>>>>>>> > wrote:
>>>>>>>>>>
>>>>>>>>>>> after upgrading from spark 0.7 to spark 0.8 i
can no longer
>>>>>>>>>>> access any files on HDFS.
>>>>>>>>>>> i see the error below. any ideas?
>>>>>>>>>>>
>>>>>>>>>>> i am running spark standalone on a cluster that
also has
>>>>>>>>>>> CDH4.3.0 and rebuild spark accordingly. the jars
in lib_managed look good
>>>>>>>>>>> to me.
>>>>>>>>>>>
>>>>>>>>>>> i noticed similar errors in the mailing list
but found no
>>>>>>>>>>> suggested solutions.
>>>>>>>>>>>
>>>>>>>>>>> thanks! koert
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 13/10/17 17:43:23 ERROR Executor: Exception in
task ID 0
>>>>>>>>>>> java.io.EOFException
>>>>>>>>>>> at java.io.ObjectInputStream$BlockDataInputStream.readFully(ObjectInputStream.java:2703)
>>>>>>>>>>> at java.io.ObjectInputStream.readFully(ObjectInputStream.java:1008)
>>>>>>>>>>> at org.apache.hadoop.io.DataOutputBuffer$Buffer.write(DataOutputBuffer.java:68)
>>>>>>>>>>> at org.apache.hadoop.io.DataOutputBuffer.write(DataOutputBuffer.java:106)
>>>>>>>>>>> at org.apache.hadoop.io.UTF8.readChars(UTF8.java:258)
>>>>>>>>>>> at org.apache.hadoop.io.UTF8.readString(UTF8.java:250)
>>>>>>>>>>> at org.apache.hadoop.mapred.FileSplit.readFields(FileSplit.java:87)
>>>>>>>>>>> at org.apache.hadoop.io.ObjectWritable.readObject(ObjectWritable.java:280)
>>>>>>>>>>> at org.apache.hadoop.io.ObjectWritable.readFields(ObjectWritable.java:75)
>>>>>>>>>>> at org.apache.spark.SerializableWritable.readObject(SerializableWritable.scala:39)
>>>>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
>>>>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>>>>>>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:597)
>>>>>>>>>>> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:969)
>>>>>>>>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1852)
>>>>>>>>>>> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1756)
>>>>>>>>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1326)
>>>>>>>>>>> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1950)
>>>>>>>>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1874)
>>>>>>>>>>> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1756)
>>>>>>>>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1326)
>>>>>>>>>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
>>>>>>>>>>> at org.apache.spark.scheduler.ResultTask.readExternal(ResultTask.scala:135)
>>>>>>>>>>> at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1795)
>>>>>>>>>>> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1754)
>>>>>>>>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1326)
>>>>>>>>>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
>>>>>>>>>>> at org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:39)
>>>>>>>>>>> at org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:61)
>>>>>>>>>>> at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:153)
>>>>>>>>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
>>>>>>>>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
>>>>>>>>>>> at java.lang.Thread.run(Thread.java:662)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Dachuan Huang
>>>>>>>>>> Cellphone:<PHONE_NUMBER>
>>>>>>>>>> 2015 Neil Avenue
>>>>>>>>>> Ohio State University
>>>>>>>>>> Columbus, Ohio
>>>>>>>>>> U.S.A.
>>>>>>>>>> 43210
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Dachuan Huang
>>>>>>>> Cellphone:<PHONE_NUMBER>
>>>>>>>> 2015 Neil Avenue
>>>>>>>> Ohio State University
>>>>>>>> Columbus, Ohio
>>>>>>>> U.S.A.
>>>>>>>> 43210
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Dachuan Huang
>>>>>> Cellphone:<PHONE_NUMBER>
>>>>>> 2015 Neil Avenue
>>>>>> Ohio State University
>>>>>> Columbus, Ohio
>>>>>> U.S.A.
>>>>>> 43210
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>
|


--- layout: page title: Fresh to Your Inbox meta_description: Get fresh Constantly Learning posts delivered to your inbox. --- Want the freshest content delivered to your inbox when it is written?


Perception, Planning, and Control
© Russ Tedrake, 2020-2021
Last modified .
How to cite these notes, use annotations, and give feedback.
Note: These are working notes used for a course being taught at MIT. They will be updated throughout the Fall 2021 semester.
| Previous Chapter | Table of contents | Next Chapter |
There are a few more essential skills that we need in our toolbox. In this chapter, we will explore some of the powerful methods of kinematic trajectory motion planning.
We'll focus on the problem of moving an arm through space in this chapter, because that is the classical and very important motivation. But I need to cover this now for another reason, too: it will also soon help us think about programming a more dexterous hand.
I do need to make one important caveat. Despite having done some work in this field myself, I actually really dislike the problem formulation of collision-free motion planning. I think that on the whole, robots are too afraid of bumping into the world (because things still go wrong when they do). I don't think humans are solving these complex geometric problems every time we reach... even when we are reaching in dense clutter (I actually suspect that we are very bad at it). I would much rather see robots that perform well even with very coarse / approximate plans for moving through a cluttered environment, that are not afraid to make incidental contacts, and that can still accomplish the task when they do!
The goal of this chapter is to solve for motion trajectories. But I would argue that if you really understand how to solve inverse kinematics, then you've got most of what you need to plan trajectories.
We know that that the forward kinematics give us a (nonlinear) mapping from joint angles to e.g. the pose of the gripper: $X^G = f_{kin}(q)$. So, naturally, the problem of inverse kinematics (IK) is about solving for the inverse map, $q = f^{-1}_{kin}(X^G).$ Indeed, that is perhaps the most common and classical question studied in inverse kinematics. But I want you to think of inverse kinematics as a much richer topic than that.
For example, when we were evaluating grasp candidates for bin picking, we had only a soft preference on the orientation of the hand relative to some antipodal grasp. In that case, a full 6 DOF pose would have been an overly constrained specification. And often we have many constraints on the kinematics: some in joint space (like joint limits) and others in Cartesian space (like non-penetration constraints). So really, inverse kinematics is about solving for joint angles in a very rich landscape of objectives and constraints.
With its obvious importance in robotics, you probably won't be
surprised to hear that there is an extensive literature on inverse
kinematics. But you may be surprised at how extensive and complete the
solutions can get. The forward kinematics, $f_{kin}$, is a nonlinear
function in general, but it is a very structured one. In fact, with rare
exceptions (like if your robot has a helical
joint, aka screw joint), the equations governing the valid Cartesian
positions of our robots are actually polynomial. "But wait! What
about all of those sines and cosines in my kinematic equations?" you say.
The trigonometric terms come when we want to relate joint angles with
Cartesian coordinates. In $\Re^3$, for two points, $A$ and $B$, on the
same rigid body, the (squared) distance between them, $\|p^A - p^B\|^2,$
is a constant. And a joint is just a polynomial constraint between
positions on adjoining bodies, e.g. that they occupy the same point in
Cartesian space. See
Understanding the solutions to polynomial equations is the subject of
algebraic geometry. There is a deep literature on the theory, on symbolic
algorithms, and on numerical algorithms. For even very complex kinematic
topologies, such as four-bar
linkages and Stewart-Gough
platforms, we can count the number of solutions, and/or understand the
continuous manifold of solutions. For instance,
While the algebraic-geometry methods are mostly targeted for offline
global analysis, they are not designed for fast real-time inverse
kinematics solutions needed in a control loop. The most popular tool
these days for real-time inverse kinematics for six- or seven-DOF
manipulators is a tool called "IKFast", described in Section 4.1
of
These closed-form solutions are important to understand because they provide deep insight into the equations, and because they can be fast enough to use inside a more sophisticated solution approach. But the closed-form solutions don't provide the rich specification I advocated for above; in particular, they break down once we have inequality constraints instead of equality constraints. For those richer specifications, we will turn to optimization.
We have already discussed the idea of solving differential inverse kinematics as an optimization problem. This was a very nice use case, where the
Colab.
Write minimal constraints.
Collision avoidance constraints.
Global IK.
For this exercise, you will implement a optimization-based inverse kinematics solver to open a cupboard door. You will work exclusively in this notebook. You will be asked to complete the following steps:
For this exercise, you will implement and analyze the RRT algorithm introduced in class. You will work exclusively in this notebook. You will be asked to complete the following steps:
| Previous Chapter | Table of contents | Next Chapter |


Track Suggester
Answer these questions and this site will suggest an Epicodus track.
Your name:
What do you want to do?
General software
Games
Backend
Interactive web apps
Please pick something!
Where would you like to work?
A large enterprise
A government agency
A small startup
An independent company
Please pick something!
Interpeted or compiled?
Interpreted
Compiled
Bytecode
Please pick something!
Do you like Kung Fu?
Yes
No
Submit


{% extends "base.html" %} {% block content %}
Creators:
Audrey Kintisch (ADMIN<EMAIL_ADDRESS>Garcia (Hung-Wei) Lu<EMAIL_ADDRESS>Ethan Foster<EMAIL_ADDRESS>Krystal (Soo Jung) Kim: skim18@nmhschool.org


England to wear black armbands against South Africa as tribute to Bob Willis
Willis died last week at the age of 70
by Adam HamdaniEngland players will wear black armbands during the first Test of their tour of South Africa in honour of former bowler Bob Willis.
Willis, who captained England before turning to punditry after retirement in 1984, died last week at the age of 70.
The England and Wales Cricket Board announced its plans to pay tribute to England's fourth highest wicket-taker of all time at SuperSport Park in Centurion later this month.
An ECB spokesperson said: "The team will wear black armbands in the first Test in South Africa as a tribute to Bob Willis."
The first Test begins on Boxing Day as part of a four-match series against the Proteas, followed by three one-day internationals and three T20 clashes.


|
MRSL DecompUtil Library
0.1
An implementaion of convex decomposition over point cloud
|
Seed Decomp Class. More...
#include <seed_decomp.h>
Public Member Functions | |
| SeedDecomp () | |
| Simple constructor. | |
| SeedDecomp (const Vecf< Dim > &p) | |
| Basic constructor. More... | |
| void | dilate (decimal_t radius) |
| Inflate the seed with a sphere. More... | |
| Vecf< Dim > | get_seed () const |
| Get the center. | |
| Public Member Functions inherited from DecompBase< Dim > | |
| DecompBase () | |
| Null constructor. | |
| void | set_local_bbox (const Vecf< Dim > &bbox) |
| Adding local bounding box around line seg. More... | |
| void | set_obs (const vec_Vecf< Dim > &obs) |
| Import obstacle points. | |
| vec_Vecf< Dim > | get_obs () const |
| Get obstacel points. | |
| Ellipsoid< Dim > | get_ellipsoid () const |
| Get ellipsoid. | |
| Polyhedron< Dim > | get_polyhedron () const |
| Get polyhedron. | |
| virtual void | shrink (double shrink_distance) |
| Shrink the polyhedron. More... | |
Protected Member Functions | |
| void | add_local_bbox (Polyhedron< Dim > &Vs) |
| Add the bounding box. | |
| Protected Member Functions inherited from DecompBase< Dim > | |
| void | find_polyhedron () |
Protected Attributes | |
| Vecf< Dim > | p_ |
| Seed location. | |
| Protected Attributes inherited from DecompBase< Dim > | |
| vec_Vecf< Dim > | obs_ |
| Obstacles, input. | |
| Ellipsoid< Dim > | ellipsoid_ |
| Output ellipsoid. | |
| Polyhedron< Dim > | polyhedron_ |
| Output polyhedron. | |
| Vecf< Dim > | local_bbox_ {Vecf<Dim>::Zero()} |
| Local bounding box along the line segment. | |
Seed Decomp Class.
Dilate around the given point
|
inline |
Basic constructor.
| p1 | One end of the line seg |
| p2 | The other end of the line seg |
|
inlinevirtual |