Match String on Multiple Columns

Posted by in Software

TL;DR: Use concatenation, Luke! I had to search a name for an user in a table containing the first and last names in separate columns. After a while I got tired on looking up the first_name and last_name columns one at a time and I decided to try and search both. The result is something like:

I have to do the LOWER() call because the names are provided by user input. At first I’ve been worried about performance, but since this is not a recurrent query, it’s acceptable (0.25s…read more

Make a Shell Script with Arguments (Native)

Posted by in Software, Tutorial

I was building a bash script and I needed several arguments to make it more versatile (e.g. dry-run). The list of parameters was: help as -h or –help dry run ad -d or –dry-run to go through the motions without actually executing commands keep last N images ad -k num or –keep num to keep last N images (default 5) As one can see, none of the parameters are compulsory and have default values:

The snipped taking care of my input parameters is:

The idea is that we…read more

Handler for Global Logger in Python

Posted by in Software, Tutorial

While writing a command line tool, I’ve stumbled upon a strange situation: Some logs were written to a file while some others were printed to console. Quite annoying, particularly since every module I use has its own logger via logging.getLogger(__name__). After some investigation I found out you can access the global logger via logging.getLogger() (note the lack of parameters). So, my new setup is:

Simple. HTH, A little experiment: If you find this post and ad below useful, please check the ad out :-)

Some Resources for Sony Alpha Development

Posted by in Idea, Software

Every time I get a gadget I think of building something for it. Since I’ve gotten a Sony A6000 things are not different, particularly because I have some issues with the default Sony Android app requiring GPS location (and insisting not to work without it). Therefore, I would like to build an app which makes various permissions optional (e.g. storage access, GPS) and another one to allow me to add some metadata to images on the fly (ideally). While investigating, I stumbled upon the following resources: Official Sony API for…read more

Messy rig

Posted by in Hardware

My current rig has: 1 x Vega 56 blower 1 x EVGA FTW2 1070 3 x RX580 Nitro + 1 x RX580 Red Devil It’s nice and I can mine either Ethereum with the hybrid Claymore miner or ZCash (albeit I still need to tune it because it crashes). Unfortunately, the airflow is messed up: Vega blows towards the rear Nitro+ blow towards the front The other two are OK with no discernible preference. So, I thought of adding fans to build a specific airflow, but I’ll need to build…read more

Vega 56 and ETH – Keep Your Cool(er)

Posted by in Hardware

Following my writing, I’ve rearranged my rig to have the Vega card on one edge (where the intake fan would get “fresh” air from the room rather than heated air from one of the other cards). Results are quite epic. With the settings: Frequency % = 0 Voltage control = manual, with the last 2 entries at 1100 mV Memory speed = manual. set at 950 MHz (new) Memory voltage control = manual, last entry set at 950 mV Performance profile = custom Fan speed = manual, between 400 and…read more

DRF: What is ‘source’ in Fields?

Posted by in Software, Tutorial

For a couple of days I’ve been trying to de-serialise a JSON to a model. My problem is the model and the JSON have different fields, mainly to keep the model pythonic and independent of a specific JSON source. So… I’ve been trying to use the source parameter for each Field in my serialiser to map to the JSON. E.g. if my Django Model field would be named timestamp and my JSON would be named time, I would have a serialiser Field like this:

THIS IS WRONG! It’s actually…read more

Timestamp to DateTime Serializer Field for DRF

Posted by in Software, Tutorial

I’m currently trying to deserialize JSON data to a Django model. This is quite straight forward for most numeric fields, but I have a DateTime field which is stored as a timestamp in the original JSON. At first, I thought I should read the timestamp as an integer and convert it through post-processing. Then, after reading more of the DRF docs, it became evident I needed a custom field. The code is below:

The idea is that to_representation converts a DateTime field into a timestamp value for serialisation and…read more

Redis on Windows – Save RDB but Not Able to Persist

Posted by in IT, Tutorial

TL;DR: My windows service wasn’t installed properly. Change the config file to point the DB to an accessible directory and reinstall the service. When trying to build a perioduc Celery task, I got the following error with Redis on Windows (running as a windows service): redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error. This is quite unfortunate because the error doesn’t show…read more

Run Celery 4.1.0 on Windows 10

Posted by in Software, Tutorial

TL;DR: Use set FORKED_BY_MULTIPROCESSING=1 on the worker script/shell When running Celery on Windows 10, I got the following error: ValueError: not enough values to unpack (expected 3, got 0) This is quite unfortunate as Windows is supported on “best effort”. A pull request has a change, but it’s not pretty to patch an installation. To get around, you can just define an environment variable:

I only defined it on the worker’s side. HTH, A little experiment: If you find this post and ad below useful, please check the ad…read more