Рассказал, как с Python и OpenCV восстанавливал фрески: писал свои алгоритмы, экспериментировал с нейросетями и пытался вернуть прошлое в настоящем. IT встречает вечность, серьёзно.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
• Большой гайд по миграциям в Django: полезные советы и обход типичных подводных камней
• Когда уверенность становится самонадеянностью: история одной фатальной ошибки
• Как создать свой веб-фреймворк на Python
• Рекурсивные запросы в SQLAlchemy
• С бумаги на цифровую карту: генерация файла из таблицы для импорта на карту и геокодирование адресов с помощью Python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Пишу про свой мини-инструмент для изучения китайского — он показывает похожие иероглифы, чтобы не путаться. Объясняю архитектуру, выбор компонентов и кидаю код. Всё на Python и чуть SQL.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Напишите функцию
parse_query(query_string)
, которая принимает строку запроса из URL (например, "age=25&name=John&active=true"
) и возвращает словарь, где значения автоматически приводятся к корректным Python-типам:—
"true"
/ "false"
→ bool
— числа →
int
или float
— остальное →
str
Поведение:
• Ключи и значения из строки должны быть декодированы (%20 → пробел и т.п.).
• Повторяющиеся ключи игнорируются — берётся первое вхождение.
• Пустые значения (key=) считаются None.
Решение задачи
from urllib.parse import parse_qsl, unquote_plus
def convert_value(val):
if val == "":
return None
if val.lower() == "true":
return True
if val.lower() == "false":
return False
try:
if "." in val:
return float(val)
return int(val)
except ValueError:
return val
def parse_query(query_string):
result = {}
pairs = parse_qsl(query_string, keep_blank_values=True)
for key, value in pairs:
if key not in result: # Берем только первое вхождение
decoded_key = unquote_plus(key)
decoded_value = unquote_plus(value)
result[decoded_key] = convert_value(decoded_value)
return result
# Пример использования
query = "age=25&name=John%20Doe&height=1.82&active=true&admin=false&bio=&age=999"
print(parse_query(query))
# Ожидаемый результат:
# {'age': 25, 'name': 'John Doe', 'height': 1.82, 'active': True, 'admin': False, 'bio': None}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Данная статья навеяна мнением о том, что все участки биржевых графиков в прошлом уже повторялись, потому что поведение участников рынка подчиняется типовым сценариям. И если оцифровать все графики, то можно находить похожие участки в текущий момент времени и предполагать, какое движение будет в ближайшее время.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Рассказываю, как начать писать терминал на Python с собственной примитивной файловой системой — первая часть серии. Стартуем с filesystem.py и классов для диска и файлов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1
enumerate()
в Python и зачем он нужен?enumerate()
— это встроенная функция, которая добавляет счётчик к итерируемому объекту. Полезна, когда нужно получить и индекс, и значение при переборе списка, строки или любого итератора.fruits = ['яблоко', 'банан', 'вишня']
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
0: яблоко
1: банан
2: вишня
🗣️ Без enumerate() пришлось бы вручную управлять счётчиком. Это делает код чище, читаемее и более "питоничным".
Please open Telegram to view this post
VIEW IN TELEGRAM
Материалы лекции про конфигурационные файлы — все основные аспекты написания и использования конфигов для самых маленьких, примеры кода на python.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Использование Python вместо GDScript в Godot: настройка окружения, установка плагина для Python на версии 3.x и сборка игры под Windows. Всё просто и быстро для тех, кто предпочитает Python!
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2⚡1❤1
• Вся правда о еженедельных созвонах, или Зачем переливать из пустого в порожнее?
• Тяжела и неказиста жизнь простого RnD. Часть первая: как работают с новыми технологиями в крупных компаниях
• Прийти на внедренный проект на этапе развития системы: как аналитику быстро погрузиться в процессы
• Как 97 лет назад хитрый менеджер-заяц заставил грозного лентяя сделать то, что тот очень не хотел. Смогли бы так?
• 10 лучших приёмов логирования для разработчиков
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье рассмотрены альтернативы Pandas: от колоночной DuckDB и сверхскоростной Polars до мощного Modin и гибкого Vaex. Узнайте их особенности, преимущества и ключевые характеристики.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья посвящена основам написания чистого кода на Python. Она рассматривает преимущества, стандарты и принципы чистого кода, а также содержит рекомендации, полезные для начинающих разработчиков, стремящихся улучшить качество своего кода.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Исследователи обнаружили вредоносные пакеты deepseeek и deepseekai, крадущие конфиденциальные данные из окружения. В статье разбор атаки, её механизм и рекомендации по защите.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Ты либо хвалишь себя, что «так бы не написал», либо впадаешь в панику — «я бы никогда так не смог». И то, и другое — полезно.
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье представлены как платные, так и бесплатные онлайн-курсы по машинному обучению, которые подойдут как новичкам, так и опытным специалистам. Узнайте, как создавать ML-модели, работать с большими данными и применять полученные навыки в реальных проектах, чтобы открыть новые карьерные возможности.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
• О векторных базах данных простым языком
• Ломаем капчу 4Chan
• Создаём генератор аудиокниг с персональным переводом
• Оптимизация ядра WebGPU для перемножения матриц и достижения производительности свыше 1ТФЛОПС
• Самая наглядная и простая модель естественного отбора: птицы со всего одним геном. Важность разнообразия у потомков
Please open Telegram to view this post
VIEW IN TELEGRAM
Напишите скрипт, который принимает путь к файлу CSV, конвертирует его содержимое в формат JSON и сохраняет результат в новый файл с тем же именем, но с расширением .json.
Пример:
id,name,age
1,Alice,30
2,Bob,25
3,Charlie,35
python csv_to_json.py data.csv
[
{"id": "1", "name": "Alice", "age": "30"},
{"id": "2", "name": "Bob", "age": "25"},
{"id": "3", "name": "Charlie", "age": "35"}
]
Решение задачи
import csv
import json
import sys
import os
def csv_to_json(csv_file_path):
try:
json_file_path = os.path.splitext(csv_file_path)[0] + ".json"
with open(csv_file_path, 'r', encoding='utf-8') as csv_file:
reader = csv.DictReader(csv_file)
data = [row for row in reader]
with open(json_file_path, 'w', encoding='utf-8') as json_file:
json.dump(data, json_file, indent=4, ensure_ascii=False)
print(f"Файл успешно конвертирован: {json_file_path}")
except FileNotFoundError:
print(f"Ошибка: Файл {csv_file_path} не найден.")
except Exception as e:
print(f"Ошибка: {e}")
# Пример использования:
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Использование: python csv_to_json.py <путь_к_csv>")
else:
csv_to_json(sys.argv[1])
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья предлагает простой мануал по использованию AJAX для динамического обновления страниц. Рассматривается взаимодействие фронтенда с AJAX и бэкенда на Django, с акцентом на минимализм кода для новичков.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Напишите функцию, которая принимает два списка и возвращает новый список, содержащий только элементы, которые присутствуют в обоих списках. Порядок элементов в результирующем списке должен соответствовать их порядку в первом списке.
Пример:
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
result = find_intersection(list1, list2)
print(result)
# Ожидаемый результат: [3, 4, 5]
Решение задачи
def find_intersection(list1, list2):
set2 = set(list2)
return [item for item in list1 if item in set2]
# Пример использования:
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
result = find_intersection(list1, list2)
print(result)
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья представляет простейшую модель естественного отбора с одним параметром-гена. Рассматриваются принципы её работы, интерактивные примеры кода на Python с использованием p5py, и визуализации в формате гифок.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM