Search
Write a publication
Pull to refresh
-2
0

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

Send message

Простой P2P сервер на python

Reading time13 min
Views23K


Одноранговая сеть или проще P2P сеть — это сеть в которой все пользователи равны и имеют равные права. Отличительная особенность таких сетей от обычных в том, что в ней нет единого сервера, к которому подключаются пользователи, вместо этого они подключаются друг к другу. Существуют гибридные варианты таких сетей, в котором присутствует сервер, выполняющий только координирующую работу.


Сегодня я хочу предложить простой вариант реализации P2P сервера для такой сети на языке python.

Читать дальше →

Всего 5 минут в день

Reading time11 min
Views26K

Спортивный блоггер из YouTube: "Делай это упражнение всего 5 минут в день и у тебя будет стальной пресс"
Твой менеджер проекта: "Чтобы пройти этот опрос нужно 2 минуты, неужели так сложно?"
Онлайн-школа английского языка: "В изучении английского языка - главное регулярность!"
Тренинг по тайм-менеджменту: "Просто заносите все в список задач и проводите еженедельные обзоры."


Часто вам приходится слышать такое, а иногда и говорить другим? Почему сколько бы раз мы не повторяли подобные мантры мы так редко переходим от слов к делу? Как все просто в формулировках… от этого чувство вины от очередного похода к холодильнику вместо пробежки еще сильнее. А помните как хорошо все начиналось? Как плавно шел новый язык программирования, с каким энтузиазмом мы оповещали окружающих о начале здорового образа жизни и утренних пробежек? Методично, но не без усилий, мы разберемся в этом вопросе и сформируем практические советы в ситуации, когда очень хочется начать что-то новое (свой проект, привычку и т.п.), но мы соответствуем этому желанию и сбиваемся с пути. Будет много полезных ссылок, без изучения которых, опыт от прочтения статьи не будет полным.

Читать дальше →

«Просто похудеть» — непросто

Reading time15 min
Views128K

Интернет наводнен статьями о том, как похудеть "просто съедая меньше чем потратил" и отчетами об успешном опыте некоторых везунчиков. Чего нету (ну или очень мало) в интернете — это отчетов о том, как миллионы людей безрезультатно пытаются просто "съесть меньше", садясь на все новомодные диеты и неизменно возвращаясь к тому, с чего начинали, а иногда и скатываясь по шкале индекса массы тела в еще более красную зону.


В этой статье я постараюсь описать наиболее частые причины неудач и дать некоторые лайфхаки, который позволят обмануть свой мозг и наконец достигнуть своего так желаемого целевого веса.

Хакнуть свой мозг

Как можно и как нельзя использовать нулевой указатель в С++

Reading time5 min
Views15K


Некоторым этот банальный вопрос уже набил оскомину, но мы взяли 7 примеров и попытались объяснить их поведение при помощи стандарта:


struct A {
    int data_mem;
    void non_static_mem_fn() {}
    static void static_mem_fn() {}
};

void foo(int) {}

A* p{nullptr};

/*1*/ *p;
/*2*/ foo((*p, 5));                     
/*3*/ A a{*p};
/*4*/ p->data_mem;
/*5*/ int b{p->data_mem};
/*6*/ p->non_static_mem_fn();
/*7*/ p->static_mem_fn();

Читать дальше →

Urban Bot или как писать чат-ботов для Telegram, Slack, Facebook… на React.js

Reading time11 min
Views21K

image


В этой статье я хочу познакомить с новой библиотекой Urban Bot, которая адаптирует React для написания чат-ботов. Ниже я расскажу, зачем эта библиотека появилась на свет, какие дает преимущества и как написать вашего первого чат-бота.


Чат-бот — это чаще всего отдельный чат в мессенджере, в котором вы общаетесь не с человеком, а с программой. Он может присылать сообщения в виде текста, изображений, кнопок и многих других UI элементов и реагировать на сообщения от пользователей. Современные чат-боты — это полноценные UI приложения внутри мессенджеров.

В отличии от большинства чат-бот библиотек, которые чаще всего просто оборачивают http запросы в функции с готовыми аргументами и предоставляют подписки вида bot.on('message', callback), иногда позволяя передавать контекст между вызовами, Urban Bot предлагает совершенно иной подход к разработке чат-ботов — через декларативное программирование и компонентный подход. Живой пример, написанный на Urban Bot, вы можете попробовать в Telegram, cсылка на чат-бот, и посмотреть код на GitHub.


Как мы заметили выше, чат-боты это полноценные UI приложения. А какой язык в 2020 и какая библиотека наиболее подходит для разработки UI приложений? Правильно, JavaScript и React. Такая интеграция позволяет легко и непринужденно строить чат-боты любой сложности без единого знания об API мессенджеров. Далее я расскажу, как создавать простые компоненты и на их основе строить сложных чат-ботов, работать с навигацией, создавать диалоги любой вложенности, писать одно приложение и запускать в любых мессенджерах, и многое другое.

Читать дальше →

Настройка ПИД-регуляторов: так ли страшен чёрт, как его малюют? Часть 1. Одноконтурная система

Reading time4 min
Views34K


Эта статья открывает цикл статей, посвященных автоматизированным способам настройки ПИД-регуляторов в среде Simulink. Сегодня разберемся, как работать с приложением PID Tuner.

Читать дальше →

Устройство CPython. Доклад Яндекса

Reading time21 min
Views38K
Мы публикуем конспект вступительной лекции видеокурса «Бэкенд-разработка на Python». В ней Егор Овчаренко egorovcharenko, тимлид в Яндекс.Такси, рассказал о внутреннем устройстве интерпретатора CPython.


— Если кратко, какой у нас будет план? Сначала мы поговорим о том, почему будем изучать именно Python. Затем посмотрим, как работает интерпретатор CPython более глубоко, как он управляет памятью, как устроена система типов в Python, на словари, генераторы и исключения. Я думаю, это займет примерно час.
Читать дальше →

Реализуем простые кооперативные потоки на C

Reading time13 min
Views5.5K
Привет, Хабр!

Спасибо вам за внимание, проявленное к нашей предыдущей переводной публикации о REST. Сегодня мы предлагаем взглянуть на тему проектирования систем несколько с другой стороны и публикуем перевод статьи Стивена Бреннана, корифея Linux, который рассказывает о собственной реализации многозадачности в userspace и о том, какая может быть от этого польза.
Читать дальше →

Динамическое определение класса в Python

Reading time4 min
Views21K
Под динамическим определением объекта можно понимать определение во время исполнения. В отличие от статического определения, которое используется в привычном определении класса с помощью ключевого слова class, динамическое определение использует встроенный класс type.

Метакласс type


Класс type часто используется для получения типа объекта. Например так:

h = "hello"
type(h)
<class 'str'>

Но у него есть другое применение. Он может инициализировать новые типы.
Читать дальше →

Как я проработал 4 с лишним года в семье Газпрома, уволился и… выращиваю помидоры

Reading time20 min
Views37K
Чувак: — Что писать?
НЛО: — А что ты хочешь?
Чувак: — Попрактиковаться в русском, проверить — не вмерло ли чувство юмора, да чтоб молодёжь (рус. джуны) поучилась на чужих ошибках.
НЛО: — Так и пиши…

Update: НЛО вынудило автора выкинуть весь syntactic sugar из статьи, хотя он был изменён до неузнаваемости буквой @. Афтор от шока сначала хотел выпить йаду, но потом передумал — кто ж за помидорами да перцем ухаживать будет!? Он просто заменил syntactic sugar тэгами [ОПС] — очень плохое слово… а потом понял что и это запрещено. О дивный новый мир! В итоге получилась статья без эмоций. Не обессудьте. Хоть и скучная, но зато политкорректная.

Модератор: без мата и эвфемизмов статьи тоже выглядят классно. Йад пить не надо, йод тоже — аффтары, пешите исчо.

«А как и почему вы решили стать фронтенд-разработчиком? Что в профессии хорошо, а что нет? Рассказывайте в комментариях, поможем тем, кто стоит на распутье» — написали относительно недавно ru_vds в самом конце статьи, а жирным выделил я.

Прочтя «поможем», без всяких задних мыслей сразу вспомнился человек который всем помогал, из «Моря исчезающих времён» от Маркеса, Габриеляна Гарсиевича.

Из «Моря исчезающих времён»
Он не пошёл спать. Он появился в лавке Катарино, в сопровождении мужчин, которые несли его баулы, а за ним всё шли толпой люди со своими проблемами. Он решал их одну за другой, и решил столько, что в конце концов остались только женщины и несколько мужчин, чьи проблемы были уже решены. В глубине комнаты одинокая женщина неторопливо обмахивалась какой-то рекламной афишкой, словно веером.
— А ты, — крикнул ей сеньор Герберт, — у тебя что за проблема?
Женщина перестала обмахиваться.
— Я вашего праздника не касаюсь, мистер, — крикнула она через всю комнату. — Нет у меня никаких проблем, я — проститутка, так уж у меня устроено нутро.

/* В оригинале покруче. Причуда такая у переводчиков — беспокоиться о нашем «облико морале», вот и сглаживают «исходный код». Прям как Хабр. */

Читать дальше →

Слияние списков на python. Сравнение скорости

Reading time5 min
Views31K

Сравнение различных методов слияния двух отсортированных списков


Пусть у нас есть два списка (для простоты из целых чисел), каждый из которых отсортирован. Хотим объединить их в один список, который тоже должен быть отсортирован. Эта задача наверняка всем знакома, используется, например, при сортировке слиянием.



Способов реализации (особенно на python) достаточно много. Давайте разберем некоторые из них и сравним затрачиваемое время на разных входных данных.

Читать дальше →

Использование C и C++ в Data Science для новичков

Reading time11 min
Views24K
Решим классическую задачу Data Science на C99 и C++11.

В то время как такие языки как Python и R становятся все более популярными для науки о данных, C и C++ могут быть сильным выбором для эффективного решения задач в Data Science. В этой статье мы будем использовать C99 и C++11 для написания программы, работающей с квартетом Энскомба, о котором я расскажу далее.

О своей мотивации к постоянному изучению языков я написал в статье, посвященной Python и GNU Octave, которую стоит прочитать. Все программы предназначены для командной строки, а не для графического интерфейса пользователя (GUI). Полные примеры доступны в репозитории polyglot_fit.

Задача по программированию


Программа, которую вы напишете в этой серии:

  • Считывает данные из CSV-файла
  • Интерполирует данные прямой линией (т.е., f(x)=m ⋅ x + q).
  • Записывает результат в файл изображения
Читать дальше →

Нефтянка для инженеров, программистов, математиков и широких масс трудящихся, часть 4

Reading time10 min
Views11K
image

Это четвертая часть из серии статей для будущих математиков-программистов, которым предстоит решать задачи, связанные с моделированием нефтедобычи и разработкой инженерного ПО в области сопровождения нефтедобычи.

Сегодня мы расскажем о том, зачем нужны модели месторождений, и как их строить. Модель – это план действий, который обязательно должен быть, а кроме этого – предполагаемый и ожидаемый результат этих действий.

Читать дальше →

Python и пиво — взболтать, но не смешивать

Reading time3 min
Views5.8K


Привет, Habr! Решил описать небольшую систему автоматизации для создания чудесного напитка. Для того, чтобы пиво было вкусным важны время и температура, температура и время. Причём они настолько же необходимы, как и ингридиенты, составляющие сусло. Чтобы пройти путь до готового продукта требуется от 14 до 20 шагов с различной температурой и временем пивоварения. Для всех заинтересовавшихся этим загадочным процессом, прошу под кат.
Читать дальше →

Microsoft ♥️ Python

Reading time14 min
Views11K
Традиционно считается, что Microsoft хорошо поддерживает языки программирования на платформе .NET: C# или F#. Но это не совсем так — облако Azure поддерживает целый спектр языков, среди которых Python занимает почетное место. А если речь заходит о машинном обучении, то Python здесь любимчик.



Какие сервисы в Microsoft ориентированы на Python, как их использовать и почему Microsoft и Python вместе навсегда, расскажет Дмитрий Сошников (@shwars).

Дмитрий Сошников работает в Microsoft 13 лет, 10 из которых — технологическим евангелистом. В Microsoft Дмитрий защищает пользователей продуктов для разработчиков от разработчиков продуктов в роли Cloud Developer Advocate. Когда возникают проблемы с продуктами компании, ему можно пожаловаться (идеально в виде issue на GitHub). Дмитрий не только посочувствует, но и передаст жалобу разработчикам компании.


Тайм-менеджмент — это не история про то, как сделать больше за 8 часов, это как сделать важное за 8 часов

Reading time5 min
Views9.5K

В момент самоизоляции каждый оказывается сам по себе. Да, утренние совещания, daily, «летучки» никто не отменял. Но в некоторой степени люди краешком ощутили одиночество — а оно умеет сбивать с рабочего ритма.


Существуют три простых инструмента тайм-менеджмента, которые помогали людям в самых сложных ситуациях сохранить контроль над своей жизнью и временем. Эти инструменты настолько базовые, работают в любой среде, что наша эпоха самоизоляции и карантина — точно не исключение.



