jedi Return of the Jedi rating changed over violence By www.bbc.com Published On :: Wed, 13 Nov 2024 11:04:43 GMT The film is upgraded from a U to a PG rating by the BBFC because of "the intensity of its violence". Full Article
jedi Vijesti :: Grb grada Malog Lošinja dvojici pripadnika Jedinice specijalne i interventne policije Osijek By www.osijek031.com Published On :: Wed, 13 Nov 2024 15:00:00 GMT Autor: Redakcija 031 Naslov: Grb grada Malog Lošinja dvojici pripadnika Jedinice specijalne i interventne policije OsijekPostano: 13.11.2024. 16:00 (GMT 1) Povodom Dana Grada Malog Lošinja dodijeljen je Grb Grada i dvojici pripadnika Jedinice specijalne i interventne policije Osijek, za izuzetnu hrabrost, stručnost i profesionalnost u realizaciji složene akcije izmještanja mine iz lošinjskog akvatorija 14. ožujka ove godine. Robert Dorinka i Tomislav Slabinac su ronioci Jedinice specijalne i interventne policije Osijek, koji su sudjelovali u izmještanju mine zaostale iz 2. svjetskog rata, koja se nalazila u lošinjskom akvatoriju. Da se radilo o opasnom podvigu, potvrđuje činjenica da je zbog bombe teške oko 1000 kilograma, uoči početka akcije zbog mjera sigurnosti u potpunosti evakuirano stanovništvo iz takozvane crvene zone, odnosno područja uvale Čikat. Osim toga je tijekom akcije bila na snazi privremena zabrana cestovnog, pomorskog i zračnog prometa. Tekst i foto: PU osječko-baranjska Full Article
jedi Episode 52: The Last Jedi: 3rd Annual Star Wars Bonanza By www.ancientfaith.com Published On :: 2017-12-20T21:49:59+00:00 It’s finally time for the annual Star Wars PCCH, and the guys are stoked. They discuss relating with the past, the balance between light and darkness, and how great it was to see Luke Skywalker return to the silver screen. Spoilers abound, including this one: No Top 5. Just pure, unadulterated Star Wars. Full Article
jedi Return of the Jedi Storyboard Site By projects.metafilter.com Published On :: Thu, 24 Oct 2024 16:20:40 GMT I've done my best to collect and catalogue all of the storyboards from the production of 1983's Richard Marquand hit Return of the Jedi, driven by wanting to see what unfinished or cut scenes could be revealed.You can read the entire screenplay, including deleted scenes while looking at the storyboards with a little commentary, or you can see all the storyboards in galleries. I've included some pages with behind the scenes photos and an explanation of my methods as well. If it's deleted scenes you're after, the bulk of those are found the Space Battle and the Rebel Attack sequences. Return of the Jedi ran into some time-and-budget-crunch problems in the last year of production, as well as technical issues, which resulted in some cuts being made to those sequences. Figuring out just what was cut and why was my original motive for the project, and although I'm still missing a lot of the storyboards from those cut sequences, there's enough to get the gist. Oh, and if you are, for some reason, in possession of copies of any of the missing storyboards, please get in touch![Link Full Article
jedi El debate de RTVC, feliz cumpleaños ‘Don Jediondo’ y día sin IVA By www.spreaker.com Published On :: Thu, 16 Jun 2022 23:51:00 +0000 En este episodio, La Luciérnaga se enciende para revisar la carta de Rodolfo Hernández sobre su participación en el debate ordenado por el tribunal de Bogotá. Además, enviamos un saludo Pedro Gonzalez “Don Jediondo” por su cumpleaños. También, ya estamos listos para el día sin IVALa Luciérnaga un espacio de humor, análisis y opinión de Caracol Radio que acompaña desde hace 30 años a sus oyentes en el regreso a casa. Full Article
jedi Don Jediondo sobre pancartas contra local y explica por qué no ha pagado a proveedor By www.spreaker.com Published On :: Mon, 04 Apr 2022 17:19:00 +0000 Full Article
jedi Reacción de Don Jediondo ante el fallecimiento de la 'Gorda Fabiola' By www.spreaker.com Published On :: Thu, 19 Sep 2024 16:39:00 +0000 Full Article
jedi Jediah Cumbermack Ready For Talent Cup By bernews.com Published On :: Mon, 11 Jul 2022 22:00:41 +0000 [Written by Stephen Wright] Jediah Cumbermack admits he was surprised by the speed of his North American Talent Cup rivals during his race debut in Washington State last month. Cumbermack missed the first two rounds of the seven-race series after suffering a broken leg in a practice session before the opening race in Austin in April. […] Full Article All News Sports #MotorcycleRacing #StephenWrightReports
jedi Jediah Cumbermack Competes In Talent Cup By bernews.com Published On :: Wed, 20 Jul 2022 12:59:52 +0000 Jediah Cumbermack competed in the North American Talent Cup in Savannah, Georgia. Round four of the North America Talent Cup [NATC] produced the closest racing of the season so far, with the top eight riders finishing within .5 second of each other in race one. Race two was even closer, with the top four within […] Full Article All Sports #MotorcycleRacing
jedi Jediah Cumbermack Teams Up With Bison By bernews.com Published On :: Mon, 02 Jan 2023 12:15:18 +0000 [Written by Stephen Wright] Jediah Cumbermack has teamed up with American motorsports brand Bison Track as he prepares for the new motorcycling campaign. The Bermudian, who will race in Bison apparel as a sponsored rider, plans to enter races in the North America Talent Cup [NATC] and the MotoAmerica STG Junior Cup next season. Cumbermack told […] Full Article All News Sports #MotorcycleRacing #StephenWrightReports
jedi Jediah Cumbermack To Race In California By bernews.com Published On :: Sat, 15 Apr 2023 13:21:21 +0000 [Written by Stephen Wright] Jediah Cumbermack will compete in the final leg of the seven-race Chuckwalla Motorcycle Racing Association [CMVA] series in Desert Centre, California, this weekend [April 15 and 16]. It will be the Bermudian’s second international meet of the year, having made his debut in the fifth round of the series in February, […] Full Article All News Sports #MotorcycleRacing #StephenWrightReports
jedi Jediah Cumbermack Competes In California By bernews.com Published On :: Tue, 18 Apr 2023 13:23:08 +0000 Jediah Cumbermack was back in action competing in the final leg of the seven-race Chuckwalla Motorcycle Racing Association [CMVA] series in Desert Centre, California. He competed in the Formula Ultra Lightweight Class where he finished 2nd, clocking a six-lap time of 12:10.977, and he also competed in the Formula Ultra Lightweight Class, where he recorded […] Full Article All Sports #MotorcycleRacing
jedi Jediah Cumbermack To Race In Minnesota By bernews.com Published On :: Fri, 28 Jul 2023 14:14:11 +0000 [Written by Stephen Wright] Bermuda motorcycle racer Jediah Cumbermack will test himself against overseas competition in the MotoAmerica Junior Cup at the Brainerd International Raceway in Minnesota this weekend. The 17-year-old, representing Texas-based team A.I.R Onze Moto Racing, debuted in the competition at the Barber Motorsports Park in Birmingham, Alabama, in May. Cumbermack, who will […] Full Article All Sports #MotorcycleRacing #StephenWrightReports
jedi TurtleWare: Dynamic Vars - Return of the Jedi By turtleware.eu Published On :: Mon, 04 Nov 2024 00:00:00 GMT Table of Contents The protocol Control operators Synchronized hash tables with weakness First-class dynamic variables STANDARD-DYNAMIC-VARIABLE SURROGATE-DYNAMIC-VARIABLE Thread-local variables The protocol The implementation Thread-local slots What can we use it for? In the previous two posts I've presented an implementation of first-class dynamic variables using PROGV and a surrogate implementation for SBCL. Now we will double down on this idea and make the protocol extensible. Finally we'll implement a specialized version of dynamic variables where even the top level value of the variable is thread-local. The protocol Previously we've defined operators as either macros or functions. Different implementations were protected by the feature flag and symbols collided. Now we will introduce the protocol composed of a common superclass and functions that are specialized by particular implementations. Most notably we will introduce a new operator CALL-WITH-DYNAMIC-VARIABLE that is responsible for establishing a single binding. Thanks to that it will be possible to mix dynamic variables of different types within a single DLET statement. (defclass dynamic-variable () ()) (defgeneric dynamic-variable-bindings (dvar)) (defgeneric dynamic-variable-value (dvar)) (defgeneric (setf dynamic-variable-value) (value dvar)) (defgeneric dynamic-variable-bound-p (dvar)) (defgeneric dynamic-variable-makunbound (dvar)) (defgeneric call-with-dynamic-variable (cont dvar &optional value)) Moreover we'll define a constructor that is specializable by a key. This design will allow us to refer to the dynamic variable class by using a shorter name. We will also define the standard class to be used and an matching constructor. (defparameter *default-dynamic-variable-class* #-fake-progv-kludge 'standard-dynamic-variable #+fake-progv-kludge 'surrogate-dynamic-variable) (defgeneric make-dynamic-variable-using-key (key &rest initargs) (:method (class &rest initargs) (apply #'make-instance class initargs)) (:method ((class (eql t)) &rest initargs) (apply #'make-instance *default-dynamic-variable-class* initargs)) (:method ((class null) &rest initargs) (declare (ignore class initargs)) (error "Making a dynamic variable that is not, huh?"))) (defun make-dynamic-variable (&rest initargs) (apply #'make-dynamic-variable-using-key t initargs)) Control operators Control operators are the same as previously, that is a set of four macros that consume the protocol specified above. Note that DYNAMIC-VARIABLE-PROGV expands to a recursive call where each binding is processed separately. (defmacro dlet (bindings &body body) (flet ((pred (binding) (and (listp binding) (= 2 (length binding))))) (unless (every #'pred bindings) (error "DLET: bindings must be lists of two values.~%~ Invalid bindings:~%~{ ~s~%~}" (remove-if #'pred bindings)))) (loop for (var val) in bindings collect var into vars collect val into vals finally (return `(dynamic-variable-progv (list ,@vars) (list ,@vals) ,@body)))) (defmacro dset (&rest pairs) `(setf ,@(loop for (var val) on pairs by #'cddr collect `(dref ,var) collect val))) (defmacro dref (variable) `(dynamic-variable-value ,variable)) (defun call-with-dynamic-variable-progv (cont vars vals) (flet ((thunk () (if vals (call-with-dynamic-variable cont (car vars) (car vals)) (call-with-dynamic-variable cont (car vars))))) (if vars (call-with-dynamic-variable-progv #'thunk (cdr vars) (cdr vals)) (funcall cont)))) (defmacro dynamic-variable-progv (vars vals &body body) (let ((cont (gensym))) `(flet ((,cont () ,@body)) (call-with-dynamic-variable-progv (function ,cont) ,vars ,vals)))) Synchronized hash tables with weakness Previously we've used SBCL-specific options to define a synchronized hash table with weak keys. This won't do anymore, because we will need a similar object to implement the thread-local storage for top level values. trivial-garbage is a portability layer that allows to define hash tables with a specified weakness, but it does not provide an argument that would abstract away synchronization. We will ensure thread-safety with locks instead. (defclass tls-table () ((table :initform (trivial-garbage:make-weak-hash-table :test #'eq :weakness :key)) (lock :initform (bt:make-lock)))) (defun make-tls-table () (make-instance 'tls-table)) (defmacro with-tls-table ((var self) &body body) (let ((obj (gensym))) `(let* ((,obj ,self) (,var (slot-value ,obj 'table))) (bt:with-lock-held ((slot-value ,obj 'lock)) ,@body)))) First-class dynamic variables STANDARD-DYNAMIC-VARIABLE Previously in the default implementation we've represented dynamic variables with a symbol. The new implementation is similar except that the symbol is read from a STANDARD-OBJECT that represents the variable. This also enables us to specialize the function CALL-WITH-DYNAMIC-VARIABLE: (defclass standard-dynamic-variable (dynamic-variable) ((symbol :initform (gensym) :accessor dynamic-variable-bindings))) (defmethod dynamic-variable-value ((dvar standard-dynamic-variable)) (symbol-value (dynamic-variable-bindings dvar))) (defmethod (setf dynamic-variable-value) (value (dvar standard-dynamic-variable)) (setf (symbol-value (dynamic-variable-bindings dvar)) value)) (defmethod dynamic-variable-bound-p ((dvar standard-dynamic-variable)) (boundp (dynamic-variable-bindings dvar))) (defmethod dynamic-variable-makunbound ((dvar standard-dynamic-variable)) (makunbound (dynamic-variable-bindings dvar))) (defmethod call-with-dynamic-variable (cont (dvar standard-dynamic-variable) &optional (val nil val-p)) (progv (list (dynamic-variable-bindings dvar)) (if val-p (list val) ()) (funcall cont))) SURROGATE-DYNAMIC-VARIABLE The implementation of the SURROGATE-DYNAMIC-VARIABLE is almost the same as previously. The only difference is that we use the previously defined indirection to safely work with hash tables. Also note, that we are not add the feature condition - both classes is always created. (defvar +fake-unbound+ 'unbound) (defvar +cell-unbound+ '(no-binding)) (defclass surrogate-dynamic-variable (dynamic-variable) ((tls-table :initform (make-tls-table) :reader dynamic-variable-tls-table) (top-value :initform +fake-unbound+ :accessor dynamic-variable-top-value))) (defmethod dynamic-variable-bindings ((dvar surrogate-dynamic-variable)) (let ((process (bt:current-thread))) (with-tls-table (tls-table (dynamic-variable-tls-table dvar)) (gethash process tls-table +cell-unbound+)))) (defmethod (setf dynamic-variable-bindings) (value (dvar surrogate-dynamic-variable)) (let ((process (bt:current-thread))) (with-tls-table (tls-table (dynamic-variable-tls-table dvar)) (setf (gethash process tls-table) value)))) (defun %dynamic-variable-value (dvar) (let ((tls-binds (dynamic-variable-bindings dvar))) (if (eq tls-binds +cell-unbound+) (dynamic-variable-top-value dvar) (car tls-binds)))) (defmethod dynamic-variable-value ((dvar surrogate-dynamic-variable)) (let ((tls-value (%dynamic-variable-value dvar))) (when (eq tls-value +fake-unbound+) (error 'unbound-variable :name "(unnamed)")) tls-value)) (defmethod (setf dynamic-variable-value) (value (dvar surrogate-dynamic-variable)) (let ((tls-binds (dynamic-variable-bindings dvar))) (if (eq tls-binds +cell-unbound+) (setf (dynamic-variable-top-value dvar) value) (setf (car tls-binds) value)))) (defmethod dynamic-variable-bound-p ((dvar surrogate-dynamic-variable)) (not (eq +fake-unbound+ (%dynamic-variable-value dvar)))) (defmethod dynamic-variable-makunbound ((dvar surrogate-dynamic-variable)) (setf (dynamic-variable-value dvar) +fake-unbound+)) ;;; Apparently CCL likes to drop^Helide some writes and that corrupts bindings ;;; table. Let's ensure that the value is volatile. #+ccl (defvar *ccl-ensure-volatile* nil) (defmethod call-with-dynamic-variable (cont (dvar surrogate-dynamic-variable) &optional (val +fake-unbound+)) (push val (dynamic-variable-bindings dvar)) (let (#+ccl (*ccl-ensure-volatile* (dynamic-variable-bindings dvar))) (unwind-protect (funcall cont) (pop (dynamic-variable-bindings dvar))))) Thread-local variables We've refactored the previous code to be extensible. Now we can use metaobjects from the previous post without change. We can also test both implementations in the same process interchangeably by customizing the default class parameter. It is the time now to have some fun and extend dynamic variables into variables with top value not shared between different threads. This will enable ultimate thread safety. With our new protocol the implementation is trivial! The protocol First we will define the protocol class. THREAD-LOCAL-VARIABLE is a variant of a DYNAMIC-VARIABLE with thread-local top values. We specify initialization arguments :INITVAL and :INITFUN that will be used to assign the top value of a binding. The difference is that INITVAL specifies a single value, while INITFUN can produce an unique object on each invocation. INITARG takes a precedence over INTIFUN, and if neither is supplied, then a variable is unbound. We include the constructor that builds on MAKE-DYNAMIC-VARIABLE-USING-KEY, and macros corresponding to DEFVAR and DEFPARAMETER. Note that they expand to :INITFUN - this assures that the initialization form is re-evaluated for each new thread where the variable is used. (defclass thread-local-variable (dynamic-variable) ()) (defmethod initialize-instance :after ((self thread-local-variable) &key initfun initval) (declare (ignore self initfun initval))) (defparameter *default-thread-local-variable-class* #-fake-progv-kludge 'standard-thread-local-variable #+fake-progv-kludge 'surrogate-thread-local-variable) (defun make-thread-local-variable (&rest initargs) (apply #'make-dynamic-variable-using-key *default-thread-local-variable-class* initargs)) (defmacro create-tls-variable (&optional (form nil fp) &rest initargs) `(make-thread-local-variable ,@(when fp `(:initfun (lambda () ,form))) ,@initargs)) (defmacro define-tls-variable (name &rest initform-and-initargs) `(defvar ,name (create-tls-variable ,@initform-and-initargs))) (defmacro define-tls-parameter (name &rest initform-and-initargs) `(defparameter ,name (create-tls-variable ,@initform-and-initargs))) Perhaps it is a good time to introduce a new convention for tls variable names. I think that surrounding names with the minus sign is a nice idea, because it signifies, that it is something less than a global value. For example: DYNAMIC-VARS> (define-tls-variable -context- (progn (print "Initializing context!") (list :context))) -CONTEXT- DYNAMIC-VARS> -context- #<a EU.TURTLEWARE.DYNAMIC-VARS::STANDARD-THREAD-LOCAL-VARIABLE 0x7f7636c08640> DYNAMIC-VARS> (dref -context-) "Initializing context!" (:CONTEXT) DYNAMIC-VARS> (dref -context-) (:CONTEXT) DYNAMIC-VARS> (dset -context- :the-new-value) :THE-NEW-VALUE DYNAMIC-VARS> (dref -context-) :THE-NEW-VALUE DYNAMIC-VARS> (bt:make-thread (lambda () (print "Let's read it!") (print (dref -context-)))) #<process "Anonymous thread" 0x7f7637a26cc0> "Let's read it!" "Initializing context!" (:CONTEXT) DYNAMIC-VARS> (dref -context-) :THE-NEW-VALUE The implementation You might have noticed the inconspicuous operator DYNAMIC-VARIABLE-BINDINGS that is part of the protocol. It returns an opaque object that represents values of the dynamic variable in the current context: for STANDARD-DYNAMIC-VARIABLE it is a symbol for SURROGATE-DYNAMIC-VARIABLE it is a thread-local list of bindings In any case all other operators first take this object and then use it to read, write or bind the value. The gist of the tls variables implementation is to always return an object that is local to the thread. To store these objects we will use the tls-table we've defined earlier. (defclass thread-local-variable-mixin (dynamic-variable) ((tls-table :initform (make-tls-table) :reader dynamic-variable-tls-table) (tls-initfun :initarg :initfun :initform nil :accessor thread-local-variable-initfun) (tls-initval :initarg :initval :initform +fake-unbound+ :accessor thread-local-variable-initval))) For the class STANDARD-THREAD-LOCAL-VARIABLE we will simply return a different symbol depending on the thread: (defclass standard-thread-local-variable (thread-local-variable-mixin thread-local-variable standard-dynamic-variable) ()) (defmethod dynamic-variable-bindings ((tvar standard-thread-local-variable)) (flet ((make-new-tls-bindings () (let ((symbol (gensym)) (initval (thread-local-variable-initval tvar)) (initfun (thread-local-variable-initfun tvar))) (cond ((not (eq +fake-unbound+ initval)) (setf (symbol-value symbol) initval)) ((not (null initfun)) (setf (symbol-value symbol) (funcall initfun)))) symbol))) (let ((key (bt:current-thread))) (with-tls-table (tls-table (dynamic-variable-tls-table tvar)) (or (gethash key tls-table) (setf (gethash key tls-table) (make-new-tls-bindings))))))) And for the class SURROGATE-THREAD-LOCAL-VARIABLE the only difference from the SURROGATE-DYNAMIC-VARIABLE implementation is to cons a new list as the initial value (even when it is unbound) to ensure it is not EQ to +CELL-UNBOUND+. (defclass surrogate-thread-local-variable (thread-local-variable-mixin thread-local-variable surrogate-dynamic-variable) ()) (defmethod dynamic-variable-bindings ((tvar surrogate-thread-local-variable)) (flet ((make-new-tls-bindings () (let ((initval (thread-local-variable-initval tvar)) (initfun (thread-local-variable-initfun tvar))) (cond ((not (eq +fake-unbound+ initval)) (list initval)) ((not (null initfun)) (list (funcall initfun))) (t (list +fake-unbound+)))))) (let ((key (bt:current-thread))) (with-tls-table (tls-table (dynamic-variable-tls-table tvar)) (or (gethash key tls-table) (setf (gethash key tls-table) (make-new-tls-bindings))))))) That's all, now we have two implementations of thread-local variables. Ramifications are similar as with "ordinary" dynamic variables - the standard implementation is not advised for SBCL, because it will crash in LDB. Thread-local slots First we are going to allow to defined dynamic variable types with an abbreviated names. This will enable us to specify in the slot definition that type, for example (MY-SLOT :DYNAMIC :TLS :INITFORM 34) ;;; Examples how to add shorthand type names for the dynamic slots: (defmethod make-dynamic-variable-using-key ((key (eql :tls)) &rest initargs) (apply #'make-dynamic-variable-using-key *default-thread-local-variable-class* initargs)) (defmethod make-dynamic-variable-using-key ((key (eql :normal-tls)) &rest initargs) (apply #'make-dynamic-variable-using-key 'standard-thread-local-variable initargs)) (defmethod make-dynamic-variable-using-key ((key (eql :kludge-tls)) &rest initargs) (apply #'make-dynamic-variable-using-key 'surrogate-thread-local-variable initargs)) ;;; For *DEFAULT-DYNAMIC-VARIABLE* specify :DYNAMIC T. (defmethod make-dynamic-variable-using-key ((key (eql :normal-dyn)) &rest initargs) (apply #'make-dynamic-variable-using-key 'standard-dynamic-variable initargs)) (defmethod make-dynamic-variable-using-key ((key (eql :kludge-dyn)) &rest initargs) (apply #'make-dynamic-variable-using-key 'surrogate-dynamic-variable initargs)) In order to do that, we need to remember he value of the argument :DYNAMIC. We will read it with DYNAMIC-VARIABLE-TYPE and that value will be available in both direct and the effective slot: ;;; Slot definitions ;;; There is a considerable boilerplate involving customizing slots. ;;; ;;; - direct slot definition: local to a single defclass form ;;; ;;; - effective slot definition: combination of all direct slots with the same ;;; name in the class and its superclasses ;;; (defclass dynamic-direct-slot (mop:standard-direct-slot-definition) ((dynamic :initform nil :initarg :dynamic :reader dynamic-variable-type))) ;;; The metaobject protocol did not specify an elegant way to communicate ;;; between the direct slot definition and the effective slot definition. ;;; Luckily we have dynamic bindings! :-) (defvar *kludge/mop-deficiency/dynamic-variable-type* nil) ;;; DYNAMIC-EFFECTIVE-SLOT is implemented to return as slot-value values of the ;;; dynamic variable that is stored with the instance. ;;; ;;; It would be nice if we could specify :ALLOCATION :DYNAMIC for the slot, but ;;; then STANDARD-INSTANCE-ACCESS would go belly up. We could make a clever ;;; workaround, but who cares? (defclass dynamic-effective-slot (mop:standard-effective-slot-definition) ((dynamic :initform *kludge/mop-deficiency/dynamic-variable-type* :reader dynamic-variable-type))) Moreover we specialize the function MAKE-DYNAMIC-VARIABLE-USING-KEY to the effective slot class. The initargs in this method are meant for the instance. When the dynamic variable is created, we check whether it is a thread-local variable and initialize its INITVAL and INITFUN to values derived from INITARGS, MOP:SLOT-DEFINITION-INITARGS and MOP:SLOT-DEFINITION-INITFUN: (defmethod make-dynamic-variable-using-key ((key dynamic-effective-slot) &rest initargs) (let* ((dvar-type (dynamic-variable-type key)) (dvar (make-dynamic-variable-using-key dvar-type))) (when (typep dvar 'thread-local-variable) (loop with slot-initargs = (mop:slot-definition-initargs key) for (key val) on initargs by #'cddr when (member key slot-initargs) do (setf (thread-local-variable-initval dvar) val)) (setf (thread-local-variable-initfun dvar) (mop:slot-definition-initfunction key))) dvar)) The rest of the implementation of DYNAMIC-EFFECTIVE-SLOT is unchanged: (defmethod mop:slot-value-using-class ((class standard-class) object (slotd dynamic-effective-slot)) (dref (slot-dvar object slotd))) (defmethod (setf mop:slot-value-using-class) (new-value (class standard-class) object (slotd dynamic-effective-slot)) (dset (slot-dvar object slotd) new-value)) (defmethod mop:slot-boundp-using-class ((class standard-class) object (slotd dynamic-effective-slot)) (dynamic-variable-bound-p (slot-dvar object slotd))) (defmethod mop:slot-makunbound-using-class ((class standard-class) object (slotd dynamic-effective-slot)) (dynamic-variable-makunbound (slot-dvar object slotd))) The implementation of CLASS-WITH-DYNAMIC-SLOTS is also very similar. The first difference in that ALLOCATE-INSTANCE calls MAKE-DYNAMIC-VARIABLE-USING-KEY instead of MAKE-DYNAMIC-VARIABLE and supplies the effective slot definition as the key, and the instance initargs as the remaining arguments. Note that at this point initargs are already validated by MAKE-INSTANCE. The second difference is that MOP:COMPUTE-EFFECTIVE-SLOT-DEFINITION binds the flag *KLUDGE/MOP-DEFICIENCY/DYNAMIC-VARIABLE-TYPE* to DYNAMIC-VARIABLE-TYPE. ;;; This is a metaclass that allows defining dynamic slots that are bound with ;;; the operator SLOT-DLET, and, depending on the type, may have thread-local ;;; top value. ;;; ;;; The metaclass CLASS-WITH-DYNAMIC-SLOTS specifies alternative effective slot ;;; definitions for slots with an initarg :dynamic. (defclass class-with-dynamic-slots (standard-class) ()) ;;; Class with dynamic slots may be subclasses of the standard class. (defmethod mop:validate-superclass ((class class-with-dynamic-slots) (super standard-class)) t) ;;; When allocating the instance we initialize all slots to a fresh symbol that ;;; represents the dynamic variable. (defmethod allocate-instance ((class class-with-dynamic-slots) &rest initargs) (let ((object (call-next-method))) (loop for slotd in (mop:class-slots class) when (typep slotd 'dynamic-effective-slot) do (setf (mop:standard-instance-access object (mop:slot-definition-location slotd)) (apply #'make-dynamic-variable-using-key slotd initargs))) object)) ;;; To improve potential composability of CLASS-WITH-DYNAMIC-SLOTS with other ;;; metaclasses we treat specially only slots that has :DYNAMIC in initargs, ;;; otherwise we call the next method. (defmethod mop:direct-slot-definition-class ((class class-with-dynamic-slots) &rest initargs) (loop for (key) on initargs by #'cddr when (eq key :dynamic) do (return-from mop:direct-slot-definition-class (find-class 'dynamic-direct-slot))) (call-next-method)) (defmethod mop:compute-effective-slot-definition ((class class-with-dynamic-slots) name direct-slotds) (declare (ignore name)) (let ((latest-slotd (first direct-slotds))) (if (typep latest-slotd 'dynamic-direct-slot) (let ((*kludge/mop-deficiency/dynamic-variable-type* (dynamic-variable-type latest-slotd))) (call-next-method)) (call-next-method)))) (defmethod mop:effective-slot-definition-class ((class class-with-dynamic-slots) &rest initargs) (declare (ignore initargs)) (if *kludge/mop-deficiency/dynamic-variable-type* (find-class 'dynamic-effective-slot) (call-next-method))) Finally the implementation of SLOT-DLET does not change: ;;; Accessing and binding symbols behind the slot. We don't use SLOT-VALUE, ;;; because it will return the _value_ of the dynamic variable, and not the ;;; variable itself. (defun slot-dvar (object slotd) (check-type slotd dynamic-effective-slot) (mop:standard-instance-access object (mop:slot-definition-location slotd))) (defun slot-dvar* (object slot-name) (let* ((class (class-of object)) (slotd (find slot-name (mop:class-slots class) :key #'mop:slot-definition-name))) (slot-dvar object slotd))) (defmacro slot-dlet (bindings &body body) `(dlet ,(loop for ((object slot-name) val) in bindings collect `((slot-dvar* ,object ,slot-name) ,val)) ,@body)) Finally we can define a class with slots that do not share the top value: DYNAMIC-VARS> (defclass c1 () ((slot1 :initarg :slot1 :dynamic nil :accessor slot1) (slot2 :initarg :slot2 :dynamic t :accessor slot2) (slot3 :initarg :slot3 :dynamic :tls :accessor slot3)) (:metaclass class-with-dynamic-slots)) #<The EU.TURTLEWARE.DYNAMIC-VARS::CLASS-WITH-DYNAMIC-SLOTS EU.TURTLEWARE.DYNAMIC-VARS::C1> DYNAMIC-VARS> (with-slots (slot1 slot2 slot3) *object* (setf slot1 :x slot2 :y slot3 :z) (list slot1 slot2 slot3)) (:X :Y :Z) DYNAMIC-VARS> (bt:make-thread (lambda () (with-slots (slot1 slot2 slot3) *object* (setf slot1 :i slot2 :j slot3 :k) (print (list slot1 slot2 slot3))))) #<process "Anonymous thread" 0x7f76424c0240> (:I :J :K) DYNAMIC-VARS> (with-slots (slot1 slot2 slot3) *object* (list slot1 slot2 slot3)) (:I :J :Z) What can we use it for? Now that we know how to define thread-local variables, we are left with a question what can we use it for. Consider having a line-buffering stream. One possible implementation could be sketched as: (defclass line-buffering-stream (fancy-stream) ((current-line :initform (make-adjustable-string) :accessor current-line) (current-ink :initform +black+ :accessor current-ink))) (defmethod stream-write-char ((stream line-buffering-stream) char) (if (char= char # ewline) (terpri stream) (vector-push-extend char (current-line stream)))) (defmethod stream-terpri ((stream line-buffering-stream)) (%put-line-on-screen (current-line stream) (current-ink stream)) (setf (fill-pointer (current-line stream)) 0)) If this stream is shared between multiple threads, then even if individual operations and %PUT-LINE-ON-SCREEN are thread-safe , we have a problem. For example FORMAT writes are not usually atomic and individual lines are easily corrupted. If we use custom colors, these are also a subject of race conditions. The solution is as easy as making both slots thread-local. In that case the buffered line is private to each thread and it is put on the screen atomically: (defclass line-buffering-stream (fancy-stream) ((current-line :initform (make-adjustable-string) :accessor current-line :dynamic :tls) (current-ink :initform +black+ :accessor current-ink :dynamic :tls)) (:metaclass class-with-dynamic-slots)) Technique is not limited to streams. It may benefit thread-safe drawing, request processing, resource management and more. By subclassing DYNAMIC-VARIABLE we could create also variables that are local to different objects than processes. I hope that you've enjoyed reading this post as much as I had writing it. If you are interested in a full standalone implementation, with tests and system definitions, you may get it here. Cheers! Full Article
jedi GameFly Black Friday sale is live - FF16 $30, AC VI $35, Jedi Survivor $25 By www.cheapassgamer.com Published On :: Mon, 20 Nov 2023 21:52:56 +0000 Good deals, just grabbed FF16, AC VI, and Jedi Survivor, don't forget to use the coupon for an extra 10% off! https://www.gamefly.com/games Full Article
jedi JEDI Collaborative explores relationship between social justice and education By www.psu.edu Published On :: Tue, 08 Oct 2024 13:42:04 -0400 Ashley Patterson, associate professor of education and women’s, gender and sexuality studies at Penn State, explored the intersection between social justice, equity and education during a JEDI Collaborative speaker series event at Penn State Lehigh Valley. Full Article
jedi Jedi Performers Engage in Epic Lightsaber Challenge at the Top of the World's Tallest Building - Dubai's Burj Khalifa - as Star Wars: The Force Awakens Becomes Available for Digital Download - Two Jedi performers ascend the world� By www.multivu.com Published On :: 08 Apr 2016 10:25:00 EDT Two Jedi performers ascend the world�s tallest building Full Article Entertainment Film & Motion picture Travel Amusement Parks and Tourist Attractions New Products Services MultiVu Video
jedi Forever a Jedi By cheezburger.com Published On :: Fri, 14 Oct 2011 13:48:11 -0700 Full Article Luke forever alone star wars Movie sister Pie Chart
jedi Each and Every - Every Jedi & Sith From Star Wars Explained By Kevin Smith By www.wired.com Published On :: Fri, 09 Sep 2022 16:00:00 +0000 Clerks III director Kevin Smith knows a lot about a lot of things, but he really knows a lot about Star Wars. So, who better to have tell us everything we need to know about the Jedi and Sith that appear in the Star Wars movies? Watch as Kevin talks in detail about Luke Skywalker, Darth Vader, Ahsoka Tano, (Sith Lord?) Jar Jar Binks and much more! CLERKS III will be released exclusively in theaters on September 13th-18th by Lionsgate in partnership with Fathom Events. Kevin will also continue on his “Convenience Tour” roadshow though November with more information about tickets here - https://clerks3.movie Director: Alexandra Coccia Director of Photography: Matt Krueger Editor: Patrick Biesemans Talent: Kevin Smith Line Producer: Joseph Buscemi Associate Producers: Melissa Cho, Samantha Velez Production Managers: Peter Brunette, Andressa Pelachi Production Coordinator: Carol Wachockier Audio: Kara Johnson Cam Op/Gaffer: Shay Eberle-Gunst Production Assistant: Ariel Labasan Post Production Supervisor: Alexa Deutsch Post Production Coordinator: Ian Bryant Supervising Editor: Doug Larsen Assistant Editor: Paul Tael Clerks III is out in theaters on September 13, for two nights only. Director: Alexandra Coccia Director of Photography: Matt Krueger Editor: Patrick Biesemans Talent: Kevin Smith Line Producer: Joseph Buscemi Associate Producers: Melissa Cho, Samantha Velez Production Managers: Peter Brunette, Andressa Pelachi Production Coordinator: Carol Wachockier Audio: Kara Johnson Cam Op/Gaffer: Shay Eberle-Gunst Production Assistant: Ariel Labasan Post Production Supervisor: Alexa Deutsch Post Production Coordinator: Ian Bryant Supervising Editor: Doug Larsen Assistant Editor: Diego Rentsch Full Article
jedi The Last Jedi Trailer Is Here And People Can't Even Handle It By feedproxy.google.com Published On :: Sat, 15 Apr 2017 08:00:00 -0700 Full Article twitter star wars reactions
jedi A 'Last Jedi' battle was filmed on Earth's largest salt flat By www.mnn.com Published On :: Tue, 12 Dec 2017 18:43:27 +0000 The remote Salar de Uyuni in Bolivia is the setting for a pivotal moment in the latest episode of the 'Star Wars' franchise. Full Article Wilderness & Resources
jedi Carrie Fisher's dog reportedly got emotional during 'The Last Jedi' premiere By www.mnn.com Published On :: Sat, 16 Dec 2017 01:51:45 +0000 Gary Fisher, the dog owned by late actress Carrie Fisher, perked up every time Leia spoke. Full Article Pets
jedi DoubleMe, Holographic Mixed Reality Startup, Wins a $3M R&D Grant to bring Jedi Hologram Conference for Real By www.24-7pressrelease.com Published On :: Tue, 12 Jun 2018 07:00:00 GMT Holographic Mixed Reality startup, DoubleMe and University of Surrey, 5G Innovation Centre (5GIC) team up to bring widely accessible personal holoportation platform, to the 5G network by the end of 2019. Full Article
jedi The One About The Outer Worlds, Star Wars Jedi: Fallen Order, and the Elite Series 2 Controller By www.ign.com Published On :: Wed, 23 Oct 2019 01:47:16 +0000 #ad #TacoBellPartner First we show off Taco Bell's new Eclipse Xbox One X giveaway bundle (with the new Xbox Elite Series 2 Controller!), and then we discuss Obsidian's new RPG The Outer Worlds with reviewer Dan Stapleton. Plus: Star Wars Jedi: Fallen Order impressions & more! Full Article
jedi Pentagon asks to reconsider part of JEDI cloud decision after Amazon protest By www.seattletimes.com Published On :: Thu, 12 Mar 2020 18:24:20 -0700 The Pentagon has asked a federal court to give it 120 days to “reconsider certain aspects” of a controversial decision to award an important cloud computing contract known as JEDI to Microsoft, according to a court document made public Thursday. Amazon is suing the Defense Department over the decision, which it claims fell in Microsoft’s […] Full Article Amazon Business Microsoft Nation & World Technology
jedi Reopening after COVID-19, the best parliamentary Zoom backdrops, pandemic dreams, real-life Jedi and more By www.cbc.ca Published On :: Fri, 1 May 2020 19:07:54 EDT How businesses are dealing with the prospect of reopening, the best and worst Zoom backdrops from Parliament's first virtual sitting, why everyone is dreaming about the pandemic, a real-life Jedi master, re-thinking cities after COVID-19, the limits to health-care workers' obligation to care and more. Full Article Radio/Day 6
jedi Microsoft claims AWS has used new JEDI mind trick with secret contract objection filing By go.theregister.co.uk Published On :: Fri, 08 May 2020 09:01:10 GMT It's over, Amazon, we have the high ground (and all you had was a high price) says Redmond Updated Amazon.com has filed a second, secret, appeal against the decision to award Microsoft the Pentagon's $10bn Joint Enterprise Defense Infrastructure (JEDI) cloud contract.… Full Article
jedi Teaching with Star Wars: Learning from Failure in Star Wars: The Last Jedi By www.starwars.com Published On :: Wed, 06 May 2020 13:00:27 +0000 Luke Skywalker discovers a powerful lesson that can be valuable to your own younglings. Full Article Creativity The Last Jedi Star Wars: The Last Jedi Teaching with Star Wars
jedi 'Star Wars' actor criticises 'The Last Jedi', says Rian Johnson didn't 'do his homework' By uk.movies.yahoo.com Published On :: Thu, 07 May 2020 14:24:36 GMT Another 'Star Wars' actor has added their voice to the criticism of Rian Johnson's movie. Full Article
jedi JEDI launches billion molecules agains COVID19 challenge By www.pharmatimes.com Published On :: Tue, 05 May 2020 10:27:16 +0100 The Billion Molecules against Covid19 Grand Challenge aims to screen billions of molecules with blocking interactions on SARS-CoV-2 Full Article
jedi Jedi Performers Engage in Epic Lightsaber Challenge at the Top of the World's Tallest Building - Dubai's Burj Khalifa - as Star Wars: The Force Awakens Becomes Available for Digital Download - Two Jedi performers ascend the world’s tallest buildin By feedproxy.google.com Published On :: 08 Apr 2016 10:25:00 EDT Two Jedi performers ascend the world’s tallest building Full Article Entertainment Film & Motion picture Travel Amusement Parks and Tourist Attractions New Products Services MultiVu Video
jedi Jedi Performers Engage in Epic Lightsaber Challenge at the Top of the World's Tallest Building - Dubai's Burj Khalifa - as Star Wars: The Force Awakens Becomes Available for Digital Download - Two Jedi performers ascend the world’s tallest buildin By feedproxy.google.com Published On :: 08 Apr 2016 10:25:00 EDT Two Jedi performers ascend the world’s tallest building Full Article Entertainment Film & Motion picture Travel Amusement Parks and Tourist Attractions New Products Services MultiVu Video
jedi Amazon and Microsoft trade barbs over JEDI contract appeal By www.cnbc.com Published On :: Fri, 08 May 2020 16:57:00 GMT The JEDI, or Joint Enterprise Defense Infrastructure, deal worth up to $10 billion has become one of the most tangled contracts for the Department of Defense. Full Article
jedi EA Confirms Star Wars Jedi: Fallen Order Is the First Game in New Franchise By www.comingsoon.net Published On :: Fri, 08 May 2020 19:00:01 +0000 The game has also reached 10 million unique players since launch The post EA Confirms Star Wars Jedi: Fallen Order Is the First Game in New Franchise appeared first on ComingSoon.net. Full Article Games ea lucasfilm respawn entertainment star wars Star Wars: Jedi Fallen Order Video Game News
jedi Microsoft and AWS exchange poisoned pen blog posts in latest Pentagon JEDI contract spat By techcrunch.com Published On :: Fri, 08 May 2020 13:18:47 +0000 Microsoft and Amazon are at it again as the fight for the Defense Department JEDI contract continues. In a recent series of increasingly acerbic pronouncements, the two companies continue their ongoing spat over the $10 billion, decade-long JEDI contract spoils. As you may recall (or not), last fall in a surprise move, the DoD selected […] Full Article Cloud Drama Enterprise Government TC Amazon jeff bezos Microsoft Pentagon JEDI contract
jedi Microsoft and AWS exchange poisoned pen blog posts in latest Pentagon JEDI contract spat By feedproxy.google.com Published On :: Fri, 08 May 2020 13:18:47 +0000 Microsoft and Amazon are at it again as the fight for the Defense Department JEDI contract continues. In a recent series of increasingly acerbic pronouncements, the two companies continue their ongoing spat over the $10 billion, decade-long JEDI contract spoils. As you may recall (or not), last fall in a surprise move, the DoD selected […] Full Article Cloud Drama Enterprise Government TC Amazon jeff bezos Microsoft Pentagon JEDI contract
jedi Microsoft and AWS exchange poisoned pen blog posts in latest Pentagon JEDI contract spat By feedproxy.google.com Published On :: Fri, 08 May 2020 13:18:47 +0000 Microsoft and Amazon are at it again as the fight for the Defense Department JEDI contract continues. In a recent series of increasingly acerbic pronouncements, the two companies continue their ongoing spat over the $10 billion, decade-long JEDI contract spoils. As you may recall (or not), last fall in a surprise move, the DoD selected […] Full Article Cloud Drama Enterprise Government TC Amazon jeff bezos Microsoft Pentagon JEDI contract
jedi Microsoft and AWS exchange poisoned pen blog posts in latest Pentagon JEDI contract spat By feedproxy.google.com Published On :: Fri, 08 May 2020 13:18:47 +0000 Microsoft and Amazon are at it again as the fight for the Defense Department JEDI contract continues. In a recent series of increasingly acerbic pronouncements, the two companies continue their ongoing spat over the $10 billion, decade-long JEDI contract spoils. As you may recall (or not), last fall in a surprise move, the DoD selected […] Full Article Cloud Drama Enterprise Government TC Amazon jeff bezos Microsoft Pentagon JEDI contract
jedi Phoebe Waller-Bridge channels her inner Jedi at Star Wars: The Rise of Skywalker after party By www.dailymail.co.uk Published On :: Thu, 19 Dec 2019 17:16:49 GMT Phoebe Waller-Bridge was every inch the Hollywood siren as she led the famous faces descending on the Star Wars: The Rise of Skywalker London premiere afterparty on Wednesday. Full Article
jedi Jedi granny Carole Middleton battles at a Christmas party far, far away By www.dailymail.co.uk Published On :: Thu, 19 Dec 2019 23:43:41 GMT Carole, 64, enacted a play fight with Steven Bentwood, chief executive of the Middleton family firm Party Pieces, during the office Christmas lunch - using the company's inflatable space sabre. Full Article
jedi Harrison Ford tried to get Admiral Ackbar puppeteer Tim Rose fired from Return Of The Jedi By www.dailymail.co.uk Published On :: Sat, 01 Jun 2019 21:31:39 GMT The puppeteer who brought Admiral Ackbar and other Star Wars characters to life reminisced on a podcast about the time Harrison Ford tried to get him fired from Return Of The Jedi. Full Article
jedi Rian Johnson reveals signature line still in The Last Jedi By www.dailymail.co.uk Published On :: Tue, 19 Dec 2017 02:31:08 GMT Star Wars: The Last Jedi has kept up the tradition of including a signature line associated with the sci-fi franchise. Full Article
jedi Microsoft, Amazon Continue Trading Fresh Barbs Over $10 Billion JEDI Contract Appeal By www.news18.com Published On :: Sat, 9 May 2020 10:57:18 +0530 The Joint Enterprise Defense Infrastructure contract is the US Department of Defense' cloud computing contract which has been reported as being worth $10 billion. Full Article
jedi Google Partners With EA To Bring FIFA 20, Star Wars Jedi: Fallen Order On Stadia By www.gizbot.com Published On :: Wed, 29 Apr 2020 15:03:12 +0530 So far, Google has unveiled more than a dozen game titles for its online game streaming service Stadia. Titles like Octopath Traveler and PUBG have already arrived on the platform. But, it might take some more time for other titles to Full Article
jedi JP Nadda - the original Jedi By www.dnaindia.com Published On :: Fri, 24 Jan 2020 02:42:31 GMT J.P.Nadda is not a fifth-generation dynast like Rahul Gandhi, the Congress scion, whose political getaways to Europe have made more headlines than his political exploits at home. Full Article Analysis
jedi WIRED Autocomplete Interviews - The Last Jedi Cast Answer the Web's Most Searched Questions By www.wired.com Published On :: Mon, 11 Dec 2017 17:00:00 +0000 Star Wars: The Last Jedi stars Mark Hamill, Laura Dern, John Boyega, Daisy Ridley, Domhnall Gleeson and Kelly Marie Tran take the WIRED Autocomplete Interview and answer the Internet's most searched questions about Star Wars and themselves. Full Article