Pull to refresh
0
0
Юлия Якутова @JuliaYa

User

Send message

Подробное руководство по разработке мобильных приложений AngularJS

Reading time14 min
Views47K
Мобильные приложения, это не будущее разработки, это уже настоящее. В настоящее время пользователей мобильных приложений уже 1.2 млрд. человек, и это количество постоянно растет (Wikipedia). Вскоре количество мобильных устройств превзойдет количество людей на планете. Если скорость роста количества мобильных устройств останется неизменной, то к 2017 году ими будут пользоваться 5.1 млрд. человек.
Для нас, как для разработчиков приложений, важно разрабатывать свои приложение с учетом мобильных пользователей, если мы хотим чтобы они были востребованы. В AngularJS реализована поддержка мобильных устройств, написанная как командой AngularJS, так и сообществом.
В этой статье мы будем работать с двумя различными способами, чтобы дать читателям опыт в разработке мобильных приложений.
Читать дальше →

Сделай свой AngularJS: Часть 1 — Scope и Digest

Reading time34 min
Views89K
Angular — зрелый и мощный JavaScript-фреймворк. Он довольно большой и основан на множестве новых концепций, которые необходимо освоить, чтобы работать с ним эффективно. Большинство разработчиков, знакомясь с Angular, сталкиваются с одними и теми же трудностями. Что конкретно делает функция digest? Какие существуют способы создания директив? Чем отличается сервис от провайдера?

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

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

Как Groupon мигрировал от монолитного Rails приложения к новой Node.js инфраструктуре

Reading time7 min
Views21K

I-Tier: Расщепление монолита


Недавно мы завершили годовой проект миграции веб-трафика компании Групон в США от монолитного Ruby on Rails приложения к новому стеку Node.js и получили существенные результаты.

С самого начала весь веб-фронтенд американского Групона был единым исходным кодом Ruby. Код фронтенда быстро развивался, что затрудняло его поддержку и усложняло процесс добавления новых фич. В качестве решения проблемы с этом гигантским монолитом мы решили реструктурировать фронтенд посредством его разделения на меньшие, независимые и более простые в управлении части. Основой этого проекта стало разделение монолитного вебсайта на несколько независимых Node.js приложений. Мы также переделали инфраструктуру, чтобы обеспечить совместную работу всех приложений. Результатом стал Interaction Tier (I-Tier).

Вот некоторые из важных моментов этой глобальной архитектурной миграции:

• Страницы на сайте загружаются значительно быстрее

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

• Мы можем избежать повторной разработки одних и тех же фич в разных странах, где доступен Групон.

Этот пост является первым из серии постов о том, как мы реструктурировали сайт и какие огромные преимущества мы видим в дальнейшем, которые будут лежать в основе продвижения компании Групон.
Читать дальше →

Долгая дорога Ганта в TeamLab Office. Рассказ от первых лиц

Reading time4 min
Views15K

C тех пор как мы опубликовали это, нам не пришло больше ни одного вопроса о том, когда же выйдет диаграмма Ганта. Все понимали: ждать осталось совсем чуть-чуть. Злосчастную тысячу сердечек мы, конечно, так и не набрали, но диаграмму все же выпустили.

Выхода диаграммы Ганта действительно ждали все. Ждали практически 2 года — и пользователи, и отдел маркетинга, и руководство. В разделе отзывов и пожеланий для разработчиков TeamLab Gantt Chart давным давно стоит на первом месте с количеством голосов, перевалившем за 1000. Так почему же пришлось ждать так долго? В этот раз мы решили дать слово непосредственным участникам процесса.
Читать дальше →

Играем в RSS с PlayFramework 2.2 и Scala

Reading time12 min
Views9.4K


Доброго времени суток, уважаемые хабравчане.

Мы, погромпрограммисты, очень часто сталкиваемся с одной и той же проблемой при изучении нового языка X или фреймворка Y — что писать после вступительного туториала Yet Another Hello World? Что-нибудь, что сможет показать какие-то преимущества и недостатки X/Y, но при этом не заняло бы много времени.

Мы с товарищами часто задавались подобным вопросом. В итоге родилась простая мысль — напиши RSS читалку. Тут тебе и работа с сетью, и XML парсер, и БД можно подключить, поглядеть на шаблонизатор. Да мало ли.

Итак, здесь начинается увлекательное путешествие в стек Play Framework 2.2 + Scala + MongoDB на бэкэнде и AngularJS + CoffeeScript на фронтенде.

