800+ SQL Server Interview Questions and Answers .pdf
1 MB
Он также включает задачи для самостоятельной работы и множество примеров.
Сборник отлично подходит для тех, кто хочет прокачать свои навыки работы с SQL, освежить знания и проверить свои знания.
▪ GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
Неочевидный, но очень полезный приём для высоконагруженных Python-сервисов, которые пишут в сокет маленькими кусками (заголовки, чанки и т.п.).
Проблема: множество
send()
приводит к лишним системным вызовам и маленьким TCP-сегментам. Если включён Nagle, мелкие посылки «склеятся», но вы получите задержки (особенно рядом с read()`/`write()
пинг-понгом).Решение: управляем склейкой вручную:
- На Linux используйте флаг
MSG_MORE
— ядро понимает, что «продолжение следует» и подержит пакет, пока вы не отправите финальный кусок без MSG_MORE
.- Альтернатива — временно включать
TCP_CORK
: ядро копит данные и шлёт крупным сегментом при снятии «пробки».- Для передачи файлов после заголовков используйте
os.sendfile()
— это почти нулевые копирования (zero-copy).Итого: меньше syscalls, крупнее сегменты, ниже latency-хвост без «магии» Nagle.
import os
import socket
import time
from contextlib import contextmanager
HAS_MSG_MORE = hasattr(socket, "MSG_MORE")
HAS_TCP_CORK = hasattr(socket, "TCP_CORK") # Linux only
@contextmanager
def tcp_cork(sock: socket.socket):
"""Временно включаем TCP_CORK (Linux), чтобы склеить мелкие записи."""
if HAS_TCP_CORK:
try:
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_CORK, 1)
yield
finally:
# Снятие «пробки» — ядро отправит накопленное
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_CORK, 0)
else:
# На не-Linux просто не делаем ничего
yield
def send_with_coalescing(sock: socket.socket, parts: list[bytes]):
"""
Отправляем несколько маленьких кусков как один крупный сегмент.
- Linux: предпочитаем MSG_MORE (проще, не требует cork).
- Иначе: объединяем буфером в памяти как fallback.
"""
if HAS_MSG_MORE:
# Все, кроме последнего, шлём с MSG_MORE
for chunk in parts[:-1]:
# может вернуть меньше; используем sendall для простоты
sock.sendall(chunk, socket.MSG_MORE)
sock.sendall(parts[-1])
elif HAS_TCP_CORK:
# Включаем «пробку», шлём всё, затем снимаем
with tcp_cork(sock):
for chunk in parts:
sock.sendall(chunk)
else:
# Портативный fallback — склеиваем в памяти
sock.sendall(b"".join(parts))
def demo_http_like_response(conn: socket.socket, path_to_file: str | None = None):
# Пример: заголовки и небольшой body
headers = [
b"HTTP/1.1 200 OK\r\n",
b"Content-Type: text/plain\r\n",
b"Connection: close\r\n",
b"\r\n",
]
body = [b"Hello, ", b"world", b"!", b"\n"]
# 1) Заголовки + маленький body — аккуратно склеим
send_with_coalescing(conn, headers + body)
# 2) Большой файл после заголовков — лучше через sendfile (zero-copy)
if path_to_file and os.path.exists(path_to_file):
# В реальном сервере заголовки Content-Length/Type должны соответствовать файлу
with open(path_to_file, "rb") as f:
offset = 0
while True:
sent = os.sendfile(conn.fileno(), f.fileno(), offset, 1 << 20) # 1 MiB
if sent == 0:
break
offset += sent
def simple_server(port=9090, file_to_send=None):
srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Хорошая практика для рестартов
srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
srv.bind(("0.0.0.0", port))
srv.listen(128)
print(f"listening on :{port} ...")
while True:
conn, addr = srv.accept()
try:
demo_http_like_response(conn, file_to_send)
finally:
conn.close()
if __name__ == "__main__":
# Запустите и сходите curl'ом: curl -v http://127.0.0.1:9090/
# На Linux увидите меньшую фрагментацию пакетов (ss, tcpdump).
simple_server(port=9090, file_to_send=None)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥2👍1
🕷️ Spyder: универсальный инструмент для OSINT
Spyder — это открытый инструмент для разведки в области открытых данных, который позволяет выполнять поиск по большим глобальным базам данных. Он предоставляет информацию о номерах телефонов, IP-адресах, социальных сетях и многом другом.
🚀Основные моменты:
- Поиск информации по номерам телефонов и IP-адресам
- Доступ к данным из социальных сетей (Facebook, Instagram и др.)
- Поиск по электронной почте и адресам
- Узнайте информацию о доменах и номерных знаках
- Удобный интерфейс для быстрого доступа к данным
📌 GitHub: https://github.com/gumot0/spyder-osint
Spyder — это открытый инструмент для разведки в области открытых данных, который позволяет выполнять поиск по большим глобальным базам данных. Он предоставляет информацию о номерах телефонов, IP-адресах, социальных сетях и многом другом.
🚀Основные моменты:
- Поиск информации по номерам телефонов и IP-адресам
- Доступ к данным из социальных сетей (Facebook, Instagram и др.)
- Поиск по электронной почте и адресам
- Узнайте информацию о доменах и номерных знаках
- Удобный интерфейс для быстрого доступа к данным
📌 GitHub: https://github.com/gumot0/spyder-osint
❤4😁2👍1🔥1
🧠 Agent S: Интеллектуальные агенты для взаимодействия с компьютером
Agent S — это открытая платформа для создания автономных GUI-агентов, которые учатся на опыте и выполняют сложные задачи на компьютере. Проект нацелен на автоматизацию и взаимодействие с интерфейсами, предлагая новые возможности в области ИИ и автоматизации.
🚀Основные моменты:
- Поддержка Windows, macOS и Linux.
- Достижения нового состояния наилучшего результата (SOTA) в задачах компьютерного использования.
- Уникальная возможность обучения на основе предыдущего опыта.
- Открытый исходный код для сообщества разработчиков.
📌 GitHub: https://github.com/simular-ai/Agent-S
#python
Agent S — это открытая платформа для создания автономных GUI-агентов, которые учатся на опыте и выполняют сложные задачи на компьютере. Проект нацелен на автоматизацию и взаимодействие с интерфейсами, предлагая новые возможности в области ИИ и автоматизации.
🚀Основные моменты:
- Поддержка Windows, macOS и Linux.
- Достижения нового состояния наилучшего результата (SOTA) в задачах компьютерного использования.
- Уникальная возможность обучения на основе предыдущего опыта.
- Открытый исходный код для сообщества разработчиков.
📌 GitHub: https://github.com/simular-ai/Agent-S
#python
GitHub
GitHub - simular-ai/Agent-S: Agent S: an open agentic framework that uses computers like a human
Agent S: an open agentic framework that uses computers like a human - simular-ai/Agent-S
👍3🔥2