Мега-Учебник Flask, Глава 8: Подписчики, контакты и друзья (издание 2018)

blog.miguelgrinberg.com


Miguel Grinberg




<<< предыдущая следующая >>>


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




Это восьмая часть серии Flask Mega-Tutorial, в которой я расскажу вам, как реализовать функцию «подписчики», аналогичную функции Twitter и других социальных сетей.

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

IT-инфраструктура штабов Навального и сбор подписей: Жнец-2018

Это третья часть материала про IT-инфраструктуру штабов Навального. В предыдущих главах было рассказано про разработку сайта «Навальный 20!8», организацию сети в штабах и производство сканеров документов.

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



Листы, QR-коды и способы работы с ними


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

«Курс на hyperscale»: в мире почти 400 гипермасштабируемых дата-центров

В апреле 2017 года в мире насчитывалось 320 гипермасштабируемых ЦОД, а уже в декабре их число составило 390. В Synergy ожидают, что количество hyperscale-дата-центров увеличится до 400 в первом квартале 2018 года и достигнет 500 в 2019 году.

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

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

Как стать самостоятельным регистратором .RU/.РФ

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

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



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

Ты и я не можем работать вместе

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

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

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

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

[Из песочницы] Обнаружение лиц на видео с помощью Movidius Neural Compute Stick

Не так давно в свет вышло устройство Movidius Neural Compute Stick (NCS), представляющее собой аппаратный ускоритель для нейронных сетей с USB интерфейсом. Меня заинтересовала потенциальная возможность применения устройства в области робототехники, поэтому я приобрел его и задумал запустить какую-нибудь нейросеть. Однако большинство существующих примеров для NCS решают задачу классификации изображений, а мне хотелось попробовать кое-что другое, а именно обнаружение лиц. В этой публикации я хотел бы поделиться опытом, полученным в ходе такого эксперимента.

Весь код можно найти на GitHub.

image

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

О локальности данных в гиперконвергентных системах



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

[Перевод] Выравнивание инструкций кода

Насколько трудно может быть измерить производительность простой функции, вроде вот этой?

// func.cpp
void benchmark_func(int* a)
{
	for (int i = 0; i < 32; ++i)
		a[i] += 1;
}


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

Давайте представим, что в нашем файле есть ещё одна функция, скорость работы который вы тоже замеряете, но в отдельных тестах. Т.е. файл выглядит как-то так:

// func.cpp
void foo(int* a)
{
	for (int i = 0; i < 32; ++i)
		a[i] += 1;
}

void benchmark_func(int* a)
{
	for (int i = 0; i < 32; ++i)
		a[i] += 1;
}


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

SEO для Google в 2018: хорошо забытое новое

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



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

Пылесосим код IDEA Ultimate с помощью анализа потоков данных

IntelliJ IDEA содержит тысячи инспекций для Java-кода. Большинство из них работает как продвинутые регулярные выражения: по определённому шаблону они ищут фрагменты программы, которые выглядят как опечатки, избыточны, некрасивы или могут работать медленно. Но есть инспекция совсем другого рода. У неё несколько странное название: «Constant conditions & exceptions». В действительности она выполняет анализ потоков данных в Java-методах с помощью так называемого «символьного выполнения». В результате такого анализа могут обнаружиться некоторые подозрительные факты. Вот некоторые примеры таких фактов:

  • Разыменование ссылки может привести к NullPointerException
  • Условие всегда истинно или ложно
  • Индекс массива всегда за пределами допустимых границ
  • Приведение типа может привести к ClassCastException
Читать дальше →


Последние посты