- CAgent - Class in org.cooperari.core.aspectj
-
Cooperari agent.
- CAllFeatures - Class in org.cooperari.feature
-
Record of all implemented features.
- CAlways - Annotation Type in org.cooperari.config
-
Specify hotspots that should always be reached by a trial in a test session.
- CArray - Class in org.cooperari
-
Utility methods for array access yield points.
- CAtomicObjectsFeature - Class in org.cooperari.feature.atomic
-
Feature handler for yield points defined by calls to methods in the java.util.concurrent.atomic
package.
- CAtomicObjectsFeature() - Constructor for class org.cooperari.feature.atomic.CAtomicObjectsFeature
-
- CBaseConfiguration - Class in org.cooperari.config
-
Default configuration for test execution.
- CBlockingOperationEvent - Enum in org.cooperari.core
-
An enumeration of common operation outcomes used by several primitives.
- CCheckedExceptionError - Error in org.cooperari.errors
-
Error class used to wrap a checked exception.
- CCheckedExceptionError(Throwable) - Constructor for error org.cooperari.errors.CCheckedExceptionError
-
Constructs the error.
- CConfiguration - Class in org.cooperari.core
-
Configuration object defined by annotations.
- CConfiguration(AnnotatedElement) - Constructor for class org.cooperari.core.CConfiguration
-
Constructs a new configuration.
- CConfigurationError - Error in org.cooperari.errors
-
Configuration error.
- CConfigurationError(String) - Constructor for error org.cooperari.errors.CConfigurationError
-
Constructs a new configuration error.
- CConfigurationError(String, Throwable) - Constructor for error org.cooperari.errors.CConfigurationError
-
Constructs a new configuration error.
- CCooperativeOnly - Annotation Type in org.cooperari.junit
-
Annotation to indicate that cooperative semantics
are required JUnit test method to execute.
- CCoverage - Interface in org.cooperari
-
Interface for providers of basic test coverage information.
- CCoverageLog - Class in org.cooperari.core
-
Coverage log.
- CCoverageLog() - Constructor for class org.cooperari.core.CCoverageLog
-
Constructs a new coverage log.
- CDataAccessFeature - Class in org.cooperari.feature.data
-
Handler for data access yield points.
- CDataAccessFeature() - Constructor for class org.cooperari.feature.data.CDataAccessFeature
-
- CDeadlockError - Error in org.cooperari.errors
-
Deadlock error.
- CDeadlockError(String) - Constructor for error org.cooperari.errors.CDeadlockError
-
Constructs a new race error.
- CDetectResourceDeadlocks - Annotation Type in org.cooperari.config
-
Configure detection of resource deadlocks.
- CEngine - Class in org.cooperari.core
-
Cooperative execution engine.
- CEngine(CRuntime, CScheduler, Runnable...) - Constructor for class org.cooperari.core.CEngine
-
Constructs a new cooperative scheduler.
- CError - Error in org.cooperari.errors
-
Base class for Cooperari errors.
- CError() - Constructor for error org.cooperari.errors.CError
-
Constructs an error with no arguments.
- CError(String) - Constructor for error org.cooperari.errors.CError
-
Constructs error with an associated error message.
- CError(Throwable) - Constructor for error org.cooperari.errors.CError
-
Constructs error with an associated cause.
- CError(String, Throwable) - Constructor for error org.cooperari.errors.CError
-
Constructs error with a message and a cause.
- CFeature - Interface in org.cooperari.feature
-
Feature handler interface.
- CGenerateCoverageReports - Annotation Type in org.cooperari.config
-
Configure the generation of coverage reports per test.
- CGroupProgramState - Class in org.cooperari.core.scheduling
-
- CGroupProgramState(List<? extends CThreadHandle>, List<? extends CThreadHandle>) - Constructor for class org.cooperari.core.scheduling.CGroupProgramState
-
Constructor.
- CHotspotError - Error in org.cooperari.errors
-
Hotspot reachability error.
- CHotspotError(Class<?>, Collection<String>) - Constructor for error org.cooperari.errors.CHotspotError
-
Constructs a new error for given hotspot reachability annotation and a
collection of related hotspots.
- CHotspotError(Class<?>, String) - Constructor for error org.cooperari.errors.CHotspotError
-
Constructs a new error for given reachability annotation and specific
hotspot.
- CHotspotFeature - Class in org.cooperari.feature.hotspots
-
Hotspot reachibility feature.
- CHotspotFeature() - Constructor for class org.cooperari.feature.hotspots.CHotspotFeature
-
- CInstrument - Annotation Type in org.cooperari.config
-
Configure bytecode instrumentation.
- CInternalError - Error in org.cooperari.errors
-
Error thrown due to an unexpected internal Cooperari error.
- CInternalError() - Constructor for error org.cooperari.errors.CInternalError
-
Constructs an error with no arguments.
- CInternalError(String) - Constructor for error org.cooperari.errors.CInternalError
-
Constructs error with an associated error message.
- CInternalError(Throwable) - Constructor for error org.cooperari.errors.CInternalError
-
Constructs error with an associated cause.
- CInternalError(String, Throwable) - Constructor for error org.cooperari.errors.CInternalError
-
Constructs error with a message and a cause.
- CJUnitRunner - Class in org.cooperari.junit
-
JUnit cooperative test runner.
- CJUnitRunner(Class<?>) - Constructor for class org.cooperari.junit.CJUnitRunner
-
Constructs a new runner.
- CLog - Class in org.cooperari.core.util
-
Message log.
- CLog(PrintStream, CLog.Option...) - Constructor for class org.cooperari.core.util.CLog
-
Constructs a new log using the supplied print stream for output.
- CLog(File, CLog.Option...) - Constructor for class org.cooperari.core.util.CLog
-
Constructs a new log redirecting output to given file.
- CLog(File, CLog, CLog.Option...) - Constructor for class org.cooperari.core.util.CLog
-
Constructs a new log redirecting output to given file and with an
associated parent log.
- CLog(PrintStream, CLog, CLog.Option...) - Constructor for class org.cooperari.core.util.CLog
-
Constructs a new log using the supplied print stream for output and
an already defined log as parent.
- CLog.Option - Enum in org.cooperari.core.util
-
Logging options.
- close() - Method in class org.cooperari.core.util.CLog
-
Close the log.
- close() - Method in class org.cooperari.core.util.CReport
-
Close the report and underlying output stream.
- CMaxTrials - Annotation Type in org.cooperari.config
-
Configure the maximum number of trials per test method.
- CMonitorFeature - Class in org.cooperari.feature.monitor
-
Handler for monitor yield points.
- CMonitorFeature() - Constructor for class org.cooperari.feature.monitor.CMonitorFeature
-
- CMultipleExceptionsError - Error in org.cooperari.errors
-
Aggregation of exceptions thrown by multiple threads.
- CMultipleExceptionsError(List<Throwable>) - Constructor for error org.cooperari.errors.CMultipleExceptionsError
-
Constructs a new error from a collection of
Throwable
objects.
- CNever - Annotation Type in org.cooperari.config
-
Specify hotspots that should never be reached by a trial in a test session.
- CNonCooperativeModeError - Error in org.cooperari.errors
-
Exception thrown when some functionality requires a cooperative execution
environment, and is used outside one.
- CNonCooperativeModeError() - Constructor for error org.cooperari.errors.CNonCooperativeModeError
-
Constructs a new error.
- compareTo(CYieldPoint) - Method in class org.cooperari.core.CYieldPointImpl
-
- compareTo(CThreadLocation) - Method in class org.cooperari.core.scheduling.CThreadLocation
-
Compare with given thread location.
- compile(Collection<Class<?>>, String, File, File, List<String>) - Static method in class org.cooperari.core.aspectj.AspectCompiler
-
- complementCoverageInfo(CCoverageLog) - Method in enum org.cooperari.core.aspectj.AgentFacade
-
Complement coverage info.
- consumeNotification() - Method in class org.cooperari.feature.monitor.Monitor
-
Consume a notification.
- continueTrials() - Method in class org.cooperari.core.scheduling.CScheduler
-
Query method to determine if further test trials are necessary.
- continueTrials() - Method in class org.cooperari.core.scheduling.Memini
-
Check if further trials are necessary.
- cooperativeSemanticsRequired() - Method in interface org.cooperari.feature.CFeature
-
Indicates if the feature should be activated only
when cooperative semantics are enabled.
- cooperativeSemanticsRequired() - Method in class org.cooperari.feature.hotspots.CHotspotFeature
-
- COperation<T> - Class in org.cooperari.core
-
Base class for cooperative operations.
- COperation() - Constructor for class org.cooperari.core.COperation
-
Constructor w/no arguments.
- COperation(Object...) - Constructor for class org.cooperari.core.COperation
-
Constructor.
- CPreemptiveOnly - Annotation Type in org.cooperari.junit
-
Annotation to bypass cooperative execution for a JUnit test method.
- CProgramState - Interface in org.cooperari.core.scheduling
-
AbstRepresentation of program state.
- CProgramState.CElement - Interface in org.cooperari.core.scheduling
-
Program state element.
- CProgramStateFactory - Enum in org.cooperari.core.scheduling
-
Program state factory.
- CRaceDetection - Annotation Type in org.cooperari.config
-
Annotation to enable race detection.
- CRaceError - Error in org.cooperari.errors
-
Data race error.
- CRaceError(String) - Constructor for error org.cooperari.errors.CRaceError
-
Constructs a new race error.
- CRawProgramState - Class in org.cooperari.core.scheduling
-
- CRawProgramState(List<? extends CThreadHandle>, List<? extends CThreadHandle>) - Constructor for class org.cooperari.core.scheduling.CRawProgramState
-
Constructor.
- CRawTuple - Class in org.cooperari.core.util
-
Raw tuple data.
- CRawTuple(Object...) - Constructor for class org.cooperari.core.util.CRawTuple
-
Constructs a new signature.
- cRead(boolean[], int) - Static method in class org.cooperari.CArray
-
Read from an array of type boolean
.
- cRead(byte[], int) - Static method in class org.cooperari.CArray
-
Read from an array of type byte
.
- cRead(short[], int) - Static method in class org.cooperari.CArray
-
Read from an array of type short
.
- cRead(char[], int) - Static method in class org.cooperari.CArray
-
Read from an array of type char
.
- cRead(int[], int) - Static method in class org.cooperari.CArray
-
Read from an array of type int
.
- cRead(long[], int) - Static method in class org.cooperari.CArray
-
Read from an array of type long
.
- cRead(float[], int) - Static method in class org.cooperari.CArray
-
Read from an array of type float
.
- cRead(double[], int) - Static method in class org.cooperari.CArray
-
Read from an array of type double
.
- cRead(T[], int) - Static method in class org.cooperari.CArray
-
Read an array of object references.
- create(CInstrument, Class<?>) - Static method in class org.cooperari.core.aspectj.WeavingConfiguration
-
Get a weave configuration for a given class taking a
CInstrument
instance as source configuration.
- create(List<? extends CThreadHandle>, List<? extends CThreadHandle>) - Method in enum org.cooperari.core.scheduling.CProgramStateFactory
-
Create a new program state.
- create() - Method in enum org.cooperari.core.scheduling.CSchedulerFactory
-
Create a new program state.
- createFile(String) - Method in enum org.cooperari.core.CWorkspace
-
Create a file in the workspace directory.
- createLog(String, String, CLog.Option...) - Method in enum org.cooperari.core.CWorkspace
-
Create a log.
- createNewThread(Runnable, CUncaughtExceptionHandler) - Method in class org.cooperari.core.CEngine
-
Tell the engine to start a new thread.
- createReport(String, String) - Method in enum org.cooperari.core.CWorkspace
-
Create a report.
- CReport - Class in org.cooperari.core.util
-
Report file.
- CReport(File) - Constructor for class org.cooperari.core.util.CReport
-
Create a report using a given file for output.
- CResourceDeadlockError - Error in org.cooperari.feature.monitor
-
Exception thrown due to a deadlock error.
- CResourceDeadlockError(CThread, List<Monitor>) - Constructor for error org.cooperari.feature.monitor.CResourceDeadlockError
-
Constructor.
- cResume() - Method in class org.cooperari.core.CThread
-
Resume the thread after a cooperative yield.
- CRuntime - Class in org.cooperari.core
-
Cooperari runtime.
- CRuntime(CConfiguration) - Constructor for class org.cooperari.core.CRuntime
-
Constructor.
- CScheduler - Class in org.cooperari.core.scheduling
-
Abstract class for scheduler implementations.
- CScheduler() - Constructor for class org.cooperari.core.scheduling.CScheduler
-
- CSchedulerFactory - Enum in org.cooperari.core.scheduling
-
Scheduler factory enumeration.
- CScheduling - Annotation Type in org.cooperari.config
-
Configure thread scheduling.
- CSession - Class in org.cooperari.core
-
Test session executor.
- CSession() - Constructor for class org.cooperari.core.CSession
-
- CSession.ExecutionHandler - Interface in org.cooperari.core
-
Exception handler.
- CSometimes - Annotation Type in org.cooperari.config
-
Specify hotspots that should be reached at least by one trial in a test session.
- cStop(Throwable) - Method in class org.cooperari.core.CThread
-
Order thread to stop.
- CSunMiscUnsafeFeature - Class in org.cooperari.feature.unsafe
-
Feature handler for yield points defined by calls to methods in the sun.misc.Unsafe
class.
- CSunMiscUnsafeFeature() - Constructor for class org.cooperari.feature.unsafe.CSunMiscUnsafeFeature
-
- CSystem - Class in org.cooperari
-
Cooperari system facade.
- CTest - Interface in org.cooperari
-
Cooperative test.
- CTestResult - Interface in org.cooperari
-
Execution result for a cooperative test.
- CTestResultPool - Enum in org.cooperari.junit
-
Test result pool that provides a map from alive
Description
objects
to
CTestResult
objects.
- CThread - Class in org.cooperari.core
-
Cooperative thread.
- CThread(CEngine, Runnable, int) - Constructor for class org.cooperari.core.CThread
-
Constructs a new cooperative thread.
- CThreadFeature - Class in org.cooperari.feature.thread
-
Thread life-cycle yield points feature.
- CThreadFeature() - Constructor for class org.cooperari.feature.thread.CThreadFeature
-
- CThreadHandle - Interface in org.cooperari.core.scheduling
-
Thread handle.
- CThreadLocation - Class in org.cooperari.core.scheduling
-
Thread location information.
- CThreadLocation(CYieldPoint) - Constructor for class org.cooperari.core.scheduling.CThreadLocation
-
Constructs location based on yield point.
- CThreadLocation(CYieldPoint, int) - Constructor for class org.cooperari.core.scheduling.CThreadLocation
-
Constructs yield point using supplied thread location key and stage
identification.
- CThreadMappings - Class in org.cooperari.core
-
- CThreadMappings() - Constructor for class org.cooperari.core.CThreadMappings
-
- CThreadRunnerFeature - Class in org.cooperari.feature.threadrunner
-
- CThreadRunnerFeature() - Constructor for class org.cooperari.feature.threadrunner.CThreadRunnerFeature
-
- CThreadState - Enum in org.cooperari.core
-
Cooperative thread state.
- CTimeLimit - Annotation Type in org.cooperari.config
-
Configure a time limit for test trials.
- CTrace - Class in org.cooperari.core
-
Cooperative execution trace.
- CTrace(CCoverageLog, CTraceOptions) - Constructor for class org.cooperari.core.CTrace
-
Constructs a new trace.
- CTrace.EventType - Enum in org.cooperari.core
-
Event types.
- CTraceOptions - Annotation Type in org.cooperari.config
-
Configure options for execution trace files.
- CUncaughtExceptionHandler - Class in org.cooperari.core
-
Handler for uncaught thread exceptions.
- CUncaughtExceptionHandler() - Constructor for class org.cooperari.core.CUncaughtExceptionHandler
-
Constructs a new uncaught exception handler.
- CurrentThread - Class in org.cooperari.feature.thread
-
Operation for sending a (simulated) spurious wakeup to another thread.
- CurrentThread() - Constructor for class org.cooperari.feature.thread.CurrentThread
-
- CustomYieldPoint - Class in org.cooperari.core
-
Custom yield point definition.
- CustomYieldPoint(Class<?>) - Constructor for class org.cooperari.core.CustomYieldPoint
-
Construct a custom yield point for calls to all declared methods of a given class.
- CustomYieldPoint(Method) - Constructor for class org.cooperari.core.CustomYieldPoint
-
Construct a custom yield point for a Java method call.
- CustomYieldPointOperation - Class in org.cooperari.core
-
Method call operation.
- CustomYieldPointOperation() - Constructor for class org.cooperari.core.CustomYieldPointOperation
-
Constructs a new method call operation.
- CVersion - Class in org.cooperari
-
Cooperari version information.
- CWaitDeadlockError - Error in org.cooperari.errors
-
Error thrown when all threads in a cooperative session
are in waiting state.
- CWaitDeadlockError(Collection<CThread>) - Constructor for error org.cooperari.errors.CWaitDeadlockError
-
Constructs an error.
- CWorkspace - Enum in org.cooperari.core
-
Keeps a record of the Cooperari workspace directory and
global configurations, and provides associated utility methods.
- CWorkspace.Option - Enum in org.cooperari.core
-
Workspace options.
- cWrite(boolean[], int, boolean) - Static method in class org.cooperari.CArray
-
Write to an array of type boolean
.
- cWrite(byte[], int, byte) - Static method in class org.cooperari.CArray
-
Write to an array of type byte
.
- cWrite(short[], int, short) - Static method in class org.cooperari.CArray
-
Write to an array of type short
.
- cWrite(char[], int, char) - Static method in class org.cooperari.CArray
-
Write to an array of type char
.
- cWrite(int[], int, int) - Static method in class org.cooperari.CArray
-
Write to an array of type int
.
- cWrite(long[], int, long) - Static method in class org.cooperari.CArray
-
Write to an array of type long
.
- cWrite(float[], int, float) - Static method in class org.cooperari.CArray
-
Write to an array of type float
.
- cWrite(double[], int, double) - Static method in class org.cooperari.CArray
-
Write to an array of type double
.
- cWrite(T[], int, T) - Static method in class org.cooperari.CArray
-
Write to an array of object references.
- cYield(COperation<T>) - Method in class org.cooperari.core.CThread
-
Cooperatively yield (new version).
- CYieldPoint - Interface in org.cooperari.core.scheduling
-
Yield point for a thread.
- CYieldPointImpl - Class in org.cooperari.core
-
Yield point implementation.
- CYieldPointImpl(String, String, int) - Constructor for class org.cooperari.core.CYieldPointImpl
-
Constructs a yield point from supplied signature, file, and line.
- CYieldPointImpl(JoinPoint.StaticPart) - Constructor for class org.cooperari.core.CYieldPointImpl
-
Constructs a yield point from supplied AspectJ join point information
- edges() - Method in class org.cooperari.core.util.ResourceGraph
-
Get number of edges.
- enableDump(String) - Method in class org.cooperari.core.aspectj.WeavingConfiguration
-
Enable class dump before and after weaving for classes that match a given
pattern.
- enableDumpForAllClasses() - Method in class org.cooperari.core.aspectj.WeavingConfiguration
-
Enable class dump for all classes.
- enableSpuriousWakeups() - Method in class org.cooperari.core.CThread
-
Enable the possibility of spurious wakeups.
- endRead(Object, Object) - Method in class org.cooperari.feature.data.RaceDetector
-
Signal end of read access.
- endTestSession() - Method in class org.cooperari.feature.hotspots.HotspotHandler
-
Method that should be called at the end of a test session.
- endTestTrial() - Method in class org.cooperari.feature.hotspots.HotspotHandler
-
Method that should be called at the end of a test trial.
- endWrite(Object, Object) - Method in class org.cooperari.feature.data.RaceDetector
-
Signal end of write access to object field.
- enrich(CCoverageLog, boolean) - Method in class org.cooperari.core.CCoverageLog
-
Enrich this log with information from other log.
- Enter - Class in org.cooperari.feature.monitor
-
Monitor enter operation (lock acquisition).
- Enter(CThread, Monitor) - Constructor for class org.cooperari.feature.monitor.Enter
-
Constructor.
- enter(CThread) - Method in class org.cooperari.feature.monitor.Monitor
-
Enter monitor.
- equals(Object) - Method in class org.cooperari.core.COperation
-
Test for equality against given object reference.
- equals(Object) - Method in class org.cooperari.core.CYieldPointImpl
-
- equals(Object) - Method in class org.cooperari.core.scheduling.CThreadLocation
-
Test for equality against given object.
- equals(Object) - Method in class org.cooperari.core.util.CRawTuple
-
Test equality.
- execute() - Method in class org.cooperari.core.COperation
-
Execute the operation.
- execute() - Method in class org.cooperari.feature.monitor.Enter
-
Complete operation by acquiring the lock.
- execute(CThread, Object) - Static method in class org.cooperari.feature.monitor.Enter
-
Execute operation.
- execute() - Method in class org.cooperari.feature.monitor.Exit
-
Execute operation by releasing the lock.
- execute(CThread, Object) - Static method in class org.cooperari.feature.monitor.Exit
-
Execute operation.
- execute() - Method in class org.cooperari.feature.monitor.Notify
-
- execute(CThread, Object) - Static method in class org.cooperari.feature.monitor.Notify
-
Execute operation.
- execute() - Method in class org.cooperari.feature.monitor.NotifyAll
-
- execute(CThread, Object) - Static method in class org.cooperari.feature.monitor.NotifyAll
-
Execute operation.
- execute(CThread, Object) - Static method in class org.cooperari.feature.monitor.ThreadHoldsLock
-
Execute Thread.holdsLock()
.
- execute(CThread, Object, long) - Static method in class org.cooperari.feature.monitor.Wait
-
Execute a wait on the monitor.
- execute(CThread) - Static method in class org.cooperari.feature.thread.CurrentThread
-
- execute(CThread, Thread) - Static method in class org.cooperari.feature.thread.GetState
-
- execute() - Method in class org.cooperari.feature.thread.Interrupt
-
Complete by interrupting the thread.
- execute(CThread, Thread) - Static method in class org.cooperari.feature.thread.Interrupt
-
Execute thread interrupt operation.
- execute() - Method in class org.cooperari.feature.thread.Interrupted
-
Complete by clearing the interrupt status of the thread
and getting previous status.
- execute(CThread) - Static method in class org.cooperari.feature.thread.Interrupted
-
Execute an operation of this kind.
- execute() - Method in class org.cooperari.feature.thread.IsInterrupted
-
Complete by obtaining interruption status.
- execute(CThread, Thread) - Static method in class org.cooperari.feature.thread.IsInterrupted
-
Execute an operation of this kind.
- execute() - Method in class org.cooperari.feature.thread.Join
-
Complete operation.
- execute(CThread, Thread, long) - Static method in class org.cooperari.feature.thread.Join
-
Execute a thread join operation.
- execute() - Method in class org.cooperari.feature.thread.Sleep
-
Complete operation.
- execute(CThread, long) - Static method in class org.cooperari.feature.thread.Sleep
-
Execute sleep operation.
- execute() - Method in class org.cooperari.feature.thread.SpuriousWakeup
-
Execute operation
- execute(CThread, Thread) - Static method in class org.cooperari.feature.thread.SpuriousWakeup
-
Execute spurious wakeup operation.
- execute() - Method in class org.cooperari.feature.thread.Start
-
Complete operation.
- execute(CThread, Thread) - Static method in class org.cooperari.feature.thread.Start
-
Execute a thread start operation.
- execute() - Method in class org.cooperari.feature.thread.Stop
-
Execute by initiating the stop process for the other thread.
- execute(CThread, Thread) - Static method in class org.cooperari.feature.thread.Stop
-
Execute a thread stop operation.
- execute(CThread) - Static method in class org.cooperari.feature.thread.Yield
-
Execute a thread yield operation.
- execute(CThread, Runnable[]) - Static method in class org.cooperari.feature.threadrunner.ThreadRunnerOperation
-
Execute a thread runner operation.
- execute() - Method in class org.cooperari.feature.threadrunner.ThreadRunnerOperation
-
Complete the operation.
- executeTest(CTest) - Static method in class org.cooperari.core.CSession
-
Execute a test session.
- executeTest(CTest) - Method in class org.cooperari.CSystem
-
Execute a cooperative test session.
- Exit - Class in org.cooperari.feature.monitor
-
Monitor exit operation (lock release).
- exit() - Method in class org.cooperari.feature.monitor.Monitor
-
Exit the monitor
- generateGlobalCoverageReport() - Static method in class org.cooperari.CSystem
-
Generate a global coverage report.
- get(Class<C>) - Method in class org.cooperari.core.CConfiguration
-
Get configuration given by an annotation of a certain type.
- get(Object) - Method in class org.cooperari.core.CRuntime
-
Get shared object for given key.
- get(Class<T>) - Method in class org.cooperari.core.CRuntime
-
Get shared object that is registered for the given class.
- get(Object) - Method in class org.cooperari.feature.monitor.MonitorPool
-
Equivalent to get(o, false)
.
- get(Object, boolean) - Method in class org.cooperari.feature.monitor.MonitorPool
-
Get monitor for an object.
- getAbortOperation() - Method in class org.cooperari.core.COperation
-
Get abort operation.
- getAspectClasses() - Method in class org.cooperari.core.aspectj.WeavingConfiguration
-
Get a list of all declared aspect classes.
- getAspectName() - Method in class org.cooperari.core.CustomYieldPoint
-
Get aspect class name for this yield point.
- getCID() - Method in class org.cooperari.core.CThread
-
Get cooperative thread ID.
- getCID() - Method in interface org.cooperari.core.scheduling.CProgramState.CElement
-
Get id.
- getConfiguration(Class<C>) - Method in class org.cooperari.core.CRuntime
-
Get configuration given by an annotation of a certain type.
- getConfiguration() - Method in interface org.cooperari.CTest
-
Get configuration.
- getCoverageRate() - Method in interface org.cooperari.CCoverage
-
Get coverage rate.
- getCoverageRate() - Method in enum org.cooperari.core.aspectj.AgentFacade
-
Get coverage rate.
- getCoveredYieldPoints() - Method in interface org.cooperari.CCoverage
-
Get number of yield points covered.
- getCoveredYieldPoints() - Method in class org.cooperari.core.CCoverageLog
-
Get total number of yield points covered.
- getCState() - Method in class org.cooperari.core.CThread
-
Get logical running state of thread.
- getCThread(Thread) - Method in class org.cooperari.core.CThreadMappings
-
Gets the
CThread
instance that renders the execution of a given
Thread
,
or the given thread instance if it is already a cooperative thread.
- getCThread(Thread) - Static method in class org.cooperari.feature.thread.CThreadFeature
-
- getCurrentTest() - Static method in class org.cooperari.core.CSession
-
Get current test being executed.
- getCustomYieldPoints(List<CustomYieldPoint>) - Method in class org.cooperari.feature.atomic.CAtomicObjectsFeature
-
- getCustomYieldPoints(List<CustomYieldPoint>) - Method in interface org.cooperari.feature.CFeature
-
Add custom yield points to given list.
- getCustomYieldPoints(List<CustomYieldPoint>) - Method in class org.cooperari.feature.unsafe.CSunMiscUnsafeFeature
-
- getDebugLog() - Static method in enum org.cooperari.core.CWorkspace
-
Get workspace log.
- getEngine() - Method in class org.cooperari.core.CThread
-
Get engine that governs the execution of this thread.
- getExceptionCount() - Method in class org.cooperari.core.CUncaughtExceptionHandler
-
Get exception count.
- getExceptions() - Method in error org.cooperari.errors.CMultipleExceptionsError
-
Get list of exceptions.
- getExecutionTime() - Method in interface org.cooperari.CTestResult
-
Get execution time.
- getFailure() - Method in interface org.cooperari.CTestResult
-
Get exception associated to failure, if test failed.
- getFailureTrace() - Method in interface org.cooperari.CTestResult
-
Get failure trace file.
- getFeatures() - Static method in class org.cooperari.feature.CAllFeatures
-
Get list of all features.
- getFile() - Method in class org.cooperari.core.util.CReport
-
Get file associated to this report.
- getGlobalCoverageInfo() - Static method in class org.cooperari.CSystem
-
Get global coverage information for all tests executed so far.
- getGlobalCoverageLog() - Method in enum org.cooperari.core.aspectj.AgentFacade
-
Get global coverage log.
- getId() - Method in class org.cooperari.feature.monitor.Monitor
-
Get monitor id.
- getInstrumentationAspect() - Method in interface org.cooperari.feature.CFeature
-
Get aspect class for feature.
- getInstrumentationAspect() - Method in class org.cooperari.feature.data.CDataAccessFeature
-
- getInstrumentationAspect() - Method in class org.cooperari.feature.hotspots.CHotspotFeature
-
- getInstrumentationAspect() - Method in class org.cooperari.feature.monitor.CMonitorFeature
-
- getInstrumentationAspect() - Method in class org.cooperari.feature.thread.CThreadFeature
-
- getInstrumentationAspect() - Method in class org.cooperari.feature.threadrunner.CThreadRunnerFeature
-
- getInterruptStatus() - Method in class org.cooperari.core.CThread
-
Get interrupt status.
- getLocation() - Method in class org.cooperari.core.CThread
-
Get the thread's current location.
- getLocation() - Method in interface org.cooperari.core.scheduling.CProgramState.CElement
-
Get location.
- getLog() - Static method in enum org.cooperari.core.CWorkspace
-
Get workspace log.
- getName() - Method in interface org.cooperari.CTest
-
Get test name.
- getNotifyEpoch() - Method in class org.cooperari.feature.monitor.Monitor
-
Get current notification epoch.
- getObject() - Method in class org.cooperari.feature.monitor.Monitor
-
Get object the monitor refers to.
- getOwner() - Method in class org.cooperari.feature.monitor.Monitor
-
Get owner thread.
- getOwnerLockCount() - Method in class org.cooperari.feature.monitor.Monitor
-
Get owner lock count
- getPointcutExpression() - Method in class org.cooperari.core.CustomYieldPoint
-
Get pointcut expression for yield point.
- getResult() - Method in class org.cooperari.core.COperation
-
Get operation result.
- getResult() - Method in class org.cooperari.feature.monitor.ThreadHoldsLock
-
- getResult() - Method in class org.cooperari.feature.thread.Interrupted
-
Get result, i.e., the previous interrupted status for the thread.
- getResult() - Method in class org.cooperari.feature.thread.IsInterrupted
-
Get interruption status.
- getResult() - Method in class org.cooperari.feature.thread.Join
-
Get completion result.
- getResult() - Method in class org.cooperari.feature.thread.Sleep
-
Get completion result.
- getRootDirectory() - Method in enum org.cooperari.core.CWorkspace
-
Get root directory.
- getRootElement() - Method in class org.cooperari.core.aspectj.WeavingConfiguration
-
Get the current configuration in DOM format.
- getRunnable() - Method in class org.cooperari.core.CThread
-
Get runnable instance for this class.
- getRuntime() - Method in class org.cooperari.core.CEngine
-
Get
CRuntime
object used by the scheduler.
- getRuntime() - Static method in class org.cooperari.core.CRuntime
-
Get environment for the current thread.
- getRuntime() - Static method in class org.cooperari.core.CSession
-
Get runtime environment for current test.
- getSignature() - Method in class org.cooperari.core.CYieldPointImpl
-
- getSignature() - Method in class org.cooperari.core.scheduling.CGroupProgramState
-
Get signature.
- getSignature() - Method in interface org.cooperari.core.scheduling.CProgramState
-
Get signature.
- getSignature() - Method in class org.cooperari.core.scheduling.CRawProgramState
-
Get signature.
- getSignature() - Method in interface org.cooperari.core.scheduling.CYieldPoint
-
Get signature.
- getSourceFile() - Method in class org.cooperari.core.CYieldPointImpl
-
- getSourceFile() - Method in interface org.cooperari.core.scheduling.CYieldPoint
-
Get source file name.
- getSourceLine() - Method in class org.cooperari.core.CYieldPointImpl
-
- getSourceLine() - Method in interface org.cooperari.core.scheduling.CYieldPoint
-
Get source code line.
- getStage() - Method in class org.cooperari.core.COperation
-
Get yield point stage for this operation.
- getStage() - Method in class org.cooperari.core.scheduling.CThreadLocation
-
Get yield point stage.
- getStage() - Method in class org.cooperari.feature.threadrunner.ThreadRunnerOperation
-
Get yield point stage.
- getState() - Method in class org.cooperari.core.COperation
-
Get operation state.
- getState() - Method in class org.cooperari.feature.monitor.Enter
-
Get operation state.
- GetState - Class in org.cooperari.feature.thread
-
Operation for sending a (simulated) spurious wakeup to another thread.
- GetState() - Constructor for class org.cooperari.feature.thread.GetState
-
- getState() - Method in class org.cooperari.feature.thread.Join
-
Get state.
- getState() - Method in class org.cooperari.feature.thread.Sleep
-
Get state.
- getState() - Method in class org.cooperari.feature.threadrunner.ThreadRunnerOperation
-
Execution method.
- getStep() - Method in class org.cooperari.core.CThread
-
Get current step count.
- getSuiteName() - Method in interface org.cooperari.CTest
-
Get name of the test suite to which this test belongs.
- getTestResult(Description) - Method in enum org.cooperari.junit.CTestResultPool
-
Get test result, given a JUnit test description.
- getThread(int) - Method in class org.cooperari.core.CEngine
-
Gets thread created by the scheduler by creation order index.
- getThread(int) - Static method in class org.cooperari.core.CRuntime
-
- getTotalYieldPoints() - Method in interface org.cooperari.CCoverage
-
Get total yield points.
- getTotalYieldPoints() - Method in class org.cooperari.core.CCoverageLog
-
Get total number of yield points recorded.
- getTraceMarker() - Method in enum org.cooperari.core.CTrace.EventType
-
Get event marker character.
- getVirtualizedThread() - Method in class org.cooperari.core.CThread
-
Get virtualised thread for this cooperative thread, if any.
- getVirtualState() - Method in class org.cooperari.core.CThread
-
Get virtual thread state.
- getVirtualState() - Method in enum org.cooperari.core.CThreadState
-
- getYieldPoint() - Method in class org.cooperari.core.scheduling.CThreadLocation
-
Get yield point.
- Oblitus - Class in org.cooperari.core.scheduling
-
Memoryless scheduler.
- Oblitus() - Constructor for class org.cooperari.core.scheduling.Oblitus
-
Constructor.
- onHotspotReached(String) - Method in class org.cooperari.feature.hotspots.HotspotHandler
-
Callback method for when an hotspot is reached.
- onMonitorEnter(CThread, Monitor) - Method in class org.cooperari.feature.monitor.DeadlockDetector
-
Signal monitor acquisition intent by given thread.
- onMonitorExit(CThread) - Method in class org.cooperari.feature.monitor.DeadlockDetector
-
Signal monitor release by a thread.
- onNormalCompletion() - Method in interface org.cooperari.core.CSession.ExecutionHandler
-
Callback method invoked in case test trial completed normally (without
exceptions).
- onNormalCompletion() - Method in interface org.cooperari.CTest
-
Callback method invoked in case test trial completed normally (without exceptions, e.g., related
to test assertions).
- onTestFailure(Throwable) - Method in class org.cooperari.core.scheduling.CScheduler
-
Callback method invoked when a test fails.
- onTestFailure(Throwable) - Method in class org.cooperari.core.scheduling.Memini
-
- onTestFinished() - Method in class org.cooperari.core.scheduling.CScheduler
-
Callback method invoked when a test trial ends.
- onTestFinished() - Method in class org.cooperari.core.scheduling.Memini
-
- onTestStarted() - Method in class org.cooperari.core.scheduling.CScheduler
-
Callback method invoked when a test trial starts.
- onTestStarted() - Method in class org.cooperari.core.scheduling.Memini
-
- org.cooperari - package org.cooperari
-
Main package exposing the Cooperari API.
- org.cooperari.config - package org.cooperari.config
-
Annotations for test configuration.
- org.cooperari.core - package org.cooperari.core
-
Cooperari engine.
- org.cooperari.core.aspectj - package org.cooperari.core.aspectj
-
Package for interface with the AspectJ compiler and LTW agent.
- org.cooperari.core.scheduling - package org.cooperari.core.scheduling
-
Cooperative scheduler implementation.
- org.cooperari.core.util - package org.cooperari.core.util
-
Utility classes.
- org.cooperari.errors - package org.cooperari.errors
-
Cooperari error classes, related to aspects like
runtime execution events (e.g., deadlock or race detection),
invalid configuration options, internal errors, etc.
- org.cooperari.feature - package org.cooperari.feature
-
Root package for feature implementations.
- org.cooperari.feature.atomic - package org.cooperari.feature.atomic
-
Yields points for methods in java.util.concurrent.AtomicXXX
classes.
- org.cooperari.feature.data - package org.cooperari.feature.data
-
Support for data access yield points and race detection.
- org.cooperari.feature.hotspots - package org.cooperari.feature.hotspots
-
Hotspot reachability feature.
- org.cooperari.feature.monitor - package org.cooperari.feature.monitor
-
Yield point support for Java monitor operations and related
deadlock detection.
- org.cooperari.feature.thread - package org.cooperari.feature.thread
-
Yield point support
Thread
life-cycle methods.
- org.cooperari.feature.threadrunner - package org.cooperari.feature.threadrunner
-
Support for the "fork-and-join" thread runner.
- org.cooperari.feature.unsafe - package org.cooperari.feature.unsafe
-
Support for yield points in calls to methods to sun.misc.Unsafe
.
- org.cooperari.junit - package org.cooperari.junit
-
Cooperari bindings for JUnit.
- OS_BUILD_VERSION - Static variable in class org.cooperari.CVersion
-
Operating system for building current version.
- valueOf(String) - Static method in enum org.cooperari.core.aspectj.AgentFacade
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum org.cooperari.core.CBlockingOperationEvent
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum org.cooperari.core.CThreadState
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum org.cooperari.core.CTrace.EventType
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum org.cooperari.core.CWorkspace.Option
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum org.cooperari.core.CWorkspace
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum org.cooperari.core.scheduling.CProgramStateFactory
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum org.cooperari.core.scheduling.CSchedulerFactory
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum org.cooperari.core.util.CLog.Option
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum org.cooperari.junit.CTestResultPool
-
Returns the enum constant of this type with the specified name.
- values() - Static method in enum org.cooperari.core.aspectj.AgentFacade
-
Returns an array containing the constants of this enum type, in
the order they are declared.
- values() - Static method in enum org.cooperari.core.CBlockingOperationEvent
-
Returns an array containing the constants of this enum type, in
the order they are declared.
- values() - Static method in enum org.cooperari.core.CThreadState
-
Returns an array containing the constants of this enum type, in
the order they are declared.
- values() - Static method in enum org.cooperari.core.CTrace.EventType
-
Returns an array containing the constants of this enum type, in
the order they are declared.
- values() - Static method in enum org.cooperari.core.CWorkspace.Option
-
Returns an array containing the constants of this enum type, in
the order they are declared.
- values() - Static method in enum org.cooperari.core.CWorkspace
-
Returns an array containing the constants of this enum type, in
the order they are declared.
- values() - Static method in enum org.cooperari.core.scheduling.CProgramStateFactory
-
Returns an array containing the constants of this enum type, in
the order they are declared.
- values() - Static method in enum org.cooperari.core.scheduling.CSchedulerFactory
-
Returns an array containing the constants of this enum type, in
the order they are declared.
- values() - Static method in enum org.cooperari.core.util.CLog.Option
-
Returns an array containing the constants of this enum type, in
the order they are declared.
- values() - Static method in enum org.cooperari.junit.CTestResultPool
-
Returns an array containing the constants of this enum type, in
the order they are declared.


First article
If you have two or more barenote in one page and the elements have the smae class name, apply Barenote to each element as follows .
This is the first element of post-bodyCheck the number.
This is the first element of post-bodyCheck the number.


Focus cannot be moved to our opening frame, even programmatically.
Clicking the following button will NOT move focus out of this iframe:
Vimium (browser extension) does not generate hints for elements in parent window or opening frame
(TODO - not currently working - I still can't figure out how vimium decides whether or not to show hints for a particular element, and haven't managed to hide these)


Please check one:
JavaScript often abbreviated as JS, is a high-level, just-in-time compiled, multi-paradigm programming language that conforms to the ECMAScript specification.[10] JavaScript has curly-bracket syntax, dynamic typing, prototype-based object-orientation, and first-class functions.
Ruby is an interpreted, high-level, general-purpose programming language. It was designed and developed in the mid-1990s by Yukihiro "Matz" Matsumoto in Japan.
Python is an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991, Python's design philosophy emphasizes code readability with its notable use of significant whitespace.
do you like?
do you like Sushi?
do you like Star Wars?
Your favorite food?
do you like to travel?


Review: Chicken Run (2000)
[3.5/4.0]
The escape film is a standard genre which has been employed throughout motion picture history. Its inherent tension and suspense provide a natural framework on which to build a gripping story, and this has been done so often that it is difficult to create anything original within that genre. However, being such a stalwart formula also makes it a ripe target for parody, and this film does that by replacing all the standard human characters with primarily chickens.
The film is an animated feature made by a process of stop motion animation with clay figures - "claymation", a specialization of Aardman Production, which produced this film. It is written and directed by Nick Park (who is known for his claymation shorts Wallace and Grommit) and Peter Lord. This technique has been in existence since the early days of film, but has become rare since the development of less labor intensive special effects, notably computer generated imagery.
The story takes place at the Tweedy chicken farm, where the resident chickens (all hens save for one aged rooster) are held captive. They are constantly searching for a way to escape the unpleasant conditions at the farm, where they must keep up their egg production quotas or literally get the axe. They make many attempts to escape, led by natural leader Ginger (Julia Sawalha), but never meet with any success. One day they see Rocky the Rooster (Mel Gibson) fly overhead and accidentally crash into their fenced compound. In Rocky, they see someone who could teach them to fly, and thus give them a means to escape the farm and reach a sanctuary to live a life of freedom.
Although a grim storyline is the basis of the plot, this is actually a funny and entertaining film. Their enclosure is portrayed as the common prisoner of war camp of film, and all the components of that genre are expressed - clandestine meetings, contrived escape plans, close camaraderie from shared hardship, and a barter economy with black market traders (in this case, Cockney rats).
Although it may appear derivative, the story goes to such great detail to anthropomorphize the chickens, that it feels that the genre itself is the aspect being manipulated to fit the plot. When a formulaic storyline is used as a shortcut for original, writing, it is dreary. When it is used as a basis for a genre spoof, it can be the outlet for intelligent humor. Discerning viewers will notice the multiple layers employed by the film, and will be impressed by the challenges that the film sets and meets.
The film is constructed to have appeal for all viewers. It does not euphemize death and killing for its younger audience, but it also does not present intentionally disturbing images. For younger viewers, the film provides colorful characters, typical cartoon action sequences, and limited musical sequences. For adult viewers, it provides clever one-liners, caricatures of stereotypical characters, and subtle references to classic films.
Highly recommended. This film uses a standard storyline to great effect. It is a simple, common structure that can be followed by children, and it is also a target for parody that will entertain adult viewers. It is consistently humorous, entertaining, and clever, and thus has appeal for a wide audience.
(c) 2000 Murali Krishnan The Art House Squatter http://ArtHouseSquatter.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


There is a reason that Mugwort is called the dreaming herb.
Having been curious about the effects of Mugwort for some time, I decided to give it a go and see what happened. Knowing that it was a legal high (well in Australia anyway) I didn't really expect much from it in the way of a buzz. And that's what makes Mugwort interesting - the fact that it doesn't really give me much of a high. Well, at least not while I am awake.
I'm not saying that Mugwort is anything spectacular, but there are definately an increase in vivid, even bizarre techicolour dreams after using it.
Smoking it seems to provide the strongest effect, in my experience. Rolling it up with tobacco and smoking it, is somewhat simular to smoking a clove or herbal ciggie - smooth, without the bite of tobacco. Not altogether unpleasant to smoke. There is a mild buzz, simular to smoking a very small amount of cannabis. This tends to quickly pass. Alcohol can mildly increase the effects, as can tobacco. I'm not sure what the effect of smoking it with pot would be.
Its also very effective to leave some mugwort under my pillow, I get virtually the same dreaming effect, tho perhaps not quite as strong as if I'd smoked it. Even just having the mugwort in the same room can produce a number of technicolour dreams.
Once I fall to sleep, the strong and vivid dreams start almost immediately, and last right through until I wake up. The dreams aren't always stunningly realistic however, they can also be colourful and somewhat cartoonish. I've found the dreaming can sometimes last a few nights, but with greatly diminished vividness of the dream.
This is just my experience with mugwort. No doubt there may be stronger mugwort out there, but I've found Mugwort so far to be mild but pleasant.
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.


LinksModules
|
Module
|
| Value | Language |
|---|---|
| cn | Chinese |
| fr | French |
| it | Italian |
| gr | German |
| sp | Spanish |
| ru | Russian |
| jp | Japanese |
| en | English |
device.writeablePath returns the writeable path.
| device.showActivityIndicator (style) | Displays a platform-specific activity indicator. |
| device.hideActivityIndicator () | Hides activity indicator. |
| device.showAlert (title, message, buttonLabels, listener) | Displays a popup alert box with one or more buttons. Program activity, including animation, will continue in the background, but all other user interactivity will be blocked until the user selects a button or cancels the dialog. |
| device.cancelAlert () | Dismisses an alert box programmatically. |
| device.getOpenUDID () | Returns OpenUDID for device. |
| device.openURL (url) | Open a web page in the browser; create an email; or call a phone number. |
| device.showInputBox (title, message, defaultValue) | Displays a popup input dialog with ok and cancel button. |
Displays a platform-specific activity indicator.
Supported platform: ios, android.
Hides activity indicator.
Supported platform: ios, android.
Displays a popup alert box with one or more buttons. Program activity, including animation, will continue in the background, but all other user interactivity will be blocked until the user selects a button or cancels the dialog.
string title The title string displayed in the alert
string message Message string displayed in the alert text.
table buttonLabels Table of strings, each of which will create a button with the corresponding label.
function listener The listener to be notified when a user presses any button in the alert box.
Supported platform: ios, android, mac.
Dismisses an alert box programmatically.
For example, you may wish to have a popup alert that automatically disappears after ten seconds even if the user doesn’t click it. In that case, you could call this function at the end of a ten-second timer.
Supported platform: ios, android, mac.
Returns OpenUDID for device.
OpenUDID is a drop-in replacement for the deprecated uniqueIdentifier property of the UIDevice class on iOS (a.k.a. UDID) and otherwise is an industry-friendly equivalent for iOS and Android.
Supported platform: ios, android, mac.
Open a web page in the browser; create an email; or call a phone number.
Note: Executing this function will make the app background and switch to the built-in browser, email or phone app.
string url url can be one of the following:
Web link: "http://dualface.github.com/quick-cocos2d-x/"
Email address<EMAIL_ADDRESS>The email address url can also contain subject and body parameters, both of which must be url encoded.
Example: "mailto:nobody@mycompany.com?subject=Hi%20there&body=I%20just%20wanted%20to%20say%2C%20Hi!"
Try this URL encoder to encode your text.
Phone number: "tel:123-456-7890"
Supported platform: ios, android.
Displays a popup input dialog with ok and cancel button.
Supported platform: mac, windows.


This is a new service (Beta service) and does not cover the country you have chosen at this time.
You can use the travel advice for this country instead.


Background: I’ve done grass daily, mushrooms once in a while, and a few tries with passion flower, dagga and blue lotus. I’ve also done more salvia than you can shake a stick at. This is lengthy, but as the events are rather rare I felt that a descriptive relation would be best.
I had been craving a good, strong mushroom trip for about a month, and was therefore excited when a close friend offered to sell me some.  As he is a very experienced drug user I took this quite seriously. The friend who was to be consuming them with me was only in town for the night, and wanted something crazy to go down. He had not done mushrooms for quite awhile and probably ignored our hook-up’s warning. We had both done mushrooms about ten times each, and we both generally took an eighth of an ounce. Therefore, regardless of supposed strength, our craving led us to purchase a quarter between us.
The night began at his shop. Him and his cousin were jamming, and as I wasn’t in the mood to play, I just listened. The three of us smoked a couple joints.
9:30 (p.m.)- I was getting impatient, and therefore decided to eat a couple small stems. As far as mush goes, they tasted alright.
10:00- Not the quickest acting mushrooms I’ve ever ate, but powerful. After half an hour I was hallucinating off of two stems. My friend’s veins were pretty large and not entirely confined to his arms. When I do mushrooms people tend to look older than they are, and this was already taking place. We decided to get going and I expressed that, “We’ll be seeing stars tonight, man!” My friend’s cousin went his separate way. We ate a few more stems each on the drive back to my friend’s apartment. Our excitement was getting the better of us, and we could both instinctively feel what we were getting into as “Water of Love” by Dire Straights played.
10:15- We promptly consumed the rest of our fungus. His room mate went to bed since he wasn’t feeling up for a trip. Everything was going fine. We smoked a bong load and watched the first Robocop movie. This is a very underrated flick.
10:45- Some duplications of objects were to be seen, as well as some object’s breathing.  I mention this since he is generally a rather reserved individual.
11:00- I was just sitting and watching Robocop. My friend got obsessed with textures, running around his apartment touching everything while going on about how things felt good. He reminded me of someone on E.  We held the creature and he put up with us quite well. Pets tend to like me more when I’m on pyches, but this rabbit never liked me and this did not change.
11:30- Robocop ended and the trip was still good. I always have a full blown trip when I do mush, but my friend was not used to actually hallucinating. He just got really high the last few times he did them. Due to this, he was shocked at this strain’s strength. This is when things started to turn evil. We put on the new “Charlie and the Chocolate Factory” movie. Having never seen it I naively assumed that this would be a good time to see it. The rabbit is trained to stay on the couch, but he does laps when he does so. The one “normal” hallucination that I never get is tracers. Not so here. The laps that the rabbit was doing created a grey ring around me.  The movie was getting to me. I could sense badness, as the melting faces started coming out of the screen. I looked at my pal, and to my horror, he was having a seizure with the rabbit still sitting on him. As I was wildly hallucinating, I couldn’t tell if he was dead. To my eyes he was melting and caving in, not to mention how his eyes were rolled back in his head. I leaned over from the couch and shook his leg. He came to and asked were he was. I explained that he was in town, in his apartment on shrooms. We put the rabbit in his cage. He is not epileptic, but has had a few seizures as a child.
12:00- The last fifteen or so minutes involved fear upon fear. I got a feeling of being controlled by Mr. Depp and Mike T.V. that was reminiscent of salvia. The images on the screen became very important and started darkly controlling my mind. I put up with this as fear grew. I have had bad trips before, but NOTHING like this.  I could barely even see. Hallucinations were all there was. I still had the understanding that I existed. I tried to get a drink of water. The glass was sealed at the normally open top.  Fear. Fear.
12:05 ish- I calmly mentioned that I had the fear. This is what my friend related. I was apparently standing and lost consciousness. I fell and hit my head and shattered the glass that I was holding. I then repeated this, standing and blacking out twice more. The last fall my friend was sure had killed me. My head hit the counter and fridge on the way down. He saw my head bounce on the tiled floor in a most morbid manner. I woke up and stated that, “I’m dead.” He replied, “No, but you really should be.” Glass everywhere.
12:00 Still very thirsty, I went back to couch. The worst experience of my life proceeded. Absolute insanity. Absolute. Every thought or memory that I had connected and conspired. This was not just a bad trip. Those I can do. This was HELL. I was actually insane. As my friend talked me down, I felt that he was evil and forcing me to answer his trivial questions about real life; girl friend, family, school (addictions counseling ironically enough) etc... I felt that I was sinking into something bad. Confusion.
The next 8 hours we talked about the horrible peak. His questions had indeed helped me to ground myself, as did a statue of a dragon that remained un-adultered by the poison.   Something was up with those shrooms. He eventually went to bed and I hung out with his roommate. I was hallucinating for around ten hours off of an eighth of mush. No blood, my glasses weren’t broke or anything. We should have both been dead, which in fact we thought we were. Three black outs and a seizure should not take place. Who knows what that this horrible trip was about.
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.


Find practical resources
Professional Learning Opportunities: courses, workshops, and more
Find groups with libraries of resources and learn how to contribute
Get your class project funded through DonorsChoose.org
Professional Learning Opportunities: courses, workshops, and more
Find groups with libraries of resources and learn how to contribute
Get your class project funded through DonorsChoose.org
See the schools in your neighborhood that have achieved STEM certification. Read the handbook for information on putting your school on the map. Check out spotlighted schools below.
Learn about certification at STEM Georgia
Find schools, businesses, and other partner organizations in your neighborhood with the maps below. Browse the partnering guide for ways to get involved.
Learn about partnering
Put your organization or business on the map by joining our community
Create a profileThe movement to advance STEM education in Georgia is gaining momentum, but it can still be difficult to find practical resources and supportive partners. The Incubator's mission is to spur innovation in STEM education through reflective practice, professional learning, and collaboration.
Provide feedback


Guildsman Morgan:
This freight box is from our commercial guild! It is part of the shipment that was recently stolen from our carts by evil creatures! Our losses from that robbery were staggering. Thank you for recovering this part of it.
As a representative of the commercial guild, Please take these coins from our guild as a token of our appreciation.
Go back


This is the Trensant Graphics Library Examples Landing page. The Trensant Graphics Library is a wrapper of several 3rd party graphics and charting libraries which are useful for visualizing data using different techniques. See the README.md file in the distribution for more on which libraries and charts are wrapped and how to use them.


