Pull to refresh
-28
Ivan Soshnikov @soshnikov read⁠-⁠only

User

Send message

Мега-Учебник Flask, Часть XVI: Полнотекстовый поиск

Reading time 23 min
Views 30K

(издание 2018)


Miguel Grinberg




Туда Сюда


Это шестнадцатая часть серии Мега-учебников Flask, в которой я собираюсь добавить в микроблог возможность полнотекстового поиска.

Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Comments 2

Bash-скрипты, часть 3: параметры и ключи командной строки

Reading time 10 min
Views 521K
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

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

image
Читать дальше →
Total votes 47: ↑41 and ↓6 +35
Comments 23

Автопилот своими силами. Часть 1 — набираем обучающие данные

Reading time 7 min
Views 23K

Привет, Хабр. Это пост-отчет-тьюториал про беспилотные автомобили — как (начать) делать свой без расходов на оборудование. Весь код доступен на github, и помимо прочего вы научитесь легко генерить такие класные картинки:


SLAM trajectory + map example


Поехали!

Читать дальше →
Total votes 48: ↑45 and ↓3 +42
Comments 41

Как полюбить машинное обучение и перестать страдать

Reading time 6 min
Views 33K
Наше будущее все больше становится связано с развитием искусственного интеллекта. Кто-то считает, что это конец эры человечества, а кто-то садится, проходит курсы и пилит код, чтобы разобраться с машинным обучением. Я отношусь ко второй категории. В свое время, когда я задумывалась об освоении этой науки и начала проходить первые курсы, хотелось опустить руки. Сложности материалов и страданиям, казалось, нет предела. Сейчас, с высоты своего опыта, я понимаю, что всего этого можно было бы избежать. Поэтому под катом хочу поделиться основами ML для новичков «без боли».


Читать дальше →
Total votes 39: ↑32 and ↓7 +25
Comments 14

OpenResty: превращаем NGINX в полноценный сервер приложений

Reading time 9 min
Views 83K
Мы вновь публикуем расшифровку доклада с конференции HighLoad++ 2016, которая проходила в подмосковном Сколково 7—8 ноября прошлого года. Владимир Протасов рассказывает, как расширить функциональность NGINX с помощью OpenResty и Lua.

Всем привет, меня зовут Владимир Протасов, я работаю в Parallels. Расскажу чуть-чуть о себе. Три четверти своей жизни я занимаюсь тем, что пишу код. Стал программистом до мозга костей в прямом смысле: я иногда во сне вижу код. Четверть жизни — промышленная разработка, написание кода, который идёт прямо в продакшн. Код, которым некоторые из вас пользуются, но не догадываются об этом.

Чтобы вы понимали насколько всё было плохо. Когда я был маленьким джуниором, я пришёл, и мне выдали такие двухтерабайтные базы. Это сейчас тут у всех highload. Я ходил на конференции, спрашивал: «Ребят, расскажите, у вас big data, всё круто? Сколько у вас там базы?» Мне отвечали: «У нас 100 гигабайт!» Я говорил: «Круто, 100 гигабайт!» А про себя думал, как бы аккуратненько сохранить покерфейс. Думаешь, да, ребята крутые, а потом возвращаешься и ковыряешься с этими многотерабайтными базами. И это — будучи джуниором. Представляете себе, какой это удар?

Я знаю больше 20 языков программирования. Это то, в чём мне пришлось разобраться в процессе работы. Тебе выдают код на Erlang, на C, на С++, на Lua, на Python, на Ruby, на чем-то еще, и тебе надо это всё пилить. В общем пришлось. Точное количество посчитать так и не удалось, но где-то на 20 число потерялось.
Читать дальше →
Total votes 49: ↑44 and ↓5 +39
Comments 35

Интернет-магазин на «1С-Битрикс» и кассы: требования закона 54-ФЗ

Reading time 11 min
Views 61K


С 1 февраля 2017 года вступили в силу поправки к закону 54-ФЗ о контрольно-кассовой технике.

