Вчера обновилась облачная IDE Cloud9. Было сделано несколько существенных нововведений. Первое из них — совместное редактирование. Теперь над одним и тем же кодом могут в реальном времени работать несколько человек. Есть встроенный чат.


User
window.onerror
) и отправляет их на сервер.localObject = JSON.parse( localStorage.getItem( '_myStorage' ) ); // "{'a':1, 'b':2}" → {a:1, b:2}
localStorage.setItem( '_myStorage', JSON.stringify( localObject ) );
var ObjectStorage = function ObjectStorage( name, duration ) {
var self,
name = name || '_objectStorage',
defaultDuration = 5000;
// дабы не плодить кучу экземпляров, использующих один и тот же ключ хранилища,
// просто возвращаем единственный с заданным именем,
// меняя только duration (если имеется)
if ( ObjectStorage.instances[ name ] ) {
self = ObjectStorage.instances[ name ];
self.duration = duration || self.duration;
} else {
self = this;
self._name = name;
self.duration = duration || defaultDuration;
self._init();
ObjectStorage.instances[ name ] = self;
}
return self;
};
ObjectStorage.instances = {};
ObjectStorage.prototype = {
// type == local || session
_save: function ( type ) {
var stringified = JSON.stringify( this[ type ] ),
storage = window[ type + 'Storage' ];
if ( storage.getItem( this._name ) !== stringified ) {
storage.setItem( this._name, stringified );
}
},
_get: function ( type ) {
this[ type ] = JSON.parse( window[ type + 'Storage' ].getItem( this._name ) ) || {};
},
_init: function () {
var self = this;
self._get( 'local' );
self._get( 'session' );
( function callee() {
self.timeoutId = setTimeout( function () {
self._save( 'local' );
callee();
}, self._duration );
})();
window.addEventListener( 'beforeunload', function () {
self._save( 'local' );
self._save( 'session' );
});
},
// на случай, если нужно удалить таймаут (clearTimeout( storage.timeoutId ))
timeoutId: null,
local: {},
session: {}
};
var storage = new ObjectStorage;
storage.local = {a:4, b: {c:5}};
storage.session = {a:7, b: {c:8}};
b = storage.local.b;
b.c = {d:6};
«Есть два подхода к программированию. Первый — сделать программу настолько простой, чтобы в ней очевидно не было ошибок. А второй — сделать её настолько сложной, чтобы в ней не было очевидных ошибок.»
Tony Hoare. Профессор, занимался реализацией Алгол 60, сейчас исследователь в Microsoft Research.
«Я не мог устоять перед искушением добавить в язык нулевой указатель (null), просто потому, что его так легко было реализовать. Это привело к бессчётному множеству ошибок, уязвимостей и сбоев, которые нанесли ущерб, наверное, в миллиард долларов за последние сорок лет.»
Tony Hoare.