Just came by Firebird 4.0 beta being released. (Rings a bell? This is something really old, which I used in 2006.)
And by the way: wow, I think we might start 'gutting' what Delphi is still used for - mostly: legacy Firebird database apps.
I personally think it's way more than just a spurious correlation that we can observe on the chart... well, mistery of the day solved.
Friday, 22 February 2019
Monday, 18 February 2019
Caching, Plotly Dash, idea: bang your head ...
First observation: plotly Dash uses multi-threaded callbacks to generate content. At least the following suggest that this is the case:
- threading.get_ident() reports different thread ID's
- functools.lru_cache occasionally fails
- well, I get messages of multiple call starts, then multiple function body ends - pretty evident that they're executing in parallel
So well, the same calculation is at least executing on about 4 cores (in my specific case, according to the below log), which is nonsensical, even if it doesn't cause a visible delay on the given system.
So how am I going to get away with this?
Intriguingly, I've apparently run out of standard solutions so much as I've even tried the Dash recipe with the filesystem based Flask Cache, to no avail, or at least apparetly: not achieving a 100% success.
So next thing is to work out why, if there's still a chance, the cache misses - because the decorated function gets called relentlessly...
@cache.memoize(timeout=CACHE_TIMEOUT)
def get_filtered_data(date_range):
...
The situation roughly is that date_range is a tuple (pair) of datetime values. Can there be some equality checking problem then in some dictionary lookup or similar? That being my last guess, I'm calling it a way too long day, and will get back to this tomorrow.
To be continued ...
@strt get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140102504281856
@strt get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140103183415040
@strt get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140102863554304
get_filtered_snapshot_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140102479103744
@strt get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140102855161600
get_filtered_snapshot_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140103292983040
@ends get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140102504281856
@strt get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140102487496448
@strt get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140102495889152
@ends get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140102863554304
@strt get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140102470711040
@ends get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140102855161600
@ends get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140103183415040
@ends get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140102495889152
@ends get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140102470711040
@ends get_filtered_data (datetime.datetime(2018, 7, 31, 0, 0), datetime.datetime(2019, 2, 18, 0, 0)) thread: 140102487496448
Wednesday, 13 February 2019
Note to self - Inkscape
Inkscape is apparently a perfectly usable editor (I mean, "professional quality vector graphics software", see its self description on the about tab), didn't even take much to download.
Despite its self-imposed fame, it doesn't make me feel lost as opposed to when daunted by the classic GIMP's perhaps too generous number of features. I've even studied that one in class, and have been sporadically trying to use it over the years - always feeling a little lost nevertheless.
A deeper use case is yet to come, but I already learnt to appreciate this one despite that my task didn't take much longer than 5 minutes.
Despite its self-imposed fame, it doesn't make me feel lost as opposed to when daunted by the classic GIMP's perhaps too generous number of features. I've even studied that one in class, and have been sporadically trying to use it over the years - always feeling a little lost nevertheless.
A deeper use case is yet to come, but I already learnt to appreciate this one despite that my task didn't take much longer than 5 minutes.
Sunday, 10 February 2019
Jupyter Lab
Another reminder to self: do not forget to prefer Jupyter Lab over the classic Jupyter Notebooks. It's been out there for almost a year, time to adopt!
Just makes so much sense to have something resemblant to a full blown IDE when working with a notebook or two, preferably not consuming multiple tabs, coming with visual hints, etc.
And this one is just like that one.
Albeit the hotkeys aren't all obvious, apparently they can be googled up (e.g. Shift+Tab for the parameters hint while supplying the function arguments).
So far (after about an hour of use), so good... shouldn't forget!
Just makes so much sense to have something resemblant to a full blown IDE when working with a notebook or two, preferably not consuming multiple tabs, coming with visual hints, etc.
And this one is just like that one.
Albeit the hotkeys aren't all obvious, apparently they can be googled up (e.g. Shift+Tab for the parameters hint while supplying the function arguments).
So far (after about an hour of use), so good... shouldn't forget!
Subscribe to:
Posts (Atom)