Эти поправки вносят ряд изменений и новых требований по работе с кассами и кассовыми чеками. О том, как мы адаптировали CMS «1С-Битрикс» под новую редакцию закона, чтобы облегчить жизнь интернет-магазинам, читайте под катом.
Читать дальше →
Total votes 34: ↑29 and ↓5 +24
Comments 91

Пишем обертку над API, делаем из нее PIP-пакет, подключаем тестирование от Travis CI и смотрим на лицензии открытого ПО

Reading time 6 min
Views 9.4K

Приветствую, Хабрахабр! Данная статья будет полезна желающим ознакомиться не только с оформлением собственного пакета Python Package Index (PIP), но и с различными вспомогательными инструментами, помогающими сопровождать разработку на всех стадиях — на примере авторской работы.

Необходимые инструменты:

  • Среда разработки — написание объектно-ориентированного кода, тесно работающего с интерфейсом приложения (в нашем случае веб-сайта), другими словами — отправка и обработка запросов к API, и дополнительных вспомогательных файлов;
  • Загрузка своих наработок в общий каталог пакетов — PyPI;
  • Github — создание репозитория с целью контроля качества, улучшения и перманентного обновления библиотеки, общего взаимодействия с областью открытого исходного кода;
  • Одна из лицензий свободного программного обеспечения, в нашем случае — MIT License;
  • Travis CI — непрерывная сборка и тестирование разрабатываемого проекта в различных окружениях (например, разные версии языка или интерпретатора).

Данный список можно принимать за содержание статьи в соответствующем порядке.
Читать дальше →
Total votes 24: ↑20 and ↓4 +16
Comments 5

Миллион строк в секунду из Postgres с помощью Python

Reading time 4 min
Views 52K
image

asyncpg — новая Python open-source библиотека для работы с PostgreSQL. Она была написана с использованием asyncio и Python 3.5. asyncpg — самый быстрый драйвер для работы с PostgreSQL среди похожих реализаций на Python, NodeJS и Go.

Почему asyncpg?


Мы создаем EdgeDB — базу данных нового поколения, с PostgreSQL на бэкенде. Нам необходима высокая производительность, низкая задержка доступа и дополнительные возможности самого PostgreSQL.

Самый очевидный вариант – использовать psycopg2 — популярнейший драйвер Python для работы с PostgreSQL. У него отличное комьюнити, он стабильный и проверенный временем. Также есть aiopg, который реализует асинхронный интерфейс, поверх psycopg2. Тогда очевиден вопрос — зачем писать свой велосипед? Короткий ответ: производительность и поддержка возможностей PostgreSQL. Ниже мы рассмотрим это более детально.
Читать дальше →
Total votes 37: ↑37 and ↓0 +37
Comments 12

Telegram-bot: моя история. Часть вторая

Reading time 9 min
Views 38K

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

Уделив время первой публикации, вы можете ознакомиться не только с первоначальным развертыванием и необходимыми ресурсами, но и с обзором приложения от автора. Информация ниже сконцентрирована в большей степени на описании технической стороны и в меньшей на выводах по итогам на текущий момент.
Читать дальше →
Total votes 22: ↑17 and ↓5 +12
Comments 1

Путеводитель по JavaScript Promise для новичков

Reading time 7 min
Views 135K
image

Этот материал мы подготовили для JavaScript-программистов, которые только начинают разбираться с «Promise». Обещания (promises) в JavaScript – это новый инструмент для работы с отложенными или асинхронными вычислениями, добавленный в ECMAScript 2015 (6-я версия ECMA-262).
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 61

Размещение таблицы значений с помощью доп реквизита и расширения конфигурации 1С

Reading time 5 min
Views 23K
Меня очень часто спрашивают, как добавить таблицу к документу или справочнику?
И действительно, как сделать такую задачу не усложняя дальнейшее обновление конфигурации? И вроде есть доп. реквизиты и доп. сведения, но почему же они не могут принимать тип таблицы значений?


В итоге чаще всего используется 2 варианта:

1. Простой способ. Прямо в объекте добавляется таблица, а затем либо программно либо жестко(вручную) выводится на форму.

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

2. Нормальный вариант, но тоже с доработкой конфигурации.
Добавляется объект с таблицей значений и реквизитом с ссылкой на объект родитель, данная таблица значений выводится, к примеру, через расширение конфигурации на форму основного объекта.

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

Есть, конечно, еще другие варианты к примеру с хранилищем, но статья не об этом…
Читать дальше →
Total votes 25: ↑14 and ↓11 +3
Comments 37

Построчный разбор лицензии MIT

Reading time 15 min
Views 98K

171 слово, которое должен понимать любой программист


Лицензия MIT – самая популярная лицензия для программ с открытым кодом. Здесь приводится одно из её прочтений, с построчным разбором.

Читаем лицензию


Если вы разрабатываете программы с открытым кодом, и не читали эту лицензию подробно – а она состоит всего из 171 слова – вам нужно этим заняться. Особенно, если вы не занимаетесь лицензиями на ежедневной основе. Отметьте всё, что вам непонятно. А я повторю все эти слова, по порядку и по кусочкам, вместе с контекстом и комментариями. При этом важно представлять себе её целиком.
Читать дальше →
Total votes 83: ↑78 and ↓5 +73
Comments 43

Promiscuous mode в микроконтроллере ESP-8266

Reading time 6 min
Views 27K
Думаю, многие согласятся, что ESP-8266 — замечательное изобретение для DIY и Internet of things. Эдакий WiFi-датчик, которые можно подсоединить к Arduino или даже использовать вместо Arduino для отправки, как правило, погодных данных на сервер. Существует множество разных прошивок позволяющих делать это: начиная со стокового модема используемого в связке с Arduino, NodeMCU для адептов LUA, и заканчивая многочисленными веб-серверами, полностью обслуживаемыми ESP (пример).

image

Как правило, после получения миниатюрного микроконтроллера из Китая вы вряд ли захотите написать собственную прошивку и будете использовать одну из имеющихся. На то есть 2 причины: чтобы вы там ни задумали, это уже было реализовано и вы вряд ли захотите иметь дело с китайским SDK щедро сдобренным костылями и недокументированными возможностями. И пусть вас не сбивает с толку привлекательный дизайн сайта: написание прошивки для ESP это боль и страдания. Если же вас это не пугает, то добро пожаловать. Статья ориентирована на ардуинщика с минимальным опытом работы с ESP: вы уже умеете собирать прошивки и записывать их в микроконтроллер.
Читать дальше →
Total votes 40: ↑39 and ↓1 +38
Comments 14

Полевые транзисторы. For dummies

Reading time 8 min
Views 588K

Введение


А теперь давайте поговорим о полевых транзисторах. Что можно предположить уже по одному их названию? Во-первых, поскольку они транзисторы, то с их помощью можно как-то управлять выходным током. Во-вторых, у них предполагается наличие трех контактов. И в-третьих, в основе их работы лежит p-n переход. Что нам на это скажут официальные источники?
Полевыми транзисторами называют активные полупроводниковые приборы, обычно с тремя выводами, в которых выходным током управляют с помощью электрического поля. (electrono.ru)

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

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

Три контакта полевых транзисторов называются исток (источник носителей тока), затвор (управляющий электрод) и сток (электрод, куда стекают носители). Структура кажется простой и очень похожей на устройство биполярного транзистора. Но реализовать ее можно как минимум двумя способами. Поэтому различают полевые транзисторы с управляющим p-n переходом и с изолированным затвором.

Вообще, идея последних появилась еще в 20-х годах XX века, задолго до изобретения биполярных транзисторов. Но уровень технологии позволили реализовать ее лишь в 1960 году. В 50-х же был сначала теоретически описан, а затем получил воплощение полевой транзистор с управляющим p-n переходом. И, как и их биполярные «собратья», полевые транзисторы до сих пор играют в электронике огромную роль.

Перед тем, как перейти к рассказу о физике работы униполярных транзисторов, хочу напомнить ссылки, по которым можно освежить свои знания о p-n переходе: раз и два.
Читать дальше →
Total votes 44: ↑40 and ↓4 +36
Comments 25

К вопросу о пинах

Reading time 26 min
Views 22K

Дню знаний посвящается...


Данный пост посвящен тому, с чем сталкиваются все пользователи Ардуино (далее по тексту А, имейте в виду что под этой буквой будет прятаться как сам кристалл, так и среда разработки программ), а именно с работой с портами ввода/вывода.

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

Все это верно, но лишь до того момента, когда вам потребуется подключать к А что-нибудь пошустрее светодиода (у меня нет претензий к этим замечательным приборам, но обычно в силу специфики использования особого быстродействия от них не требуется), и тут то Вам понадобится эффективная работа с пинами (будем так для краткости именовать порты ввода/вывода), и тогда на форумах возникают вопросы «почему у меня так медленно работает программа», на которые молодые гуру мгновенно отвечают «работай напрямую с регистрами и будет тебе счастье» и показывают, как именно, по их мнению, следует это делать.

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

Поскольку я вижу перед собой читателя с различным уровнем подготовки, то постараюсь ориентироваться на различный диапазон знаний в области МК (микроконтроллеров), поэтому, если Вам что то покажется хорошо известным (а будет немало таких мест) смело пропускайте этот фрагмент, а вот если что то будет не вполне понятно, то комментарии и существуют для того, чтобы там задавать вопросы, я их читаю и, по мере своих сил, пытаюсь ответить.
Как же нам ускорить пины
Total votes 26: ↑24 and ↓2 +22
Comments 56

Умное мигание светодиодом в Ардуино

Reading time 6 min
Views 76K


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

Бывает при программирование какого-нибудь устройства не хватает портов ввода-вывода микроконтроллера. Или из экономических соображений, а может нехватки места в корпусе, не хочется устанавливать дисплей, а как то сигнализировать о режимах работы устройства очень хотелось бы. Часто достаточно сигнализировать о этих режимах горением или миганием светодиода. А если режимов много?
Читать дальше →
Total votes 18: ↑17 and ↓1 +16
Comments 28

Безопасное использование языка Go в веб-программировании

Reading time 6 min
Views 21K
Статья писалась для разработчиков, которые начинают осваивать язык программирования Go с целью соблюсти в их коде безопасные требования к написанию веб-приложений. В статье приведены возможные уязвимости, которые могут оставить веб-программисты, а также способы устранения либо с помощью стандартных библиотек, либо с помощью сторонних решений, которые проявили уже себя.


Читать дальше →
Total votes 44: ↑41 and ↓3 +38
Comments 11

FreePBX: простейший набор ответственного за клиента

Reading time 2 min
Views 13K
Снова здравствуйте!

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

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

Обычно для этого нужна связь с Вашей системой учета (CRM) — если, конечно, она у Вас есть. Это непросто и недешево (опять же — обычно, я делаю для своих клиентов это недорого :). Но что делать, если системы учета, где хранятся связи между номерами клиентов и их ответственными — нет, либо существуют трудности с интеграцией телефонии и системы учета?

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

Короче, система маршрутизирует клиента на последнего, с кем говорил клиент. Без пап, мам и кредитов :)

Если такой путь — Ваш, то велком. По традиции, все только в вебморде.
Читать дальше →
Total votes 20: ↑17 and ↓3 +14
Comments 18

Идеальный Мини-Хакинтош

Reading time 6 min
Views 131K
image

Когда в 2005 году Apple перешла на платформу Intel, энтузиасты со всего мира задались целью установить MAC OS X на обычные PC (Хакинтош). На пути реализации этой затеи стояли четыре причины. 2 физические и 2 юридические. Дело в том, что для запуска компьютера MAC используется не привычный BIOS, а собственный EFI загрузчик. Вторая причина, это чип SMC который установлен в каждом компьютере Mac. Он генерирует ключи для запуска всех системных приложений MAC OS X. Благодаря нашему соотечественнику под ником Netkas, удалось обойти эти два ограничения созданием эмулятора загрузчика EFI (Chameleon, Chemera, Clover) и эмулятора чипа SMC (FakeSMC.kext). Этих двух программных решений достаточно, что бы установить MAC OS на PC.
Читать дальше →
Total votes 63: ↑48 and ↓15 +33
Comments 125

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity