Software Engineer
Клик фрод, ботнеты, слив бюджетов, как вас обманывает вся интернет реклама, включая контекст и РТБ и как поставить всех раком
Проблема в том, что чем ты честней на этом рынке – тем ты более бедный. К сожалению, я не исключение и передо мной стал выбор. Либо стать в общую очередь за распилом бюджетов, сливая ботовый трафик и сваливая неудачи на рекламодателя, либо попробовать что-то изменить. Жить за счет обмана и быть постоянно по уши в говне, которое низвергает на тебя рекламодатель, после очередного «эффективного» размещения – есть сомнительное удовольствие от работы.
Недавно ко мне пришел один стартапер, приятель, к которому я хорошо отношусь и спросил где, ему рекламироваться лучше всего и за не очень дорого. На что мой ответ был таким: «Дружище, прости, но после 3 лет в рекламе я могу честно ответить, что я не знаю. Попробуй в социалках, там вроде не накручивают, хотя я в этом тоже не уверен».
Визуализация клонов в проекте на Python
Недавно в нашем проекте потребовалось настроить мониторинг качества кода. Качество кода — понятие субъективное, однако давным-давно придумали множество метрик, позволяющих провести мало-мальски количественный анализ. К примеру, цикломатическая сложность или индекс поддерживаемости (maintainability index). Измерение подобного рода показателей — обычное дело для языков вроде Java или C++, однако (складывается впечатление) в питоньем сообществе редко когда кто-то об этом задумывается. К счастью, существует замечательный radon с xenon-ом, который быстро и качественно вычисляет упомянутые выше метрики и даже некоторые другие. Конечно, для профессиональных enterprise инструментов маловато, но все необходимое присутствует.
Кроме вычисления метрик, бывает также полезно провести анализ зависимостей. Если в проекте задекларирована архитектура, то между отдельными частями должны существовать определенные связи. Самый частый пример: приложение построено вокруг библиотеки, предоставляющей API, и весьма нежелательно выполнять действия в обход этого API. Другими словами, нехорошо ioctl-ить в ядро когда libc есть. Для питона есть несколько пакетов, строящих граф зависимостей между модулями, и snakefood показался мне самым удачным.
Помимо анализа зависимостей, не менее полезно определять копипасту, особенно, если в проекте задействованы джуниоры или другие люди, любящие «срезать углы болгаркой». Об этом собственно и пойдет речь в статье.
Хороших книг пост
А давайте давайте соберём здесь хорошие книги, которые просто стоило собрать.
Суть в том, что просто давно стоило сложить хорошие книги в одном посте, чтобы было что прочитать в дороге — или просто для души.
Для чего нормальным пацанам нужна миссия компании — и немного кибернетики
«Миссию» обычно продают компании в рекламном агентстве вместе с ещё тёплым брендбуком. Ну, то есть если это реально был брендбук, а не мануал по тому, как нельзя рисовать логотип на заборах. Миссия входит в ритуал обмена бабок учредителя на чужой базар.
Дальше на миссию забивают болт и работают как раньше. Точнее, про неё иногда вспоминают пиарщики и рассказывают после пресс-релизов про благотворительность. Честных миссий я видел всего несколько, в одной у крупной компании третьим пунктом даже шло «обогащение инвесторов».
Но, тем не менее, если вы используете распределённое управление, эта вот самая непонятная фигня вам жизненно необходима.
Перевод App Store Review Guidelines
Ранее на Хабре уже публиковался полный перевод этого руководства (низкий поклон автору), но было это аж в 2010 году. С тех пор многие правила были исправлены или удалены.
Основная ловушка маркетинга и пиара или что бывает, если вы врёте
Продолжаю рассказывать про человеческий маркетинг. Когда Англия вошла во Вторую Мировую, был очень примечательный эпизод. Военная пропаганда – это то, чему обычно не все и не всегда верят. Официальные каналы преуменьшают потери, преувеличивают успехи. Я сейчас не уверен в числах, но первое же радиосообщение с фронта про воздушный бой было про то, что сбито 40 английских истребителей. Позже пришла информация, что меньше – 34. Через пару дней нашли ещё пилота, совершившего аварийную посадку.
Народ Англии начал верить в то, что передают по радио. Потому что было заметно, что они не стараются врать. Более того, немцы тоже ориентировались на их сводки.
Есть первый железный принцип хорошего маркетинга и пиара – никогда не обещать ни на грамм больше, чем можешь сделать. И никогда не врать. Стоит хоть немного увлечься – и вот в какой-то момент ты станешь обманывать сам себя.
Победить Google? Это просто!
Хотел бы обратить внимание почтенной публики: я уважаю компанию Google и ее создателей, представленная статья — это всего лишь попытка в сатирической форме немного рассказать про становление Google, которое порой не соответствует стереотипам живущим в умах. Очень многие из них разрушились и у меня после прочтения книги «Google. Прорыв в духе времени» Дэвида Вайза. Эта статья родилась именно после прочтения данной книги.
Все мы порой оказываемся в плену у стереотипов. Так и у меня долгое время представление о истории успеха Google складывалось больше из абстрактных стереотипов, чем на основе фактов. Лучше и не спрашивать, откуда берутся стереотипы, они просто есть. И вот один из них.
Обычный парень, родом из России встречает другого обычного парня из США и вследствие общения и дружбы у них рождается мега-идея. Создав все на коленке, парни запираются в гараже и оттуда в одиночку потихоньку захватывают мир своими отличными задумками, которые они не устают придумывать. В один прекрасный день парни просыпаются и, о чудо!, они уже миллиардеры, их имена знает любой и каждый, а их сервисом пользуются во всех странах мира. Эдакий вариант т.н «американской мечты», про которую мы столько слышим: «ребенком продавал спички на улице, и к 60 лет скопил миллиард».
О! У вас уже есть идея? И вы, даже, собрались пойти по этому стереотипному пути ведущему к захвату мира? Погодите немного, давайте сформулируем несколько условий, необходимых для победы над Google. Побьем их их же оружием!
Окружение для разработки на aiorest (asyncio) + angular.js
- авто-перезапуск сервера при изменении python-кода и jinja-шаблонов
- сборка, минификация и автоматическая пересборка при изменении клиентского js-кода
Пять дней + двенадцать авторов + один книжный спринт = одна отличная книга по архитектуре OpenStack
Отличительной особенностью OpenStack является то, что можно найти много информации о том, как выполнять конкретные действия, например, запустить инстанс или установить тестовое облако на VirtualBox. Однако информации, которая даст вам общее представление, например, о том, как спроектировать массово масштабируемое облако на базе OpenStack или облако, оптимизированное под предоставление потокового контента, не так много.
Что такое grep и с чем его едят
Небольшое лирическое отступление:
Года три назад меня попросили провести собеседование с претендентами на должность unix-сисадмина. На двух крупнейших на тот момент фриланс-биржах на вакансию откликнулись восемь претендентов, двое из которых входили в ТОП-5 рейтинга этих бирж. Я никогда не требую от админов знания наизусть конфигов и считаю, что нужный софт всегда освоится, если есть желание читать, логика в действиях и умение правильно пользоваться инструментарием системы. Посему для начала претендентам были даны две задачки, примерно такого плана:
— поместить задание в крон, которое будет выполняться в каждый чётный час и в 3 часа;
— распечатать из файла /var/run/dmesg.boot информацию о процессоре.
К моему удивлению никто из претендентов с обоими вопросами не справился. Двое, в принципе, не знали о существовании grep.
Поэтому… Лето… Пятница… Перед шашлыками немного поговорим о grep.
Мультитест мультиварок: что купить IT-шнику, если хочется плова и борща
В нашем тесте участвуют 8 мультиварок от компаний Vitek (VT-4209), Kitfort (KT-201), Scarlett (SL-MC411S01), Polaris (PMC 0527D), Rolsen (RMC-5500D), Redmond (RMC-250), Philips (HD2173) и Panasonic (SR-MHS181).
Мы не будем рассказывать вам о дизайне — его можно посмотреть на фотографиях, не будем уточнять наличие контейнера для сбора конденсата — в него он попадает лишь в редких случаях, мы не будем говорить о «эффекте русской печи» и прочей маркетинговой шелухе, которую так любят продавцы.
Мы расскажем о более интересных вещах — об удобстве управления, о качестве рецептов из комплекта, о физической и химической стороне процесса приготовления, о типах антипригарных покрытий, о реальном, а не маркетинговом функционале и о том, что у мультиварок внутри.
Вводная по сложным запросам в SQLAlchemy
Во время посещения PyConRu 2014 я, с удивлением, узнал, что достаточно большая аудитория python-разработчиков не использует SQLAlchemy в качестве основного инструмента для работы с базой данных. Порассуждав на данную тему после Light Talks с коллегами было принято решение — во чтобы то ни стало написать статью о том, что же можно делать со всей мощью SQLAlchemy.
Обычно в написании сайтов не требуется чего-нибудь этакого от штатного ORM. А если и требуется, то хватает замены на нештатный или прочтения основной части документации. И, как правило, голову ломать над сложными запросами не приходится. Достаточно много различных ORM предлагают классические схемы One-2-Many, One-2-One, Many-2-Many, и т.д. Для обычных запросов и связей этого вполне достаточно. К сожалению, в больших проектах не обходится без частных случаев и программисты при сложных запросах пишут либо raw sql, либо полагаются на то, что им предлагает базовый функционал ORM. Это выглядит не совсем красиво или создает достаточно большую нагрузку на базу данных.
Понятно, что в погоне за скоростью выполнения сценариев, можно пожертвовать красотой кода, но что если скоростью можно пренебречь, а вот кроссплатформенностью — нет? Да и не хочется в python коде видеть что-то кроме python кода. А что если хочется на полную катушку использовать любимый ORM (для меня SQLAlchemy) и не писать raw sql запросы?
Язык программирования Swift. Русская версия
Мега-Учебник Flask, Часть 5: Вход пользователей
Предисловие от переводчика.
Переводом предыдущих частей этого руководства занимался wiygn. С его согласия я продолжаю это дело.
Это пятая статья в серии, где я описываю свой опыт написания веб-приложения на Python с использованием микрофреймворка Flask.
Цель данного руководства — разработать довольно функциональное приложение-микроблог, которое я за полным отсутствием оригинальности решил назвать microblog.
Часть 3: Формы
Часть 4: База данных
Часть 5: Вход пользователей (данная статья)
Часть 6: Страница профиля и аватары
Часть 7: Unit-тестирование
Часть 8: Подписчики, контакты и друзья
Часть 9: Пагинация
Часть 10: Полнотекстовый поиск
Часть 11: Поддержка e-mail
Часть 12: Реконструкция
Часть 13: Дата и время
Часть 14: I18n and L10n
Часть 15: Ajax
Часть 16: Отладка, тестирование и профилирование
Часть 17: Развертывание на Linux (и даже на Raspberry Pi!)
Часть 18: Развертывание на Heroku Cloud
Краткое повторение
В предыдущей части мы создали базу данных и научились заполнять её пользователями и постами, однако этот функционал еще не реализован в нашем приложении. Две главы назад мы узнали, как создавать веб-формы и создали форму для авторизации.
В этой статье мы объединим наши знания о веб-формах и базах данных и напишем свою систему для входа пользователей. В конце данного руководства наше небольшое приложение будет регистрировать новых пользователей и проводить их авторизацию.
Для работы с этой главой ваше приложение должно быть таким, каким мы оставили его в конце предыдущей главы. Пожалуйста, убедитесь, что приложение установлено и работает.
Английские идиомы с именами
John
John – одно из самых распространённых английских имён. Наверное, именно поэтому оно породило так много интересных идиом, а вымышленные и вполне себе реальные Джоны превратились в нарицательных персонажей:
John Q. Public или John Q. Citizen (товарищ или гражданин Джон Кью) – американизм, обозначающий среднестатистического гражданина, обычного человека. К слову, среднестатистическую гражданку называют Jane Q. Public.
John Hancock (Джон Хэнкок) – имя этого американского государственного деятеля, чья размашистая подпись под Декларацией независимости США приобрела всеобщую известность, стало нарицательным и используется для обозначения вообще всякой подписи. У нас шутливо говорят «поставить закорючку», а американцы просят «поставить своего джона хэнкока», тоже в шутку, разумеется.
Широкомасштабное эталонное тестирование OpenStack: Как мы тестировали Mirantis OpenStack в SoftLayer
Похоже, одним из главных вопросов, волнующих тех, кто вовлечен в индустрию облачных вычислений, стал вопрос о готовности OpenStack к эксплуатации на уровне предприятия при пиковой нагрузке. Среди распространенных тем разговоров – стабильность и производительность облачных сервисов на базе OpenStack в масштабе. Но что значит «масштаб»? Какой уровень масштаба применим в реальном мире?
Разъяснение http2
Как мне кажется, на сегодняшний день это одно из самых лучших разъяснений о том, что такое протокол http2, зачем он нужен, как он повлияет на веб-разработку и какое будущее ждёт Интернет в связи с его появлением. Думаю, что всем людям, причастным к веб-разработке и веб-строению, информация будет полезна, ведь ожидается, что стандарт http2 будет принят уже в июне этого года после завершающей встречи группы HTTPbis в Нью Йорке.
Ratchet 2.0 — самый красивый HTML5-фреймворк теперь дружит и с iOS, и с Android
Ratchet — так называется HTML5-фреймворк для быстрого прототипирования мобильных приложений, который 1,5 года назад создали те же парни, которые когда-то выпустили Bootstrap.
Инструмент позволяет быстро создать красивый интерфейс мобильного приложения — и дает вам красивые стили и замечательные иконки, согласованные с гайдлайном в зависимости от платформы. Можно сделать прототип, а можно завернуть в PhoneGap и без особых усилий получить сравнимый с нативным интерфейс приложения в продакшене.
Фреймворк очень прост в использовании и прекрасно документирован.
Я являюсь поклонником Ratchet с момента выхода первой версии. Тогда он был доступен только под iOS.
Не так давно вышла вторая версия, которая наряду с iOS поддерживает Android. Ура-ура!
(правда, обратной совместимости с первой версией нет)
Кому интересно про новые возможности Ratchet 2.0 — прошу под кат!
Язык Go для начинающих
Цель этой статьи — рассказать о языке программирования Go (Golang) тем разработчикам, которые смотрят в сторону этого языка, но еще не решились взяться за его изучение. Рассказ будет вестись на примере реального приложения, которое представляет из себя RESTful API веб-сервис.
Information
- Rating
- Does not participate
- Location
- Round Rock, Texas, США
- Date of birth
- Registered
- Activity