Сейчас основная сложность в том, что поток информации увеличился в несколько раз. Мы уже давно живём в цифровом мире. А в эпоху самоизоляции почти 100% людей заметили, что стали работать ещё больше.


Потоки информации стали еще объёмнее, количество информации стало еще больше, от компьютера мы не отходим примерно с утра до вечера, а вечером "пересаживаемся" на смартфон.


Потому первостепенная задача сейчас – научиться фильтровать информационный поток. Тайм-менеджмент, он не про то, как сделать больше за 8 часов, он про то, как сделать важное за 8 часов.


Но инструментов тайм-менеджмента великое множество. Если попытаться внедрить правильную по литературе структуру тайм-менеджмента, то на ее поддержку будет уходить больше сил, чем на продуктивную работу. Поэтому я для себя внедрил три простых правила тайм-менеджмента, которые помогают всегда, и особенно в эпоху самоизоляции.


Читать дальше →

Особенности применения языков программирования С и С++ при разработке ПО, связанного с функциональной безопасностью

Reading time11 min
Views9.6K
image

Крис Хоббс (Chris Hobbs) в своей фундаментальной работе «Embedded Software Development for Safety-Critical Systems» [1] приводит распространенное среди программистов мнение о том, что накладывать ограничения на языки программирования, это как заказывать Пикассо создание картины, при этом запрещать ему использовать желтый цвет. Тем не менее, сложно представить себе предприятие, которое серьезно занимается разработкой программного обеспечения для систем ответственного назначения, у которого в писанных или неписанных стандартах не было бы указаний о том, какой язык программирования применять и, мало того, как его применять.

Данная статья посвящена подходу, который определен в стандарте IEC 61508 и который состоит в применении для разработки ответственного программного обеспечения безопасных подмножеств языков программирования С и С++.

Читать дальше →

Расчеты переходных процессов в электрических сетях

Reading time8 min
Views8.6K
Энергетика – обширная сфера деятельности, и расчеты в ней производятся разные: расчет рентабельности строительства новых станций, расчет перенапряжений, расчет оставшегося времени до конца рабочего дня в пятницу вечером. Все эти темы в одной статье не уместить, поэтому сконцентрируюсь на той, которой занимался в течение последних лет, – расчеты переходных процессов в электрических сетях. Кому интересно, что это такое и как оно происходит в современном мире, – прошу под кат.

Оглавление


  • Зачем вообще что-то рассчитывать в энергетике?
  • Переходные процессы – это…
  • Переходные процессы и режим реального времени
  • Нельзя просто так взять и рассчитать переходный процесс
  • Куда и как запустить модель?
  • Управление по управлению всеми управлениями
  • Все уже сделано до нас
  • Заключение
Читать дальше →

Долой циклы, или Неленивая композиция алгоритмов в C++

Reading time9 min
Views19K
"Кто ни разу не ошибался в индексировании цикла, пусть первый бросит в деструкторе исключение."

— Древняя мудрость

Циклы ужасны. Циклы сложно читать — вместо того, чтобы сразу понять намерение автора, приходится сначала вникать в код, чтобы понять, что именно он делает. В цикле легко ошибиться с индексированием и переопределить индекс цикла во вложенном цикле. Циклы сложно поддерживать, исправлять в случае ошибок, сложно вносить текущие изменения, и т.д. и т.п.


В конце концов, это просто некрасиво.


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


Данная работа ставит своей целью пролить свет на отнюдь не новую, но пока что не слишком распространённую идею, которая вполне способна произвести очередной прорыв в области написания программ на языке C++.


Так как же писать красивый, понятный, эффективный код, а также иметь возможность параллелить большие вычисления лёгким движением пальцев по клавиатуре?

Читать дальше →

Выбираем канал для точки доступа Wi-Fi. Исчерпывающее руководство

Reading time9 min
Views331K
2,4 ГГц — это плохо. 5 ГГц — это хорошо. 6 ГГц — это ещё лучше, но послезавтра. Все это знают, кого я тут учу, в самом деле. Всё это хорошо, только делать-то что, когда ты такой, как умный, открываешь какой-нибудь Wi-Fi Explorer, а там сатанизм и этажерки, как на скриншоте?



Шаг первый — поплакать. Шаг второй — нырнуть под кат. Вопрос простой, а ответ — нет.
Когда это нас останавливало?

Information

Rating
Does not participate
Location
Томская обл., Россия
Registered
Activity