Как стать автором
Обновить
-4
0

Пользователь

Отправить сообщение

Руководство по программированию сокетов на Python. От введения до работающего примера

Время на прочтение10 мин
Количество просмотров55K


К концу руководства вы освоите основные функции и методы модуля Python socket, научитесь применять пользовательский класс для отправки сообщений и данных между конечными точками и работать со всем этим в собственных клиент-серверных приложениях. Материалом делимся к старту курса по Fullstack-разработке на Python.
Посмотреть первую часть
Всего голосов 8: ↑6 и ↓2+4
Комментарии0

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 1. Введение

Время на прочтение9 мин
Количество просмотров34K

Дабы исчерпать до дна тему сокетов в Python я решил изучить все возможные способы их использования в данном языке. Чтобы всех их можно было испытать и попробовать на зуб, были созданы 19 версий простого эхо-сервера: от примитивного использования класса socket до asyncio. Блокирующие и неблокирующие сокеты, процессы и потоки, select'ы и selector'ы, коллбеки и сопрограммы — все эти темы расположены в эволюционном порядке, чтобы один пример плавно перетекал в другой.

Отдельно разобрано появление асинхронности в Python. На примерах детально показано, как и зачем появились итераторы, из них — генераторы, сопрограммы. Ближе к концу построен учебный макет библиотеки asyncio с минимально необходимым кодом, чтобы любой (даже такой, как я) смог разобраться, как на самом деле устроена асинхронность, как там все внутри работает.

Пишу подробно, чтобы случайно чего не пропустить. Поэтому понятно должно быть всем.

Читать далее
Всего голосов 20: ↑18 и ↓2+16
Комментарии5

Издательство Питер. Колонка редактора

Время на прочтение5 мин
Количество просмотров9.6K
image

Привет, Хаброжители! Предлагаем ознакомиться с краткими обзорами новинок, выход которых запланирован на первую половину 2022 г.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии11

«Нежданчики» языка Фортран

Время на прочтение6 мин
Количество просмотров30K

Многие из нас, обучаясь программированию ещё в университетах или дома, делали это на языках С/С++. Конечно, всё зависит от времени, в которое начиналось наше знакомство с языками программирования. Скажем, кто-то начинал с Фортрана, другие — с Basic’a или Delphi, но стоит признать, что доля начавших свой тернистый путь программиста с С/С++ наибольшая. К чему я всё это? Когда перед нами стоит задача изучить новый язык и написать на нём код, мы часто основываемся на том, как бы я это написал на своём «базовом» языке. Сузим вопрос — если нужно написать что-то на Фортране, то мы вспоминаем, как бы это было реализовано на С и делаем по аналогии. Очередной раз столкнувшись с тонкостью языка, которая привела к абсолютно неработающему алгоритму и большой проблеме, эскалированной мне, я решил отыскать как можно больше нюансов языка Фортран (Fortran 90/95), по сравнению с С, с которыми столкнулся лично. Это своего рода «нежданчики», которые ты явно не планировал увидеть, а они бац – и всплыли!
Конечно, речь не пойдёт о синтаксисе — в каждом языке он свой. Я попробую рассказать о глобальных вещах, способных изменить всё «с ног на голову». Поехали!
Читать дальше →
Всего голосов 41: ↑33 и ↓8+25
Комментарии24

Согласование импедансов: переходные процессы и переходные отверстия

Время на прочтение12 мин
Количество просмотров18K

Переходное отверстие, поставленное в определённой точке печатной платы, может как серьёзно навредить сигналу, так и наоборот, устранить негативное влияние других элементов топологии на сигнал. Для любителей электроники, недавно столкнувшихся со «звоном» и необходимостью согласовывать импедансы, далеко не все эффекты, связанные с наличием переходных отверстий, могут быть очевидны. О подобных эффектах и пойдёт речь в данной статье.

Металлизировать отверстия
Всего голосов 68: ↑67 и ↓1+66
Комментарии25

Знакомимся с программированием на ассемблере x86

Время на прочтение17 мин
Количество просмотров43K

Архитектура x86 лежит в сердце процессоров, на которых уже более трех десятилетий работают наши домашние компьютеры и удаленные серверы. Умение читать и писать код на низкоуровневом языке ассемблера – это очень весомый навык. Он позволяет создавать более быстрый код, использовать недоступные в Си возможности машин и выполнять реверс-инжиниринг скомпилированного кода.
Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии15

Чем сложна демонизация POSIX

Время на прочтение3 мин
Количество просмотров3.6K

Согласно Стивенсу, setsid() делает три важные вещи:

Процесс становится лидером сеанса нового сеанса, который содержит только вызывающий процесс. (PID = SID)

Процесс становится лидером группы процессов новой группы. (PID = SID = PGID)

У процесса не будет управляющего терминала. Если он у него был до setsid(), то связь будет разорвана.

Кроме того, setsid() не может завершиться успехом, если вызывающий процесс уже является лидером группы процессов (PID = PGID), поэтому необходимо сначала вызвать fork(), который гарантирует, что вновь созданный процесс не является лидером группы процессов (он наследует идентификатор группы от родителя).

Вызов setsid() важен, потому что у демонов не должно быть управляющих терминалов. Если демон запускается из командной оболочки, он подвергается воздействию сигналов от управляющего терминала пользователя, которые могут спровоцировать его неожиданное завершение.

Читать далее
Всего голосов 13: ↑8 и ↓5+3
Комментарии2

Поиск изображений

Время на прочтение5 мин
Количество просмотров11K

Пытаясь реализовать обратный поиск изображений для своего сайта, я столкнулся с огромным миром поиска изображений. Ниже приведены краткие описания и варианты применения некоторых подходов обратного поиска/поиска похожих изображений.

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии3

Градиентный спуск в Python

Время на прочтение6 мин
Количество просмотров41K

Рабочая область функции (заданный интервал) разбита на несколько точек. Выбраны точки локальных минимумов. После этого все координаты передаются функции в качестве аргументов и выбирается аргумент, дающий наименьшее значение. Затем применяется метод градиентного спуска.

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии7

Сравнение скорости работы сортировок на С++

Время на прочтение5 мин
Количество просмотров8.6K
Начнем с того, что данному вопросу уделяется мало времени и приходится гуглить данный вопрос.

Код программы используемый в данной статье, я переписывал пару раз. Всегда было интересно насколько одна сортировка будет быстрее другой. Их как бы все студенты проходят, но в основном как переписывание псевдоалгоритма на лекции в код на каком-нибудь языке. Может быть данная статья будет полезна для какого-нибудь начинающего программиста.
Рассмотрим 5 сортировок. Это пузырьковая(bubble), шейкерная(shake), пирамидальная(heap), вставками(insertion) и быстрая(quick).
Читать дальше →
Всего голосов 34: ↑7 и ↓27-20
Комментарии29

Oracle: разница между deterministic и result_cache

Время на прочтение7 мин
Количество просмотров10K

От переводчика: свой путь на habr я решил начать не с попытки написать какой-то уникальный текст с нуля, а с перевода относительно свежей (от 17.08.2020) статьи классика PL/SQL-разработки Стивена Фойерштайна, в которой он достаточно подробно рассматривает разницу между двумя основными вариантами кэша результатов выполнения PL/SQL функций. Надеюсь, что этот перевод будет полезен для многих разработчиков, начинающих работу с технологиями Oracle.

В этой статье будут рассмотрены две возможности Oracle Database - создание детерминированных функций (deterministic) и функций, использующий общий кэш результатов исполнения (result_cache). Будут показаны основные сценарии использование каждого из этих видов функций, требования к ним и основные сценарии использования.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии2

Ржавеем дальше. Как появился Rust и можно ли на нём WEB?

Время на прочтение20 мин
Количество просмотров18K

Моя предыдущая статья про rust вызвала положительную реакцию и большое количество обсуждений о том что да как с rust. Мне исключительно приятно видеть что вам понравился этот материал.

В комментариях я встретил много вопросов типа «А можно ли использовать rust для WEB?» Лаконичный ответ таков: «Можно». Можно и brainfuck использовать, если хочется. Нужно ли? Скажем так, brainfuck для WEB использовать категорически не стоит. А вот rust – тут надо понимать что именно делает rust и каковы его цели. Для того чтобы это понять мы должны погрузиться в компилятор и разобраться в устройстве процессоров. Под катом вы найдёте глубокий заныр в историю того как появился rust и поймёте что это такое и когда его нужно использовать а когда можно и на «ноде запилить».

Ржавеем дальше и глубже...
Всего голосов 39: ↑34 и ↓5+29
Комментарии88

Занимательная «Ковидная» математика, записки выжившего

Время на прочтение5 мин
Количество просмотров13K
Я долго сдерживался чтобы не писать, но постоянная информационная компания по телевидению и интернет порталам про «вакцину», «плато», «победу над ковидом», окончательно взбесили.

В отличии от чернухи и фейков из заказных статей, про то что всё плохо в нашей стране с ковидом, я опираюсь только на свой опыт-опыт выжившего с 50 % поражением легких и истории соседей по подъезду и больнице. Не исключаю цензуры что данная статья будет вскоре удалена как не соответствующая политике партии :).

Предыстория

Мне повезло жить и заболеть Ковид в той части наше необъятной страны которая, не успела присоединится к НОВОЙ РОССИИ (в лице Москвы, Питера, Чечни и Крыма- про чудеса медицины которых вещает зомбоящик и все новостные ленты), в довольно таки большом районном городе (не областном центре) с населением чуть более 180 тысяч жителей. А в нашей области всего живет чуть более 1 млн 250 тысяч.
Читать дальше →
Всего голосов 41: ↑25 и ↓16+9
Комментарии111

Surf на DartUP 2020: проводим код-ревью и собираем идеи для Open Source

Время на прочтение2 мин
Количество просмотров832
4 — 5 декабря пройдёт единственная в России конференция о Flutter и Dart на русском языке — DartUp 2020. Это главное Flutter-событие года. Вас ждут доклады известных российских и мировых спикеров, которые расскажут об экосистеме Dart и дадут практические советы и лайфхаки, а также партнёрские мероприятия.

Мы в Surf тоже участвуем в DartUp в качестве партнёров и подготовили несколько движух. Участвуйте в них, чтобы прокачать себя и сделать мир Flutter-разработки лучше — вот так, без регистрации (почти) и смс.

Что будет? Рассказываем.


Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность