Re: [Pharo-users] GitFileTree on Pharo 5.0
Hi Pierce, Le 26/02/2017 à 02:35, Pierce Ng a écrit : On Tue, Nov 29, 2016 at 12:57:47PM +0100, Thierry Goubier wrote: Ok. Will have a look into the catalog browser source code to get rid of that. I know that the catalog browser uses the Pharo6 ConfigurationOfGitFileTree instead of the Pharo5 one. Thierry, Picking up an old thread, any idea how to fix this? On Pharo 5, the result of "CatalogProvider projectNamed: 'GlorpSQLite' has the Pharo 6 meta repo as the repositoryUrl. Presumably this is why Catalog Browser on Pharo 5 says GlorpSQLite is "Unknown" instead of "Pharo 5.0". Yes, that was the issue. So the configuration in the Pharo6 meta repo has to support both Pharo 5 and 6. Thierry Pierce
Re: [Pharo-users] Which is the best way of opening a PDF and HTML local files from Pharo
> On 26 Feb 2017, at 12:27, David T. Lewiswrote: > Hi, > I tried "OSProcess command: 'xdg-open ', pdfPathString" in Pharo, and it works > for me. Maybe check to be sure that pdfPathString is right? if you don't control pdfPathStrig you will also need to escape this string. I don't know if Pharo/OSProcess has support for the necessary escaping. E.g. 'foo.pdf; rm -rf /' as input should not lead to the removal of your system. :) holger
Re: [Pharo-users] Which is the best way of opening a PDF and HTML local files from Pharo
On Fri, Feb 24, 2017 at 01:07:18PM -0500, Offray Vladimir Luna C??rdenas wrote: > Thanks Hilaire. > > I was thinking in something that depend on OSProcess and invoke xdg-open > on Linux, for example, but is not working neither. > > OSProcess command: 'xdg-open ', pdfPathString > > doesn't open the PDF file :-/. > Hi Offray, I tried "OSProcess command: 'xdg-open ', pdfPathString" in Pharo, and it works for me. Maybe check to be sure that pdfPathString is right? Dave
Re: [Pharo-users] GitFileTree on Pharo 5.0
On Thu, Dec 01, 2016 at 07:05:37PM +0100, Trussardi Dario Romano wrote: > few days ago i encountered problems installing gitFileTree in pharo 5.0. > The basic error is relative to the : External module not found. Could be that the VM cannot locate the libgit2 so/dylib, which is my case. On Pharo 6, LGitLibrary: unixModuleName ^ 'libgit2.so.0' macModuleName | pluginDir | pluginDir := Smalltalk vm binary parent / 'Plugins'. #('libgit2.dylib' 'libgit2.0.dylib') detect: [ :each | (pluginDir / each) exists ] ifFound: [ :libName | ^ libName ]. self error: 'Module not found.' Pierce
Re: [Pharo-users] GitFileTree on Pharo 5.0
On Tue, Nov 29, 2016 at 12:57:47PM +0100, Thierry Goubier wrote: > Ok. Will have a look into the catalog browser source code to get rid of > that. I know that the catalog browser uses the Pharo6 > ConfigurationOfGitFileTree instead of the Pharo5 one. Thierry, Picking up an old thread, any idea how to fix this? On Pharo 5, the result of "CatalogProvider projectNamed: 'GlorpSQLite' has the Pharo 6 meta repo as the repositoryUrl. Presumably this is why Catalog Browser on Pharo 5 says GlorpSQLite is "Unknown" instead of "Pharo 5.0". Pierce
Re: [Pharo-users] Which is the best way of opening a PDF and HTML local files from Pharo
Hi Alistair, Unix process is making the task properly. Now I wonder how I can load the proper OS-Windows, OS-Unix or OS-Mac in Monticello, so the Grafoscopio package loads only the requirements for making this work accordingly to the platform where is running. Cheers, Offray On 24/02/17 16:54, Alistair Grant wrote: Hi Offray, Which version of Pharo are you running? My understanding is that Pharo5 & 6 use OSSubprocess, not OSProcess. I'm using xdg-open to open pdf files on linux (Arch): | proc | proc := OSSUnixSubprocess new. proc command: 'xdg-open'; arguments: (Array with: url). proc run. UIManager inform: 'Opened: ', url. url is the path to the file in this case. You can check the exit status with: proc exitStatusInterpreter e.g.: proc exitStatusInterpreter isSuccess Cheers, Alistair On 25 February 2017 at 05:07, Offray Vladimir Luna Cárdenaswrote: Thanks Hilaire. I was thinking in something that depend on OSProcess and invoke xdg-open on Linux, for example, but is not working neither. OSProcess command: 'xdg-open ', pdfPathString doesn't open the PDF file :-/. Cheers, Offray On 24/02/17 13:02, Hilaire wrote: Oh, you can add your extension to the OSPlateform hierarchy. So one your extensions added in the hierarchy, your code will use it with an uniform: OSPlateforme current openPdf: 'grafoscopio.pdf' Le 24/02/2017 à 18:55, Hilaire a écrit : But likely there is already something like that in the system but I can't see.
Re: [Pharo-users] Loading Seaside via Bootstrap in Pharo 6
On 25/02/2017 17:27, stepharong wrote: > I do not know when we removed NewListModel > We should check that. > And probably update clients to use ListModel. > Stef > > It was in Pharo 60089: https://pharo.fogbugz.com/f/cases/15849 -- Cyril Ferlicot http://www.synectique.eu 2 rue Jacques Prévert 01, 59650 Villeneuve d'ascq France signature.asc Description: OpenPGP digital signature
Re: [Pharo-users] Loading Seaside via Bootstrap in Pharo 6
I do not know when we removed NewListModel We should check that. And probably update clients to use ListModel. Stef Hi Torsten, On 21 Feb 2017, at 14:24, Torsten Bergmannwrote: Hi, regarding the problem Sven mentioned on http://lists.pharo.org/pipermail/pharo-users_lists.pharo.org/2017-February/030542.html here are my findings: When I use latest Pharo 6 (Image 60404) and run Metacello new smalltalkhubUser: 'Seaside' project: 'MetacelloConfigurations'; configuration: 'Seaside3'; version: #'release3.2'; load it loads the latest release 3.2 (which internally loads 3.2.1). The package is "ConfigurationOfSeaside3-JohanBrichau.323.mcz" Yes that worked for me too. I then had to load my own project using the same API, so not: ConfigurationOfBetaNineT3 project bleedingEdge load: 'trackit'. But: Metacello new configuration: 'BetaNineT3'; version: #bleedingEdge; load: 'trackit'. This then loaded Bootstrap as needed (with Seaside already present). This loads fine in Pharo 6 except that after installation the "Tools" -> "Seaside control panel" is not working anymore as "NewListModel" is not found anymore. So the control panel is broken. Dont know what the migration path is for UI's who used the removed "NewListModel" class. Here is how I quickly patched the control panel: WAPharoServerAdapterSpecBrowser>>#initializeWidgets self instantiateModels: #( listModel ListModel textModel TextModel toolbarModel WAServerAdapterToolbar). WAPharoServerAdapterSpecBrowser>>initializePresenter self initializeAdaptors. textModel aboutToStyle: false. listModel whenSelectedItemChanged: [ :selection | adaptor := selection. self updateUIState]; whenListChanged: [ self updateUIState]; displayBlock: [ :item | (item class name,' ',item statusString) asStringMorph ]; "icons: [ :item | self iconForAdaptor: item]; iconMaxSize: 16@16;" menu: [ :aMenu | self adaptorsMenu: aMenu]. self focusOrder add: listModel; add: toolbarModel; add: textModel. self disableAllButtons So I replaced NewListModel with ListModel and I commented out the icon related stuff. This might be a bit too quick, I don't know. So yes - one can (by using the above script) use Seaside but currently has to start the server with a script until this is fixed. This is good to know - but does not solve the "loading from catalog" issue. - So (in a fresh image 60404) I loaded "Bootstrap" from catalog and I received the error Sven reported. But ConfigurationOfBootstrap itself is not the problem I guess. Because it is also only referencing the "release3.2" version of Seaside and also "ConfigurationOfSeaside3-JohanBrichau.323.mcz" is loaded. The Transcript shows the following error output: Loaded -> ConfigurationOfSeaside3-JohanBrichau.323 --- http://smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main/ --- http://smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main/Error: Name not found: Seaside-Pharo-Development Also when you try to open the ConfigurationOfSeaside3 using Versionner I receiver an error "Name not found: Seaside-Pharo-Development". So there must be something wrong with the Seaside config I thought - or (what would be worse) with the newer Metacello version included in Pharo 6. At least the config looks OK and in both situations "ConfigurationOfSeaside3-JohanBrichau.323" is used. Additionally I tried: - when I load the Bootstrap config in a fresh Pharo 5.0 image (50769) from Catalog all loads fine. - when I manipulate the Pharo 6 image to have a version 5 signature SystemVersion newVersion: 'Pharo5.0'. SystemVersion current inspect. and load from catalog afterwards it also does not work. So I guess a Pharo 5.x specific config rule could not be the cause. Now I checked how Catalog loads the configs. And in class CatalogProject you will notice that for the catalog we still use Gofer for loading installStableVersion Gofer it url: self repositoryUrl; configurationOf: self name; loadStable when I change it to Metacello API installStableVersion Metacello new repository: self repositoryUrl, '/',self name; configuration: self name; version: #'stable'; load what a surprise: anything loads fine. I still wonder and do not know about the difference why Gofer and Metacello loading in Pharo 6 makes a difference now. So we could fix it for the catalog ... still I have no glue about the Gofer/Metacello
Re: [Pharo-users] Loading Seaside via Bootstrap in Pharo 6
On Tue, 21 Feb 2017 14:24:32 +0100, Torsten Bergmannwrote: Hi, regarding the problem Sven mentioned on http://lists.pharo.org/pipermail/pharo-users_lists.pharo.org/2017-February/030542.html here are my findings: When I use latest Pharo 6 (Image 60404) and run Metacello new smalltalkhubUser: 'Seaside' project: 'MetacelloConfigurations'; configuration: 'Seaside3'; version: #'release3.2'; load it loads the latest release 3.2 (which internally loads 3.2.1). The package is "ConfigurationOfSeaside3-JohanBrichau.323.mcz" This loads fine in Pharo 6 except that after installation the "Tools" -> "Seaside control panel" is not working anymore as "NewListModel" is not found anymore. So the control panel is broken. OOPS I thought that we deprecated it or not even removed it but changed the underlying implementation. We should fix that. Dont know what the migration path is for UI's who used the removed "NewListModel" class. So yes - one can (by using the above script) use Seaside but currently has to start the server with a script until this is fixed. This is good to know - but does not solve the "loading from catalog" issue.
Re: [Pharo-users] Grafoscopio User Manual: Early beta
This is what I was asking myself. :) As a side note, Grafoscopio documentation was made in Grafoscopio... you know, we love self-referential systems ;-). Cheers, Offray On 24/02/17 09:17, Offray Vladimir Luna Cárdenas wrote: Hi all, I'm making a couple of articles for the JOSS[1], which, by the way is an interesting critic/hack to the anachronistic published paper on indexed journal[2], making visible the work of >>research who use mainly software as a medium to communicate and make research.[1] http://joss.theoj.org/[2] http://joss.theoj.org/about JOSS proposes a pretty good structure for the companion readme file for the software. I started to write it, but I entered to some kind of "writing frenzy" and, after almost 40 pages(!), >>it ended in the English Grafoscopio User Manual: http://mutabit.com/repos.fossil/grafoscopio/doc/tip/Docs/En/Books/Manual/manual.pdf Is the first text I write of such length in English, so any critic on typos, clarity or others are welcomed. Please see the "Community Guidelines" section, particularly "Report issues or >>problems", so I can follow and address the suggestions better. I will be making some minor updates on the software and the manual to improve consistency (manual URL, remains the same, pointing to the last version). Cheers, Offray -- Using Opera's mail client: http://www.opera.com/mail/
Re: [Pharo-users] changing font size in Spec TreeModel or FastTable Tree
On Sat, 25 Feb 2017 14:23:21 +0100, Peter Uhnakwrote: Hi, how can I change the font size of either (or both) Spec TreeModel or FastTable's tree? The font size is by default taken from the StandardFonts defaultFont, but I see no option to change it anywhere for _a specific tree only_. (Also odd that both use #defaultFont and not #listFont). Yes this is sad. I think that we pay the price to use a singleton. Thanks, Peter -- Using Opera's mail client: http://www.opera.com/mail/
Re: [Pharo-users] startUp Application
Thanks all! I have enought information to begin working with. I will comment the results. Ing. Pablo Digonzelli Software Solutions IP-Solutiones SRL Dividato SA 25 de Mayo 521 San Miguel de Tucumán Email: pdigonze...@softsargentina.com pdigonze...@gmail.com Cel: 5493815982714 - Mensaje original - De: "Ben Coman"Para: "Any question about pharo is welcome" Enviados: Sábado, 25 de Febrero 2017 9:45:22 Asunto: Re: [Pharo-users] startUp Application I haven't packaged any apps myself. I just have fun hacking the Image. I know of these Squeak related ones from a while ago. YMMV but may give some ideas. http://squeakvm.org/win32/custom.html http://squeak.preeminent.org/tut2007/html/205.html cheers -ben On Fri, Feb 24, 2017 at 9:24 AM, Pablo R. Digonzelli wrote: > Hi, I want to know how to do in order a desktop application start with its > custom menu without pharo panel. > I read something about to startUp method but i need more information. > Sorry for my english and TIA > > > > > > Ing. Pablo Digonzelli > Software Solutions > IP-Solutiones SRL > Dividato SA > 25 de Mayo 521 > San Miguel de Tucumán > Email: pdigonze...@softsargentina.com > pdigonze...@gmail.com > Cel: 5493815982714
Re: [Pharo-users] Fast Table causes Instances of Matrix are not indexable?
Hi alistair if you use matrix as a grid (and not as a mathematical matrix) you may want to have a look at 2Darray and Grid available in Containers http://smalltalkhub.com/#!/~StephaneDucasse/Containers MCHttpRepository location: 'http://smalltalkhub.com/mc/StephaneDucasse/Containers/main' user: '' password: '' Hi All, I've just upgrade from Pharo 60395 to 60411 and am now unable to inspect instances of Matrix. I think I read somewhere that the GTInspector is now using fast tables, and am guessing that it is this change that is causing the problem. I've included code below to reproduce the problem and a stack trace. The sample code creates a 3 x 3 matrix. FTTableContainerMorph>>updateExposedRows suggests that the matrix is being treated as a one-dimensional collection: self owner numberOfRows => 9 "expected 3" self owner numberOfColumns => 1 "expected 3" I'll keep investigating, but if someone more familiar can point me in the right direction, any hints will be appreciated. Thanks, Alistair Pharo 6.0 Latest update: #60411 OS: 4.9.8-1-ARCH | m | m := Matrix rows: 3 columns: 3. 1 to: 3 do: [ :i | 1 to: 3 do: [ :j | m at: i at: j put: 'C', i printString, j printString ] ]. m inspect Matrix(Object)>>error: Matrix(Object)>>errorNotIndexable Matrix(Object)>>at: GLMFastListDataSource(FTSimpleDataSource)>>elementAt: GLMFastListDataSource>>cellColumn:row: FTTableContainerMorph>>updateExposedRows FTTableMorph>>resetPosition FTTableMorph>>resizeAllSubviews FTTableMorph>>extent: FTTableMorph(Morph)>>bounds: FTTableMorph(Morph)>>layoutInBounds: FTTableMorph(Morph)>>layoutProportionallyIn: [ :m | m layoutProportionallyIn: newBounds ] in ProportionalLayout>>layout:in: in Block: [ :m | m layoutProportionallyIn: newBounds ] Array(SequenceableCollection)>>do: GLMPanelMorph(Morph)>>submorphsDo: ProportionalLayout>>layout:in: GLMPanelMorph(Morph)>>doLayoutIn: [ self doLayoutIn: self layoutBounds ] in GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn: self layoutBounds ] BlockClosure>>on:do: GLMPanelMorph(Morph)>>computeFullBounds GLMPanelMorph(Morph)>>fullBounds [ :m | | subBox | m visible ifTrue: [ subBox := m fullBounds. box ifNil: [ box := subBox copy ] ifNotNil: [ box := box quickMerge: subBox ] ] ] in GLMPanelMorph(Morph)>>submorphBounds in Block: [ :m | ... Array(SequenceableCollection)>>do: GLMPanelMorph(Morph)>>submorphBounds GLMPanelMorph(Morph)>>privateFullBounds GLMPanelMorph(Morph)>>doLayoutIn: [ self doLayoutIn: self layoutBounds ] in GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn: self layoutBounds ] BlockClosure>>on:do: GLMPanelMorph(Morph)>>computeFullBounds GLMPanelMorph(Morph)>>fullBounds -- Using Opera's mail client: http://www.opera.com/mail/
[Pharo-users] 4 new chapters for new book on OOP and Design
Hi I just released four new chapters for the Learning OO programming and design with Pharo. https://ci.inria.fr/pharo-contribution/view/Books/job/LearningObjectOrientedProgramming/98/artifact/book.pdf 6 Objects and Classes 7 LateBinding 13 Inheritance 14 Understanding Super Super thanks to Hayatou Oumarou for his deep reviews of the book. Stef
[Pharo-users] Voyage: refreshing an object back to its repository state
Hi, Let's say object A is persisted in a Voyage repository. Then object A is modified in memory. Next I want to put object A back to its state as persisted in the repository. As there is some caching in place, doing a 'ObjectA selectAll' will return the modified instance in memory, no access to the DB takes place. As understood, cache can be flushed, but it is overkill, no? Is it safe to just do: VOMongoRepostiry current cache removeObject: objectA to only flush objectA from cache? Hilaire -- Dr. Geo http://drgeo.eu
[Pharo-users] changing font size in Spec TreeModel or FastTable Tree
Hi, how can I change the font size of either (or both) Spec TreeModel or FastTable's tree? The font size is by default taken from the StandardFonts defaultFont, but I see no option to change it anywhere for _a specific tree only_. (Also odd that both use #defaultFont and not #listFont). Thanks, Peter
Re: [Pharo-users] Team programming with Smalltalk
The best of the two worlds ;) Le 25/02/2017 à 12:37, Norbert Hartl a écrit : > To me it is important to have a working image that collects side effects as > well as having a process that builds an image from scratch. -- Dr. Geo http://drgeo.eu
Re: [Pharo-users] startUp Application
I haven't packaged any apps myself. I just have fun hacking the Image. I know of these Squeak related ones from a while ago. YMMV but may give some ideas. http://squeakvm.org/win32/custom.html http://squeak.preeminent.org/tut2007/html/205.html cheers -ben On Fri, Feb 24, 2017 at 9:24 AM, Pablo R. Digonzelliwrote: > Hi, I want to know how to do in order a desktop application start with its > custom menu without pharo panel. > I read something about to startUp method but i need more information. > Sorry for my english and TIA > > > > > > Ing. Pablo Digonzelli > Software Solutions > IP-Solutiones SRL > Dividato SA > 25 de Mayo 521 > San Miguel de Tucumán > Email: pdigonze...@softsargentina.com > pdigonze...@gmail.com > Cel: 5493815982714
Re: [Pharo-users] Fast Table causes Instances of Matrix are not indexable?
Hi Andrei, Thanks for the suggestion! That avoids the problem until the fix is in. Thanks again, Alistair On 25 February 2017 at 22:50, Andrei Chiswrote: > Hi Alistair, > > I do not have access to a computer right now but indeed this is related to > GTInspector moving to fast table. You should be able to temporarily solve > this be defining a custom Items presentation in the Matrix class that in the > display block transforms the martix to an ordered collection. > > We'll integrate a fix at the beginning of next week to solve this in the > inspector without requiring a new presentation. > > Cheers, > Andeei > > > On Feb 25, 2017 12:10 PM, "Alistair Grant" wrote: > > Hi All, > > I've just upgrade from Pharo 60395 to 60411 and am now unable to > inspect instances of Matrix. > > I think I read somewhere that the GTInspector is now using fast tables, > and am guessing that it is this change that is causing the problem. > > I've included code below to reproduce the problem and a stack trace. > The sample code creates a 3 x 3 matrix. > > FTTableContainerMorph>>updateExposedRows suggests that the matrix is > being treated as a one-dimensional collection: > > self owner numberOfRows => 9 "expected 3" > self owner numberOfColumns => 1 "expected 3" > > I'll keep investigating, but if someone more familiar can point me in > the right direction, any hints will be appreciated. > > Thanks, > Alistair > > Pharo 6.0 > Latest update: #60411 > OS: 4.9.8-1-ARCH > > > > | m | > > m := Matrix rows: 3 columns: 3. > 1 to: 3 do: [ :i | > 1 to: 3 do: [ :j | > m at: i at: j put: 'C', i printString, j printString ] ]. > m inspect > > > > Matrix(Object)>>error: > Matrix(Object)>>errorNotIndexable > Matrix(Object)>>at: > GLMFastListDataSource(FTSimpleDataSource)>>elementAt: > GLMFastListDataSource>>cellColumn:row: > FTTableContainerMorph>>updateExposedRows > FTTableMorph>>resetPosition > FTTableMorph>>resizeAllSubviews > FTTableMorph>>extent: > FTTableMorph(Morph)>>bounds: > FTTableMorph(Morph)>>layoutInBounds: > FTTableMorph(Morph)>>layoutProportionallyIn: > [ :m | m layoutProportionallyIn: newBounds ] in > ProportionalLayout>>layout:in: in Block: [ :m | m > layoutProportionallyIn: newBounds ] > Array(SequenceableCollection)>>do: > GLMPanelMorph(Morph)>>submorphsDo: > ProportionalLayout>>layout:in: > GLMPanelMorph(Morph)>>doLayoutIn: > [ self doLayoutIn: self layoutBounds ] in > GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn: > self layoutBounds ] > BlockClosure>>on:do: > GLMPanelMorph(Morph)>>computeFullBounds > GLMPanelMorph(Morph)>>fullBounds > [ :m | > | subBox | > m visible > ifTrue: [ subBox := m fullBounds. > box > ifNil: [ box := subBox copy ] > ifNotNil: [ box := box quickMerge: subBox ] ] ] in > GLMPanelMorph(Morph)>>submorphBounds in Block: [ :m | ... > Array(SequenceableCollection)>>do: > GLMPanelMorph(Morph)>>submorphBounds > GLMPanelMorph(Morph)>>privateFullBounds > GLMPanelMorph(Morph)>>doLayoutIn: > [ self doLayoutIn: self layoutBounds ] in > GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn: > self layoutBounds ] > BlockClosure>>on:do: > GLMPanelMorph(Morph)>>computeFullBounds > GLMPanelMorph(Morph)>>fullBounds > >
Re: [Pharo-users] Fast Table causes Instances of Matrix are not indexable?
Hi Alistair, I do not have access to a computer right now but indeed this is related to GTInspector moving to fast table. You should be able to temporarily solve this be defining a custom Items presentation in the Matrix class that in the display block transforms the martix to an ordered collection. We'll integrate a fix at the beginning of next week to solve this in the inspector without requiring a new presentation. Cheers, Andeei On Feb 25, 2017 12:10 PM, "Alistair Grant"wrote: Hi All, I've just upgrade from Pharo 60395 to 60411 and am now unable to inspect instances of Matrix. I think I read somewhere that the GTInspector is now using fast tables, and am guessing that it is this change that is causing the problem. I've included code below to reproduce the problem and a stack trace. The sample code creates a 3 x 3 matrix. FTTableContainerMorph>>updateExposedRows suggests that the matrix is being treated as a one-dimensional collection: self owner numberOfRows => 9 "expected 3" self owner numberOfColumns => 1 "expected 3" I'll keep investigating, but if someone more familiar can point me in the right direction, any hints will be appreciated. Thanks, Alistair Pharo 6.0 Latest update: #60411 OS: 4.9.8-1-ARCH | m | m := Matrix rows: 3 columns: 3. 1 to: 3 do: [ :i | 1 to: 3 do: [ :j | m at: i at: j put: 'C', i printString, j printString ] ]. m inspect Matrix(Object)>>error: Matrix(Object)>>errorNotIndexable Matrix(Object)>>at: GLMFastListDataSource(FTSimpleDataSource)>>elementAt: GLMFastListDataSource>>cellColumn:row: FTTableContainerMorph>>updateExposedRows FTTableMorph>>resetPosition FTTableMorph>>resizeAllSubviews FTTableMorph>>extent: FTTableMorph(Morph)>>bounds: FTTableMorph(Morph)>>layoutInBounds: FTTableMorph(Morph)>>layoutProportionallyIn: [ :m | m layoutProportionallyIn: newBounds ] in ProportionalLayout>>layout:in: in Block: [ :m | m layoutProportionallyIn: newBounds ] Array(SequenceableCollection)>>do: GLMPanelMorph(Morph)>>submorphsDo: ProportionalLayout>>layout:in: GLMPanelMorph(Morph)>>doLayoutIn: [ self doLayoutIn: self layoutBounds ] in GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn: self layoutBounds ] BlockClosure>>on:do: GLMPanelMorph(Morph)>>computeFullBounds GLMPanelMorph(Morph)>>fullBounds [ :m | | subBox | m visible ifTrue: [ subBox := m fullBounds. box ifNil: [ box := subBox copy ] ifNotNil: [ box := box quickMerge: subBox ] ] ] in GLMPanelMorph(Morph)>>submorphBounds in Block: [ :m | ... Array(SequenceableCollection)>>do: GLMPanelMorph(Morph)>>submorphBounds GLMPanelMorph(Morph)>>privateFullBounds GLMPanelMorph(Morph)>>doLayoutIn: [ self doLayoutIn: self layoutBounds ] in GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn: self layoutBounds ] BlockClosure>>on:do: GLMPanelMorph(Morph)>>computeFullBounds GLMPanelMorph(Morph)>>fullBounds
Re: [Pharo-users] Team programming with Smalltalk
Von meinem iPad gesendet > Am 17.02.2017 um 18:27 schrieb Hilaire: > > You have a very strong point. > The problem you emphasised, without explicitly naming it, comes from the > image. Because the image preserves state it is also a great receptacle > and accumulator for entropies, and as we know entropies only increase, > never decrease! > The direct consequence is that, at some time, after some interactions, > installing code in some order, or installing broken code, an image > breaks, hit the ground and becomes unusable. The image limit is always > the chaos (as long as it is used as a living thing and its evolving > state is preserved, saved), > I do not understand why we should keep entropy low. There are a lot of side effects that occur in a program. It is not only code changes, it is also creating objects, load external data, etc. Is it possible to draw a clear boundary? If not the side effects collect in every image that does something. So having an image that collects huge amounts of side effects and still runs as expected could be seen as robust system, no? Software does not need to fail immediately, it can also when side effects collect. This you cannot easily catch with tests. Trying to keep side effects low could also mean that you should restart your images often in order to get rid of side effects. So keep an image running and operate with it can be seen as stress test for the software. A usual workflow is to commit code changes, having something like jenkins building your image from scratch. You then copy the built image to server and never save it again. To me it has to do with reproducibility that you need in order to have deployment process. To me it is important to have a working image that collects side effects as well as having a process that builds an image from scratch. Norbert > Entropies always comes with interacting 'living' system. > > So Smalltalk image comes with this downside of entropies. I don't see > how you can bring argument against that to developer team, because it is > the Smalltalk weakness, as well its strong point. Very funny. > > Of course you can try to limit entropies. Versioning your image is > probably what to do, for example host task could save version of your > image every two hours, daily, etc. > > GNU Smalltalk took an original approach: it ships a minimal image you > don't modify and you install code on top of it. So really you never save > your image, entropies remains constant over time. This approach is not > really possible with Pharo. > > Best wishes > > Hilaire > >> Le 15/02/2017 à 23:43, horrido a écrit : >> In file-based word, the answer is tests and CI. What is the smalltalk way? >> And please do not say "It's in the conceptual nature of programming" -- if >> the scenario makes no sense in the smalltalk world (maybe you are not >> supposed to have 20 people working on the same project?) please say this. >> >> - >> >> How would you respond? I know Smalltalk can be used in large team >> programming, but since I personally have no experience with this, I cannot >> respond intelligently. > > -- > Dr. Geo > http://drgeo.eu > >
[Pharo-users] Fast Table causes Instances of Matrix are not indexable?
Hi All, I've just upgrade from Pharo 60395 to 60411 and am now unable to inspect instances of Matrix. I think I read somewhere that the GTInspector is now using fast tables, and am guessing that it is this change that is causing the problem. I've included code below to reproduce the problem and a stack trace. The sample code creates a 3 x 3 matrix. FTTableContainerMorph>>updateExposedRows suggests that the matrix is being treated as a one-dimensional collection: self owner numberOfRows => 9 "expected 3" self owner numberOfColumns => 1 "expected 3" I'll keep investigating, but if someone more familiar can point me in the right direction, any hints will be appreciated. Thanks, Alistair Pharo 6.0 Latest update: #60411 OS: 4.9.8-1-ARCH | m | m := Matrix rows: 3 columns: 3. 1 to: 3 do: [ :i | 1 to: 3 do: [ :j | m at: i at: j put: 'C', i printString, j printString ] ]. m inspect Matrix(Object)>>error: Matrix(Object)>>errorNotIndexable Matrix(Object)>>at: GLMFastListDataSource(FTSimpleDataSource)>>elementAt: GLMFastListDataSource>>cellColumn:row: FTTableContainerMorph>>updateExposedRows FTTableMorph>>resetPosition FTTableMorph>>resizeAllSubviews FTTableMorph>>extent: FTTableMorph(Morph)>>bounds: FTTableMorph(Morph)>>layoutInBounds: FTTableMorph(Morph)>>layoutProportionallyIn: [ :m | m layoutProportionallyIn: newBounds ] in ProportionalLayout>>layout:in: in Block: [ :m | m layoutProportionallyIn: newBounds ] Array(SequenceableCollection)>>do: GLMPanelMorph(Morph)>>submorphsDo: ProportionalLayout>>layout:in: GLMPanelMorph(Morph)>>doLayoutIn: [ self doLayoutIn: self layoutBounds ] in GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn: self layoutBounds ] BlockClosure>>on:do: GLMPanelMorph(Morph)>>computeFullBounds GLMPanelMorph(Morph)>>fullBounds [ :m | | subBox | m visible ifTrue: [ subBox := m fullBounds. box ifNil: [ box := subBox copy ] ifNotNil: [ box := box quickMerge: subBox ] ] ] in GLMPanelMorph(Morph)>>submorphBounds in Block: [ :m | ... Array(SequenceableCollection)>>do: GLMPanelMorph(Morph)>>submorphBounds GLMPanelMorph(Morph)>>privateFullBounds GLMPanelMorph(Morph)>>doLayoutIn: [ self doLayoutIn: self layoutBounds ] in GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn: self layoutBounds ] BlockClosure>>on:do: GLMPanelMorph(Morph)>>computeFullBounds GLMPanelMorph(Morph)>>fullBounds