Search
Write a publication
Pull to refresh
16
0
Алексей @norlin

software engineer | game developer

Send message

Техническое задание на сайт

Reading time11 min
Views699K
UPD: Продолжение статьи с примером техзадания

Не так давно на хабре были две статьи (Согласно техническому заданию и А зачем мне ТЗ? Я и так знаю!) посвященные техническим заданиям. У меня обе статьи вызвали, мягко говоря, недоумение, в особенности статья «Согласно техническому заданию». На мой взгляд, это вообще вредная статья, которая приводит к неверному понимаю сути ТЗ. В связи с этим хочу выразить свой взгляд на этот вопрос. Не буду говорить обо всех тех. заданиях, слишком широка тема, но думаю смогу рассказать о ТЗ на сайт.

То описание технического задания, о котором речь пойдет ниже, не является пересказом ГОСТа, но скорее является его творческой переработкой, хорошо сдобренной горьким опытом. Описанный ниже подход к ТЗ не охватывает все аспекты сайтостроения, но задает общее направление.

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

1. Обоснование необходимости ТЗ


А зачем вообще нужно ТЗ на сайт? Заказчик говорит: «Нужен следующий сайт: каталог товаров, корзина, форма заказа, доставка, мы на карте, о нас, обратная связь». Что не ясно? Ничего необычного, всё обыденно и рутинно.

Разработчик отчетливо представляет, что нужно сделать, а сделать, в его понимании нужно вот так:



Далее много букв

Вам не страшно открывать редактор?

Reading time13 min
Views3.2K
В какой-то момент я стал замечать, что пишу более качественный: оптимальный, логичный и читаемый код, но пишу его медленно. По крайней мере, куда медленнее, чем лет 15 назад. Да, на старый код без слёз не взглянешь: всё можно сделать оптимальнее и, по крайней мере, читабельнее. Но код был написан быстро.

Проблема в контроле. Я стал жестче и глубже контролировать код и… стал тратить на этот контроль слишком много ресурсов.

Основной принцип прост. Если контролю подлежит 10-20% случаев, то на контроль надо тратить… 0% ресурсов. Баги и переписывания всё равно будут. Но лучше разделить кодирование и отладку и на время кодирования об ошибках вообще забыть.
Читать дальше →

«Лапша» из callback-ов — будьте проще

Reading time3 min
Views13K
По следам недавних топиков, а также постоянных рассказов в стиле «мой стартап не взлетел, потому что его зохавала лапша из callback-ов».

Как раз недавно я закончил небольшой проект (ссылку не даю, чтобы не заподозрили — кому надо см. профиль), полностью и на всех этапах написанном только на JS, и притом полностью асинхронный. Разумеется, я столкнулся с пресловутой проблемой «лапши». И, вы не поверите, совершенно спокойно решил её без всяких там фреймворков и хитрых приемов.

Итак, допустим, у нас есть задача: асинхронно выбрать из базы количество книг, потом асинхронно же выбрать из базы нужную пачку книг, потом асинхронно же выбрать из базы метаданные по книгам, а потом свести всё это в один dataset и отрендерить шаблон. Как это обычно выглядит?

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

Многокритериальный выбор альтернатив с использованием правил нечеткого вывода. Часть 1/3: Теория

Reading time2 min
Views11K
Нечеткая логика — математические основы
Нечёткое множество

Описание метода
Пусть имеется множество элементов U, а A – его нечеткое подмножество, степень принадлежности его элементов определяется значением X, принимающим значение из интервала [0;1].
Таким образом, объект можно описать набором критериев(параметров) X(1), X(2) … X(n), принадлежащих соответствующим базовым множествам U(1), U(2) … U(n). Совокупность критериев с соответствующими значениями характеризует приемлимость S данного объекта относительно поставленной задачи.
Читать дальше →

MouseTrack открыт и опубликован на code.google.com

Reading time1 min
Views2.6K

Здравствуйте!


Летом этого года я опубликовал статью «Mouse Track — виртуальность становится реальнее (Статья №1)». Для тех, кому лень идти по ссылке и вникать: это перчатка-мышь, которую можно использовать вместо мышки. Водите рукой в пространстве — перемещается курсор на экране. Сгибаете пальцы/наклоняете кисть — выполняются команды, «повешенные» на каждый палец и наклон кисти.

Дело было в конце лета и дело шло к универу. Поэтому изготовление новой перчатки заняло приличный отрезок времени. Но все-таки я готов представить свой проект в завершенном состоянии и в открытом виде.



image

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

Что нового?


  • Уменьшена плата перчатки
  • Дизайн перчатки существенно изменен
  • Доработана программа MouseTrack (добавлены «горячие клавиши» клавиатуры — быстрое вкл/выкл акселерометра, светодиода и клавиш перчатки + небольшие косметические изменения)

Жду от вас замечания и объективную критику.
Все пожелания и баги по работе программы и прошивки сообщайте на багтрекере проекта.

Статья №3

DAFGroup, как мы заработали первый миллион

Reading time8 min
Views2.2K
DAFGroup logoМногие школьники осенью пишут сочинение на тему «Как я провёл лето». Вот и я, хоть давно не школьник, решил написать статью из серии «Как это было». Из нее узнаете как мы, организовав вместе с друзьями и родственниками компанию DAFGroup и заработали миллион на продаже своего программного обеспечения.

Случилось так, что одним холодным мартовским утром 2008 года, я совершил свою первую сделку на бирже ММВБ. Она оказалась удачной, и мой счёт увеличился на 20 рублей буквально за 5 минут. Ничего себе, сказал я,
Читать дальше →

Draw a Stickman: игра на canvas/js/svg

Reading time1 min
Views5.3K


Draw a Stickman — впечатляющий пример того, какую увлекательную игру можно сделать с помощью JavaScript-библиотеки raphael.js для генерации SVG. Игра особенно подходит для планшетов, в ней совершенно не используется Flash.

Что такое «асинхронная событийная модель», и почему сейчас она «в моде»

Reading time15 min
Views54K
Сейчас в тематических интернетах модно слово «Node.js». В этой небольшой статье мы попробуем понять («на пальцах»), откуда всё это взялось, и чем такая архитектура отличается от привычной нам архитектуры с «синхронным» и «блокирующим» вводом/выводом в коде приложения (обычный сайт на PHP + MySQL), запущенного на сервере приложений, работающем по схеме «по потоку (или процессу) на запрос» (классический Apache Web Server).
Читать дальше →

NodObjC — мост между Objective-C и Node.JS

Reading time2 min
Views1.9K
Я просто хотел бы шокировать вас моими последними достижениями в области хакинга: я создал двунаправленный мост к библиотекам выполнения Objective-C из среды Node. Эта сумасшедшая штука позволяет делать замечательные вещи, например, писать родные приложения для MacOS X и iOS полностью на Node и JavaScript!

Я создал высокоуровневую библиотеку, которую назвал NodObjC, и она предлагает лёгкий для использования API, непосредственно формируемый из API библиотек Objective-C. Вот пример из README:
var $ = require('NodObjC');

// First you need to "import" the Framework
$.import('Foundation');

// Setup the recommended NSAutoreleasePool instance
var pool = $.NSAutoreleasePool('alloc')('init');

// NSStrings and JavaScript Strings are distinct objects, you must create an
// NSString from a JS String when an Objective-C class method requires one.
var string = $.NSString('stringWithUTF8String', 'Hello Objective-C World!');

// Print out the contents (calling [string description])
console.log('%s', string);
//   → Prints "Hello Objective-C World!"
pool('drain');
Читать дальше →

Google продвигает HTML5 как игровую платформу

Reading time1 min
Views1.9K
Разработчики выпускают всё больше игр на HTML5 вполне достойного качества (достаточно упомянуть, например, Monster Dash, Angry Birds или SONAR), и это только начало. Настоящий прорыв ожидается, когда выйдет браузер Chrome 14 с Native Client, что откроет дорогу для браузерных игр совершенно нового качества, с 3D и прочими наворотами.

Некоторые уже всерьёз смотрят на HTML5 как на полноценную игровую платформу. Специально для них организована конференция New Game — судя по всему, первая в мире конференция разработчиков HTML5-игр. Она пройдёт 1-2 ноября 2011 г. в Сан-Франциско, регистрация уже открыта. Ничего удивительного, что одним из главных спонсоров конференции стала компания Google. Она также отправит туда нескольких докладчиков, которые расскажут о WebGL. Кроме Google, доклады об использовании и оптимизации WebGL, Canvas и JavaScript прочитают представители Mozilla, Opera, Bocoup, GameSalad, Moblyng и другие.

via Google Code

Читаем QR код

Reading time5 min
Views1.1M
Иногда возникают такие ситуации, когда нужно прочитать QR код, а смартфона под рукой нет. Что же делать? В голову приходит лишь попробовать прочитать вручную. Если кто-нибудь сталкивался с такими ситуациями или кому просто интересно как же читается QR код машинами, то данная статья поможет вам разобраться в этой проблеме.

В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.

Иллюстраций: 14, символов: 8 510.
Читать дальше →

Системы позиционирования внутри зданий для мобильных сервисов

Reading time4 min
Views12K
Согласно данным Strategy Analytics, в настоящий момент пользователи мобильных приложений, находящиеся внутри зданий, создают до 80% мобильного трафика. В помещениях привычный нам GPS не работает. На фоне большого интереса пользователей и компаний к геолокационным сервисам происходит бурный рост стартапов, пытающихся решить задачу позиционирования внутри зданий (Indoor Location).

Кому это нужно и какие мобильные приложения выиграют от появления новой технологии?
Читать дальше →

Вирусный анализ на примере — исследуем Trojan-Downloader.Win32.Zanoza.ab

Reading time5 min
Views26K
Вы когда-нибудь задумывались о том, какова судьба вируса, пойманного антивирусными компаниями? О том, что происходит с ним ещё до добавления сигнатур в базу? А конкретнее, о вирусном анализе. Может показаться, что самому заниматься вирусным анализом сложно, ненужно и опасно, но на самом деле это совершенно не так. Лишние умения никогда не повредят, да и полезно, иногда, посмотреть перед запуском, что из себя представляет скачанный с интернета исполняемый файл. Для начала работы сгодятся любые знания ассемблера, отладчик с дизассемблером и виртуальная машина на выбор.

Образцы вирусов для анализа можно, конечно, поискать самостоятельно в интернете, но мы с Вами для начала пойдём другим путём. Огромную коллекцию уже готовых для анализа вирусов можно взять на сайте vx.netlux.org. Первым приглянувшимся мне вирусом стал Trojan-Downloader.Win32.Zanoza.ab. Его подробнейшим анализом мы сейчас и займёмся. Кстати, неплохие описания вирусов можно посмотреть на сайте securelist.com.

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

Events bubbling и events capturing

Reading time5 min
Views65K
intro
Представьте, что на странице есть два блока, и один вложен в другой, как это показано на рисунке. В разметке страницы это выглядит так:
   <div id="block_outer">
      <div id="block_inner"></div>
   </div>

А теперь представьте, что к блоку #block_outer привязано событие onClickOuter, а к блоку #block_inner, соответственно, событие onClickInner. И ответьте на вопрос, как сделать так, чтобы при клике на блок #block_inner, событие onClickOuter не вызывалось? И будет ли оно вообще вызвано? И если будет, то в каком порядке события будут вызываться? И знаете ли вы, как работает метод jQuery.live или подобные в других библиотеках (events delegation в ExtJS, например)?
Если я хоть немного заинтересовал, добро пожаловать под кат.

Создание операционной системы на базе ядра linux. С нуля

Reading time7 min
Views214K
Рано или поздно каждый пользователь Линукса задумывается над созданием собственного дистрибутива. Некоторые аргументируют это тем, что можно «все настроить под себя». Другие сетуют на то, что среди уже представленных дистрибутивов в Ветке нет идеального. А у них, якобы, есть суперконцептуальные идеи для собственной системы. Зачем я всю эту психологию затеял? Для того, чтобы сразу перекрыть кислород играющимся с Линуксом новичкам, которым делать нечего. Если уж задумались над созданием ОС, думайте до конца. Итак,

Я хочу создать ОС на базе Linux.
Сразу предупреждаю: был бы XVIII век, всех тех, кто для основы своей будущей системы выбирает другой развитый дистрибутив (и, не дай Бог, популярный...) ждала бы виселица. Пост именно про создание системы с нуля, а значит, всякие Slax и Linux Mint мы трогать не будем.
Читать дальше →

Обращение Anonymous к блоку НАТО

Reading time4 min
Views8.1K
В качестве ответа на отчёт НАТО об угрозе «хактивизма» группировка Anonymous опубликовала открытое письмо (сайт сейчас под DDoS-атакой, так что см. кэш Google). Публикуем перевод этого документа.

Приветствуем вас, члены НАТО. Мы — Anonymous.

В своей недавней публикации вы представили Anonymous как угрозу «государству и народу». Вы также заявили, что секретность якобы является «неизбежным злом» и что прозрачность — не всегда правильный способ развития.

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

Эмулятор компьютера с linux на JavaScript

Reading time2 min
Views46K
Никакой серверной части. Только JS: полноценный эмулятор компьютера с линуксом на борту.

bellard.org/jslinux
(внимание, только хром и FF4)

Я долго с ним игрался — это не имитация, линукс ведёт себя как настоящий линукс — компилированные программы работают, ошибки в них вызывают segmentation fault, повреждение корневой файловой системы вызывает бурю возмущения в dmesg и т.д.
Эмулятор PC на JS с линуксом на борту

dd показывает при работе с памятью более чем приличную производительность — более 40 мб/с (не забываем, что это эмулятор, и что это JS в вашем браузере!).

Я никогда не думал, что мы доживём до подобного.

… А теперь начинается оргия:

* С использованием локального хранилища мы можем организовать диски (каждый key-value соответствует одному сектору).
* С использованием web-socket мы можем создать паравиртуализированный драйвер сети с выходом на железный машрутизатор и получить нормальную сеть.
* С использованием существующих технологий (NUMA, DRBD, corosync) можно организовать вычислительный кластер из браузеров.

(Кстати, показывать консоль в этом случае не обязательно — вы запускаете виртуальную машину у клиента в бэкграунде, виртуальная машина присоединяется к кластеру, начинает считать, по её аварийному завершению — закрытию браузера — кластер автоматически переконфигурируется).

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

Никто не мешает создать паравиртуализированный драйвер видео с помощью canvas, у вас есть webGL, для которого можно написать свой вариант cuda и получить довольно мощную акселерацию вычислений…

Ну и финал — запуск хрома внутри эмулируемой виртуальной машины.

Итак, эмуляция дошла до браузеров…

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity