-
Content Count
721 -
Joined
-
Last visited
-
Days Won
53
Everything posted by Vincent Parrett
-
Delphi 12.0 TParallel.For performance. Threading.pas issues
Vincent Parrett replied to mitch.terpak's topic in General Help
I was told this by an embarcadero (actuallly, it was probably borland at the time) employee when I queried what happened to the comments in some code I donated. In the DUnitX source they distribute, TODO comments are all stripped but not regular comments. -
Delphi 12.0 TParallel.For performance. Threading.pas issues
Vincent Parrett replied to mitch.terpak's topic in General Help
Haven't we all 🙋♂️ 😉 - I've been making a point lately to review code and just write comments when anything is unclear (once I figure out what I was thinking). -
Delphi 12.0 TParallel.For performance. Threading.pas issues
Vincent Parrett replied to mitch.terpak's topic in General Help
I believe Embarcadero strip comments as part of their build process. -
There is not really any reliable way to determine which version a delphi project belongs to - you can get close by looking at the ProjectVersion element in a dproj file 13 : XE2 14.0 - 14.3 : XE3 14.4 : XE3 Update 3, or XE4 15.0 - 15.3 : XE5 15.4+ : XE6 16 : XE7 17 : XE8 18.0 : 18.1 - 10.0 18.2 : 10.1 18.3 - 18.4 : 10.2 18.5-18.8 : 10.3 19.0 - 19.2 : 10.4 19.3+ : 11.0 20.0+ : 12.0 HTH
-
FYI - Several Embarcadero services are currently unavailable
Vincent Parrett replied to Keesver's topic in General Help
I went through the same exercise last year with our internal systems (CI etc) and it absolutely made sense to purchase new servers and put them in a data center (we closed our office when covid hit and went fully remote). Server tech has evolved a lot since I last purchased some (7yrs ago) - you can get some incredible bang for buck - all nvme lots of cores & lots of ram for AU$20K each. -
FYI - Several Embarcadero services are currently unavailable
Vincent Parrett replied to Keesver's topic in General Help
By pure chance this video came up on youtube this morning which articulates the point I made above ^ My guess is embarcadero are simply spinning up new vm's and not re-architecting their services - they might be in for a cloud bill shock in the future 🤔 -
Sure, I do that all the time - but tinkering with something and being good at something are not the same. It's not just the language you need to learn, it's the libraries. I can read and write code in Go, Rust, C, C++, Javascript, Typescript, C#, Delphi - but I would only consider myself good at writing the last 3 (I have used a bunch more languages over the years too). What you are forgetting is just how little time most people have to dedicate to open source development - if you look at the most popular open source delphi projects, you will see they have only a hand full of regular contributors. If you add having to learn a new language (whatever that may be) then you are narrowing the pool of possible contributors substantially. Examples https://github.com/VSoftTechnologies/DUnitX/graphs/contributors - 56 contributors but only one regular one (the author - myself). https://github.com/danieleteti/delphimvcframework/graphs/contributors 42 contributors but only one regular one (the author). https://bitbucket.org/sglienke/spring4d/src/master/ - bitbucket doesn't show the number of contributors but the 99% of the commits come from one person ( the maintainer/new author). Most other contributors contribute the odd bug fix but they tend to be one offs. If they have to learn another language (or are not good at a language) then they either won't contribute or they will move on to an alternative. So yes, being an open source author can be somewhat joyless.
-
I care about whether the community can contribute to it or not. The number of delphi developers who consume open source projects AND are willing to contribute to those projects is very small - when you filter those developers who have Go skills the the number would be vanishingly small. For me though the issue with Boss is the complete lack of discoverability - you have to know a package exists to be able to use it, how do I find the available packages for Boss? With dpm and other package managers that have a public repository (eg. nuget, npm, cargo) that is easy - and dpm presents that list of available packages in the IDE (searchable).
-
I have looked at Boss in the past, I found it odd that it's written in Go and not Delphi. It lacks any means of discovering packages, at least I wasn't able to figure that out?
-
Accepted, moving on. Did you mean Web of trust - like OpenPGP? https://en.wikipedia.org/wiki/Web_of_trust - I can't imagine how that would work practically in a world wide scenario - we certainly wouldn't be meeting to present our public keys 🤔 In any event, it seems unnecessarily complex when simpler solutions to SPOF exist. Yes, and DPM is absolutely architected to facilitate that (see the second screenshot above). Yep - the source for the DPM website/server is here https://github.com/DelphiPackageManager/DPMGallery (f-react-ui branch) - and it would not be difficult to build/install onsite (though not documented yet). The rest api surface is relatively small (and still evolving) so it's quite conceivable someone could re-implement the server however they like - for example adding authenticated access for downloading packages. The package storage mechanism is abstracted with multiple implementations (Google, Amazon, Bunny.net and FileSystem) so you can choose where the actual package files live. I originally used S3 but that was expensive so moved to bunny.net which at the moment is only costing me $1 per month!
-
Contructive critique is fine, sarcastic comments like "fixed it for you" is not at all helpful and frankly annoying. I have blogged, posted here and on other forums numerous times, created an RFC repo on github for feedback - but very little input was received and there no proposed distributed designs with any detail (let's use github and all our problems will be solved 🙄). I have been researching package managers for a long time. None are perfect, and dpm certainly isn't nore will it ever be, but it's a lot better than what we have now - getit is really not of any use (other than for installing delphi). I looked at the package managers for most of the major language/tool eco systems out there - and took ideas from all of them. None of the package managers I looked at are distrubuted - can you point to any that are? Distributed sound cool and all - but how do you ensure a) that the package has not been modified by anyone other than the author (Integrity) b) the package is actually from the author (Authenticity) c) that the package actually comes from where it says it does (Provenance). It's difficult enough to do with a central package server, doing so in a distrubuted system would be next to impossible (who is the source of the truth?). DPM does allow you to configure multiple package sources (as to most other package managers) - so you can easily download the package files (or just copy them from the package cache) to a network share and point dpm at that - in fact in some corporate enviroments this would be the only allowed scenario (I have seen this quite a bit with nuget) to avoid supply chain attacks and license issues.
-
🙄 I'm actively trying to get something going here that is better than what embarcadero will ever offer, what are you doing (apart from picking holes) 🤷♂️ Unlike embarcadero, I'm not running on old extremely difficult to fix hardware - it's a virtual machine (proxmox) and backed up regularly. The plan is eventually to move it to a cloud service which could provide the redundancy needed - gotta start somewhere.
-
It is possible to mitigate these attacks with signed packages and package signature verification. https://github.com/DelphiPackageManager/DPM/issues/19 https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details Ideally a package would be signed by both the developer's certificate and the package servers's (in the case of a public repository). Nuget uses code signing certifcates, which is still a problem open source developers - they cost money and are next to impossible to get as individuals. You could also run your own package server in house and scrutinize each package uploaded before making it available to users. DPM's server does an av scan using clamav - I would like to use something more robust like virustotal but they have limits that cost $$ to increase to practical levels.
-
[dcc32 Fatal Error] F2039 Could not create output file
Vincent Parrett replied to RockWallaby's topic in Delphi IDE and APIs
Ok, then my fallback answer for everything is 42 Antivirus - some av systems still do weird sh1t even when "disabled". Try adding explicit exclusions for your output folder for live. Also, it's still worth checking folder permissions, perhaps windows updates changed something. Where is the output folder? -
[dcc32 Fatal Error] F2039 Could not create output file
Vincent Parrett replied to RockWallaby's topic in Delphi IDE and APIs
Is your machine on an active directory domain? If so it's possible a group policy was applied that changed your permissions. Have a look at the permissions on the output folder. -
I wasn't going to bring it up in this thread.. but since you opened the door... I've been working on one for a while now https://delphi.dev - but it's a big project for one person and I have a business to run and a family. Docs - https://docs.delphi.dev/ Source https://github.com/DelphiPackageManager Installer - https://github.com/DelphiPackageManager/DPM/releases (codesigned by VSoft Technologies Pty Ltd). It is working well, but I have yet to implement loading design time packages - the reason for that is a lack of spare time. I did redo the IDE user interface a while back and that part is much easier to use than before (modelled on Jetbrain's Rider nuget support) - I use it daily. DPM supports Delphi XE2 - 12.0 - which should make upgrading to newer delphi versions easy - if the packages you use are available for the newer version of delphi, just open your project in that new version (with dpm installed) and dpm will automatically download and install the packages required for the project (and update search paths accordingly). Packages can be hosted by a package server, or a directory (ie network file share). The website is also a package server - that part is working well, however the ui needs a lot more work so that users can create api keys for pubishing packages. Right now the only packages there are ones I forked and published. The website is an asp.net 8.0 application (because I have a lot of experience with it) with a react front end, using a postgresql db - running on ubuntu server on a vm on one of my servers in Sydney - not ideal for latency for the rest of the world - it is behind cloudfare but api routes are excluded (cloudfare does help as a cdn for the images and javascript). If interest in/usage of the server actually took off I would move it to a cloud host in the US to improve latency (that would require some funding). The actual package files are on a cdn (bunny.net) and are regionally cached, so once someone near you has downloaded a package it is cached on their edge and its fast to download. Right now that's not costing me much but if usage ramps up it would. I went with bunny.net purely because of pricing - but apart from the stupid name it's actually a pretty good service. Recently someone (thanks @Geoffrey Smith ) contributed a tool for creating dpm package definition files (json) and we have been working on that together (it's installed by default now). Geoff created this tool to ease creating package definitions for some commercial libraires he is using. I would love to see more interest in the project and welcome contributions.
-
FYI - Several Embarcadero services are currently unavailable
Vincent Parrett replied to Keesver's topic in General Help
No idea, I'm not from there. -
FYI - Several Embarcadero services are currently unavailable
Vincent Parrett replied to Keesver's topic in General Help
https://www.ideracorp.com/brands No idea about the ownership structure -
FYI - Several Embarcadero services are currently unavailable
Vincent Parrett replied to Keesver's topic in General Help
FYI, this forum is not owned or run by embarcadero. -
Yep, I'm too lazy to type all those 1's and 0's - life's too short for that!
- 10 replies
-
- format
- interpolation
-
(and 1 more)
Tagged with:
-
Thanks for taking the feedback on board. Some comments 1) Move the Readme to the root folder of the repo, that way it shows on github when you vist the repo. 2) Change the Netformat to Source or Src 3) Move the .groupproj to the Source folder. This is probably personal taste, but FStr might be confusing in Delphi code - especially for those coming to a code base and not being familiar with this library - since F is typically used to prefix class Fields. I understand why making it short is attractive.
- 10 replies
-
- format
- interpolation
-
(and 1 more)
Tagged with:
-
Nice! I love seeing people think outside the box. I use string interpolation a lot in c# and I really dislike using Format in delphi. Some suggestions 1) Unit Tests - using DUnitX - not just a test application. 2) Prefix the Netformat.pas name with a namespace, eg VoSs2o0o.NetFormat.pas - this will avoid the chance that the unit name conflicts with other libraries ( the unit name is a bit generic). 3) TStr is not a great name for this, perhaps TFormatStr or TStringFormat or something like that would be more descriptive. 4) Restructure the repo to be more organised - see https://www.finalbuilder.com/resources/blogs/advice-for-delphi-library-authors 5) Hex format would be useful. Anyway, Kudos on a great idea.
- 10 replies
-
- format
- interpolation
-
(and 1 more)
Tagged with:
-
Quality Portal going to be moved
Vincent Parrett replied to Uwe Raabe's topic in Community Management
Confluence is an abomination - full of security holes, new CVE's every week. Our instance has been hacked twice - both times by bitcoin minors, requiring us to build a new vm and restore from backup. We're close to completing our migration away from it thankfully. I'm not sure that Jira JSM is the right way to go, given that Embarcadero doesn't really do support 🤦♂️ -
Open source http client similar to Delphi's THttpClient
Vincent Parrett replied to RaelB's topic in Delphi Third-Party
Depending on what features you need and Delphi version you need, this might work for you https://github.com/VSoftTechnologies/VSoft.HttpClient (has a dependency on https://github.com/VSoftTechnologies/VSoft.CancellationToken). -
FYI - Several Embarcadero services are currently unavailable
Vincent Parrett replied to Keesver's topic in General Help
No that would be pointless - restore from backup onto temp server.