Thanks david. Do you have a visual? Preferably in Pharo? S.
> On 13 Feb 2021, at 13:40, David Pennington <da...@totallyobjects.com> wrote: > > OK, here goes. > > My finishing project formy Open University degree (started in 1974 and > finished in 2017!) was a routing program for freight cars on US model > railways - written in VAST Smalltalk with a Seaside front end and a Riak back > end. Riak is a multi-user, fail over resilient Key/Value (K/V) database. I > used it on a Linux server as I couldn’t get it going under MacOS. However, > now I have finished my degree, I have disposed of the server so, for my new > project I didn’t have a database. I had built my own K/V database some years > ago to run the management and web software for a scale model shop that I > owned at that time so I decided that I would recreate that database for my > current use. > > TinkKV is my Smalltalk K/V. It relies on the OS for saving and retrieving > objects which are saved using STON (Smalltalk Object Notation) format. > Simple, there are two levels of bucket - 1) ‘Bucket’ and 2) ’SubBucket’. > There can be multiple buckets which can contain multiple sub buckets. In my > application, items are stored under two keys - FAOEntry (the basic entry > object) which is the primary bucket, and multiple sub buckets keyed by the > category of each object. It is a single user, local machine DB which is > extremely fast - retrieves 189 records in 0.18 seconds on an M1 Mac. > > Family Accounts is a simple home accounts management package that will evolve > over the coming month but basically imports transactions from a NatWest Sage > Accounts format download and inserts them into the database. Each object can > be categorised for budget control and each budget can be displayed. The > program can import a set of regular items (in CSV format) that recur monthly > so that a monthly budget can be managed. It is written in Pharo 8.0. > > I have been writing Smalltalk since 1990 when I started with Digitalk Visual > Smalltalk but since about 1996 I have been using IBM/Instantiations VisualAge > (VAST). I started the program, knowing nothing about Pharo, around the 15th > January so it has taken just about a month of 1 -2 hours a day firstly to get > to grips with Pharo and then to write the DB and Program. I have found Pharo > quite difficult to come to grips with as, in comparison to VAST, it seems to > be written for academics rather than business apps. However, once I got my > head around how it was all put together, I found it an easy transition and > great fun to use. I had expected to continue with VAST under Parallels but > found that neither Parallels (well partially) or Windows 10 currently works > successfully on an M1 MacBookAir. I did try to get hold of VisualWorks but > didn’t get any response to my request for a download for some reason. I have > written a good few frameworks for VAST so, now that my program is running > successfully, I will have a look and see if I can port anything else. Watch > this space. > > David Pennington > Totally Objects > (Http://www.totallyobjects.com <http://www.totallyobjects.com/>) > >> On 13 Feb 2021, at 11:09, Stéphane Ducasse <stephane.duca...@inria.fr >> <mailto:stephane.duca...@inria.fr>> wrote: >> >> Hi david >> >> Two points: >> - I would love to have a little success story about your application >> = one paragraph what is does + one paragraph how technology is >> cool :) >> >> - if you need we have a native VM for M1 (the stackVM). >> >> S. >> >>> On 11 Feb 2021, at 20:38, David Pennington <da...@totallyobjects.com >>> <mailto:da...@totallyobjects.com>> wrote: >>> >>> Hi there Peter >>> >>> I have been writing Smalltalk since 1990 first with Digitalk and then >>> IBM/Instantiations VAST. However, I am a newbie with Pharo having only used >>> it for the last 3 weeks so I am pleased to have got my first Seaside app >>> working successfully - it’s a home banking management app that imports from >>> Sage compatible CSV files supplied by NatWest. This is the only real >>> difficulty so I am very pleased with the work. >>> >>> I use my own brand key/value database that saves objects out to the disk. >>> With my new M1 MacBookAir, I am getting read and write values around .3 >>> second for 125 records so I am very happy. >>> >>> I have yet to look at deleting the old file before writing but I am sure >>> that this will make it superb. >>> >>> Many thanks for your help in this. >>> >>> David >>> TotallyObjects >>> http://www.totallyobjects <http://www.totallyobjects/>.com >>> >>> Your suggestion worked perfectly - I truncate the file and it parses >>> >>>> On 11 Feb 2021, at 17:07, <pe...@pbkresearch.co.uk >>>> <mailto:pe...@pbkresearch.co.uk>> <pe...@pbkresearch.co.uk >>>> <mailto:pe...@pbkresearch.co.uk>> wrote: >>>> >>>> David >>>> I think you are misreading the debugger display. The bit you are missing >>>> is the last few characters in the evaluation display, after the closing >>>> parenthesis. They should not be there if it is displaying a dictionary. >>>> Evidently the variable 'aDict' is in fact an association whose key is the >>>> dictionary and whose value is nil. >>>> >>>> I can't see where it goes from there, but I think you need to look more >>>> closely at the preceding line, FAOEntry>>getEntryObjectFrom:, and see >>>> what exactly it does with the junk in your .dat file. >>>> >>>> HTH >>>> >>>> Peter Kenny >>>> >>>> >>>> -----Original Message----- >>>> From: David Pennington <da...@totallyobjects.com >>>> <mailto:da...@totallyobjects.com>> >>>> Sent: 11 February 2021 16:46 >>>> To: Any question about pharo is welcome <pharo-users@lists.pharo.org >>>> <mailto:pharo-users@lists.pharo.org>> >>>> Subject: [Pharo-users] Re: Problem with Dictionary and Associations >>>> >>>> Thank you for that but it doesn’t resolve my problem. Why does the stack >>>> move to an Association when doing the access to the dictionary? It is the >>>> Association indexing that fails as it won’t allow #entryAmount as a key. >>>> >>>> If I inspect the following code (STON fromString: result ) in the line ^ >>>> self makeObject: (STON fromString: result ) I get an Association. Why >>>> don’t I get a Dictionary. I did two days ago when all of this was working >>>> perfectly and we were happily matching the Pharo Seaside display to our >>>> bank account :=) >>>> >>>> David >>>> >>>>> On 11 Feb 2021, at 16:39, Sven Van Caekenberghe <s...@stfx.eu >>>>> <mailto:s...@stfx.eu>> wrote: >>>>> >>>>> I can parse the file data you provided: >>>>> >>>>> STON fromString: >>>>> '{#entryName:''Housekeeping'',#entryDate:Date[''2021-02-25Z''],#transactionID:''2021022501'',#entryAmount:-400/1s8,#entryCategory:''Housekeeping'',#entryDescription:''Housekeeping'',#match:nil}ousekeeping'',#match:nil}' >>>>> >>>>> >>>>> "a Dictionary(#entryAmount->-400.00000000s8 >>>>> #entryCategory->'Housekeeping' #entryDate->25 February 2021 >>>>> #entryDescription->'Housekeeping' #entryName->'Housekeeping' #match->nil >>>>> #transactionID->'2021022501' )" >>>>> >>>>> (BTW, this is STON not JSON). >>>>> >>>>> What I do see in the input is junk after the last } >>>>> >>>>> That can happen when you overwrite an existing file with shorter content. >>>>> You should truncate such a file. >>>>> >>>>> From your screenshot I can see nothing wrong, #entryAmount seems an >>>>> existing key in aDict, that should just work. >>>>> >>>>>> On 11 Feb 2021, at 16:33, David Pennington <da...@totallyobjects.com >>>>>> <mailto:da...@totallyobjects.com>> wrote: >>>>>> >>>>>> I attach a couple of screen shots and a file containing the item that I >>>>>> am trying to open. What else can I supply? This has been working for a >>>>>> couple of weeks and suddenly doesn’t work. I save the JSON and then load >>>>>> it back again. I enclose a file with the JSON as contents. As you can >>>>>> see from the screenshot, the debugger shows it as a dictionary but the >>>>>> execution path takes it to an Association which is what I don’t >>>>>> understand. >>>>>> >>>>>> <stack.rtf><20210225 01><screenshot.png> >>>>>> >>>>>>> On 10 Feb 2021, at 19:17, Sven Van Caekenberghe <s...@stfx.eu >>>>>>> <mailto:s...@stfx.eu>> wrote: >>>>>>> >>>>>>> Hi David, >>>>>>> >>>>>>>> On 10 Feb 2021, at 19:18, da...@totallyobjects.com >>>>>>>> <mailto:da...@totallyobjects.com> wrote: >>>>>>>> >>>>>>>> I am using STON to objects out to disk. Up to two days ago, I was >>>>>>>> reading them in as Dictionaries and converting to objects from there. >>>>>>>> All of a sudden yesterday morning, I got an error saying that the >>>>>>>> association is only indexable with integers. Even so, I don't seem to >>>>>>>> be able to access the contents. >>>>>>>> >>>>>>>> Fistly, any ideas why this has changed and secondly, any ideas how to >>>>>>>> fix it? >>>>>>>> >>>>>>>> David >>>>>>>> Totally Objects >>>>>>>> >>>>>>>> Sent from my Huawei tablet >>>>>>> >>>>>>> I am afraid I need more information. >>>>>>> >>>>>>> Could you create a reproducible case ? >>>>>>> Do you have a stack trace ? >>>>>>> >>>>>>> In any case, STON is a text format, that can be edited (in most cases, >>>>>>> shared or circular references being hard to edit by hand). >>>>>>> >>>>>>> Sven >>>>>> >>> >> >> -------------------------------------------- >> Stéphane Ducasse >> http://stephane.ducasse.free.fr <http://stephane.ducasse.free.fr/> / >> http://www.pharo.org <http://www.pharo.org/> >> 03 59 35 87 52 >> Assistant: Aurore Dalle >> FAX 03 59 57 78 50 >> TEL 03 59 35 86 16 >> S. Ducasse - Inria >> 40, avenue Halley, >> Parc Scientifique de la Haute Borne, Bât.A, Park Plaza >> Villeneuve d'Ascq 59650 >> France >> > -------------------------------------------- Stéphane Ducasse http://stephane.ducasse.free.fr / http://www.pharo.org 03 59 35 87 52 Assistant: Aurore Dalle FAX 03 59 57 78 50 TEL 03 59 35 86 16 S. Ducasse - Inria 40, avenue Halley, Parc Scientifique de la Haute Borne, Bât.A, Park Plaza Villeneuve d'Ascq 59650 France