Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 1 participants
- 144619 messages
Re: [Pharo-project] XML packages, CDATA and encoding
by Henrik Sperre Johansen
On 11.01.2011 16:58, Cédrick Béler wrote:
>>
>>> Create a file "test.xml" with the following
>>> contents (german umlaut):
>>>
>>>
>>> <?xml version="1.0" encoding="iso-8859-1"?>
>>> <test><![CDATA[Zaunkönig]]></test>
>>>
>>> After loading ConfigurationOfXML try to parse it:
>>>
>>> |fs|
>>> fs := FileStream fileNamed: 'test.xml'.
>>> XMLDOMParser parseDocumentFrom: fs.
>>>
>>>
>>> => gives an error: 'Invalid utf8 input detected'
>>> => it works if you remove the CDATA section
>>>
>>> Looks like UTF8TextConverter is used independent
>>> from the encoding of the XML...
>>>
>> the problem seems not to be the xml parser. If you use FileStream>>fileNamed: the fileNamed: is delegated to FileStream class>>concreteStream which is MultiByteStream. This stream initializes itself with the utf8 converter if it isn't set intentionally.
>>
>> Besides that I'm not sure if the parsing of the xml parser works correctly if the setup is properly done for latin1 encoding.
>>
>> Norbert
> yes, I think the same as the following works without problem (note I have the last squeaksource version for XML related stuff)
>
> string := '<?xml version="1.0" encoding="iso-8859-1"?>
> <test><![CDATA[Zaunkönig]]></test>'.
>
> XMLDOMParser parseDocumentFrom: fs contents.
>
> hth,
>
> Cédrick
Of course it is the job of the parser:
http://www.w3.org/TR/REC-xml/#charencoding
The XMLSupport package is oblivious to this however, and only works on
internal streams.
Cheers,
Henry
Jan. 11, 2011
Re: [Pharo-project] [Vm-dev] Re: Waste of CPU Power by polling events?
by Levente Uzonyi
On Tue, 11 Jan 2011, Eliot Miranda wrote:
(Pine can't quote your mail, sorry.)
"The problem with linux is that the pthreads implementation doesn't allow
a normal user-level process to create high-priroity threads so that as
soon as the Vm starts to spin doing some computation the heartbeat thread
is shut-out and if the spinning computation only interrupted when a delay
expires it'll never get interrupted because it is blocking the very thread
that would signal the delay. Â So until linux's pthreads implementation
supports multiple priorities we're stuck with hacks like the interval
timer based itimer in the linux Cog VMs."
What about keeping the priority of the heartbeat thread at user-level and
decreasing the other VM threads' priority slighly?
Levente
Jan. 11, 2011
Re: [Pharo-project] Issue 3528 in pharo: TestRunner button height not fixed
by pharo@googlecode.com
Updates:
Status: Fixed
Labels: Milestone-1.2
Comment #2 on issue 3528 by marianopeck: TestRunner button height not fixed
http://code.google.com/p/pharo/issues/detail?id=3528
thanks Bernhard.
I put it as fixed so that they can integrate it.
Not sure which milestone. I put 1.2 but it can be moved to 1.3
Jan. 11, 2011
Re: [Pharo-project] ZeroMQ, Mongrel2...
by Philippe Marschall
On 01/11/2011 05:24 PM, Geoffroy Couprie wrote:
> Hello,
>
> What would you think of a ZeroMQ frontend to Pharo? I was playing with
> ZeroMQ, and more specifically the Mongrel2 web server, and I thought
> that would be cool to use it, but the only reference of ZeroMQ and
> Smalltalk I saw was about some code from Thomas Gagné, which is not
> available anymore.
>
> Anyhow, would you be interested in a port to Pharo? It looks like the
> protocol is not really hard to implement.
There is no protocol, you wrap a C library.
What's suboptimal from a Seaside point of view is that Mongrel2 assumes
handlers are stateless which Seaside is not.
Cheers
Philippe
Jan. 11, 2011
Re: [Pharo-project] [Vm-dev] Re: Waste of CPU Power by polling events?
by Eliot Miranda
On Fri, Nov 26, 2010 at 6:22 PM, Igor Stasenko <siguctua(a)gmail.com> wrote:
> In Hydra, i merged the heartbeat and delay timeout logic into single
> routine, which were running in high-priority thread.
> It simply picks the nearest possible time to wait (sleep) - either
> heartbeat cycle delay, or scheduled Delay timeout,
> then signals VM to interrupt and handle delay or do regular event
> processing using ioHandleEvents().
>
> What is good in Windows, that there are special event mask for
> WaitForMultipleEvents() function,
> which could put a thread in wait till keyboard/mouse input available.
> In that way, on Windows, VM could avoid frequent interrupts to for
> polling events, and instead use waiting thread(s),
> and interrupt only if some event signaled.
>
Yes, that's what I did in the VW VM. WaitForMultipleEvents also takes a
timeout so one can wait until an event or the next delay with a single call.
> FreeBSD also introduced a kernel events, so instead of polling, one
> could simply wait for I/O activity (like file, socket etc). Not sure
> about mouse/keyboard input. I'm not sure, but think i heard linux
> kernel also integrated that recently.
>
The problem with linux is that the pthreads implementation doesn't allow a
normal user-level process to create high-priroity threads so that as soon as
the Vm starts to spin doing some computation the heartbeat thread is
shut-out and if the spinning computation only interrupted when a delay
expires it'll never get interrupted because it is blocking the very thread
that would signal the delay. So until linux's pthreads implementation
supports multiple priorities we're stuck with hacks like the interval timer
based itimer in the linux Cog VMs.
>
> On 27 November 2010 00:40, John M McIntosh
> <johnmci(a)smalltalkconsulting.com> wrote:
> >
> > Eliot, I had looked at turn off the heartbeat when we did the nanosleep,
> then turned it back on. The problem was actually trying to figure out if
> > it did any good since the cost of pausing/restarting the heartbeat task
> was high. I think first we have to quantify the costs. This is difficult to
> do on desktop
> > machines since they are so fast, so I was working with an iPod touch
> which is 1000x (wild guess number) times slower.
> > I'm also unsure of the pattern for when
> the ioRelinquishProcessorForMicroseconds is called and for how long. Further
> to that we do attempt to calculate the next wake up time, but sometime it's
> in the past, so why is ioRelinquishProcessorForMicroseconds being called?
> Even if we sleep then how long and what wakes us up early?
> > On 2010-11-26, at 8:39 AM, Eliot Miranda wrote:
> >
> > Yes, we need to change this, but I think one has to change the background
> process and/or nothing to run behavior. In the VW VM the VM disables the
> heartbeat and enters some blocking call when there's nothing to do. Squeak
> runs the background process which calls a primitive that sleeps for a short
> time. The former is much better. If a delay is active as the VM does to
> sleep it schedules a wakeup event or supplies a timeout so that it blocks
> until input is available or the next delay.
> > We could still keep the background process and do something similar to
> VW, disabling the heartbeat until after the relinquish, and factoring the
> delay into the relinquish timeout.
> > Also the heartbeat already has facilities to change its frequency, so one
> could modify things to slow down the heartbeat, again ensuring that it ticks
> before the next delay expiry.
> > What approach (not necessarily from the above) appeals to you John?
> > best
> > Eliot
> >
> > --
> >
> ===========================================================================
> > John M. McIntosh <johnmci(a)smalltalkconsulting.com> Twitter:
> squeaker68882
> > Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
> >
> ===========================================================================
> >
> >
> >
> >
> >
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
Jan. 11, 2011
Re: [Pharo-project] [squeak-dev] Re: new Cog VMs
by Eliot Miranda
On Mon, Jan 10, 2011 at 11:31 PM, Andres Valloud <
avalloud(a)smalltalk.comcastbiz.net> wrote:
> Indeed, quite right. I happened to add a flag to turn off the heartbeat
>> so I could debug the crash Matthew was seeing in starting up
>> Squeak4.2-10856-beta.image (since single-stepping through machine code
>> always gets interrupted by the heartbeat, it being an interval timer)
>> and lo and behold the bug went away. This is very worrying because it
>> appears to imply that there's a serious bug in the linux kernel/gcc
>> since delivering a software interrupt shouldn't corrupt registers, but
>> it clearly does. I'll try and pass it by someone who's an expert in
>> this area.
>>
>
> Or the signal handler functions do not comply with the relevant
> specifications, e.g.: signal handlers that do not preserve the value of
> errno, signal handlers that use a function not in the list of approved safe
> functions you can call from a signal handler as per the Single Unix
> Specification, etc...
>
Good point. The signal handler essentially calls gettimeofday (not on the
approved list but time is) and sets a couple of variables (current 64-bit
microsecond time, stackLimit). But it does not preserve errno. I don't
want to avoid calling gettimeofday and can see no harm in it; it's
equivalent internally to time providing it doesn't use its TIMEZONE arg
(which it doesn't). But the signal handler /doesn't/ preserve errno and
doing so is a very good idea and easy to do. Thanks.
> Andres.
>
>
Jan. 11, 2011
Re: [Pharo-project] [BUG]LargePositiveInteger(Object)>>error:
by Pat Maddox
I used the public 1.1.1 oneclick
On Jan 6, 2011, at 1:30 PM, Stéphane Ducasse wrote:
> Thanks pat for the report.
>
> Now could you let us know if you loaded OB or if you used the public 1.1.1 oneclick?
>
> Stef
>
> On Jan 6, 2011, at 9:18 PM, Pat Maddox wrote:
>
>> I opened up an OmniBrowser and scrolled to the very bottom. Then I clicked on my package name, and then a class name.
>>
>> 6 January 2011 12:12:44 pm
>>
>> VM: Mac OS - intel - 1065 - Croquet Closure Cog VM [CoInterpreter VMMaker-oscog.43] Croquet Cog 3.0.0
>> Image: Pharo-1.1.1-- [Latest update: #11414]
>>
>> SecurityManager state:
>> Restricted: false
>> FileAccess: true
>> SocketAccess: true
>> Working Dir /Users/padillac/code/pharo_image
>> Trusted Dir /foobar/tooBar/forSqueak/bogus/
>> Untrusted Dir /Users/padillac/Library/Preferences/Croquet/Internet/Untrusted
>>
>> LargePositiveInteger(Object)>>error:
>> Receiver: 4287876447
>> Arguments and temporary variables:
>> aString: 'MessageNotUnderstood: LargePositiveInteger>>pixelValueForDepth:'
>> Receiver's instance variables:
>> 4287876447
>>
>> [] in WorldState>>displayWorldSafely:
>> Receiver: a WorldState
>> Arguments and temporary variables:
>> err: 'MessageNotUnderstood: LargePositiveInteger>>pixelValueForDepth:'
>> rcvr: 4287876447
>> errCtx: OBLazyListMorph>>display:atRow:on:
>> errMorph: an OBLazyListMorph(969408512)
>> Receiver's instance variables:
>> hands: an Array(a HandMorph(843055104))
>> viewBox: 0@0 corner: 2552@1374
>> canvas: a FormCanvas on: DisplayScreen(2552x1374x32)
>> damageRecorder: a DamageRecorder
>> stepList: a Heap(StepMessage(#stepAt: -> a SystemWindow(154664960))(a SystemWin...etc...
>> lastStepTime: 805471
>> lastStepMessage: nil
>> lastCycleTime: 805463
>> commandHistory: a CommandHistory
>> alarms: a Heap()
>> lastAlarmTime: 805471
>> menuBuilder: a PragmaMenuBuilder
>>
>> BlockClosure>>valueWithPossibleArgs:
>> Receiver: [:err :rcvr |
>> | errCtx errMorph |
>> errCtx := thisContext.
>> [errCtx := errCtx sender.
>> [err...etc...
>> Arguments and temporary variables:
>> anArray: #('MessageNotUnderstood: LargePositiveInteger>>pixelValueForDepth:' 42...etc...
>> Receiver's instance variables:
>> outerContext: WorldState>>displayWorldSafely:
>> startpc: 73
>> numArgs: 2
>>
>> [] in BlockClosure>>ifError:
>> Receiver: [aWorld displayWorld]
>> Arguments and temporary variables:
>> errorHandlerBlock: MessageNotUnderstood: LargePositiveInteger>>pixelValueForDep...etc...
>> ex: [:err :rcvr |
>> | errCtx errMorph |
>> errCtx := thisContext.
>> [errCtx := errCt...etc...
>> Receiver's instance variables:
>> outerContext: WorldState>>displayWorldSafely:
>> startpc: 66
>> numArgs: 0
>>
>> BlockClosure>>valueWithPossibleArgs:
>> Receiver: [:ex | errorHandlerBlock valueWithPossibleArgs: {ex description. ex receiver}]
>> Arguments and temporary variables:
>> anArray: an Array(MessageNotUnderstood: LargePositiveInteger>>pixelValueForDept...etc...
>> Receiver's instance variables:
>> outerContext: BlockClosure>>ifError:
>> startpc: 40
>> numArgs: 1
>>
>> [] in MethodContext(ContextPart)>>handleSignal:
>> Receiver: BlockClosure>>on:do:
>> Arguments and temporary variables:
>> exception: MessageNotUnderstood: LargePositiveInteger>>pixelValueForDepth:
>> Receiver's instance variables:
>> sender: BlockClosure>>ifError:
>> pc: 17
>> stackp: 3
>> method: (BlockClosure>>#on:do: "a CompiledMethod(280231936)")
>> closureOrNil: nil
>> receiver: [aWorld displayWorld]
>>
>> BlockClosure>>ensure:
>> Receiver: [(self tempAt: 2)
>> valueWithPossibleArgs: {exception}]
>> Arguments and temporary variables:
>> aBlock: [self tempAt: 3 put: true]
>> complete: nil
>> returnValue: nil
>> Receiver's instance variables:
>> outerContext: MethodContext(ContextPart)>>handleSignal:
>> startpc: 90
>> numArgs: 0
>>
>> MethodContext(ContextPart)>>handleSignal:
>> Receiver: BlockClosure>>on:do:
>> Arguments and temporary variables:
>> exception: MessageNotUnderstood: LargePositiveInteger>>pixelValueForDepth:
>> val: nil
>> Receiver's instance variables:
>> sender: BlockClosure>>ifError:
>> pc: 17
>> stackp: 3
>> method: (BlockClosure>>#on:do: "a CompiledMethod(280231936)")
>> closureOrNil: nil
>> receiver: [aWorld displayWorld]
>>
>> MessageNotUnderstood(Exception)>>signal
>> Receiver: MessageNotUnderstood: LargePositiveInteger>>pixelValueForDepth:
>> Arguments and temporary variables:
>>
>> Receiver's instance variables:
>> messageText: nil
>> tag: nil
>> signalContext: MessageNotUnderstood(Exception)>>signal
>> handlerContext: BlockClosure>>on:do:
>> outerContext: nil
>> message: pixelValueForDepth: 32
>> receiver: 4287876447
>> reachedDefaultHandler: false
>>
>> LargePositiveInteger(Object)>>doesNotUnderstand: #pixelValueForDepth:
>> Receiver: 4287876447
>> Arguments and temporary variables:
>> aMessage: pixelValueForDepth: 32
>> exception: MessageNotUnderstood: LargePositiveInteger>>pixelValueForDepth:
>> resumeValue: nil
>> Receiver's instance variables:
>> 4287876447
>>
>> ColorForm>>colormapIfNeededForDepth:
>> Receiver: ColorForm(12x12x8)
>> Arguments and temporary variables:
>> destDepth: 32
>> newMap: a Bitmap of length 256
>> i: 3
>> iLimiT: 256
>> Receiver's instance variables:
>> bits: #[36 29 11 7 11 10 10 11 9 11 95 10 9 9 10 11 11 11 11 11 11 11 10 9 0 8 ...etc...
>> width: 12
>> height: 12
>> depth: 8
>> offset: 0@0
>> colors: a ColorArray((Color r: 0.572 g: 0.804 b: 0.369) (Color r: 0.564 g: 0.76...etc...
>> cachedDepth: nil
>> cachedColormap: nil
>>
>> ColorForm>>colormapIfNeededFor:
>> Receiver: ColorForm(12x12x8)
>> Arguments and temporary variables:
>> destForm: DisplayScreen(2552x1374x32)
>> newMap: nil
>> color: nil
>> pv: nil
>> i: nil
>> iLimiT: nil
>> Receiver's instance variables:
>> bits: #[36 29 11 7 11 10 10 11 9 11 95 10 9 9 10 11 11 11 11 11 11 11 10 9 0 8 ...etc...
>> width: 12
>> height: 12
>> depth: 8
>> offset: 0@0
>> colors: a ColorArray((Color r: 0.572 g: 0.804 b: 0.369) (Color r: 0.564 g: 0.76...etc...
>> cachedDepth: nil
>> cachedColormap: nil
>>
>> FormCanvas>>image:at:sourceRect:rule:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> aForm: ColorForm(12x12x8)
>> aPoint: 0@15
>> sourceRect: 0@0 corner: 12@12
>> rule: 24
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 2367@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> FormCanvas(Canvas)>>translucentImage:at:sourceRect:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> aForm: ColorForm(12x12x8)
>> aPoint: 0@15
>> sourceRect: 0@0 corner: 12@12
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 2367@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> FormCanvas(Canvas)>>translucentImage:at:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> aForm: ColorForm(12x12x8)
>> aPoint: 0@15
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 2367@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> OBLazyListMorph>>display:atRow:on:
>> Receiver: an OBLazyListMorph(969408512)
>> Arguments and temporary variables:
>> item: #renderContentOn:
>> row: 2
>> canvas: a FormCanvas on: DisplayScreen(2552x1374x32)
>> drawBounds: 0@14 corner: 190@28
>> top: 15
>> icon: ColorForm(12x12x8)
>> name: #arrowUp
>> Receiver's instance variables:
>> bounds: 0@0 corner: 190@42
>> owner: a TransformMorph(743702528)
>> submorphs: #()
>> fullBounds: 0@0 corner: 190@42
>> color: Color black
>> extension: a MorphExtension (970981376) [other: (errorOnDraw -> true)]
>> listItems: #(#callbackUrlOn:callback: #renderContentOn: nil)
>> font: a StrikeFont(Bitmap DejaVu Sans 9 14)
>> selectedRow: 0
>> selectedRows: a PluggableSet()
>> listSource: an OBPluggableListMorph(155189248)
>> maxWidth: 136
>>
>> OBLazyListMorph(LazyListMorph)>>drawOn:
>> Receiver: an OBLazyListMorph(969408512)
>> Arguments and temporary variables:
>> aCanvas: a FormCanvas on: DisplayScreen(2552x1374x32)
>> row: 2
>> rowLimiT: 3
>> Receiver's instance variables:
>> bounds: 0@0 corner: 190@42
>> owner: a TransformMorph(743702528)
>> submorphs: #()
>> fullBounds: 0@0 corner: 190@42
>> color: Color black
>> extension: a MorphExtension (970981376) [other: (errorOnDraw -> true)]
>> listItems: #(#callbackUrlOn:callback: #renderContentOn: nil)
>> font: a StrikeFont(Bitmap DejaVu Sans 9 14)
>> selectedRow: 0
>> selectedRows: a PluggableSet()
>> listSource: an OBPluggableListMorph(155189248)
>> maxWidth: 136
>>
>> FormCanvas(Canvas)>>draw:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> anObject: an OBLazyListMorph(969408512)
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 2367@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> FormCanvas(Canvas)>>drawMorph:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> aMorph: an OBLazyListMorph(969408512)
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 2367@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> [] in OBLazyListMorph(Morph)>>fullDrawOn:
>> Receiver: an OBLazyListMorph(969408512)
>> Arguments and temporary variables:
>> aCanvas: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Receiver's instance variables:
>> bounds: 0@0 corner: 190@42
>> owner: a TransformMorph(743702528)
>> submorphs: #()
>> fullBounds: 0@0 corner: 190@42
>> color: Color black
>> extension: a MorphExtension (970981376) [other: (errorOnDraw -> true)]
>> listItems: #(#callbackUrlOn:callback: #renderContentOn: nil)
>> font: a StrikeFont(Bitmap DejaVu Sans 9 14)
>> selectedRow: 0
>> selectedRows: a PluggableSet()
>> listSource: an OBPluggableListMorph(155189248)
>> maxWidth: 136
>>
>> FormCanvas>>roundCornersOf:in:during:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> aMorph: an OBLazyListMorph(969408512)
>> bounds: 0@0 corner: 190@42
>> aBlock: [(aCanvas isVisible: self bounds)
>> ifTrue: [aCanvas drawMorph: self].
>> ...etc...
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 2367@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> FormCanvas(Canvas)>>roundCornersOf:during:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> aMorph: an OBLazyListMorph(969408512)
>> aBlock: [(aCanvas isVisible: self bounds)
>> ifTrue: [aCanvas drawMorph: self].
>> ...etc...
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 2367@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> OBLazyListMorph(Morph)>>fullDrawOn:
>> Receiver: an OBLazyListMorph(969408512)
>> Arguments and temporary variables:
>> aCanvas: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Receiver's instance variables:
>> bounds: 0@0 corner: 190@42
>> owner: a TransformMorph(743702528)
>> submorphs: #()
>> fullBounds: 0@0 corner: 190@42
>> color: Color black
>> extension: a MorphExtension (970981376) [other: (errorOnDraw -> true)]
>> listItems: #(#callbackUrlOn:callback: #renderContentOn: nil)
>> font: a StrikeFont(Bitmap DejaVu Sans 9 14)
>> selectedRow: 0
>> selectedRows: a PluggableSet()
>> listSource: an OBPluggableListMorph(155189248)
>> maxWidth: 136
>>
>> FormCanvas(Canvas)>>fullDraw:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> anObject: an OBLazyListMorph(969408512)
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 2367@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> FormCanvas(Canvas)>>fullDrawMorph:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> aMorph: an OBLazyListMorph(969408512)
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 2367@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> [] in [] in TransformMorph>>drawSubmorphsOn:
>> Receiver: a TransformMorph(743702528)
>> Arguments and temporary variables:
>> myCanvas: an OBLazyListMorph(969408512)
>> m: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Receiver's instance variables:
>> bounds: 520@0 corner: 690@213
>> owner: an OBPluggableListMorph(155189248)
>> submorphs: an Array(an OBLazyListMorph(969408512))
>> fullBounds: 520@0 corner: 690@213
>> color: Color transparent
>> extension: a MorphExtension (745537536)
>> transform: a MorphicTransform(angle = 0.0; scale = 1.0; offset = -523@0)
>> smoothing: 1
>> localBounds: nil
>>
>> Array(SequenceableCollection)>>reverseDo:
>> Receiver: an Array(an OBLazyListMorph(969408512))
>> Arguments and temporary variables:
>> aBlock: [:m | myCanvas fullDrawMorph: m]
>> index: 1
>> Receiver's instance variables:
>> an Array(an OBLazyListMorph(969408512))
>>
>> [] in TransformMorph>>drawSubmorphsOn:
>> Receiver: a TransformMorph(743702528)
>> Arguments and temporary variables:
>> myCanvas: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Receiver's instance variables:
>> bounds: 520@0 corner: 690@213
>> owner: an OBPluggableListMorph(155189248)
>> submorphs: an Array(an OBLazyListMorph(969408512))
>> fullBounds: 520@0 corner: 690@213
>> color: Color transparent
>> extension: a MorphExtension (745537536)
>> transform: a MorphicTransform(angle = 0.0; scale = 1.0; offset = -523@0)
>> smoothing: 1
>> localBounds: nil
>>
>> FormCanvas>>transformBy:clippingTo:during:smoothing:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> aDisplayTransform: a MorphicTransform(angle = 0.0; scale = 1.0; offset = -523@0...etc...
>> aClipRect: 520@0 corner: 690@213
>> aBlock: [:myCanvas | (self angle ~= 0.0
>> or: [self scale ~= 1.0])
>> ifTrue: [...etc...
>> cellSize: 1
>> innerRect: nil
>> patchRect: nil
>> sourceQuad: nil
>> warp: nil
>> start: nil
>> subCanvas: nil
>> rule: nil
>> i: nil
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 1844@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> TransformMorph>>drawSubmorphsOn:
>> Receiver: a TransformMorph(743702528)
>> Arguments and temporary variables:
>> aCanvas: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Receiver's instance variables:
>> bounds: 520@0 corner: 690@213
>> owner: an OBPluggableListMorph(155189248)
>> submorphs: an Array(an OBLazyListMorph(969408512))
>> fullBounds: 520@0 corner: 690@213
>> color: Color transparent
>> extension: a MorphExtension (745537536)
>> transform: a MorphicTransform(angle = 0.0; scale = 1.0; offset = -523@0)
>> smoothing: 1
>> localBounds: nil
>>
>> [] in TransformMorph(Morph)>>fullDrawOn:
>> Receiver: a TransformMorph(743702528)
>> Arguments and temporary variables:
>> aCanvas: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Receiver's instance variables:
>> bounds: 520@0 corner: 690@213
>> owner: an OBPluggableListMorph(155189248)
>> submorphs: an Array(an OBLazyListMorph(969408512))
>> fullBounds: 520@0 corner: 690@213
>> color: Color transparent
>> extension: a MorphExtension (745537536)
>> transform: a MorphicTransform(angle = 0.0; scale = 1.0; offset = -523@0)
>> smoothing: 1
>> localBounds: nil
>>
>> FormCanvas>>roundCornersOf:in:during:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> aMorph: a TransformMorph(743702528)
>> bounds: 520@0 corner: 690@213
>> aBlock: [(aCanvas isVisible: self bounds)
>> ifTrue: [aCanvas drawMorph: self].
>> ...etc...
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 1844@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> FormCanvas(Canvas)>>roundCornersOf:during:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> aMorph: a TransformMorph(743702528)
>> aBlock: [(aCanvas isVisible: self bounds)
>> ifTrue: [aCanvas drawMorph: self].
>> ...etc...
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 1844@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> TransformMorph(Morph)>>fullDrawOn:
>> Receiver: a TransformMorph(743702528)
>> Arguments and temporary variables:
>> aCanvas: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Receiver's instance variables:
>> bounds: 520@0 corner: 690@213
>> owner: an OBPluggableListMorph(155189248)
>> submorphs: an Array(an OBLazyListMorph(969408512))
>> fullBounds: 520@0 corner: 690@213
>> color: Color transparent
>> extension: a MorphExtension (745537536)
>> transform: a MorphicTransform(angle = 0.0; scale = 1.0; offset = -523@0)
>> smoothing: 1
>> localBounds: nil
>>
>> FormCanvas(Canvas)>>fullDraw:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> anObject: a TransformMorph(743702528)
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 1844@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> FormCanvas(Canvas)>>fullDrawMorph:
>> Receiver: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Arguments and temporary variables:
>> aMorph: a TransformMorph(743702528)
>> Receiver's instance variables:
>> target: nil
>> filterSelector: nil
>> origin: 1844@187
>> clipRect: 2364@187 corner: 2534@400
>> form: DisplayScreen(2552x1374x32)
>> port: a GrafPort
>> shadowColor: nil
>>
>> [] in [] in OBPluggableListMorph(Morph)>>drawSubmorphsOn:
>> Receiver: an OBPluggableListMorph(155189248)
>> Arguments and temporary variables:
>> canvas: a TransformMorph(743702528)
>> m: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Receiver's instance variables:
>> bounds: 520@0 corner: 690@213
>> owner: an OBPane(127401984)
>> submorphs: an Array(a TransformMorph(743702528))
>> fullBounds: 520@0 corner: 690@213
>> color: Color white
>> extension: a MorphExtension (132644864) [other: (dragEnabled -> true) (dropEna...etc...
>> borderWidth: 0
>> borderColor: Color black
>> model: an OBColumn()
>> slotName: nil
>> open: false
>> scrollBar: a ScrollBar(161742848)
>> scroller: a TransformMorph(743702528)
>> retractableScrollBar: false
>> scrollBarOnLeft: false
>> getMenuSelector: #menu:
>> getMenuTitleSelector: nil
>> hasFocus: false
>> hScrollBar: a ScrollBar(990642176)
>> list: nil
>> getListSelector: #list
>> getListSizeSelector: #listSize
>> getListElementSelector: #listAt:
>> getIndexSelector: #selection
>> setIndexSelector: #selection:
>> keystrokeActionSelector: #keystroke:from:
>> autoDeselect: false
>> lastKeystrokeTime: 0
>> lastKeystrokes: ''
>> doubleClickSelector: #doubleClick
>> handlesBasicKeys: nil
>> potentialDropRow: nil
>> listMorph: an OBLazyListMorph(969408512)
>> hScrollRangeCache: nil
>>
>> Array(SequenceableCollection)>>reverseDo:
>> Receiver: an Array(a TransformMorph(743702528))
>> Arguments and temporary variables:
>> aBlock: [:m | canvas fullDrawMorph: m]
>> index: 1
>> Receiver's instance variables:
>> an Array(a TransformMorph(743702528))
>>
>> [] in OBPluggableListMorph(Morph)>>drawSubmorphsOn:
>> Receiver: an OBPluggableListMorph(155189248)
>> Arguments and temporary variables:
>> canvas: a FormCanvas on: DisplayScreen(2552x1374x32)
>> Receiver's instance variables:
>> bounds: 520@0 corner: 690@213
>> owner: an OBPane(127401984)
>> submorphs: an Array(a TransformMorph(743702528))
>> fullBounds: 520@0 corner: 690@213
>> color: Color white
>> extension: a MorphExtension (132644864) [other: (dragEnabled -> true) (dropEna...etc...
>> borderWidth: 0
>> borderColor: Color black
>> model: an OBColumn()
>> slotName: nil
>> open: false
>> scrollBar: a ScrollBar(161742848)
>> scroller: a TransformMorph(743702528)
>> retractableScrollBar: false
>> scrollBarOnLeft: false
>> getMenuSelector: #menu:
>> getMenuTitleSelector: nil
>> hasFocus: false
>> hScrollBar: a ScrollBar(990642176)
>> list: nil
>> getListSelector: #list
>> getListSizeSelector: #listSize
>> getListElementSelector: #listAt:
>> getIndexSelector: #selection
>> setIndexSelector: #selection:
>> keystrokeActionSelector: #keystroke:from:
>> autoDeselect: false
>> lastKeystrokeTime: 0
>> lastKeystrokes: ''
>> doubleClickSelector: #doubleClick
>> handlesBasicKeys: nil
>> potentialDropRow: nil
>> listMorph: an OBLazyListMorph(969408512)
>> hScrollRangeCache: nil
>>
>>
>> --- The full stack ---
>> LargePositiveInteger(Object)>>error:
>> [] in WorldState>>displayWorldSafely:
>> BlockClosure>>valueWithPossibleArgs:
>> [] in BlockClosure>>ifError:
>> BlockClosure>>valueWithPossibleArgs:
>> [] in MethodContext(ContextPart)>>handleSignal:
>> BlockClosure>>ensure:
>> MethodContext(ContextPart)>>handleSignal:
>> MessageNotUnderstood(Exception)>>signal
>> LargePositiveInteger(Object)>>doesNotUnderstand: #pixelValueForDepth:
>> ColorForm>>colormapIfNeededForDepth:
>> ColorForm>>colormapIfNeededFor:
>> FormCanvas>>image:at:sourceRect:rule:
>> FormCanvas(Canvas)>>translucentImage:at:sourceRect:
>> FormCanvas(Canvas)>>translucentImage:at:
>> OBLazyListMorph>>display:atRow:on:
>> OBLazyListMorph(LazyListMorph)>>drawOn:
>> FormCanvas(Canvas)>>draw:
>> FormCanvas(Canvas)>>drawMorph:
>> [] in OBLazyListMorph(Morph)>>fullDrawOn:
>> FormCanvas>>roundCornersOf:in:during:
>> FormCanvas(Canvas)>>roundCornersOf:during:
>> OBLazyListMorph(Morph)>>fullDrawOn:
>> FormCanvas(Canvas)>>fullDraw:
>> FormCanvas(Canvas)>>fullDrawMorph:
>> [] in [] in TransformMorph>>drawSubmorphsOn:
>> Array(SequenceableCollection)>>reverseDo:
>> [] in TransformMorph>>drawSubmorphsOn:
>> FormCanvas>>transformBy:clippingTo:during:smoothing:
>> TransformMorph>>drawSubmorphsOn:
>> [] in TransformMorph(Morph)>>fullDrawOn:
>> FormCanvas>>roundCornersOf:in:during:
>> FormCanvas(Canvas)>>roundCornersOf:during:
>> TransformMorph(Morph)>>fullDrawOn:
>> FormCanvas(Canvas)>>fullDraw:
>> FormCanvas(Canvas)>>fullDrawMorph:
>> [] in [] in OBPluggableListMorph(Morph)>>drawSubmorphsOn:
>> Array(SequenceableCollection)>>reverseDo:
>> [] in OBPluggableListMorph(Morph)>>drawSubmorphsOn:
>> - - - - - - - - - - - - - - -
>> - - - - - - - - - - - - - - - - - -
>> OBPluggableListMorph(Morph)>>drawSubmorphsOn:
>> OBPluggableListMorph(PluggableListMorph)>>drawSubmorphsOn:
>> [] in OBPluggableListMorph(Morph)>>fullDrawOn:
>> FormCanvas>>roundCornersOf:in:during:
>> FormCanvas(Canvas)>>roundCornersOf:during:
>> OBPluggableListMorph(Morph)>>fullDrawOn:
>> FormCanvas(Canvas)>>fullDraw:
>> FormCanvas(Canvas)>>fullDrawMorph:
>> [] in [] in OBPane(Morph)>>drawSubmorphsOn:
>> Array(SequenceableCollection)>>reverseDo:
>> [] in OBPane(Morph)>>drawSubmorphsOn:
>> FormCanvas>>clipBy:during:
>> OBPane(Morph)>>drawSubmorphsOn:
>> [] in OBPane(Morph)>>fullDrawOn:
>> FormCanvas>>roundCornersOf:in:during:
>> FormCanvas(Canvas)>>roundCornersOf:during:
>> OBPane(Morph)>>fullDrawOn:
>> FormCanvas(Canvas)>>fullDraw:
>> FormCanvas(Canvas)>>fullDrawMorph:
>> [] in [] in TransformMorph>>drawSubmorphsOn:
>> Array(SequenceableCollection)>>reverseDo:
>> [] in TransformMorph>>drawSubmorphsOn:
>> FormCanvas>>transformBy:clippingTo:during:smoothing:
>> TransformMorph>>drawSubmorphsOn:
>> [] in TransformMorph(Morph)>>fullDrawOn:
>> FormCanvas>>roundCornersOf:in:during:
>> FormCanvas(Canvas)>>roundCornersOf:during:
>> TransformMorph(Morph)>>fullDrawOn:
>> FormCanvas(Canvas)>>fullDraw:
>> FormCanvas(Canvas)>>fullDrawMorph:
>> [] in [] in OBPaneScroller(Morph)>>drawSubmorphsOn:
>> Array(SequenceableCollection)>>reverseDo:
>> [] in OBPaneScroller(Morph)>>drawSubmorphsOn:
>> OBPaneScroller(Morph)>>drawSubmorphsOn:
>> [] in OBPaneScroller(Morph)>>fullDrawOn:
>> FormCanvas>>roundCornersOf:in:during:
>> FormCanvas(Canvas)>>roundCornersOf:during:
>> OBPaneScroller(Morph)>>fullDrawOn:
>> FormCanvas(Canvas)>>fullDraw:
>> FormCanvas(Canvas)>>fullDrawMorph:
>> [] in [] in OBGroupingMorph(Morph)>>drawSubmorphsOn:
>> Array(SequenceableCollection)>>reverseDo:
>> [] in OBGroupingMorph(Morph)>>drawSubmorphsOn:
>> OBGroupingMorph(Morph)>>drawSubmorphsOn:
>> [] in OBGroupingMorph(Morph)>>fullDrawOn:
>> FormCanvas>>roundCornersOf:in:during:
>> FormCanvas(Canvas)>>roundCornersOf:during:
>> OBGroupingMorph(Morph)>>fullDrawOn:
>> FormCanvas(Canvas)>>fullDraw:
>> FormCanvas(Canvas)>>fullDrawMorph:
>> [] in [] in SystemWindow(Morph)>>drawSubmorphsOn:
>> Array(SequenceableCollection)>>reverseDo:
>> [] in SystemWindow(Morph)>>drawSubmorphsOn:
>> FormCanvas>>clipBy:during:
>> SystemWindow(Morph)>>drawSubmorphsOn:
>> [] in SystemWindow(Morph)>>fullDrawOn:
>> FormCanvas>>roundCornersOf:in:during:
>> FormCanvas(Canvas)>>roundCornersOf:during:
>> SystemWindow(Morph)>>fullDrawOn:
>> FormCanvas(Canvas)>>fullDraw:
>> FormCanvas(Canvas)>>fullDrawMorph:
>> [] in [] in WorldState>>drawWorld:submorphs:invalidAreasOn:
>> Rectangle>>allAreasOutsideList:startingAt:do:
>> Rectangle>>allAreasOutsideList:do:
>> [] in WorldState>>drawWorld:submorphs:invalidAreasOn:
>> Array(SequenceableCollection)>>do:
>> WorldState>>drawWorld:submorphs:invalidAreasOn:
>> [] in WorldState>>displayWorld:submorphs:
>> FormCanvas>>roundCornersOf:in:during:
>> FormCanvas(Canvas)>>roundCornersOf:during:
>> WorldState>>displayWorld:submorphs:
>> PasteUpMorph>>privateOuterDisplayWorld
>> PasteUpMorph>>displayWorld
>> [] in WorldState>>displayWorldSafely:
>> BlockClosure>>on:do:
>> BlockClosure>>ifError:
>> WorldState>>displayWorldSafely:
>> WorldState>>doOneCycleNowFor:
>> WorldState>>doOneCycleFor:
>> PasteUpMorph>>doOneCycle
>> [] in Project class>>spawnNewProcess
>> [] in BlockClosure>>newProcess
>>
>
>
Jan. 11, 2011
Re: [Pharo-project] PHP Fog ...
by Steven Baker
About 6 months ago I shelved a project for doing Heroku-style
deployments from Pharo to Seaside. Perhaps I should dig out my backup
and pick it up. I thought I was the only one that might want this, and
I got caught up with some issues serializing and sending objects over
the network.
So that's my first question: what's the best way to serialize and send
an object over the network? Would it perhaps be better to just tell
the deployed image to use Monticello to update? Can Monticello roll
back in case of error (so it can be headless)?
-Steven
On Tue, Jan 11, 2011 at 6:36 AM, Geert Claes <geert.wl.claes(a)gmail.com> wrote:
>
>
> Nick Ager wrote:
>>
>> there's always EC2 and Gemstone: http://www.vimeo.com/18375790
>>
>
> Yep, I reckon the screencast you made is great  ... but ... it's not quite
> the same though :)
>
> --
> View this message in context: http://forum.world.st/PHP-Fog-tp3208657p3209078.html
> Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>
>
Jan. 11, 2011
Re: [Pharo-project] ZeroMQ, Mongrel2...
by Adrian Lienhard
Yes, I'm interested
Adrian
On Jan 11, 2011, at 17:24 , Geoffroy Couprie wrote:
> Hello,
>
> What would you think of a ZeroMQ frontend to Pharo? I was playing with
> ZeroMQ, and more specifically the Mongrel2 web server, and I thought
> that would be cool to use it, but the only reference of ZeroMQ and
> Smalltalk I saw was about some code from Thomas Gagné, which is not
> available anymore.
>
> Anyhow, would you be interested in a port to Pharo? It looks like the
> protocol is not really hard to implement.
>
> Best regards,
>
> Geoffroy
>
Jan. 11, 2011
Re: [Pharo-project] ZeroMQ, Mongrel2...
by Stanislav Paskalev
I'd be really interested in such port/binding. Note that as far I can
see 0mq provides language bindings through ffi and no direct ports.
The porting will require a larger effort and heavy maintenance
afterward should some 0mq internals change.
Regards,
Stanislav Paskalev
On Tue, Jan 11, 2011 at 6:24 PM, Geoffroy Couprie <geo.couprie(a)gmail.com> wrote:
> Hello,
>
> What would you think of a ZeroMQ frontend to Pharo? I was playing with
> ZeroMQ, and more specifically the Mongrel2 web server, and I thought
> that would be cool to use it, but the only reference of ZeroMQ and
> Smalltalk I saw was about some code from Thomas Gagné, which is not
> available anymore.
>
> Anyhow, would you be interested in a port to Pharo? It looks like the
> protocol is not really hard to implement.
>
> Best regards,
>
> Geoffroy
>
>
Jan. 11, 2011