Pull to refresh
3
0
Марат @javascript

User

Send message
Взгляните на исходный код примера приложения, и решите для себя.

Взглянул на исходный код примера, и решил для себя — я за исходный код примера на Backbone.

(function() {
  var $, Task, TaskApp, Tasks;
  var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) {
    for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }
    function ctor() { this.constructor = child; }
    ctor.prototype = parent.prototype;
    child.prototype = new ctor;
    child.__super__ = parent.prototype;
    return child;
  }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
  $ = jQuery;
  Task = (function() {
    __extends(Task, Spine.Model);
    function Task() {
      Task.__super__.constructor.apply(this, arguments);
    }
    Task.configure("Task", "name", "done");
    Task.extend(Spine.Model.Local);
    Task.active = function() {
      return this.select(function(item) {
        return !item.done;
      });
    };
    Task.done = function() {
      return this.select(function(item) {
        return !!item.done;
      });
    };
    Task.destroyDone = function() {
      var rec, _i, _len, _ref, _results;
      _ref = this.done();
      _results = [];
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
        rec = _ref[_i];
        _results.push(rec.destroy());
      }
      return _results;
    };
    return Task;
  })();
  Tasks = (function() {
    __extends(Tasks, Spine.Controller);
    Tasks.prototype.events = {
      "change   input[type=checkbox]": "toggle",
      "click    .destroy": "remove",
      "dblclick .view": "edit",
      "keypress input[type=text]": "blurOnEnter",
      "blur     input[type=text]": "close"
    };
    Tasks.prototype.elements = {
      "input[type=text]": "input"
    };
    function Tasks() {
      this.render = __bind(this.render, this);      Tasks.__super__.constructor.apply(this, arguments);
      this.item.bind("update", this.render);
      this.item.bind("destroy", __bind(function() {
        return this.trigger('destroy');
      }, this));
    }
    Tasks.prototype.render = function() {
      this.replace($("#taskTemplate").tmpl(this.item));
      return this;
    };
    Tasks.prototype.toggle = function() {
      this.item.done = !this.item.done;
      return this.item.save();
    };
    Tasks.prototype.remove = function() {
      return this.item.destroy();
    };
    Tasks.prototype.edit = function() {
      this.el.addClass("editing");
      return this.input.focus();
    };
    Tasks.prototype.blurOnEnter = function(e) {
      if (e.keyCode === 13) {
        return e.target.blur();
      }
    };
    Tasks.prototype.close = function() {
      this.el.removeClass("editing");
      return this.item.updateAttributes({
        name: this.input.val()
      });
    };
    return Tasks;
  })();
  TaskApp = (function() {
    __extends(TaskApp, Spine.Controller);
    TaskApp.prototype.events = {
      "submit form": "create",
      "click  .clear": "clear"
    };
    TaskApp.prototype.elements = {
      ".items": "items",
      ".countVal": "count",
      ".clear": "clear",
      "form input": "input"
    };
    function TaskApp() {
      this.renderCount = __bind(this.renderCount, this);
      this.addAll = __bind(this.addAll, this);
      this.addOne = __bind(this.addOne, this);      TaskApp.__super__.constructor.apply(this, arguments);
      Task.bind("create", this.addOne);
      Task.bind("refresh", this.addAll);
      Task.bind("refresh change", this.renderCount);
      Task.fetch();
    }
    TaskApp.prototype.addOne = function(task) {
      var view;
      view = new Tasks({
        item: task
      });
      return this.items.append(view.render().el);
    };
    TaskApp.prototype.addAll = function() {
      return Task.each(this.addOne);
    };
    TaskApp.prototype.create = function(e) {
      e.preventDefault();
      Task.create({
        name: this.input.val()
      });
      return this.input.val("");
    };
    TaskApp.prototype.clear = function() {
      return Task.destroyDone();
    };
    TaskApp.prototype.renderCount = function() {
      var active, inactive;
      active = Task.active().length;
      this.count.text(active);
      inactive = Task.done().length;
      if (inactive) {
        return this.clear.show();
      } else {
        return this.clear.hide();
      }
    };
    return TaskApp;
  })();
  $(function() {
    return new TaskApp({
      el: $("#tasks")
    });
  });
}).call(this);
В их числе любопытная технология Smart stay: при помощи фронтальной камеры она фиксирует движения глаз владельца и определяет, когда пользователь использует смартфон — например, читает электронную книгу или просматривает веб-страницы. Исходя из своих наблюдений, устройство в автоматическом режиме поддерживает яркость дисплея на одном уровне для удобного чтения или работы в интернете.


И заодно рапортует посмотрел ли пользователь на рекламу или нет.
Ведь на рекламу в приложениях кликают мало, но всё же смотрят.
Основное предназначение Saga — это работать из консоли или с maven без разворачивания дополнительного окружения.

Mocha выглядит хорошо.
И в Node.js проектах будет очень кстати.
Я думаю, что они сначала посчитали, что успешные приложения зарабатывают за год больше 1000$, а неуспешные — менее $1000. Плюс, успешные приложения приносят им доход легко покрывающий разницу от $1000 до $10000.

На мой взгляд, это бесплатный сыр, который, как известно, из ниоткуда не появляется.
В России также существует такой проект (на стадии прототипа):
www.indoornavigation.ru

Насколько я знаю, работает на Android-телефонах с помощью wifi.
И десяти лет не прошло, как поняли, что плавная прокрутка — это реально круто и полезно для головного мозга.
Интересная проблема (с точки зрения решения).
Разработчики часто не учитывают такую распространённую вещь, как плохое зрение.
Спасибо, что рассказали!
Пожалуйста :-)
Так как я написал выше.
Да, и из-за этого кажется, что Google Drive дешевле всех.
У меня нету, также проверил в Нью-Йорке:
Image and video hosting by TinyPic
Правый глаз был синим, а левый — красным?
Я один раз перепутал и тоже болели.
В Европе придётся блюрить людей :-)
Со стереоскопическим эффектом?
Я не видел и не нашёл, можно попросить ссылку?
Уверен со временем будет.
3D-Canvas, CSS 3D, WebGL — всё к этому идёт.
Да, жаль что нету graceful degradation для WebGL.
А на get.webgl.org не пишут как решить проблему?
Показалось, что WebGL там не особо нужен.

Вот какие 3D-туры по городам делает Nokia Maps:
maps.nokia.com/city/germany/berlin/3d-video-tour
На работе мы используем MVC и clojure-подход для создания классов.
Выходит что mvc-фреймворка нет и разобраться в коде очень просто.
А ведь наша работа заключается не в том, чтобы долго разбираться в коде, а чтобы делать больше нового и полезного, правда? :-)

В своих экспериментах я использую Backbone, но в последнее время присматриваюсь к Ember.js
Мне симпатичны фреймворки, код которых можно понять не закапываясь в документацию.
Пожалуй, обе части.

В шаблонах очень много кастомных тегов, а директивы раскиданы и как теги, и как аттрибуты html-тегов.
Я много лет работал с XSLT и соблюдение неймспейса облегчает понимание шаблона.

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

Я бы стал с этим работать за рабочее место в Гугле со всеми их плюшками.
Наверное…

Information

Rating
Does not participate
Location
Berlin, Berlin, Германия
Date of birth
Registered
Activity