Последние полгода я стараюсь уделять время изучению программирования. Получается уделять 3-5 часов в неделю. И начинает помаленьку получаться.
Сначала я прочитал небольшую книгу и прошел курс. Это получилось достаточно легко. Сейчас я работаю над небольшим личным проектом. И дело идёт не так быстро как хотелось бы.
Бывают ситуации, когда не понятно что программировать. Т.е. есть задача, а как к ней подступиться непонятно.
Для аналогии можно сравнить это с переводом на английский язык. К примеру нужно написать поздравление. Прежде чем его переводить, его нужно сначала написать на русском.
Т.е. сложности не с написанием кода, а с пониманием, что программировать.
В таких ситуациях мне помогает размышление текстом.
Я открываю любой текстовый редактор и начинаю писать. В чем у меня проблема. Какие понятные шаги можно сделать.
Либо я прописываю общий порядок программы или функции, что за чем следует, где что вызывается.
И мне это очень сильно помогает. Появляются новые идеи по реализации и проект двигается дальше.
Сегодня добрался до старого проекта на Python. Есть необходимость автоматизировать одну задачу.
Был относительно небольшой перерыв, около месяца. Весь код я писал сам, практически не подглядывая в справку. Но я очень долго не мог разобраться в своем же относительно небольшом коде. Поэтому решил вывести для себя несколько правил. Возможно они идут вразрез с какими то профессиональными правилами, но как мне кажется, они упростят работу мне:
Обязательно писать комментарии к строкам или блокам кода
Делать отдельный файл для функций
Описать программу простыми словами, что идёт в каком порядке, какая функция вызывается и для чего
Не делать больших перерывов пока не доделал проект
Писать следующий шаг после окончания рабочего времени
Есть список со справочниками. Нужно найти дублирующиеся подстроки по одному из ключей и взять самый поздний из них
В прошлой подзадаче я нашел дубли в списке. Сейчас мне нужно провести с ним некоторые операции:
Раньше я доставал значение одного ключа. Теперь мне нужно достать еще один ключ с датой. В моем случае, это строка. Чтобы работать с ней как с датой вызываем Datetime и преобразовываем строку в дату:
У меня есть список из словарей test_list. Реальные данные показать не могу. Так как там содержится конфиденциальная информация.
В каждом словаре несколько записей, одна из которых в формате: ‘CIRCUIT_ID’: ‘E4:6F:13:B7:FA:B1::55.33.6.31::8’.
Одна из подзадач: перебрать все словари из списка и найти дубли по частичному вхождению в ключе словаря. Нужно достать значение ключа, формата ‘E4:6F:13:B7:FA:B1::55.33.6.31::8’, достать оттуда всё что идёт после первых двойных двоеточий 55.33.6.31::8 и проверить есть ли в других словарях списка такие же подстроки.
Для тех кто немного понимает в сетях. У меня большая база данных с данными по мак адресам, коммутаторам и портам. Текущая подзадача вытащить дублирующие строки IP порт. Чтобы понять по каким портам и на каких коммутаторах, больше одной записи. Исходный код ниже.
test_list = [{},{},{},{},{},{},{},{}]
for row in test_list:
circuit = row.setdefault("CIRCUIT_ID")
str_circuit = str(circuit)
str_ip_port = str_circuit[str_circuit.index("::")+2:] # этой строкой я делаю срез от найденной позиции +2
for row1 in test_list:
str_circuit_sravn = row1.setdefault("CIRCUIT_ID")
str_ip_sravn = str_circuit_sravn[str_circuit_sravn.index("::")+2:] # беру срез[c позиции двух двоеточий+2 до конца]
if (str_circuit != str_circuit_sravn) and (str_ip_port == str_ip_sravn) :
print(str_ip_port)