IT-инфраструктура для бизнеса и творчества

Python Junior подкаст. Почему в «Тиньков-журнале» выбирают Django

Гость подкаста Арсений Габдуллин, разработчик «Тиньков-журнала», делится своим опытом в создании крупного интернет-издания на питоновском стеке. Говорим о том, какие альтернативы у Django есть в таких проектах, об асинхронной разработке на Python и о докладе, с которым Арсений выступит 5 апреля 2019 года на Moscow Python Conf.

Выпуск ведут сооснователь MoscowPython Валентин Домбровский и евангелисты конференции Григорий Петров и Злата Обуховская.

В выпуске:

03:00 — коллективный каминг-аут, связанный с WordPress

03:17 — как Арсений стал разработчиком в Т—Ж

04:52 — какой эксперимент со спикерами пройдёт на ближайшей Moscow Python Conf

08:58 — годится ли Django как фреймворк для онлайн-медиа в 2019 году

11:10 — до какого момента контент-проекту хорошо живётся на Django REST Framework

14:14 — если не Django, то что?

15:35 — о предыстории синхронной и асинхронной разработки на Python

18:12 — к чему привёл в Python отказ от парадигмы потоков в пользу Event Loop

20:03 — насколько зрелым является «асинхронный Python» сегодня

20:49 — трудно ли писать на Python асинхронные решения с нуля

22:17 — правда ли, что в программировании не бывает идеального инструмента для решения задачи

27:02 — какая специфика есть у разработки в банке

30:03 — о чём Арсений будет рассказывать на MoscowPython Conf и чего ждёт от конференции

(function () { let cdnUrl = `https://specialsf378ef5-a.akamaihd.net/SelectelBranding/images/` let previousArticleNumber = null let currentArticleNumber = 0 let platform = 'Desktop' let articles = [ { name: 'camera', url: `${cdnUrl}CameraCat`, text: 'умную камеру для\u00A0наблюдения за\u00A0котиками', link: 'https://vc.ru/selectel/306690', num: 3 }, { name: 'chill', url: `${cdnUrl}ChillCat`, text: 'трекер, который подскажет, когда пора отдохнуть', link: 'https://vc.ru/promo/288561-eye-tracker', num: 1 }, { name: 'cloud', url: `${cdnUrl}CloudCat`, text: 'котика: даёшь ему «пять», а\u00A0он делает бэкап в облако', link: 'https://vc.ru/dev/294799-maneki-neko', num: 2 } ] let buttonCycle = document.querySelector('.button--cycle') let buttonChoose = document.querySelector('.button--choose') let buttonMobile = document.querySelector('.button--mobile') let textField = document.querySelector('.selectel-footer-subtitle') let imageAgent = document.querySelector('.image--agent') let banner = document.querySelector('.selectel-footer') buttonCycle.addEventListener('click', cycleClick) buttonChoose.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) buttonMobile.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) let media = window.matchMedia("(max-width: 570px)") media.addEventListener('change', matchMedia) function matchMedia() { if (media.matches) { platform = 'Mobile' } else { platform = 'Desktop' } update() } matchMedia() function cycleClick(event) { sendEvent(`Promo ${articles[currentArticleNumber].num} Right`, 'Click') if (event) { event.preventDefault() event.stopPropagation() } window.open('https://vc.ru/tag/selectelDIY', '_blank') //cycle(event) } function cycle(event) { // incrementArticleNumber() textField.innerHTML = generatedText() imageAgent.src = articles[currentArticleNumber].url + platform + '.svg?3' imageAgent.setAttribute("class", "") imageAgent.classList.add('image--agent', articles[currentArticleNumber].name) banner.href = articles[currentArticleNumber].link } function update() { banner.href = articles[currentArticleNumber].link imageAgent.src = articles[currentArticleNumber].url + platform + '.svg' textField.innerHTML = generatedText() } function incrementArticleNumber() { previousArticleNumber = currentArticleNumber if (currentArticleNumber >= articles.length - 1) { currentArticleNumber = 0 } else { currentArticleNumber++ } } const sendEvent = (label, action = 'Click') => { const value = `SelectelDIY — loc: Footer — ${label} — ${action}`; if (window.dataLayer !== undefined) { window.dataLayer.push({ event: 'data_event', data_description: value, }); } }; function generatedText() { let defaultText if (platform === 'Desktop') { defaultText = `Мы тут собрали %text%. Хотите научим?` } else { defaultText = `Мы тут собрали %text%.` } return defaultText.replace('%text%', articles[currentArticleNumber].text) } function getRandom(min, max) { min = Math.ceil(min) max = Math.floor(max) return Math.floor(Math.random() * (max - min + 1)) + min } (function create() { currentArticleNumber = getRandom(0, articles.length - 1) cycle() let page = document.querySelector('.page--entry') if (page) { function insertAfter() { let parents = page.querySelectorAll('[data-id="7"]') let referenceNode = parents[0] referenceNode.parentNode.insertBefore(banner, referenceNode.nextSibling); loaded() } setTimeout(() => insertAfter(), 0) } }()) function loaded() { banner.classList.add('loaded') } loadImages([ `${cdnUrl}CameraCatDesktop.svg`, `${cdnUrl}ChillCatDesktop.svg`, `${cdnUrl}CloudCatDesktop.svg`, `${cdnUrl}CameraCatMobile.svg`, `${cdnUrl}ChillCatMobile.svg`, `${cdnUrl}CloudCatMobile.svg?3`, ]) function loadImages(urls) { return Promise.all(urls.map(function (url) { return new Promise(function (resolve) { var img = document.createElement('img'); img.onload = resolve; img.onerror = resolve; img.src = url; }); })); } }())
0
3 комментария
Популярные
По порядку
Arthur Niazyan

Не травите мою ранимую душу. Я как раз обзавёлся литературой по Python и начал с основ :) Буду посмотреть подкастъ.

Ответить
1
Развернуть ветку
Valentin Dombrovsky

Для этого и делимся. :)
Велкам!
Больше выпусков - на нашем канале. :)

Ответить
1
Развернуть ветку
Arthur Niazyan

Уже подписался!

Ответить
1
Развернуть ветку
Читать все 3 комментария
«Газпромбанк» взял семь номинаций на двух премиях

Редко удается получить сразу несколько наград, а ещё реже получается это сделать на двух премиях сразу. Тем не менее, у нас получилось: стали лауреатами Digital Leaders и «Время инноваций»!

Что такое контент-план для соцсетей и как с ним работать

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

Из компании, где уволили 900 человек одним видеозвонком, ушли три руководителя, а основатель извинился Статьи редакции

Вишал Гарг сказал, что поступил слишком резко, но сокращать людей надо было раньше.

Выступление Вишала Гарга
Увлечение самолётами, которое переросло в бизнес

Предприниматель из Волгограда производит и продаёт по всему миру симуляторы дополненной реальности.

Сезон подкаста как эксперимент: научили ведущих бегать и отправили на полумарафон. Кейс Sports.ru и adidas
Как и чем сейчас живут московские рестораны, отмеченные гидом «Мишлен»

Узнали и рассказываем, как повлиял звездный статус на рестораны «Деликатессен» и «Паризьен», и за что их сотрудники получают повышенные чаевые.

DiDi впервые показал в России электромобиль для водителей такси

Его представили 7 декабря на форуме «Открытые инновации» в Сколково.

Досудебная претензия к Эльдорадо

Начало сей чудной истории:

Мне отказано в возврате денег за обучение в geekbrains data scientist, которое ещё не началось

Пишу отзыв про geekbrains. Купила в черную пятницу у них курсы по Datsscientist, курсы куплены в рассрочку, были необходимы, чтобы усилить знания по питону для создания торговых ботов. Но так как в группе не нашлось свободных мест, то старт обучения ближайший БУДЕТ только 27 декабря (встреча с деканом), сами платные модули начнутся 10 января, то…

null