Pull to refresh
  • by relevance
  • by date
  • by rating

Feature Driven Development для веб-разработчиков

Website development *
Лет 10 назад веб-проекты по большей части были статическими, а технологический процесс порой — прост до безобразия. Теперь грань между веб-приложениями и настольными приложениями стирается, функциональная сложность веб-проектов растет. Это диктует новые требования к веб-разработке. Обычная ситуация нынче, в эпоху «удиви меня 2.0», — когда проект долгосрочный, в нем задействовано множество специалистов (и не специалистов также), щедро орошающих многострадальный product backlog новыми идеями и целями, как до начала разработки, так и после. Как вы понимаете, цели и истории мутируют, а вместе с ними и задачи. Предварительная оценка по времени теряет свою целесообразность. И т.д. и т.п. Очевидно, нужна специальная методология разработки. Можно попробовать приобщиться к Rational Unified Process (RUP) или Process Mentor. Однако, не стоит. Среди столь популярных ныне Agile методик имеется то, что нам надо — Feature Driven Development (FDD).
Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Views 10K
Comments 11

Советы по сетевой оптимизации веб-сайта

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

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

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

Быстрая загрузка страницы зависит как от оптимизации клиентского кода HTML / CSS / JavaScript, так и от работы сервера.
Читать дальше →
Total votes 5: ↑1 and ↓4 -3
Views 36K
Comments 0

Автоматическая сборка javascript/coffeescript проекта

Website development *Ruby *Programming *CoffeeScript *
Sandbox
При разработке хоть сколько-нибудь большого javascript проекта сразу понимаешь, что писать весь код в одном-единственном файле нельзя. После этого код разносится по нескольким файлам и директориям и пишется простой скрипт для того, чтобы все эти файлы можно было легко объединить в один большой production файл. Спустя какое-то время начинаешь замечать, что чем дальше, тем труднее становится следить за зависимостями между файлами, да и весь разработанный механизм больше похож на костыль. И тут приходить озарение, что неплохо было бы посмотреть, какие существуют решения этой проблемы.

К системе управления сборкой проекта выдвигаются следующие требования:
  1. Компиляция из coffescript в javascript. Если в файле coffeescript содержится ошибка, то в консоли должны отобразиться название файла и сообщение об ошибке.
  2. Сборка проекта в один javascript файл должна производится с учетом зависимостей.
  3. Возможность собрать все приложение целиком в один файл в нескольких видах (с комментариями, минимизированный). При этом само приложение может состоять из нескольких модулей.
  4. Сборка тестовых файлов и их выполнение в консоли (да, разрабатываем для веба, при этом не притрагиваемся к мышке и вообще не вылазим из любимого vim'a).
  5. Конечно же все это должно быть удобно в использовании.

В данной статье я не буду затрагивать вопрос тестирования, а рассмотрю вариант системы управления сборкой javascript/coffescript проекта (и саму структуру проекта) с использованием rake и Rake::Pipeline (git).
Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Views 5.4K
Comments 19

Исполнение команд операционной системы на сервере Caché

InterSystems corporate blog Website development *
Tutorial
По мотивам статьи в Developer Connection написал свою реализациию класса для вызова команд операционной системы сервера, где установлена Caché или Ensemble.
Класс может пригодиться, когда нужно из Caché что-то сделать на хостовой ОС: распорядиться файлами бэкапов, настроить работу с системой контроля версий и другие полезные действия.
Класс позволяет выполнить команду на любой хостовой ОС и получить ответ в глобал или локальную переменную.
Подробности под катом
Total votes 6: ↑2 and ↓4 -2
Views 1.8K
Comments 5

Huginn: агенты в стиле Yahoo Pipes и IFTTT на своём сервере

Website development *Programming *Ruby on Rails *


Huginn — система программирования агентов и выполнения разнообразных задач в онлайне, сделанная по образцу Yahoo Pipes и IFTTT, но только для установки на собственный сервер. В Huginn мы сами контролируем собственные данные и не зависим от ограничений третьей стороны.
Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Views 6.3K
Comments 3

Пару слов о конвейерах в FPGA

High performance *FPGA *
Всем привет!

Многим известно, что во всех современных процессорах есть вычислительный конвейер. Бытует заблуждение, что конвейер — это какая-то фишка процессоров, а в чипах для других приложений (к примеру, сетевых) этого нет. На самом деле конвейеризация (или pipelining) — это ключ к созданию высокопроизводительных приложений на базе ASIC/FPGA.

Очень часто для достижения высокой производительности выбирают такие алгоритмы, которые легко конвейеризируются в чипе. Если интересно узнать о низкоуровневых подробностях, добро пожаловать под кат!
Читать дальше →
Total votes 46: ↑46 and ↓0 +46
Views 42K
Comments 54

Введение в функциональное программирование на Python

Python *Programming *Functional Programming *
Translation
Рассуждая о функциональном программировании, люди часто начинают выдавать кучу «функциональных» характеристик. Неизменяемые данные, функции первого класса и оптимизация хвостовой рекурсии. Это свойства языка, помогающие писать функциональные программы. Они упоминают мапирование, каррирование и использование функций высшего порядка. Это приёмы программирования, использующиеся для написания функционального кода. Они упоминают распараллеливание, ленивые вычисления и детерменизм. Это преимущества функциональных программ.

Забейте. Функциональный код отличается одним свойством: отсутствием побочных эффектов. Он не полагается на данные вне текущей функции, и не меняет данные, находящиеся вне функции. Все остальные «свойства» можно вывести из этого.

Нефункциональная функция:

a = 0
def increment1():
    global a
    a += 1


Функциональная функция:

def increment2(a):
    return a + 1


Вместо проходов по списку используйте map и reduce
Читать дальше →
Total votes 33: ↑30 and ↓3 +27
Views 134K
Comments 51

Производительность приложений на основе PostgreSQL: явные и скрытые задержки

PostgreSQL *
Translation
Если вы пытаетесь оптимизировать производительность Вашего основанного на PostgreSQL приложения, Вы наверняка пользуетесь базовыми инструментами: EXPLAIN (BUFFERS, ANALYZE), pg_stat_statements, auto_explain, log_statement_min_duration, и т.д.

Возможно Вы смотрите в сторону конфликтов блокировок с помощью log_lock_waits, следите за поведением ваших контрольных точек и т.д.

Но задумывалились ли Вы о задержках в сети? Игроки знают о ней, но имеет ли это отношение к Вашему серверу с приложением?

image

Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Views 12K
Comments 3

Как создать современную CI/CD-цепочку с помощью бесплатных облачных сервисов

Southbridge corporate blog Website development *IT systems testing *Programming *
Translation



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


Такой способ создания программного обеспечения используется в процессах Непрерывной интеграции (Continuous Integration) и Непрерывного развертывания (Continuous Deployment), или CI/CD-цепочке. В этой статье мы пройдем по всем шагам настройки такой цепочки, используя для ее построения бесплатные облачные сервисы.

Читать дальше →
Total votes 41: ↑38 and ↓3 +35
Views 59K
Comments 18

Олег Ненашев, Кирилл Толкачёв и Александр Тарасов про Groovy DSL и Pipeline в Jenkins на jug.msk.ru

JUG Ru Group corporate blog Java *Groovy & Grails *
27 июля 2017 года прошла совместная встреча сообществ jug.msk.ru и Jenkins MSK. На встрече с докладами о Jenkins выступили Олег Ненашев («Groovy DSL в Jenkins и Pipeline. Как оно работает?») и Кирилл Толкачёв с Александром Тарасовым («DSL много не бывает. Мигрируем со Scripted Pipeline на Declarative (Live)»).


Total votes 9: ↑9 and ↓0 +9
Views 5.5K
Comments 6

Golang Moscow: встреча в Avito

Авито corporate blog High performance *Website development *System Programming *Go *

Привет, меня зовут Илья, я работаю в Avito и хочу позвать Go-разработчиков на митап, который будет проходить в эту субботу, 14-го октября, у нас в офисе при поддержке сообщества Golang Moscow.


В этот раз главная тема митапа — пристальный разбор привычных стандартных средств Go: обсудим нюансы работы с io.Reader/io.Writer, послушаем анализ эволюции Garbage Collector от Go 1.5 до 1.9, узнаем, как можно расширять database/sql на примере работы с ClickHouse, похоливарим про кодогенерацию. Подробности по докладам и ссылка на TimePad — под катом.


Total votes 29: ↑25 and ↓4 +21
Views 4.8K
Comments 9

Биоинформатический пайплайн с использованием Docker

Open source *
Sandbox
В этой статье я хочу поделиться опытом разработки пайплайна с использованием Docker для анализа биомедицинских данных. Наверное, одним читателям будет интересен сам биоинформатический пайплайн, а кому-то — использование Docker, поэтому разобьем статью на две части.
Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Views 6.2K
Comments 3

Управление очередями в Laravel

PHP *Programming *ООP *Concurrent computing *Laravel *
image

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

Чтобы из одного процесса создать задачу для следующей стадии обработки, мы просто вызывали в конце обработки dispatch(), примерно так:
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Views 14K
Comments 14

Давайте обрабатывать звук на Go

Open source *Programming *Go *Sound
Sandbox
Дисклеймер: Я не рассматриваю какие-либо алгоритмы и API для работы со звуком и распознаванием речи. Эта статья о проблемах при работе с аудио и об их решении с помощью Go.

gopher


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


При чём тут конвейер, к тому же из разных технологий и зачем ещё один фреймворк? Сейчас разберёмся.

Читать дальше →
Total votes 29: ↑25 and ↓4 +21
Views 11K
Comments 12

Middleware и возможности Pipeline в Laravel

PHP *Laravel *
Sandbox
Tutorial


Laravel — это поистине большая и сложная система, которая старается решить большинство бытовых задач веб разработчика максимально элегантным способом и собрать в себе как можно больше инструментов и, что очень важно — с как можно более человеческим интерфейсом.

И сегодня речь пойдет об одном из таких инструментов, а точнее о его использовании и реализации со стороны программиста. Отсутствие полноценной документации, а также отсутствие русскоязычных статей и очень малое количество статей иностранных — подтолкнуло меня к решению раскрыть некую завесу тайны об этой интересной возможности фреймворка и выбору этой темы в качестве моей первой статьи на Хабре.
Читать дальше →
Total votes 30: ↑30 and ↓0 +30
Views 17K
Comments 9

Событийный автомат на страже жизненного цикла

Open source *Programming *Designing and refactoring *Go *Sound
Дисклеймер: Эта статья описывает неочевидное решение неочевидной проблемы. Прежде чем бросаться яйцами применять его на практике, рекомендую дочитать статью до конца и дважды подумать.

but_why


Всем привет! При работе с кодом, нам часто приходится иметь дело с состоянием. Один из таких случаев — жизненный цикл объектов. Управление объектом с несколькими возможными состояниями может быть весьма нетривиальной задачей. Добавьте сюда асинхронное исполнение и задача усложняется на порядок. Есть эффективное и естественное решение. В этой статье я расскажу о событийном автомате и как его реализовать в Go.

Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Views 4.4K
Comments 0

Кто ответит в agile за качество разработки сложных проектов, или методология Quality Gates

Сбер corporate blog Development Management *Project management *Agile *DevOps *
Сегодня мы наблюдаем, как во всем мире постепенно отмирает waterfall-модель разработки. Ее не любят за тяжеловесность и плохую реакцию на изменения. Это напрямую влияет на актуальность продукта и увеличивает ТТМ (time-to-market), выливаясь в дополнительные затраты. Разработчики перестраиваются на рельсы agile, и мы здесь не исключение.

Методология agile изначально создавалась для маленьких команд, которые делают продукт под ключ в режиме end-to-end и сами отвечают за его качество. Но как быть, если разрабатываешь высококритичные банковские системы, над которыми трудятся десятки agile-команд? Как достичь той уверенности в продукте, которую дает долгое, исчерпывающее тестирование как в waterfall? В этом посте мы поделимся своим решением этого вопроса.


Читать дальше →
Total votes 13: ↑10 and ↓3 +7
Views 14K
Comments 7

Интеграция Cake и TeamCity

Programming *C# *
Translation

Cake — замечательный инструмент для создания конвеера доставки для ваших приложений. Я люблю его, поскольку он позволяет мне писать этот конвеер на языке C#, который я знаю хорошо. Прекрасным свойством Cake, PSake и дургих подобных фреймворков является то, что они создают скрипт, который можно выполнять как на локальной машине разработчика, так и на CI серверах. Здесь я объясню, как организовать взаимодействие скрипта Cake с TeamCity.

Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Views 2.8K
Comments 2

RedisPipe — вместе веселее

Joom corporate blog High performance *Open source *Programming *Go *

Когда я думаю о том, как работают наивные RPC клиенты, мне вспоминается анекдот:


Суд.
— Подсудимый, за что вы убили женщину?
— Еду я в автобусе, подходит кондуктор к женщине, с требованием купить билет. Женщина открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, достала кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку, закрыла сумочку, открыла кошелек, достала деньги, открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, положила туда кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку.
— И что?
— Контролер ей дал билет. Женщина открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, достала кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку, закрыла сумочку, открыла кошелек, положила туда билет, закрыла кошелек, открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, положила туда кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку, закрыла сумочку.
«Возьмите сдачу», раздался голос контролера. Женщина… открыла сумочку…
— Да убить её мало, — не выдерживает прокурор.
— Так я это и сделал.
© С.Альтов

А если серьёзно
Total votes 32: ↑30 and ↓2 +28
Views 5.1K
Comments 7