Как стать автором
Обновить
0
矢代白 @ShiroYashiroread⁠-⁠only

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

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

Python Testing с pytest. Глава 2, Написание тестовых функций

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

Вернуться Дальше


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


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

Изучаем С используя GDB

Время на прочтение6 мин
Количество просмотров106K
Перевод статьи Аллана О’Доннелла Learning C with GDB.

Исходя из особенностей таких высокоуровневых языков, как Ruby, Scheme или Haskell, изучение C может быть сложной задачей. В придачу к преодолению таких низкоуровневых особенностей C, как ручное управление памятью и указатели, вы еще должны обходиться без REPL. Как только Вы привыкнете к исследовательскому программированию в REPL, иметь дело с циклом написал-скомпилировал-запустил будет для Вас небольшим разочарованием.

Недавно мне пришло в голову, что я мог бы использовать GDB как псевдо-REPL для C. Я поэкспериментировал, используя GDB как инструмент для изучения языка, а не просто для отладки, и оказалось, что это очень весело.
Читать дальше →
Всего голосов 70: ↑66 и ↓4+62
Комментарии30

Хрустальный шар с извилинами: как мозг предсказывает речь

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


Мозг человека считается одним из самых сложных механизмов, на понимание работы, которого люди потратили не одно столетие, но так и не смогли получить полную картину. Именно в мозге протекают процессы, связанные с обработкой и хранением информации, с принятием решений, с контролем действий. Но до сих пор ученый свет не может дать единый ответ на вопрос — каков основной принцип или механизм работы мозга? Многие считают, что мозг работает по принципу сравнения сенсорной информации и построенных в нем предсказаний. К примеру, участвуя в беседе, человек воспринимает ряд сенсорной информации — голос собеседника, речь (т. е. сами слова), мимика, движения. А его мозг постоянно пытается предсказать, что собеседник скажет дальше. Ранее это была лишь теория, но благодаря ученым из Института психолингвистики Макса Планка (Нидерланды) теория была подтверждена на практике. Какие опыты провели ученые, что они показали, и смогли ли они открыть тайну работы мозга? Ответы на эти вопросы мы найдем в докладе ученых. Поехали.
Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии18

Датчик глюкозы из паутины

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


Нет ничего удивительно в том, что научный мир постоянно вдохновляется вполне естественными процессами и явлениями, встречающимися в природе. Многие представители флоры и фауны в той или иной степени становятся соавторами тех или иных открытий, изобретений и разработок, меняющих жизнь человека к лучшему. Мы часто слышим о том, как паучий шелк применяется в самых разных отраслях исследований, ввиду его удивительных химических и физических свойств. И череда открытий не останавливается. Ученые из Национального университета Цзяотун (Синьчжу, Тайвань) преобразовали паучий шелк в оптическое волокно, которое можно использовать для создания датчиков глюкозы. Каковы оптические свойства паутины, как ученые преобразовали ее в оптоволокно, и как данная разработка может помочь диабетикам? Ответы на эти вопросы мы найдем в докладе ученых. Поехали.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии5

Батарейки из воды и чернил

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


Ничто не стоит на месте и постоянно развивается. Это касается и живых организмов, проходящих долгий и тернистый путь эволюции, и рукотворных творений человека, которые приобретают новые свойства и функции посредством развития технологий и науки. Как и в случае эволюции, новые разработки порой выглядят крайне необычно, а их работоспособность на первый взгляд кажется как минимум сомнительной. Однако даже самые странные изобретения рано или поздно приносят пользу, будь то на практике или как вдохновение для последующих изобретений. Ученые из Швейцарских федеральных лабораторий материаловедения и технологий (Швейцария) разработали необычный аккумулятор, состоящий из простой бумаги и чернил. Что необычного в бумажной батарейке, каков принцип ее работы, и насколько она эффективна? Ответы на эти вопросы мы найдем в докладе ученых. Поехали.
Читать дальше →
Всего голосов 27: ↑25 и ↓2+23
Комментарии7

Библиотека СleanAPI: cоздаем микросервис на Python за 30 секунд

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

Использование микросервисной архитектуры для построения корпоративных приложений взамен традиционной монолитной — популярный тренд в веб-разработке.

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

Мой выбор — Tornado. Поработав с Tornado в паре коммерческих проектов, я в целом остался доволен результатами. Однако, как бы ни было хорошо, всегда хочется чего-то большего.

Результатом моих раздумий стала небольшая библиотека CleanAPI, представляющая собой оболочку над Tornado, позволяющую повысить удобство разработки и снизить порог вхождения для новичков.

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии11

Подробно о корутинах в C++

Время на прочтение10 мин
Количество просмотров34K
Здравствуйте, коллеги.

В рамках проработки темы С++20 нам в свое время попалась уже довольно старенькая (сентябрь 2018) статья из хаброблога «Яндекса», которая называется "Готовимся к С++20. Coroutines TS на реальном примере". Заканчивается она следующей весьма выразительной голосовалкой:



«Почему бы и нет», — решили мы и перевели статью Давида Пиларски (Dawid Pilarski) под названием «Coroutines introduction». Статья вышла чуть более года назад, но, надеемся, все равно покажется вам очень интересной.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии19

Юнит-тесты на Python: Быстрый старт

Время на прочтение4 мин
Количество просмотров107K
Перевод статьи подготовлен специально для студентов курса «Python QA Engineer».




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

В этой статье я продемонстрирую основную идею юнит-тестирования на одном классе. На практике вам придется писать множество тестовых случаев, добавлять их в тестовый набор и запускать все вместе. Управление тест-кейсами мы рассмотрим в следующей статье.
Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии5

CLI на питоне. Пускаем пользователя на сервер

Время на прочтение4 мин
Количество просмотров22K
Я системный администратор по роду деятельности. Поддерживаю удаленно сервера разных клиентов. Нередко приходится слышать от клиента просьбу дать шелл-доступ на сервер. С одной стороны просьба вполне обоснованная: сервер не мой, да и доступ клиенту нужен, чтоб меня же не дергать по пустякам (скажем, посмотреть, не закончилось ли место на диске или все ли процессы запущены). С другой стороны клиент зачастую практически не имеет опыта работы в unix, и нет никакой гарантии, что я смогу все исправить после того, как клиент по незнанию сотрет что-нибудь с диска или заблочит мне доступ, удалив правила фаервола. Зачастую клиенты и сами это понимают, но настаивают на предоставлении им доступа, не видя другого выхода.

Казалось бы, можно дать клиенту урезанный шелл и контролировать исполнение «опасных» команд при помощи sudo. Однако даже если с точки зрения безопасности удается все удачно «разрулить», это не решает всех проблем. Клиента приходится учить основам работы в командной строке, отвечать на шквал вопросов и разбираться, что и почему у него не получается. Время, затрачиваемое на поддержку, увеличивается значительно.

Пытаясь найти решение я наткнулся на описание модуля Cmd для Python. Данный модуль позволяет с минимальными затратами написать подобие интерфейса командной строки c необходимым набором команд.
Читать дальше →
Всего голосов 50: ↑44 и ↓6+38
Комментарии23

Чистая архитектура в Python: пошаговая демонстрация. Часть 1

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

Примечание переводчика
Данная статья является переводом. Дословный перевод занял 35 страниц А4 в ворде. Планирую разбить её на 5-6 частей. Думаю, данная тема должна быть полезна многим программистам, желающим писать свои web-приложения лучше и чище. Так же статья полезна тем, кто хочет научиться писать web-приложения с методологией TDD с применением именно модульных тестов, а не интеграционных, как это обычно делалось в тех статьях, что попадались мне на глаза. Если где-то использованы неверные термины или перевод кажется слишком машинным — напишите мне в личку, вряд ли это гугл-транслятор, скорее всего дело в моей косноязычности и посредственном знанием английского языка.

Содержание

Год назад мой друг Roberto Ciatti познакомил меня с концепцией, которую Роберт Мартин называет чистой архитектурой. Дядя Боб много говорит об этой концепции на конференциях и пишет о ней очень интересные статьи. «Чистая архитектура» представляет собой способ структурирования системы программного обеспечения, набор соглашений о различных слоях и ролях их участников, нечто большее, чем строгие правила.


Как он уже говорил в своей статье «Чистая архитектура» (перевод на хабре), идея самого подхода не нова, она строится на множестве концепций, которые продвигались многими разработчиками программного обеспечения в течение последних 3-х десяти лет.

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

Как организовать код в Python-проекте, чтобы потом не пожалеть

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

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

Бенджамин Франклин

Python отличается от таких языков программирования, как C# или Java, заставляющих программиста давать классам имена, соответствующие именам файлов, в которых находится код этих классов.

Python — это самый гибкий язык программирования из тех, с которыми мне приходилось сталкиваться. А когда имеешь дело с чем-то «слишком гибким» — возрастает вероятность принятия неправильных решений.

Читать далее
Всего голосов 38: ↑35 и ↓3+32
Комментарии34

19 полезных возможностей файла .htaccess

Время на прочтение14 мин
Количество просмотров106K
19 полезных возможностей файла .htaccess


Спорим, о некоторых вы не подозревали. Мы собрали варианты применения .htaccess для улучшения работы сайта. Он часто используется оптимизаторами для корректной настройки 301 редиректов. Но этим возможности файла не ограничиваются. Тут и безопасность, и оптимизация, и параметры отображения — с помощью .htaccess вебмастер может сделать много полезного, чтобы сайт работал корректно.

Читать дальше
Всего голосов 28: ↑17 и ↓11+6
Комментарии16

Python-пакеты и их использование

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

Всем добрый день!


На Хабре уже поднималась тема организации работы с внешними пакетами с использованием подмодулей или деревьев в Git. Это показалось хорошим решением, но на деле вылилось в неудобства и запутанность. Тогда я решил перенести всё на python-пакеты. Чем и поделюсь сейчас на примере Django приложения.


Читать дальше →
Всего голосов 33: ↑24 и ↓9+15
Комментарии14

Основы компьютерных сетей. Тема №1. Основные сетевые термины и сетевые модели

Время на прочтение14 мин
Количество просмотров1.3M
Всем привет. На днях возникла идея написать статьи про основы компьютерных сетей, разобрать работу самых важных протоколов и как строятся сети простым языком. Заинтересовавшихся приглашаю под кат.


Читать дальше →
Всего голосов 35: ↑30 и ↓5+25
Комментарии61

[в закладки] Шпаргалка системного администратора по сетевым инструментам Linux

Время на прочтение7 мин
Количество просмотров84K
В повседневные задачи системных администраторов входит работа с сетями и с подключённым к ним оборудованием. Нередко роль рабочего места администратора играет компьютер, на котором установлен какой-нибудь дистрибутив Linux. Утилиты и команды Linux, о которых пойдёт речь в материале, перевод которого мы публикуем сегодня, включают в себя список инструментов различной сложности — от простых, до продвинутых, которые предназначены для решения широкого спектра задач по управлению сетями и по диагностике сетевых неполадок.



В некоторых из рассматриваемых здесь примеров вы столкнётесь с сокращением <fqdn> (fully qualified domain name, полное доменное имя). Встретив его, замените его, в зависимости от обстоятельств, на адрес интересующего вас сайта или сервера, например, на нечто вроде server-name.company.com.
Читать дальше →
Всего голосов 47: ↑30 и ↓17+13
Комментарии57

Вскрытие трафика в публичных сетях

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


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

Шучу. На самом деле передо мной стояла задача понять две вещи:

  1. Насколько опасно пользоваться публичным WiFi в 2020 году, в мире где господствуют браузеры и сайты с повсеместно победившими технологиями HTTPS (на основе TLS 1.1+) и HSTS
  2. Сможет ли человек моего уровня знаний (не самого высокого) “залезть” в чужой браузер и стащить ценные данные.

Спойлер
А в спойлере спойлер:
  1. Да, Опасно!
  2. Вполне сможет
Всего голосов 66: ↑64 и ↓2+62
Комментарии22

Создание сайта с помощью C++

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

Возможно ли это?


Да.

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

Будет не только интересно, но также полезно и очень практично.
Читать дальше →
Всего голосов 31: ↑22 и ↓9+13
Комментарии38

Полноценный веб-сайт на C++ и немного диванной аналитики

Время на прочтение20 мин
Количество просмотров127K
Но зачем?
Тут должна быть картинка про троллейбус

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

Думаю, многим знакома такая разновидность веб-форумов, как имиджборды. Да-да, вы правильно поняли — именно на примере имиджборды я расскажу об опыте создания сайта на C++. Что же сподвигло меня заняться столь сомнительной пользы проектом? Левая пятка. В этом случае действительно никаких особых причин не было. Просто проснулся однажды утром и понял — хочу. Но это все лирика.

На Хабре хватает статей о веб-сайтах на C++: например, с использованием FastCGI или CppCMS. Но все это — HelloWorld'ы и туториалы. Я же вам расскажу о полноценном (пусть и не идеальном с точки зрения архитектуры и чистоты кода) проекте, постараюсь осветить различные тонкости.
Перейдем же к делу
Всего голосов 51: ↑45 и ↓6+39
Комментарии85

Web-приложение на C/C++ с помощью FastCGI — это просто

Время на прочтение20 мин
Количество просмотров111K
Добрый день.
В этой статье я бы хотел рассказать про протокол FastCGI и способы работы с ним. Не смотря на то, что сам протокол и его реализация появились ещё в 1996 году, подробных руководств по этому протоколу просто нет — разработчики так и не написали справки к собственной библиотеке. Зато года два назад, когда я только начал пользоваться этим протоколом, часто встречались фразы типа «я не совсем понимаю, как пользоваться этой библиотекой». Именно этот недостаток я и хочу исправить — написать подробное руководство по использованию данного протокола в многопоточной программе и рекомендации по выбору различных параметров, которым могли бы воспользоваться все желающие.
Читать дальше →
Всего голосов 102: ↑97 и ↓5+92
Комментарии104

Functools – сила функций высшего порядка в Python

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

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

Кэширование

Давайте начнем с самых простых, но довольно мощных функций модуля functools. Начнем с функций кэширования (а также декораторов) - lru_cache, cache и cached_property. Первая из них - lru_cache предоставляет кэш последних результатов выполнения функций, или другими словами, запоминает результат их работы:

Читать далее
Всего голосов 11: ↑9 и ↓2+7
Комментарии0
1
23 ...

Информация

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