Jump to content

Fr0sT.Brutal

Members
  • Content Count

    2268
  • Joined

  • Last visited

  • Days Won

    46

Everything posted by Fr0sT.Brutal

  1. Fr0sT.Brutal

    How to manage feature changes during release cycle?

    From me: Don't make videos for coding stuff!!!
  2. Fr0sT.Brutal

    ICS V8.67 announced

    I took a glance on adapting message loop for Linux but ICS' wrapper is too complex to understand it quickly. I've no strong requirement for Linux currently - even if it appears, Wine is doing pretty well. Nevertheless, would be nice to have Linux natively.
  3. I can't view the patch in GUI as Tortoise says it's conflicting but this change looks possible to live together with current state by creating function aliases and pseudo-units via include
  4. Fr0sT.Brutal

    How to manage feature changes during release cycle?

    Of course all these tmp commits live locally! This is one of killer features of Git, I can't imagine what I would do if I were on SVN
  5. Fr0sT.Brutal

    How to manage feature changes during release cycle?

    Btw: when actively working on a feature, I sometimes don't bother about decorating beautiful commits. I just commit stuff periodically, even non-buildable and incomplete with very short messages or just "tmp" message. When code starts looking more or less stabilized, I squash these temp commits into something nice looking and do actual commits that will remain in history
  6. Fr0sT.Brutal

    How to manage feature changes during release cycle?

    I'm the only dev of my projects so I adopted some kind of Git workflow: - Small changes fitting into single commit go directly to master - Somewhat big features (requiring significant changes in multiple files) go to feature branches. * If they are finished quickly (no commits to master happen after starting feature branch), I merge into master without fast-forward to get nice-looking curve in history. * If a branch lasts for a while, sometimes I rebase it onto current HEAD - or - * Merge commits from master to feature branch (this is what all should do but I find multiple merges too confusing in history so I try to avoid them). More frequently I utilize cherry-picking which is very nice tool of distributing commits. * When a feature is ready, I rebase onto current HEAD and do clean merge. I also use submodules for shared libs. This requires some self-discipline especially if you periodically modify these libs right from a parent project - this results in lots of fun when you have N different updates inside N different projects and got to merge them all into main repo and then update all these N submodules. I also came to a rule to commit changes in submodules into separate commits (without changes to parent project) just to separate things. What's good in submodules - you can always jump to any previous state including all deps and it will be buildable. Just don't forget to run "Update submodules" after switching
  7. Fr0sT.Brutal

    Using Expressions in the Group By Clause in Interbase

    @Joseph MItzen I've never used IB since v6 I believe (the one shipped with D7), I switched to FB and never looked back
  8. Fr0sT.Brutal

    Why empty dynamic arrays = NIL?

    Are you using "if StringVar = EmptyStr" as well?
  9. Fr0sT.Brutal

    Why empty dynamic arrays = NIL?

    Yes, just like TDateTime = Double... and just like SizeOf(Char) = 1 until a thunder stroke at 2009 🙂 For me, not relying on implementation details is just an additional layer of stability. In 2009 those who weren't assuming Char is almost the same as Byte, could adopt Unicode with almost no changes. Others were suffering. If sometimes TDateTime becomes a record with two numbers (f.ex., days from 1 Jan 0001 and msecs of day), those who write "secsBetween := (dt1 - dt2)*86400" will suffer. Me, using "secsBetween := SecondsBetween(dt1, dt2)" won't. I personally consider it bad style. This relies on impl details, and any new coder will have to keep in mind these nuances. "What, var is null here? Okay, I know that from my Java/SQL/JS background. Let's assign it with 0 length for now, to be expanded later. What could go wrong?" Moreover, sometimes you want to refactor. F.ex., array becomes insufficient and you change type to TList. Option #1, if using `Length(arr)`: change type, try to build, change all `Length(arr)` to `arr.Count` that compiler will complain on Option #2, if using `arr = nil`: SUFFER. P.S. Honestly I don't see why array literals took so long to add. Clause "if arr = []" would be pretty obvious and consistent to string type
  10. Maybe you could use lazy init so the class' state will be independent of c-tor call order? TClassSmth = class private class function GetProp public class c-tor Create property Prop read GetProp end class c-tor TClassSmth.Create GetProp end class function TClassSmth.GetProp if not Assigned(FProp) then Init(FProp) Exit(FProp) end
  11. Fr0sT.Brutal

    Why empty dynamic arrays = NIL?

    Probably that was done for perf purpose. I wouldn't rely on this, consider it implementation-specific, just the same as with empty strings or that TDatetime is days+fraction-of-the-day since December 30, 1899, etc.
  12. Nevertheless they're quite strong at defending human operators from contacting with clients. Sometimes "Give me alive operator you stupid bot!!!" phrase is not enough and you have to find more clever ways to break through this wall.
  13. Well... if you have a pointer to memory, you can't deal with it as with string or array. Direct Ansi processing IMHO goes into history and I won't miss it. So one anyway has to copy data to a string or even convert from buffer to something convenient. So what's the sense in those types.
  14. Yeah, these ones are dumb remnants. Things are changing with string helper though. Alas, for new compilers only. I wonder why Emba didn't declare these functions as XXX(string) naturally and declare AnsiXXX(string) as deprecated aliases. Instead we got something crazy like 64-bit System32 & 32-bit SysWOW64 I've no idea what LOGD expects... I'd say it's the flaw of Log's API to not provide convenient overloads with language-native types
  15. As old-school Delphier I understand why all these string types exist but honestly I'd cut some of them down. Ansistrings with codepages could be removed - RawBytes and Utf8 seems sufficient. Even Utf8 as string type could be avoided in some cases. Your example : Without 8-bit string compiler support procedure Output(const aMsg: string); begin LOGD(TUTF8Encoding.ToBytes(aMsg)); end;
  16. The test involved my wrapper for createprocess with threads, IO pipes etc, it's somewhat complex to extract MRE. I have it in my backlog but hardly will put my hands on it in near future...
  17. I've seen some articles with yells like "why Shortstring, Ansistring, Rawbytestring, WideString, Unicodestring, Utf8string, Whateverstring when you only need one Unicode string?!" Indeed, AFAIK C# only has one string type and so does JS. OTOH, any Tbytes/Buffer representation lacks ability of clean operations ("if bytes = 'foo'" etc). However, most of string features could be implemented as helpers, overloaded operators and custom IDE viewers. If only Emba introduced all that stuff together with removing string types, probably this change was accepted more gladly.
  18. ShortString is limited to 255 characters so you have not so much types to declare
  19. Many people complained "Why so many string types and what are all these for??" so Emb decided to cut them off in favor of Tbytes but they didn't provide convenient string features at that time (Pos, concat, inline init etc) so much more people started complaining they absolutely need all of that string types so Emb had to bring them back 🙂
  20. Fr0sT.Brutal

    DevExpress PDF Viewer

    I'm with Anders here. The guy is trying to sold his components (at least seems like so...) but there's no prices and any link leads to email form. As a possible option: you could embed DLLs into EXE as resources and extract them on launch. Thus you can utilize PDFium project, for instance.
  21. Fr0sT.Brutal

    Can DebugEngine work without a .map file attached?

    IDK what DebugEngine is but you could get stack trace in the form of addresses and send it from client. Then, having .map for the exact binary version, you can translate addresses to function names
  22. Fr0sT.Brutal

    Maximum static memory

    Hereby I name this thread "Crystal ball challenge". No code shalt be shown as that makes etheric vision unclear
  23. Fr0sT.Brutal

    Regex help please..

    ...and then International Domain Names come into chat
  24. Fr0sT.Brutal

    Farewell Rx10.4.2

    And yet they still can't implement an elementary customizable toolbar. Or change MouseWheelClick shortcut from weird multicursor action to usual page scroll. Btw, @Kas Ob. , I saw ppl in relevant issue topic saying farewell VSCode 😉
  25. Fr0sT.Brutal

    Is it possible to see Git current working branch in IDE?

    Fill a request to QC 🙂 I guess it would be quite easy to implement
×