Pull to refresh
0
0
Никита Кузнецов @Braidner

User

Send message

Чем плох JavaScript в большом проекте? С какими проблемами мы столкнулись и как их решали

Reading time1 min
Views42K


Почему определенные недостатки языка JavaScript в реалиях разработки такого большого проекта, как наш, оказываются критическими? Как решить проблемы JS, когда количество кода превышает 2 млн строк, а команда насчитывает более 20 человек и постоянно растет? Об этом — в докладе фронтенд тимлида Wrike в рамках митапа, проведенного в нашем офисе совместно с сообществом Piter JS.

Смотреть

Версионирование базы данных на лету

Reading time6 min
Views28K
Здравствуйте, меня зовут Евгений, и я веб разработчик. Несколько лет назад мне перепала функция DBA (Database Administrator), я получил по этому поводу несколько сертификатов и решал соответствующие задачи. Я давно хотел описать задачу версионирования базы данных, но мне казалось, что для этого должны быть какие-то беспроигрышные варианты, которые хорошо знают умелые дяди, а я просто чего-то недопонимаю. Вчерашнее собеседование и последующий поиск по тематическим ресурсам показал, что это не так, и задача действительно сложна, актуальна и не решается однозначно. Разберём её по пунктам.

Что мы версионируем


Мы используем контроль версий только для DDL (Data Definition Language) запросов. Сами данные нас не интересуют. Почему? Рассмотрим два крайних случая.

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

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

Цвет в дизайне

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



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

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

Создание концепции мобильной f2p игры. Часть 1

Reading time5 min
Views18K


Hola Chicos!

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

Рецепты под Android: IoC со вкусом Gradle

Reading time10 min
Views12K
Android-проекты бывают большими. Иногда действительно большими. Один из наших проектов — новостное приложение, которое разрабатывается одновременно под две альтернативные платформы: Android и FireOS, что от Amazon. Это позволяет расширить круг читателей новостей, ведь пользователи читалок Kindle Fire любят почитать:). Однако, это же накладывает обязательство считаться с особенностями каждой из платформ. Например, если в Android вы используете GCM для push-сообщений, то в FireOS вы должны использовать для этого Amazon AWS. Аналогично и для систем покупок внутри приложения: Google in-app billing vs. In-App Purchasing. Но большой размер проекта != большой размер приложения!

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

Что готовим?



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

Лучшие практики защиты e-commerce сайтов

Reading time6 min
Views19K


Интернет-магазины всегда привлекали злоумышленников: это и источник данных кредитных карт (сейчас практически неактуальный); пользовательских данных; данных о заказах и рыночных трендах (покупательском спросе); источник трафика; манипуляция со скидочными купонами и т.д. E-commerce сайт может быть атакован как злоумышленниками в «свободной охоте» (нецелевая атака), так и по заказу недобросовестных конкурентов. В последнее время популярны разного рода DoS/DDoS атаки, как для вывода конкурента из строя, так и в виде инструмента для шантажа.

В этом топике я опишу лучшие практики по защите e-commerce сайтов.
Читать дальше →

Мы ищем МЕГАразработчиков: включите генератор идей

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

Разработчики создают разнообразное и полезное ПО, которое получает отклик пользователей: от корпоративного софта до мобильных игр. Откуда берутся идеи и как их можно стимулировать?
Мы пригласили в МЕГУ знакомого разработчика и, прогуливаясь по торговому центру, попросили его открыть тайну рождения идей, а заодно подсказать участниками проекта МЕГА ACCELERATOR, о котором вы можете прочитать на Мегамозге, что же с его точки зрения можно придумать для улучшения покупательского опыта. Он раскрыл для читателей Хабра несколько секретов и техник, которые можно эффективно применять, работая практически над любым проектом.

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

Игра для математика. Устный счёт

Reading time3 min
Views43K
Подумать только, живём мы в чудесную эпоху, изобрели вычислительные машины, забыли как пользоваться механическими счётами, у каждого второго в кармане сверхмощная ЭВМ, пару поколений уже выросло имея карманные калькуляторы, элементарные вычисления востребованы всё реже. Давно ли вам приходилось считать в уме? Ну, скажем, почему бы не сложить пару четырёх или пятизначных чисел делая покупки, потом дать кассиру деньги с точностью до копейки? Скажете, ерунда всё это, пустая трата времени. Кому пустая, кому не пустая. Я же считаю, что во-первых для поддержания функциональности мозга нужно периодически пользоваться этой замечательной функциональностью, а во-вторых искусство преуспевать в базовых навыках делает человека мастером.

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


Та ну, тут же всё опирается в реакцию и слепой набор чисел
Читать дальше →

Игра Let's Twist: Путь в неизвестность

Reading time9 min
Views22K
Вначале этого года группа начинающих разработчиков работала на игровую студию, нарушающую все каноны мобильной разработки. Низкий приток пользователей (а точнее его абсолютное отсутствие), нехватка рекламных бюджетов и поддержки издателей демонтировало команду, и было принято решение рискнуть и создать что-то свое, доказать в первую очередь самим себе, что большие бюджеты и известность — не главный фактор успеха.

В этой статье я, Артур, основатель и гейм-дизайнер инди команды ArmNomads Games (состоящей из трех человек), хочу поделиться пройденным нами путем в опасные дебри мобильного гейминга. От идеи до конечного релиза.



Главной задачей при создании идеи был поиск определенного издателя и целевой аудитории. Мы прекрасно понимали, что сделать что-то универсальное очень сложно. Руководствуясь ограниченностью ресурсов и времени, было принято решение сотрудничать с издателем Ketchapp, но, в то же время, иметь пути отхода. Для этого мы предприняли попытку сочетать минималистичный геймплей и красивый арт. Имея опыт работы с движком Unity, мы думали, что это лучший вариант. Из плюсов этого движка можно отметить быстроту разработки, графический интерфейс и кроссплатформенность.
Читать дальше →

Какие технологии использует Netflix

Reading time2 min
Views25K
Мы постоянно работаем над тем, чтобы IaaS был простым и понятным даже для тех, кто не сталкивался с ИТ-сферой. Для этого мы проводим оптимизацию всех систем и рассказываем о своем опыте в нашем блоге на Хабре.

Пара примеров:


Сегодня мы поговорим о том, какие технологии в своей работе использует Netflix. Об этом в своем блоге рассказал Крис Умланд (Chris Ueland), а мы проанализировали его заметку.

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

Введение в RxJava: Жизненный цикл подписки

Reading time4 min
Views60K
image

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

Мифы и рецепты Docker

Reading time5 min
Views91K
Вокруг постоянно говорят про Docker. Я знаю что вы отвечаете: «Это что-то про контейнеры, виртуализацию, облака», «У нас все и так работает», «Это все баловство», «Он не запустится на нашем старом ядре линукса», «Точно так же можно подготовить образ для облака и запустить его», «Можно просто настроить LXC, chroot или AppArmor». Вы знаете, что он вам не нужен. Очередная модная штука. В конце концов, просто лень разбираться. Но любопытно! Тогда, читайте. Это серия из шести заметок.

Если вы не слышали о контейнерах в Линуксе, вот список страниц, которые надо прочитать, чтобы понимать о чем речь:


Поставьте Docker, он небольшой. Для Windows и Mac можно просто поставить Toolbox: www.docker.com/toolbox. Создавать виртуальную машину и настраивать лучше из командной строки, а не через графическую обертку. Прочитайте несколько уроков из мануала. Здесь я пишу о том, чего в документации нет.

Docker — это не виртуализация.


Вот какой у меня линукс:

Welcome to Ubuntu 15.04 (GNU/Linux 3.19.0-15-generic x86_64)

Last login: Tue Aug 18 00:43:50 2015 from 192.168.48.1
gri@ubuntu:~$ uname -a
Linux ubuntu 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/                                       Linux
gri@ubuntu:~$ free -h
             total       used       free     shared    buffers     cached
Mem:          976M       866M       109M        11M       110M       514M
-/+ buffers/cache:       241M       735M
Swap:         1.0G       1.0M       1.0G

Запускаю CentOS:

gri@ubuntu:~$ docker run -ti centos
[root@301fc721eeb9 /]# uname -a
Linux 301fc721eeb9 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@301fc721eeb9 /]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[root@301fc721eeb9 /]# free -h
              total        used        free      shared  buff/cache   available
Mem:           976M         85M        100M         12M        790M        677M
Swap:          1.0G        1.0M        1.0G

Docker — это не chroot, их функционал частично совпадает. Это не система безопасности вроде AppArmor. Docker использует те же контейнеры, что и LXC, но интересен он не контейнерами. Docker — это ничего из того, что я думал о нем до того, как прочитал документацию.

То же ядро, память, файловая система, а дистрибутивы, библиотеки и пользователи — разные.

Docker — это инструмент объекто-ориентированного проектирования


Регулярно возникает вопрос, является ли конфигурация nginx частью веб-приложения. Системные администраторы спорят с разработчиками. Но недавно в мире появились devops и захотели вместо последовательно-процедурного вызова команд из bash думать привычным OOP. Docker дает инкапсуляцию, наследование и полиморфизм компонентам системы, таким как база данных и данные. Это значит, что можно провести декомпозицию всей информационной системы, выделить приложение, web-сервер, базу данных, системные библиотеки, рабочие данные в независимые компоненты, внедрять зависимости из конфигов, и заставить все это работать одной группой, одинаково на разных компьютерах.

Такой подход можно использовать, чтобы снизить потери рабочего времени дорогих front-end разработчиков на настройку базы данных и Nginx. Чтобы уйти от vendor lock-in. Не обломаться когда openssl на сервере не поддерживает cipher, используемый в API госучреждения. Чтобы приложение работало независимо от версии PHP или Python на сервере заказчика. Создавать open source не только в виде кода, но и настройкой пакетов из нескольких приложений, написанных на разных языках, работающих на разных слоях OSI.
Читать дальше →

Аккордеон на AngularJS и Bootstrap

Reading time5 min
Views27K
Аккордеон добавляет визуальное оформление и соответствующее поведение типа «горизонтальный аккордеон» произвольному (в рамках использованного шаблона и стилей) блоку разметки HTML.

Блок разметки должен иметь два обязательных элемента — общий контейнер и вкладки:

<ul ngc-accordion>
    <li ngc-accordion-tab="наименование1" template="template.html">... </li>
    <li ngc-accordion-tab="наименование2" template="template.html">... </li>
</ul>
    

Или так:

<div ngc-accordion>
    <div ngc-accordion-tab="наименование1" template="template.html">... </div>
    <div ngc-accordion-tab="наименование2" template="template.html">... </div>
</div>
    

Выглядит так:


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

RxJava. Борьба с вызовами суровой действительности

Reading time10 min
Views36K
Реактивное программирование — очень модный тренд в мобильной разработке на данный момент. Если говорить про android разработку, то реактивность представлена в основном библиотекой RxJava.
В сети все больше статей, обучающих видео, презентаций, записей с конференций, в которых рассказывается про данную тематику. Но подавляющее большинство представленного материала содержит теоретические аспекты и весьма тривиальные примеры, на которых разработчик не может оценить реальный профит от использования Rx. А ведь так хочется увидеть реальный и сложный пример из жизни, который очень наглядно покажет всю мощь, красоту и простоту реактивного программирования.
Поэтому данная статья будет посвящена подробному разбору реального и довольно таки сложного примера. И я очень надеюсь, что после прочтения, вы по-настоящему откроете для себя мир реактивного программирования.
Читать дальше →

Микросервисы без серверов (облачный вариант)

Reading time20 min
Views23K
Здравствуйте, дорогие читатели!

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

Много Java, JavaScript, схем, рассуждений и очень много текста
Читать дальше →

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №174 (23 — 30 августа 2015)

Reading time6 min
Views35K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы, интересные материалы и IT-новости


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

30 бесплатных онлайн-курсов, которые помогут запустить свой бизнес

Reading time1 min
Views31K
Впереди — последний месяц лета. Как его провести — решает каждый сам для себя. Я же предлагаю вам провести время с пользой для дела. Представляю 30 бесплатных онлайн-курсов по бизнесу и предпринимательству, которые помогут вам запустить свое дело с нуля: от генерации бизнес-идеи и оценки бизнес-плана до ведения собственной бухгалтерии.

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

Используем SVG на сайте

Reading time6 min
Views228K


Оставим за скобками вопрос о целесообразности использования SVG на сайте. Каждый сам для себя должен определить полезность этой технологии. Тем более что эта тема поднималась уже неоднократно.

Сейчас мы рассмотрим методы встраивания SVG, их плюсы и минусы, а так же возможности манипулирования элементами SVG.

Статья рассчитана в первую очередь на тех, кто до сих пор не использует векторную графику на своих сайтах, но очень хочет быть одной ногой в будущем настоящем.
Для любопытных сразу приведу сводную таблицу:
Иконочный шрифт IMG, background-image Object Inline
CSS Манипуляции Частично1 Нет Частично2 Да
JS манипуляции Частично1 Нет Да Да
SVG анимации Нет Да Да Да
Интерактивные SVG анимации Нет Нет Да Да
Читать дальше →

Как я учил английский и программирование одновременно

Reading time5 min
Views83K
Шесть лет назад мне было 43 года, и я не умел программировать вообще. Ну, может немного на Бэйсике, который преподавали в институте, как вы понимаете, очень давно.

В книжном магазине попалась мне на глаза книга «Программирование для iPhone/iPad» и, будучи человеком любознательным, я решил попробовать. Купил книгу, MacBook Air (iPad у меня тогда уже был), установил XCode и начал с примеров из книги. Когда я получил общее представление о том, как что работает, мне захотелось сделать что-то полезное. Так как для программиста очень полезным, или скорее даже необходимым, является знание английского языка, я решил создать такое приложение.
Читать дальше →

Создание The Blacksmith: концепт и художественное оформление

Reading time5 min
Views25K
В рамках официального сотрудничества с компанией Unity мы будем публиковать переводы статей о создании проектов на Unity 5.
В этот раз речь пойдет об источниках вдохновения для создания ролика The Blacksmith (Кузнец), мы покажем примеры концепт-арта и поделимся интересными наблюдениями и советами.



Подробнее

Information

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