- raise(BaseEvent)
- Method in class seedu.address.commons.core.ComponentManager
-
- raise(BaseEvent)
- Method in class seedu.address.ui.UiPart
-
- read_extraValuesInFile_extraValuesIgnored()
- Method in class seedu.address.commons.util.ConfigUtilTest
-
- read_fileInOrder_successfullyRead()
- Method in class seedu.address.commons.util.ConfigUtilTest
-
- read_missingFile_emptyResult()
- Method in class seedu.address.commons.util.ConfigUtilTest
-
- read_missingFile_emptyResult()
- Method in class seedu.address.storage.XmlAddressBookStorageTest
-
- read_notJsonFormat_exceptionThrown()
- Method in class seedu.address.commons.util.ConfigUtilTest
-
- read_notXmlFormat_exceptionThrown()
- Method in class seedu.address.storage.XmlAddressBookStorageTest
-
- read_null_throwsNullPointerException()
- Method in class seedu.address.commons.util.ConfigUtilTest
-
- read_valuesMissingFromFile_defaultValuesUsed()
- Method in class seedu.address.commons.util.ConfigUtilTest
-
- readAddressBook()
- Method in interface seedu.address.storage.AddressBookStorage
-
- readAddressBook()
- Method in interface seedu.address.storage.Storage
-
- readAddressBook()
- Method in class seedu.address.storage.StorageManager
-
- readAddressBook()
- Method in class seedu.address.storage.XmlAddressBookStorage
-
- readAddressBook(Path)
- Method in interface seedu.address.storage.AddressBookStorage
-
- readAddressBook(Path)
- Method in class seedu.address.storage.StorageManager
-
- readAddressBook(Path)
- Method in class seedu.address.storage.XmlAddressBookStorage
-
- readAddressBook_invalidAndValidPersonAddressBook_throwDataConversionException()
- Method in class seedu.address.storage.XmlAddressBookStorageTest
-
- readAddressBook_invalidPersonAddressBook_throwDataConversionException()
- Method in class seedu.address.storage.XmlAddressBookStorageTest
-
- readAddressBook_nullFilePath_throwsNullPointerException()
- Method in class seedu.address.storage.XmlAddressBookStorageTest
-
- readAndSaveAddressBook_allInOrder_success()
- Method in class seedu.address.storage.XmlAddressBookStorageTest
-
- readConfig(Path)
- Static method in class seedu.address.commons.util.ConfigUtil
-
- readFromFile(Path)
- Static method in class seedu.address.commons.util.FileUtil
-
Assumes file exists
- readJsonFile(Path, Class<T>)
- Static method in class seedu.address.commons.util.JsonUtil
-
Returns the Json object from the given file or Optional.empty()
object if
the file is not found.
- ReadOnlyAddressBook - Interface in seedu.address.model
-
Unmodifiable view of an address book
- readStorageAddressBook()
- Method in class seedu.address.TestApp
-
Returns a defensive copy of the address book data stored inside the storage file.
- readUserPrefs()
- Method in class seedu.address.storage.JsonUserPrefsStorage
-
- readUserPrefs() - Method in
interface seedu.address.storage.Storage
-
- readUserPrefs()
- Method in class seedu.address.storage.StorageManager
-
- readUserPrefs()
- Method in interface seedu.address.storage.UserPrefsStorage
-
Returns UserPrefs data from storage.
- readUserPrefs(Path)
- Method in class seedu.address.storage.JsonUserPrefsStorage
-
- readUserPrefs_extraValuesInFile_extraValuesIgnored()
- Method in class seedu.address.storage.JsonUserPrefsStorageTest
-
- readUserPrefs_fileInOrder_successfullyRead()
- Method in class seedu.address.storage.JsonUserPrefsStorageTest
-
- readUserPrefs_missingFile_emptyResult()
- Method in class seedu.address.storage.JsonUserPrefsStorageTest
-
- readUserPrefs_notJsonFormat_exceptionThrown()
- Method in class seedu.address.storage.JsonUserPrefsStorageTest
-
- readUserPrefs_nullFilePath_throwsNullPointerException()
- Method in class seedu.address.storage.JsonUserPrefsStorageTest
-
- readUserPrefs_valuesMissingFromFile_defaultValuesUsed()
- Method in class seedu.address.storage.JsonUserPrefsStorageTest
-
- redo() - Method in class
seedu.address.model.VersionedAddressBook
-
Restores the address book to its previously undone state.
- redo_multipleAddressBookPointerAtEndOfStateList_throwsNoRedoableStateException()
- Method in class seedu.address.model.VersionedAddressBookTest
-
- redo_multipleAddressBookPointerAtStartOfStateList_success()
- Method in class seedu.address.model.VersionedAddressBookTest
-
- redo_multipleAddressBookPointerNotAtEndOfStateList_success()
- Method in class seedu.address.model.VersionedAddressBookTest
-
- redo_singleAddressBook_throwsNoRedoableStateException()
- Method in class seedu.address.model.VersionedAddressBookTest
-
- redoAddressBook() - Method in
interface seedu.address.model.Model
-
Restores the model's address book to its previously undone state.
- redoAddressBook()
- Method in class seedu.address.model.ModelManager
-
- RedoCommand - Class
in seedu.address.logic.commands
-
Reverts the model
's address book to its previously undone state.
- RedoCommand()
- Constructor for class seedu.address.logic.commands.RedoCommand
-
- RedoCommandTest -
Class in seedu.address.logic.commands
-
- RedoCommandTest()
- Constructor for class seedu.address.logic.commands.RedoCommandTest
-
- registerAsAnEventHandler(Object)
- Method in class seedu.address.ui.UiPart
-
Registers the object as an event handler at the
EventsCenter
- registerHandler(Object)
- Method in class seedu.address.commons.core.EventsCenter
-
- rememberSaveLocation()
- Method in class guitests.guihandles.StatusBarFooterHandle
-
Remembers the content of the 'save location' portion of the status bar.
- rememberSelectedPersonCard()
- Method in class guitests.guihandles.PersonListPanelHandle
-
Remembers the selected PersonCard
in the list.
- rememberSyncStatus()
- Method in class guitests.guihandles.StatusBarFooterHandle
-
Remembers the content of the sync status portion of the status bar.
- rememberUrl()
- Method in class guitests.guihandles.BrowserPanelHandle
-
Remembers the URL
of the currently loaded page.
- remove(Person)
- Method in class seedu.address.model.person.UniquePersonList
-
Removes the equivalent person from the list.
- remove_existingPerson_removesPerson()
- Method in class seedu.address.model.person.UniquePersonListTest
-
- remove_nullPerson_throwsNullPointerException()
- Method in class seedu.address.model.person.UniquePersonListTest
-
- remove_personDoesNotExist_throwsPersonNotFoundException()
- Method in class seedu.address.model.person.UniquePersonListTest
-
- removePerson(Person)
- Method in class seedu.address.model.AddressBook
-
Removes key
from this AddressBook
.
- requireAllNonNull(Object...)
- Static method in class seedu.address.commons.util.CollectionUtil
-
- requireAllNonNull(Collection<?>)
- Static method in class seedu.address.commons.util.CollectionUtil
-
Throws NullPointerException if items
or any element of items
is
null.
- requireAllNonNullCollection()
- Method in class seedu.address.commons.util.CollectionUtilTest
-
- requireAllNonNullVarargs()
- Method in class seedu.address.commons.util.CollectionUtilTest
-
- reset()
- Method in class seedu.address.ui.testutil.EventsCollectorRule.EventsCollector
-
Removes collected events from the collected list
- resetData(ReadOnlyAddressBook)
- Method in class seedu.address.model.AddressBook
-
Resets the existing data of this AddressBook
with newData
.
- resetData(ReadOnlyAddressBook)
- Method in interface seedu.address.model.Model
-
Clears existing backing model and replaces with the provided new data.
- resetData(ReadOnlyAddressBook)
- Method in class seedu.address.model.ModelManager
-
- resetData_null_throwsNullPointerException()
- Method in class seedu.address.model.AddressBookTest
-
- resetData_withDuplicatePersons_throwsDuplicatePersonException()
- Method in class seedu.address.model.AddressBookTest
-
- resetData_withValidReadOnlyAddressBook_replacesData()
- Method in class seedu.address.model.AddressBookTest
-
- RESULT_DISPLAY_ID
- Static variable in class guitests.guihandles.ResultDisplayHandle
-
- ResultDisplay - Class in seedu.address.ui
-
A ui for the status bar that is displayed at the header of the application.
- ResultDisplay()
- Constructor for class seedu.address.ui.ResultDisplay
-
- ResultDisplayHandle - Class in guitests.guihandles
-
A handler for the ResultDisplay
of the UI
- ResultDisplayHandle(TextArea)
- Constructor for class guitests.guihandles.ResultDisplayHandle
-
- ResultDisplayTest - Class in seedu.address.ui
-
- ResultDisplayTest()
- Constructor for class seedu.address.ui.ResultDisplayTest
-
- run(String)
- Method in class guitests.guihandles.CommandBoxHandle
-
Enters the given command in the Command Box and presses enter.


--- layout: page title: Animated Icons description: Experiments with animated icons. ---
Hover over an icon!
notificationssettingssendtoyssharemicmotorcycledirections_bikeflight


I really hate this here, but I hate subdirs in my lib dir more… I guess it is kinda like shaving… I’ll split this out when it itches too much…
# File lib/sexp_processor.rb, line 351 def initialize @env = [] @env.unshift({}) end
TODO: depth_of
# File lib/sexp_processor.rb, line 366 def [] name hash = @env.find { |closure| closure.has_key? name } hash[name] if hash end
# File lib/sexp_processor.rb, line 371 def []= name, val hash = @env.find { |closure| closure.has_key? name } || current hash[name] = val end
# File lib/sexp_processor.rb, line 356 def all @env.reverse.inject { |env, scope| env.merge scope } end
# File lib/sexp_processor.rb, line 376 def current @env.first end
# File lib/sexp_processor.rb, line 360 def depth @env.length end
# File lib/sexp_processor.rb, line 380 def scope @env.unshift({}) begin yield ensure @env.shift raise "You went too far unextending env" if @env.empty? end end


Just after settling into my flat in London, I've had to travel to Mooloolaba, which is in Queensland and is gorgeous. I've had a fun week here hacking with the Bazaar crew. Tomorrow morning I'm off to Dallas, Texas for a week and then back home to London.
After then, I'll be in London for two weeks before heading back to Tassie for Lizzie's wedding. I'll be there for three weeks. If you're going to be in Tassie between December 5th and Christmas, get in touch.
Then, I've got a choice. I've got a thing in New Zealand in mid-January, so I might actually stay in the Antipodes until then, or I might head back to London.
Still trying to figure out what my February plans are. It's a hard-knock life, eh?


---
layout: post
title: Material Point Method Simulation
date: December 10, 2019
framework: Ubuntu
primary-language: C++
ide: Houdini
---
From beginning to 00:56 seconds.
During my fall semester of junior year in college, I took a course called CIS563: Physics-based Simulations. This course is taught
by Dr. Chenfanfu Jiang, whose research focuses on realistic physics-based simulations.
He is well known in the computer graphics community for utilizing the material point method in his research and projects.
Prior to taking CIS563, I had zero experience with computer graphics simulations, let alone physics-based. I have always wanted to
learn how those millions of leaves in the bridge to the Land of the Dead interact with each other in Coco, or how the snow in Frozen seems to have
a personality of its own.
For the final project in the course, I created two different types of simulations using a method called Material Point Method (MPM).
There are lots of ways in which simulations can be done. Some methods represent objects as individual particles connected by spring like
edges and directly applies forces onto those particles. Other methods model objects with particle-voxel hybrid
(see Robert Bridson's book
on fluid simulations).
MPM is gaining popularity in the CG simulations community because it is fast, relatively easy to implement, and is pretty stable
for most material.
This method has two main components: a grid and a system of particles. First each particle's position, velogity, mass, density, volume, and the deformation
gradient are stored. We also initialize grid node data which include mass, velocity, and other helper data structures. The deformation gradient is derived from a body's deformation, a mapping from its undeformed configuration X to
its deformed configuration x. This particle information is then transferred to the grid. Next, forces such as gravity, elasticity, and self collision are calculated and applied to the grid.
The grid nodes themselves have velocity of their own, computed from the particles within them. We use the forces to update the new velocity of each grid node. Using either
implicit or explicit integration, we solve the system of linear equations to get new particle states from the updated grid velocities. These steps
get repeated via small time steps until the simulation is completed.
Using MPM, I created two different simulations - jelly-like material (elastic) and snow.
First I outputed particle data for each frame, then transfer this particle information to
Houdini using various Houdini nodes. In order to speed up the simulation output generation, I used
Ubuntu (dual-booted on my 8GB RAM Macbook Pro 2017).
The jelly material was more straight forward to implement than its snow counterpart. Snow simulation can be achieved by modifying
the jelly simulation code by removing elasticity and adding some new variables, including critical compression, criticle stretch,
hardening coefficient, Young's modulus, and Posson's ratio. These parameters together determines how the snow behaves.
I had more difficulty understanding the concepts behind snow simulations because there were so many different derivatives and
variables. Making the snow look visually appealing was also a challenge for me since I was new to Houdini and the tools I used works better for
jelly-like material than snow.
For more details on the termonology as well as the method described, please visit Dr. Chenfanfu Jiang's
thesis on MPM.


Let’s say we have a complex object, and we’d like to convert it into a string, to send it over a network, or just to output it for logging purposes.
Naturally, such a string should include all important properties.
We could implement the conversion like this:
```js run let user = { name: “John”, age: 30,
! toString() { return {name: "${this.name}", age: ${this.age}}
; } /! };
alert(user); // {name: “John”, age: 30} ```
…But in the process of development, new properties are added, old properties are renamed and removed. Updating such toString
every time can become a pain. We could try to loop over properties in it, but what if the object is complex and has nested objects in properties? We’d need to implement their conversion as well.
Luckily, there’s no need to write the code to handle all this. The task has been solved already.
The JSON (JavaScript Object Notation) is a general format to represent values and objects. It is described as in RFC 4627 standard. Initially it was made for JavaScript, but many other languages have libraries to handle it as well. So it’s easy to use JSON for data exchange when the client uses JavaScript and the server is written on Ruby/PHP/Java/Whatever.
JavaScript provides methods:
JSON.stringify
to convert objects into JSON.JSON.parse
to convert JSON back into an object.For instance, here we JSON.stringify
a student: ```js run let student = { name: ‘John’, age: 30, isAdmin: false, courses: [‘html’, ‘css’, ‘js’], wife: null };
! let json = JSON.stringify(student); /!
alert(typeof json); // we’ve got a string!
alert(json); ! /* JSON-encoded object: { “name”: “John”, “age”: 30, “isAdmin”: false, “courses”: [“html”, “css”, “js”], “wife”: null } / /!* ```
The method JSON.stringify(student)
takes the object and converts it into a string.
The resulting json
string is called a JSON-encoded or serialized or stringified or marshalled object. We are ready to send it over the wire or put into a plain data store.
Please note that a JSON-encoded object has several important differences from the object literal:
'John'
becomes "John"
.age:30
becomes "age":30
.JSON.stringify
can be applied to primitives as well.
JSON supports following data types:
{ ... }
[ ... ]
true/false
,null
.For instance:
```js run // a number in JSON is just a number alert( JSON.stringify(1) ) // 1
// a string in JSON is still a string, but double-quoted alert( JSON.stringify(‘test’) ) // “test”
alert( JSON.stringify(true) ); // true
alert( JSON.stringify([1, 2, 3]) ); // [1,2,3] ```
JSON is data-only language-independent specification, so some JavaScript-specific object properties are skipped by JSON.stringify
.
Namely:
undefined
.```js run let user = { sayHi() { // ignored alert(“Hello”); }, [Symbol(“id”)]: 123, // ignored something: undefined // ignored };
alert( JSON.stringify(user) ); // {} (empty object) ```
Usually that’s fine. If that’s not what we want, then soon we’ll see how to customize the process.
The great thing is that nested objects are supported and converted automatically.
For instance:
```js run let meetup = { title: “Conference”, ! room: { number: 23, participants: [“john”, “ann”] } /! };
alert( JSON.stringify(meetup) ); /* The whole structure is stringified: { “title”:“Conference”, “room”:{“number”:23,“participants”:[“john”,“ann”]}, } */ ```
The important limitation: there must be no circular references.
For instance:
```js run let room = { number: 23 };
let meetup = { title: “Conference”, participants: [“john”, “ann”] };
meetup.place = room; // meetup references room room.occupiedBy = meetup; // room references meetup
! JSON.stringify(meetup); // Error: Converting circular structure to JSON /! ```
Here, the conversion fails, because of circular reference: room.occupiedBy
references meetup
, and meetup.place
references room
:
The full syntax of JSON.stringify
is:
function(key, value)
.
Most of the time, JSON.stringify
is used with the first argument only. But if we need to fine-tune the replacement process, like to filter out circular references, we can use the second argument of JSON.stringify
.
If we pass an array of properties to it, only these properties will be encoded.
For instance:
```js run let room = { number: 23 };
let meetup = { title: “Conference”, participants: [{name: “John”}, {name: “Alice”}], place: room // meetup references room };
room.occupiedBy = meetup; // room references meetup
alert( JSON.stringify(meetup, ![‘title’, ‘participants’]/!) ); // {“title”:“Conference”,“participants”:[{},{}]} ```
Here we are probably too strict. The property list is applied to the whole object structure. So the objects in participants
are empty, because name
is not in the list.
Let’s include in the list every property except room.occupiedBy
that would cause the circular reference:
```js run let room = { number: 23 };
let meetup = { title: “Conference”, participants: [{name: “John”}, {name: “Alice”}], place: room // meetup references room };
room.occupiedBy = meetup; // room references meetup
alert( JSON.stringify(meetup, ![‘title’, ‘participants’, ‘place’, ‘name’, ‘number’]/!) ); / { “title”:“Conference”, “participants”:[{“name”:“John”},{“name”:“Alice”}], “place”:{“number”:23} } / ```
Now everything except occupiedBy
is serialized. But the list of properties is quite long.
Fortunately, we can use a function instead of an array as the replacer
.
The function will be called for every (key, value)
pair and should return the “replaced” value, which will be used instead of the original one. Or undefined
if the value is to be skipped.
In our case, we can return value
“as is” for everything except occupiedBy
. To ignore occupiedBy
, the code below returns undefined
:
```js run let room = { number: 23 };
let meetup = { title: “Conference”, participants: [{name: “John”}, {name: “Alice”}], place: room // meetup references room };
room.occupiedBy = meetup; // room references meetup
alert( JSON.stringify(meetup, function replacer(key, value) { alert(${key}: ${value}
); return (key == ‘occupiedBy’) ? undefined : value; }));
[object Object]
title: Conference participants: [object Object],[object Object] 0: [object Object] name: John 1: [object Object] name: Alice place: [object Object] number: 23 occupiedBy: [object Object] */ ```
Please note that replacer
function gets every key/value pair including nested objects and array items. It is applied recursively. The value of this
inside replacer
is the object that contains the current property.
The first call is special. It is made using a special “wrapper object”: {"": meetup}
. In other words, the first (key, value)
pair has an empty key, and the value is the target object as a whole. That’s why the first line is ":[object Object]"
in the example above.
The idea is to provide as much power for replacer
as possible: it has a chance to analyze and replace/skip even the whole object if necessary.
The third argument of JSON.stringify(value, replacer, space)
is the number of spaces to use for pretty formatting.
Previously, all stringified objects had no indents and extra spaces. That’s fine if we want to send an object over a network. The space
argument is used exclusively for a nice output.
Here space = 2
tells JavaScript to show nested objects on multiple lines, with indentation of 2 spaces inside an object:
```js run let user = { name: “John”, age: 25, roles: { isAdmin: false, isEditor: true } };
alert(JSON.stringify(user, null, 2)); /* two-space indents: { “name”: “John”, “age”: 25, “roles”: { “isAdmin”: false, “isEditor”: true } } */
/* for JSON.stringify(user, null, 4) the result would be more indented: { “name”: “John”, “age”: 25, “roles”: { “isAdmin”: false, “isEditor”: true } } */ ```
The third argument can also be a string. In this case, the string is used for indentation instead of a number of spaces.
The space
parameter is used solely for logging and nice-output purposes.
Like toString
for string conversion, an object may provide method toJSON
for to-JSON conversion. JSON.stringify
automatically calls it if available.
For instance:
```js run let room = { number: 23 };
let meetup = { title: “Conference”, date: new Date(Date.UTC(2017, 0, 1)), room };
alert( JSON.stringify(meetup) ); / { “title”:“Conference”, ! “date”:“2017-01-01T00:00:00.000Z”, // (1) /! “room”: {“number”:23} // (2) } / ```
Here we can see that date
(1)
became a string. That’s because all dates have a built-in toJSON
method which returns such kind of string.
Now let’s add a custom toJSON
for our object room
(2)
:
```js run let room = { number: 23, ! toJSON() { return this.number; } /! };
let meetup = { title: “Conference”, room };
! alert( JSON.stringify(room) ); // 23 /!
alert( JSON.stringify(meetup) ); / { “title”:“Conference”, ! “room”: 23 /! } / ```
As we can see, toJSON
is used both for the direct call JSON.stringify(room)
and when room
is nested in another encoded object.
To decode a JSON-string, we need another method named JSON.parse.
The syntax:
(key, value)
pair and can transform the value.
For instance:
```js run // stringified array let numbers = “[0, 1, 2, 3]”;
numbers = JSON.parse(numbers);
alert( numbers[1] ); // 1 ```
Or for nested objects:
```js run let userData = ‘{ “name”: “John”, “age”: 35, “isAdmin”: false, “friends”: [0,1,2,3] }’;
let user = JSON.parse(userData);
alert( user.friends[1] ); // 1 ```
The JSON may be as complex as necessary, objects and arrays can include other objects and arrays. But they must obey the same JSON format.
Here are typical mistakes in hand-written JSON (sometimes we have to write it for debugging purposes):
let json = `{
*!*name*/!*: "John", // mistake: property name without quotes
"surname": *!*'Smith'*/!*, // mistake: single quotes in value (must be double)
*!*'isAdmin'*/!*: false // mistake: single quotes in key (must be double)
"birthday": *!*new Date(2000, 2, 3)*/!*, // mistake: no "new" is allowed, only bare values
"friends": [0,1,2,3] // here all fine
}`;
Besides, JSON does not support comments. Adding a comment to JSON makes it invalid.
There’s another format named JSON5, which allows unquoted keys, comments etc. But this is a standalone library, not in the specification of the language.
The regular JSON is that strict not because its developers are lazy, but to allow easy, reliable and very fast implementations of the parsing algorithm.
Imagine, we got a stringified meetup
object from the server.
It looks like this:
// title: (meetup title), date: (meetup date)
let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}';
…And now we need to deserialize it, to turn back into JavaScript object.
Let’s do it by calling JSON.parse
:
```js run let str = ‘{“title”:“Conference”,“date”:“2017-11-30T12:00:00.000Z”}’;
let meetup = JSON.parse(str);
! alert( meetup.date.getDate() ); // Error! /! ```
Whoops! An error!
The value of meetup.date
is a string, not a Date
object. How could JSON.parse
know that it should transform that string into a Date
?
Let’s pass to JSON.parse
the reviving function as the second argument, that returns all values “as is”, but date
will become a Date
:
```js run let str = ‘{“title”:“Conference”,“date”:“2017-11-30T12:00:00.000Z”}’;
! let meetup = JSON.parse(str, function(key, value) { if (key == ‘date’) return new Date(value); return value; }); /!
alert( meetup.date.getDate() ); // now works! ```
By the way, that works for nested objects as well:
``js run let schedule =
{ “meetups”: [ {“title”:“Conference”,“date”:“2017-11-30T12:00:00.000Z”}, {“title”:“Birthday”,“date”:“2017-04-18T12:00:00.000Z”} ] }`;
schedule = JSON.parse(schedule, function(key, value) { if (key == ‘date’) return new Date(value); return value; });
! alert( schedule.meetups[1].date.getDate() ); // works! /! ```
null
.toJSON
, then it is called by JSON.stringify
.


| # | First | Last | Handle |
|---|---|---|---|
| 1 | Mark | Otto | @mdo |
| 2 | Jacob | Thornton | @fat |
| 3 | Larry | the Bird |
The design of our brand new kitchen has been meticulously planned to deliver the caliber of food that we always dream about — the best Chinese cooking offered anywhere.
It's our goal that people will no longer need to hop on a plane to savor their favorite Chinese dishes. Carrying on the culinary heritage of old China matters to us and to JOSS/Chinese Haute Cuisine's appreciative clientele. It's a must that JOSS CUISINE/Traditional continues to live up to the high level as stated by the legendary columnist, Liz Smith who said:
"Joss gives Chinese its best name yet."
Coming from someone who frequents the best places around the globe, we say thank you to her and promise that we are committed to providing both her and her readers extraordinary food. To prepare for the task, the chef owner, Golo Kwokson Yu, took extensive food tasting trips around China after the old JOSS closed. He was guided by food aficionados, close friends of Cecile T'ang, on a tour from one city to another.