TL;DR
Весь проект вместился в ~250-300 строк на Scala с документацией и ~150 строк на CS. Ну и немного HTML.
Код доступен на Bitbucket

В путь

Impress: многоцелевой сервер приложений для Node.js

Reading time7 min
Views17K
Несмотря на заметные успехи, Node.js все еще остается специализированной технологией, которой преимущественно закрывают узкие места в системах, написанных в другом стеке технологий. Причина такого положения кроется в том, что сама по себе нода не имеет многих библиотек, к которым мы привыкли на других языках и которые обеспечивают быструю разработку именно прикладного ПО. Например, для того, чтобы разделить в коде обработчики разных URL, отдавать статические файлы, организовывать сессии, запускать нескольких потоков, иметь доступа к БД, кешировать данные в памяти, разграничивать права пользователей, иметь логи и ротировать их, создавать сетевое API, рендерить шаблоны, настраивать URL-реврайтинг, обеспечивать быструю доставку событий с сервера на клиенты, для всего этого, и многих других задач, используются отдельные библиотеки (модули). Разные модули написаны разными разработчиками, сложно стыкуются, конфликтуют. В общем, мы решили, весь этот набор обязательного функционала, необходимого практически в каждом веб-приложении, объединить в один сервер приложений и повысить, таким образом, связанность кода, сделать ядро сервера приложений монолитным и более согласованным, чем решения, собранные из отдельных библиотек. Проект Impress уже анонсировался как прототип, а сейчас предоставляет весь необходимый арсенал для быстрой разработки приложений, что протестировано на десятке живых проектов. Impress значительно отличается от другой широко распространенной платформы так же, как импрессионизм отличается от экспрессионизма, то есть, производит целостное, хорошо продуманное эстетическое впечатление, в противоположность внезапному выбросу эмоций. Но мы, не вовлекаясь в критику чужого кода, перейдем к демонстрации конструктивных особенностей Impress.
Читать дальше →

Pixel perfect верстка

Reading time2 min
Views116K
Я веб-разработчик с опытом работы 2 года, работаю в firefox с firebug. Верстаю по технике Pixel-perfect. Почему?

  • Быстрее создается страница, чем когда бегаешь между браузером и PSD.
  • Гораздо качественнее получается результат, от чего и ваш клиент в восторге аж придраться не к чему.
  • Банально удобнее видеть макет и тут же позиционировать элемент под ним.

Раньше я размещал изображение Html кодом. Но как неудобно выделять элемент в firebug-е если поверх всего лежит изображение. Приходилось каждый раз лезть в стили и прятать картинку. Pixel-perfect plugin для firefox почему-то не работал.
Тогда появилась идея создать скрипт, который будет прятать по short-cut(hotkey)-ю изображение. И пока создавал скрипт появлялись новые идеи для модернизации удобства использования. В итоге получился: Pixp

После создания я смог его протестировать только на одном живом проекте, так что возможны баги, ну и так как это мой первый публичный проект для всех, прошу строго не судить. Однако прошло уже не мало времени как я ушел в back end, а мои друзья верстальщики продолжают работать используя данный скрипт.
Лично для меня процесс верстки стал гораздо удобнее. И доказывать клиенту что этот элемент расположен правильно, теперь не составляет труда. Так как ваш клиент также может использовать скрипт, не устанавливая доп. ПО.
Читать дальше →

Linux pipes tips & tricks

Reading time8 min
Views195K

Pipe — что это?


Pipe (конвеер) – это однонаправленный канал межпроцессного взаимодействия. Термин был придуман Дугласом Макилроем для командной оболочки Unix и назван по аналогии с трубопроводом. Конвейеры чаще всего используются в shell-скриптах для связи нескольких команд путем перенаправления вывода одной команды (stdout) на вход (stdin) последующей, используя символ конвеера ‘|’:
cmd1 | cmd2 | .... | cmdN

Например:
$ grep -i “error” ./log | wc -l
43

grep выполняет регистронезависимый поиск строки “error” в файле log, но результат поиска не выводится на экран, а перенаправляется на вход (stdin) команды wc, которая в свою очередь выполняет подсчет количества строк.

Логика


Конвеер обеспечивает асинхронное выполнение команд с использованием буферизации ввода/вывода. Таким образом все команды в конвейере работают параллельно, каждая в своем процессе.

Размер буфера начиная с ядра версии 2.6.11 составляет 65536 байт (64Кб) и равен странице памяти в более старых ядрах. При попытке чтения из пустого буфера процесс чтения блокируется до появления данных. Аналогично при попытке записи в заполненный буфер процесс записи будет заблокирован до освобождения необходимого места.
Важно, что несмотря на то, что конвейер оперирует файловыми дескрипторами потоков ввода/вывода, все операции выполняются в памяти, без нагрузки на диск.
Вся информация, приведенная ниже, касается оболочки bash-4.2 и ядра 3.10.10.

Простой дебаг


Утилита strace позволяет отследить системные вызовы в процессе выполнения программы:
$ strace -f bash -c ‘/bin/echo foo | grep bar’
....
getpid() = 13726                   <– PID основного процесса
...
pipe([3,  4])                       <– системный вызов для создания конвеера
....
clone(....) = 13727                <– подпроцесс для первой команды конвеера (echo)
...
[pid 13727] execve("/bin/echo",  ["/bin/echo",  "foo"],  [/* 61 vars */] 
.....
[pid 13726] clone(....) = 13728    <– подпроцесс для второй команды (grep) создается так же основным процессом
...
[pid 13728] stat("/home/aikikode/bin/grep",   
...
Видно, что для создания конвеера используется системный вызов pipe(), а также, что оба процесса выполняются параллельно в разных потоках.
Читать дальше →

Как находить и устранять утечки памяти на примере Яндекс.Почты

Reading time8 min
Views67K
На первый поверхностный взгляд, слова JavaScript и «утечка памяти» рядом стоять не могут. Настоящих утечек памяти в JS, конечно, не может быть, потому что процесс сборки мусора происходит автоматически и не может контролироваться из нашего кода. Выделить память под объект и забыть освободить невозможно. Но могут быть ситуации, связанные с ошибками в логике работы приложения, которые приводят к утечкам памяти другого рода. Например, забиндили обработчик, в котором что-то делаем с методами общего объекта и забыли его анбиндить. Или же посылаем письмо с большим телом и не очищаем тело даже после отправки.

image

Мы в Яндекс.Почте, сложном и массовом проекте, накопили заметный опыт в поиске и устранении таких утечек, и хотим им поделиться.
Итак, больше подробностей

Google glass с точки зрения разработчика

Reading time4 min
Views42K
Google Glass
Недавно я получил доступ к долгожданным очкам Google Glass и начал писать для них свое приложение.
О Glass я знал только то, что это — устройство на Android, к которому нужно подключиться через Android Debug Bridge и запускать свои программы.

Это оказалось не так!

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

TeamLab PM для iOS как старт серии мобильных приложений для бизнеса

Reading time5 min
Views5.2K
Растущее количество обладателей смартфонов все больше порождает спрос на мобильные приложения, в том числе и уже существующих программных продуктов. Вот и пользователи облачного сервиса для бизнеса TeamLab Office все чаще стали спрашивать про выпуск приложения, а вопросов про обновления уже существующей мобильной версии стало все меньше. Действительно, с такими преимуществами, как доступ к нужной информации в одно касание вместо открытия браузера, и навигация, приспособленная к конкретному мобильному устройству, трудно поспорить. Поскольку программа включает в себя сразу целый ряд функциональных модулей, для удобства использования и «легковесности» было принято решение сделать отдельные приложения для «Проектов», CRM и «Документов». Сегодня рассказываем о первом выполненном шаге — мобильном приложении TeamLab PM для устройств на iOS. Как велась разработка, какой функционал доступен и какие следующие приложения в планах на выпуск можно узнать под катом.
Читать дальше →

Идеальный смартфон. Обзор Moto X

Reading time4 min
Views162K


Доброго дня, уважаемые читатели Хабрахабр. Мне посчастливилось целую неделю тестировать Moto X, без зазрения совести хочу сказать, что это самый лучший Android-смартфон, который мне приходилось использовать и я всерьез задумываюсь о его покупке. Полный обзор с тестами под катом.

Осторожно, очень много картинок и видео
Читать дальше →

Переводим в код 5 действительно полезных шаблонов адаптивной разметки

Reading time6 min
Views33K
Приветствую всех.

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

Летний переполох: ищем облачную CRM

Reading time8 min
Views85K
В начале лета ко мне обратился знакомый владелец небольшого бизнеса и попросил о том, «сам не знаю о чем, ну, в общем такой электронный менеджер». Несмотря на растущий бизнес, он долго сокрушался и из его рассказа стало понятно, что мониторы менеджеров сплошь заклеены стикерами-напоминалками, таблицы MS Excel неудобны для ведения клиентов, сделки стали срываться хотя бы потому, что о некоторых из них забывали. После небольшого опроса выяснилось, что к старту осеннего бума продаж и клиентов он хочет приобрести программу, которую «раз и открыл», занес клиента, закрыл, проконтролировал, прикрепил документ, проверил оплату, поздравил всех с завершением сделки. Ну и, само собой, недорого и быстро. Дополнительным требованием была возможность доступа сотрудников с их iPad, устройств на Android и с домашних терминалов. Ответ для него возник незамедлительно: CRM, причем лучше в облаке, благо что бизнес не предъявляет особых требований к безопасности.

Он кивнул, сказал, что слышал, попросил подобрать и оставил меня наедине с добрым десятком сайтов и закачанных с них демо-версий. В итоге CRM была выбрана и куплена, а для хабрасообщества родился пост, который, возможно, поможет менеджерам при необходимости сделать выбор и избавиться от суетливых записок, блокнотов, стикеров и проч…

Конечно, абсолютно все CRM рассмотреть невозможно, выбор пал на те, что на слуху, на первой странице поиска или в Яндекс.Директе.
image
Читать дальше →

Простой упаковщик CommonJS модулей для использования в браузере — clinch

Reading time2 min
Views4.3K
Если вы пользуетесь stitch и вам его маловато, а browserify показался сложноват по настройкам — попробуйте clinch.

Что в коробке:
  • простой API
  • поддержка .js, .json, .coffee, .eco, .jade
  • develop-mode ready — легко встроить в express, умный кеш с инвалидацией
  • малый overhead на bundle ~ 40 SLOC
  • простой механизм подмены модулей и имитации глобальных объектов

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

Лайфхаки от TeamLab Office 7.4

Reading time3 min
Views7.5K
В этот раз обновления TeamLab Office можно объединить темой «трать меньше — зарабатывай больше». Сегодня мы расскажем вам, как можно вести работу с контрагентами в TeamLab Office без дополнительной платы за пользователей, а также о том, как можно заработать на рекомендации сервиса Интернет-аудитории.

Лайфхак №1 Как сэкономить на плате за временных пользователей?

Судя по собранным нами отзывам, пользователям TeamLab Office часто приходится сталкиваться с ситуацией предоставления временного доступа к своим проектам или документам, особенно в случае работы с заказчиками, субподрядчиками или аудиторами. Добавление подобной категории участников портала в качестве активных может привести к изменению тарифного плана, а постоянно активировать/деактивировать таких пользователей неудобно.

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

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

Своя игра с JavaScript и Canvas

Reading time9 min
Views106K
imageНе так давно мне стало любопытно, насколько сносно современные браузеры поддерживают HTML5 и я не нашел лучшего
способа, чем написать простейший 2D платформер. Помимо удовольствия от разработки игрушки и улучшения навыков в использовании JavaScript, в ходе развлечения кропотливой работы был накоплен определенный опыт и эмпирическим путем были найдены основные грабли, на многие из которых мне пришлось наступить. В этой статье я попробую кратко и с примерами резюмировать то, что вынес для себя из проделанной работы. Желающих создать свое высокопроизводительное JavaScript приложение, эффективно работающее с графикой, прошу под кат.
Читать дальше →

Как мы автоматизировали тестирование приложений на canvas

Reading time9 min
Views11K
Мои коллеги уже писали о разработке онлайн редакторов TeamLab на canvas. Сегодня посмотрим на рабочий процесс глазами специалистов по тестированию, ведь не только продукт с точки зрения разработчиков был инновационен благодаря выбранной технологии, но и задача проверки качества продукта оказалась новой, ранее никем еще не решаемой.
Читать дальше →

27+ ресурсов для онлайн-обучения

Reading time5 min
Views971K

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

Статья содержит перечень ресурсов для онлайн-обучения, представляющих интерес преимущественно для программистов.

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

О мотивации в ИТ

Reading time5 min
Views154K
В этой статье я затрону вопрос мотивации в ИТ, причем с ракурса, который вряд ли можно встретить в классических трудах по экономике. Все, описанное здесь, является моим личным мнением, основанном на работе в различных ИТ компаниях и общении с различными ИТ специалистами.

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

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity