Как стать автором
Обновить
0
0

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

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

Python в Mobile development

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


Ни для кого не секрет, что область применения Python довольно широка: начиная от web-технологий, игровой индустрии и заканчивая проектами NASA. Python работает практически везде: от карманных компьютеров и смартфонов до серверов сети и практически на всех известных платформах, таких как Windows, Linux/UNIX, macOS, Palm OS, Raspberry PI и так далее. Благодаря фреймворку Kivy в 2011 году Python освоил и мобильные платформы в плане разработки приложений под iOS и Android, а в 2015 с помощью библиотеки KivyMD Python научился использовать Material Design.
Всего голосов 27: ↑26 и ↓1+31
Комментарии74

Data-Oriented Design (или почему, используя ООП, вы, возможно, стреляете себе в ногу)

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

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

Такое развитие событий довольно точно описывает почти каждую игру, в разработке которой я участвовал на протяжении последних десяти лет. Причины заключаются не в языках программирования и не в инструментах разработки, и даже не в отсутствии дисциплины. По моему опыту, в большой степени в этом стоит винить объектно-ориентированное программирование (ООП) и окружающую его культуру. ООП может не помогать, а мешать вашим проектам!
Читать дальше →
Всего голосов 34: ↑30 и ↓4+26
Комментарии18

Почему ООП не инкапсуляция, наследование и полиморфизм, или как я научился не волноваться и полюбил разметку

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

Всем привет!


Дамы и господа, в статье речь пойдет от том, как у меня жутко пригорает от Объектно Ориентированного Программирования и Проектирования. Скорее всего подобных дохера и трошку, и вполне возможно, что я нагло кого-то копирую. Я, честно говоря, не очень много гуглил, но минимально пытался. Добро пожаловать в комменты с пожеланиями, предложениями и срачем.


Читать дальше →
Всего голосов 58: ↑29 и ↓290
Комментарии122

ООП мертво, да здравствует ООП

Время на прочтение18 мин
Количество просмотров59K
image

Источники вдохновения


Этот пост возник благодаря недавней публикации Араса Пранцкевичуса о докладе, предназначенном для программистов-джуниоров. В нём рассказывается о том, как адаптироваться к новым ECS-архитектурам. Арас следует привычной схеме (объяснения ниже): показывает примеры ужасного ООП-кода, а затем демонстрирует, что отличным альтернативным решением является реляционная модель (но называет её «ECS», а не реляционной). Я ни в коем случае не критикую Араса — я большой фанат его работ и хвалю его за отличную презентацию! Я выбрал именно его презентацию вместо сотен других постов про ECS из Интернета потому, что он приложил дополнительные усилия и опубликовал git-репозиторий для изучения параллельно с презентацией. В нём содержится небольшая простая «игра», используемая в качестве примера выбора разных архитектурных решений. Этот небольшой проект позволил мне на конкретном материале продемонстрировать свои замечания, так что спасибо, Арас!

Слайды Араса выложены здесь: http://aras-p.info/texts/files/2018Academy — ECS-DoD.pdf, а код находится на github: https://github.com/aras-p/dod-playground.

Я не буду (пока?) анализировать получившуюся ECS-архитектуру из этого доклада, но сосредоточусь на коде «плохого ООП» (похожего на уловку «чучело») из его начала. Я покажу, как бы он выглядел на самом деле, если бы правильно исправили все нарушения принципов OOD (object-oriented design, объектно-ориентированного проектирования).

Спойлер: устранение всех нарушений OOD приводит к улучшениям производительности, аналогичным преобразованиям Араса в ECS, к тому же использует меньше ОЗУ и требует меньше строк кода, чем ECS-версия!

TL;DR: Прежде чем прийти к выводу, что ООП отстой, а ECS рулит, сделайте паузу и изучите OOD (чтобы знать, как правильно использовать ООП), а также разберитесь в реляционной модели (чтобы знать, как правильно применять ECS).
Читать дальше →
Всего голосов 55: ↑50 и ↓5+45
Комментарии48

Я не знаю ООП

Время на прочтение12 мин
Количество просмотров550K
Я не умею программировать на объектно-ориентированных языках. Не научился. После 5 лет промышленного программирования на Java я всё ещё не знаю, как создать хорошую систему в объектно-ориентированном стиле. Просто не понимаю.

Я пытался научиться, честно. Я изучал паттерны, читал код open source проектов, пытался строить в голове стройные концепции, но так и не понял принципы создания качественных объектно-ориентированных программ. Возможно кто-то другой их понял, но не я.

И вот несколько вещей, которые вызывают у меня непонимание.
Читать дальше →
Всего голосов 412: ↑309 и ↓103+206
Комментарии870

Модульный CSS: — Инструментарий, который мы имеем сейчас в арсенале — это просто сказка

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

Инструментарий, который мы имеем сейчас в арсенале — это просто сказка!

Андрей Оконечников, разработчик с 15-летним стажем, из которых пользовательским интерфейсам было отдано более десяти, Андрей расскажет на HolyJS об использовании PostCSS и Webpack для решения проблем фронтенд-разработки. Доклад Андрея называется «Модульный CSS» и посвящен тому, как при помощи JavaScript и AST работать с CSS на масштабных проектах. Отталкиваясь от тематики доклада, мы задали Андрею несколько вопросов, которые позволят вам понять глубину связи UI/UX с работой frontend-разработчика, а также о проблемах и будущем CSS на больших проектах.
Читать дальше →
Всего голосов 36: ↑22 и ↓14+8
Комментарии4

Живая миграция контейнеров: взгляд изнутри

Время на прочтение6 мин
Количество просмотров7.4K
Сегодня мы рассмотрим тему, которая не в полной мере раскрыта в современном мире ИТ: живая миграция контейнеров, как она работает за кулисами и какие проблемы решает. Спрос на данную технологию продолжает стремительно расти, поскольку она открывает новые возможности, предоставляя больше свободы в управлении жизненным циклом приложений.

Живая миграция – что это?


Живая миграция контейнеров подразумевает собой процесс перемещения приложения между разными физическими машинами или облаками без прерывания работы приложения и разрыва связи с пользователем. Память, файловая система и сетевое соединение контейнеров, запущенные поверх «голой» аппаратуры, передаются от исходного хост-компьютера к месту назначения, поддерживая рабочее состояние без прерывания работы.
image
Всего голосов 15: ↑14 и ↓1+13
Комментарии35

Различия между MVVM и остальными MV*-паттернами

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


От переводчика:
Уже опубликовано много материалов по MVC и его производным паттернам, но каждый понимает их по-своему. На этой почве возникают разногласия и холивары. Даже опытные разработчики спорят о том, в чем отличие между MVP, MVVM и Presentation Model и что должен делать тот или иной компонент в каждом паттерне. Ситуация усугубляется еще и тем, что многие не знают истинную роль контроллера в классическом варианте MVC. Предлагаю вашему вниманию перевод хорошей обзорной статьи, которая многое проясняет и расставляет всё по своим местам.
Разобраться в MV-паттернах
Всего голосов 38: ↑37 и ↓1+36
Комментарии29

Брэм Коэн: Я писал BitTorrent сидя в гостиной, безработный, в трусах

Время на прочтение4 мин
Количество просмотров30K
«Храм должен был быть вечным. Как сама глубина. А значит, не зависеть ни от одного сервера. Создающие Храм программы свободно блуждают по сети, их фрагменты дублируются, рекомбинируются, самостоятельно организуются для работы. Чтобы Храм исчез, надо уничтожить все машины в сети.»
«Фальшивые зеркала», 1999 год, за 2 года до появления протокола BitTorrent


Сегодня стукнуло 41 год Брэму Коэну, создателю протокола BitTorrent.

Интересные факты:

  • Коэн начал программировать в 10 лет.
  • Коэн признается, что неспособен работать в фиксированном графике, по часам, в компании, предъявляющей строгие требования к дресс-коду, и категорически не может выполнять бессмысленную и неинтересную работу.
  • Работал в компании «Evil Geniuses for a Better Tomorrow» и Работал в «Valve».
  • Для тестирования BitTorrent Брэм собрал немалую пачку порнухи, которую и раздавали туда-сюда.
  • Организатор конференции CodeCon.
  • Есть жена и трое детей.
  • Самый большой файл на раздаче — архив сайта geocities.com размером в 641 Гб.
  • За первые два года было более 20 млн. закачек клиента, сейчас от 100 до 250 млн. пользователей BitTorrent.
  • В 2008 в раздачах исполняемых файлов 18% были заражены.
  • В 2009 от 43% до 70% трафика в Интернет принадлежало Peer-to-peer сетям.
  • В 2009 более 14.5% BitTorrent загрузок содержало zero-day вредоносные программы и поэтому BitTorrent был механизмом дистрибуции 47% zero-day зловредов.
  • Технологией BitTorrent пользуются Facebook, Twitter, Internet Archive, Blizzard, World of Tanks, Eve Online, правительство Великобритании, научные исследования (BOINC), множество open source и free software проектов.


Всего голосов 36: ↑32 и ↓4+28
Комментарии53

Дайджест свежих материалов из мира фронтенда за последнюю неделю №229 (19 — 25 сентября 2016)

Время на прочтение5 мин
Количество просмотров21K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы и интересные материалы из области фронтенда.


Читать дальше →
Всего голосов 38: ↑34 и ↓4+30
Комментарии1

История вируса «Программа, которая увольняет людей»

Время на прочтение7 мин
Количество просмотров4.9K
Когда вы слышите фразу “продвижение” — то вам всем в голову приходит примерно одно и тоже: сайт, seo, контекст, выставки и т.д. Но что, если скажу что существуют совершенно другие способы, о которых вы даже не догадывались? 99% людей, которые “в теме” эти способы точно не приходили в голову.
Читать дальше →
Всего голосов 29: ↑15 и ↓14+1
Комментарии11

Objective-C вопросы на уровень middle/senior

Время на прочтение4 мин
Количество просмотров60K
Что должен знать objc разработчик на уровень middle/senior?
К сожалению, четкой черты на вертикальное развитие нет. Парадокс, но чтобы знать что изучить, нужно знать что ты не знаешь.
Я постарался вспомнить самые интересные вопросы, которые мне задавали самому на различных собеседованиях, а так же расширил их множеством вопросов(тем же уровнем) от себя.
Здесь нет общих вопросов вроде: IoC, design patterns, S.O.L.I.D. и т.п.

ВНИМАНИЕ!!!
Помимо вертикального развития немаловажно и горизонтальное

ВНИМАНИЕ!!! (2)
Не пишите в комментарии ответы на вопросы, это дает возможность людям самостоятельно разобраться.
Однако, если у вас имеются интересные вопросы по теме, я с радостью добавлю их в список.

Конечно, это не заменит живого общения, однако позволит неплохо подготовиться к собеседованиям.


Начинаем


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

Я хочу, чтобы сайты открывались мгновенно

Время на прочтение10 мин
Количество просмотров139K
Здравствуйте, меня зовут Александр Зеленин и я веб-разработчик. Я расскажу, как сделать так, чтобы ваш сайт открывался быстро. Очень быстро.


Я хочу, чтобы мой сайт открывался быстро
Всего голосов 130: ↑122 и ↓8+114
Комментарии87

Партиционирование в PostgreSQL – Что? Зачем? Как?

Время на прочтение23 мин
Количество просмотров189K
Функцией партиционирования таблиц в PostgreSQL, к сожалению, активно пользуются пока не многие. На мой взгляд, очень достойно о ней рассказывает в своей работе Hubert Lubaczewski (depesz.com). Предлагаю вам еще один перевод его статьи!

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

Так что я постараюсь объяснить в меру своих знаний и возможностей, что это такое, зачем его стоит использовать и как это сделать.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии26

Создание веб-сайта. Курс молодого бойца

Время на прочтение24 мин
Количество просмотров841K
Как-то меня попросили провести небольшой семинар в лицее, где я когда-то учился, по созданию веб-сайта. В процессе написания речи я подумал, что она может вылиться в материал, который, возможно, будет полезен многим начинающим в области веб-дизайна, вёрстки веб-страниц и пр. Я не претендую на истину в первой инстанции и всё изложенное носит чисто личностный взгляд на работу с дизайном и кодом. Статья даёт поверхностный взгляд на понятия и средства, которые, на мой взгляд, могут стать неплохим стартом для того, кто готов идти дальше.
Читать дальше →
Всего голосов 86: ↑77 и ↓9+68
Комментарии46

7 игр за 7 дней: rewarded video

Время на прочтение5 мин
Количество просмотров24K
image

Ты решил выпустить свою игру под iOS? Значит, читай дальше. Яхты, машины, виллы — все это будет твое. Главное — удачно жениться. А разработчикам игр остаются свобода и счастье творчества. Sic!

Да, закатай губу и помни, каждый день в яблочный магазин выкладывается более 1000 игр. Представь, что какой-то тип-игроман заходит в Appstore раз в неделю посмотреть свежие приложения. Его ждет 7*1000=7000 новых игр. И еще миллион старых, которых он не пробовал. Он пролистает 3 страницы с иконками и описаниями, увидит 3 десятка приложений, почитает отзывы и скачает себе пару бесплатных игрушек. Какова вероятность, что он увидит твое гениальное, неслыханное, эпохальное, умопомрачительное приложение? Невелика? Ах, ты с кафедры мат. статистики? Да ладно?! А не переживай. Удача и реклама спасут тебя. Выпусти 100 приложений, размести в них современную рекламу и 50 долларов в день тебе обеспечены до самой смерти.

Я расскажу, как осуществляется автором этот гениальный план, опубликую финансовые итоги 2015 года (тс-с-с), и проинформирую уважаемых читателей о рекламных сервисах, которые, по-моему мнению, самые модные и доходные в этом сезоне. Ссылок на приложения не даю, никого не трогаю, починяю примус.
Читать дальше →
Всего голосов 48: ↑44 и ↓4+40
Комментарии13

Обзор образовательного набора от Амперки — TETRA

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


Надавно к нам в хакспейс MakeItLab компания Амперка прислала для тестов свой новый образовательный набор для занятия электроникой — TETRA. Мы уже делали обзор продуктов от Амперки, чем же отличается данный набор?

Данный набор объединил лучшие моменты:
  • простая сборка элементов (без пайки)
  • унифицированные элементы периферии
  • удобное крепление периферии
  • встроенное Ардуино
  • обучающий материал на базе Scratch визуального языка программирования

Удобство набора в том, что сразу после распаковки и подключения компьютера — можно начинать работу — изучать, создавать игры, программы.

Обзору набора Tetra и будет посвящён данный пост. Но вначале расскажем как выглядели и когда появились первые советские наборы по электронике («радио-кубики»).
Читать дальше →
Всего голосов 27: ↑23 и ↓4+19
Комментарии13

WebGL для всех

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


Идея данной статьи родилась после нескольких мучительных недель изучения WebGL. На личном примере выяснилось, что люди, не сталкивающиеся до этого с 3D-графикой, имеют в основном ошибочные представления о работе данной технологии. К тому же была проблема с поиском информации в интернете.

WebGL, в отличие от Javascript, имеет высокий порог вхождения, его до сих пор мало кто использует, а ещё меньше тех, кто об этом пишет. Большинство руководств или статей перепрыгивают сразу на использование какой-нибудь библиотеки. Но мы-то с вами знаем, что большие универсальные инструменты не всегда пригодны для наших задач или, возможно, делают это на неприемлемом уровне: проигрывают в скорости, поставляются с ненужным багажом и т.д.

Этой статьёй хочется облегчить порог вхождения в чистый WebGL, дать начальное представление и подсказать, куда двигаться дальше.
Поехали!
Всего голосов 70: ↑66 и ↓4+62
Комментарии24

Становимся профессиональными PHP разработчиками. Часть 1: Недостающее звено

Время на прочтение7 мин
Количество просмотров28K
Предлагаю вашему вниманию перевод статьи «Becoming PHP professional. Missing link».

Введение


Когда я читаю различные блоги, связанные с PHP, вопросы на Quora (англоязычный сервис вопрос-ответ, прим. переводчика), сообщества в Google+, газеты и журналы, я часто замечаю крайнюю поляризацию навыков программирования. Вопросы бывают или уровня «А как же мне подключиться к базе данных MySQL», или что-то из области «Как мне лучше распределить ресурсы моей почтовой системы для того, чтобы отправлять более одного миллиона писем в час без использования нового сервера?»

Лично я выделяю 4 четких уровня «славы» в PHP (применимо так же и для любого другого языка или профессии): новичок, среднячок, профессионал и элита.
Читать дальше →
Всего голосов 26: ↑10 и ↓16-6
Комментарии16

Художественный подход к загрузке изображений

Время на прочтение7 мин
Количество просмотров7.7K
У меня, как у художницы и web-разработчика, со временем появилась необходимость в собственной галерее. Обычно, у галерей две основные функции: показ витрины — всех (или некоторых) картин — и детальный показ одной. Реализация обеих функций есть практически в любой готовой галерее. Но «заношенный» внешний вид готовых галерей и, ставший стандартом, пользовательский интерфейс не годятся для художника :). А нестандартный — требует особой архитектуры и реализации кода, осуществляющего загрузку и показ картин. Сам показ и пользовательский интерфейс я в этой статье опущу. Основное внимание будет отдано загрузке картин с сервера. Об итоговой организации контролируемой загрузки с использованием очередей, асинхронного загрузчика, обработки блоб-объектов, каскадов выполнения обещаний и с возможностью приостановки и пойдет речь.



Примеры кода записаны на coffeeScript
Читать дальше →
Всего голосов 17: ↑11 и ↓6+5
Комментарии7

Информация

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