reliable-random
This is an implementation of the PCG PRNG in typescript. The advantages of this generator are outlined in more detail on their website, but here are a few:
yarn install reliable-random
The main draw for this package is the ability to produce random numbers from a user-defined seed.
The PCG implementation also allows multiple different streams of random numbers from the same seed. This can be very helpful when creating games with a random element to them (roguelike games for example) because the seeds can easily be shared with others.
Generated using TypeDoc


| Opcode* | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
|---|---|---|---|---|---|
| 0F 31 | RDTSC | ZO | Valid | Valid | Read time-stamp counter into EDX:EAX. |
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| ZO | NA | NA | NA | NA |
Reads the current value of the processor’s time-stamp counter (a 64-bit MSR) into the EDX:EAX registers. The EDX register is loaded with the high-order 32 bits of the MSR and the EAX register is loaded with the low-order 32 bits. (On processors that support the Intel 64 architecture, the high-order 32 bits of each of RAX and RDX are cleared.)
The processor monotonically increments the time-stamp counter MSR every clock cycle and resets it to 0 whenever the processor is reset. See “Time Stamp Counter” in Chapter 17 of the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3B, for specific details of the time stamp counter behavior.
The time stamp disable (TSD) flag in register CR4 restricts the use of the RDTSC instruction as follows. When the flag is clear, the RDTSC instruction can be executed at any privilege level; when the flag is set, the instruction can only be executed at privilege level 0.
The time-stamp counter can also be read with the RDMSR instruction, when executing at privilege level 0.
The RDTSC instruction is not a serializing instruction. It does not necessarily wait until all previous instructions have been executed before reading the counter. Similarly, subsequent instructions may begin execution before the read operation is performed. The following items may guide software seeking to order executions of RDTSC:
1. A load is considered to become globally visible when the value to be loaded is determined.
This instruction was introduced by the Pentium processor.
See “Changes to Instruction Behavior in VMX Non-Root Operation” in Chapter 25 of the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3C, for more information about the behavior of this instruction in VMX non-root operation.
IF (CR4.TSD = 0) or (CPL = 0) or (CR0.PE = 0) THEN EDX:EAX ← TimeStampCounter; ELSE (* CR4.TSD = 1 and (CPL = 1, 2, or 3) and CR0.PE = 1 *) #GP(0); FI;
None.
| #GP(0) | If the TSD flag in register CR4 is set and the CPL is greater than 0. |
| #UD | If the LOCK prefix is used. |
| #UD | If the LOCK prefix is used. |
| #GP(0) | If the TSD flag in register CR4 is set. |
| #UD | If the LOCK prefix is used. |
Same exceptions as in protected mode.
Same exceptions as in protected mode.


|
Perl Weekly
Issue #148 - 2014-05-26 - Conference Season is On
latest | archive | by Yanick Champoux
|
|
This week has a lot of conference-related material: videos from the Nederlandse Perl Workshop, report from the Czech Perl workshop, the happy news that the Mojolicious conference is, in all likeliness, going to have a 2015 edition, and some noise about the upcoming YAPC::NA. Hopefully, those echoes will tempt some of you to come and join the fun! ~ `/anick
|
|
|
GitTip profile of the week
GitTip allows you to give a regular weekly monetary gift to people in order to encourage them to do more of the awesome stuff they have been doing. The gifts can be as low as 1 cent a week. In this section every week you will see a different Perl developer we recommend you support. Oh, and the Perl Weekly itself also has a GitTip account.
|
Chris Williams
Chris Williams (aka BINGOS) is another of those elder members of the Perl community. He maintains an impressive number of modules deadling with the testing toolchain, the Windows environment, Dist-Zilla and the asynchronous POE framework. He's also one of the most, if not THE most, active CPAN tester. Neil Bowers points out in an article this month that Chris reported his twentieth million smoke test, an accomplishment that is quite awe-inspiring.
|
|
Announcements
|
CPAN Testers on Twitter
All the cool kids are doing it. And now, at least one cool tookit is doing it as well. CPAN Testers now has an official Twitter account.
|
|
CPANdeps and cpXXXan scheduled downtime
Usually, we announce new things. This time, however, David Cantrell warns us that CPANdeps and cpXXXan are going down (but only on the 28th, just long enough for a data center move)
|
|
|
|
|
|
Articles
|
|
|
|
|
Thank you, Chris Williams (aka BINGOS)
The CPAN testing network could be argue to be the awesome marrow that is one of the prime factors that makes the CPAN skeleton so strong. But, of course, this testing network is not run magically by elves. Neil Bowers takes time to tip his hat to Chris Williams, who reported this month his 20th million test report. Yes, that's two-zero-zero-zero-zero-zero-zero and zero.
|
|
|
|
How to contribute to the exercism.io Perl 5 repo
Exercism.io is an awesome site giving small tasks to learn a vast array of languages, and providing a nice feedback system. David Farrell shows how easily one can contribute to and expand the list of Perl exercises.
|
|
Spelunking: why 'while(){ }' is my new favorite perl-ism
Here is a feature that you probably didn'y know about. Not content to merely having unearthed this gem, Peter Martini also sleuthes around and finds out exactly since when, and why, this feature has been lurking in the depths of Perl's guts.
|
|
|
|
|
|
|
|
Discussion
|
YAPC::NA or not?
YAPC::NA is almost upon us (only one more month to go), but the communication channels of the conferences have been rather quiet. To the point that Laufeyjarson muses aloud if he should go. For once, the comments shouldn't be skipped as Chris Prather, one of the organizers, explains the silence, and issues reassurances that the conference is still happening.
|
|
Code
|
One package perl pm file
While you can put more than one package in one .pm file, Gabor Szabo reminds us that we don't necessary want to do that.
|
|
A new BackPAN index (generator)
Good news for module repository wranglers everywhere: Neil Bowers and Barbie joined forces, and a new index generator for the BackPAN, or a mirror following its structure.
|
|
|
|
App::TimeTracker::Command::Trello
Like App::TimeTracker? The Trello organizer web service as well? You're in luck: domm just extended the former to work with the latter.
|
|
Fun
|
Help me name Veure!
Ovid is working on his sci-fi, mmorpg browser-based game, and he needs your help for the hardest task of them all: find the right name for the thing.
|
|
Videos
|
TIM-fu*%ing-TOWDI
Sawyer X at NLPW::2014::Utretcht, being his awesome, profane, wonderful self. (20 min)
|
|
|
|
Weekly collections
|
|
|
|
|
Perl Maven Tutorials
|
|
|
Events
|
Perl-related events
In the following cities: Paris (FR), St. Petersburg (Ru), Orlando (FL/USA), Sofia (BG), Flörli Olten (CH)
|
|
You know, you could get the Perl Weekly right in your mailbox. Every Week. Free of charge!
|


--- title: "Apicurito" permalink: /apicurito/ layout: page --- {% assign latestRelease = site.data.apicurito.latestRelease %}
We had a need to provide basic API design capabilities in an ultra-slim package, without all of the extra features found in Apicurio Studio - and thus Apicurito was born!
Apicurito is essentially the API editor in Apicurio Studio repackaged as a simple standalone web application. It has no back-end component at all, which makes it incredibly easy to package, deploy, and use. However, the trade-off is that it supports only the core visual editing experience in Apicurio Studio, without the collaboration, persistence, and integration with external systems.


2021
December, 2021
The Left Hand of Darkness
Ursula K. Le Guin
November, 2021
Harlem Shuffle
Colson Whitehead
October, 2021
The Paris Apartment
Kelly Bowen
September, 2021
The Personal Librarian
Marie Benedict
August, 2021
The Last Thing He Told Me
Laura Dave
July, 2021
The Midnight Library
Matt Haig
June, 2021
The Four Winds
Kristin Hannah
May, 2021
Dark Tides
Philippa Gregory
April, 2021
The Exiles
Christina Baker Kline
March, 2021
The Lost Shtetl
Max Gross
February, 2021
Becoming Eve: My Journey from Ultra-Orthodox Rabbi to Transgender Woman
Abby Stein
January, 2021
Redhead by the Side of the Road
Anne Tyler


Security Advisory: Multiple Critical Vulnerabilities in E-Detective Lawful Interception System
By Mustafa Al-Bassam and slipstream/RoL.
Overview
From the vendor's website:
E-Detective is a real-time Internet interception, monitoring and forensics system that captures, decodes, and reconstructs various types of Internet traffic. It is commonly used for organization Internet behavioral monitoring, auditing, record keeping, forensics analysis, and investigation, as well as, legal and lawful interception for lawful enforcement agencies such as Police Intelligence, Military Intelligence, Cyber Security Departments, National Security Agencies, Criminal Investigation Agencies, Counter Terrorism Agencies etc. It also can provide a compliance solution for many standards or acts like Sarbanes Oxley Act (SOX), HIPAA, GLBA, SEC, NASD, E-Discovery and many others.
Decision Group also claims that its products are used by "more than 100 law enforcement agencies", including the National Security Bureau of the Republic of China.
E-Detective suffers from multiple critical security vulnerabilities, detailed in this advisory.
Issues
E-Detective has a web management interface for viewing intercepted communications and managing the system, which can be exploited in multiple ways.
1. Unauthenticated Local File Disclosure
The common/download.php
script in the web root allows for unauthenticated users to read arbitrary files on the system. This may include database credentials and captured data intercepts.
The file
URL query parameter of the script is "protected" by the following encoding which is trivially reversible: base64 followed by rot40.
A proof of concept for this vulnerability is available here.
2. Authenticated Remote Code Execution
Combining this vulnerability with the Local File Disclosure vulnerability above can result in unauthenticated remote code execution.
The restore feature on the "config backup" page extracts a .tar file encrypted with Blowfish using OpenSSL into the system's root directory (/
) as root.
The .tar file must be encrypted with the static key /tmp/.charlie
. Yes, that's the actual key - the software passes the wrong argument to OpenSSL. -K
is used to pass the keyfile instead of -kfile
, meaning that the key is the path of the keyfile rather than the contents of the keyfile.
This allows an attacker to upload a shell into the web root, or overwrite any sensitive system files such as /etc/shadow
.
Solution
Uninstallation of E-Detective will prevent exploitation of these issues. The researchers cannot sanction any mitigations except to remove this software definitively from any affected devices.


| Buyer | {{offer.buyer}} |
| Financing | {{offer.financing}} |
| Closing | {{offer.closing}} |
| Deposit | {{offer.deposit | currency:'$':0}} |
| Offer Price | {{offer.offer_price | currency:'$':0}} |
| Commission | {{((offer.offer_price*1) * (proforma.commission_percent/100)).toFixed(0) | currency:'$':0}} |
| Closing Costs | {{offer.closing_costs | currency:'$':0}} |
| Counter | {{offer.counter | currency:'$':0}} |
| HOA | {{offer.hoa | currency:'$':0}} |
| Home Warranty | {{offer.home_warranty | currency:'$':0}} |
| Net Offer | {{((offer.offer_price*1) - (offer.commission*1) - (offer.closing_costs*1) + (offer.counter*1)).toFixed(0) | currency:'$':0}} |
| Title | {{offer.title}} |
| Excrow | {{offer.escrow}} |
| Termite | {{offer.termite}} |
| NHD | {{offer.nhd}} |
| Septic | {{offer.septic}} |
| Co. Fees | {{offer.co_fees}} |
| City Fees | {{offer.city_fees}} |
| FICO | {{offer.fico}} |
| POF | {{offer.pof}} |
| Other Terms | {{offer.other_terms}} |
| Notes | {{offer.notes}} |