All streams
Search
Write a publication
Pull to refresh
38
0
Send message
Дошло. Почему этого было не написать в тексте?
3 раза перечитал задачу про узел из середины односвязного списка — какой то бред.
1. Удаляется не указанный узел а следующий. Указанный удалить нельзя, если нет указателя на начало или предыдущий элемент.
2. Зачем переприсваивать указатель на данные не понятно.
Да и у меня есть парочка своих модулей для NodeJS.
В одном старом проекте заменил сервис, который раздавал события клиентским приложениям с реализации на Delphi на реализацию на NodeJS. Ну там вообще вся серверная часть переползла под линукс. Старый сервис уже использовал JS (движок от Microsoft) так что на NodeJS надо было только реализовать такую же глобальную область видимости ( с такими же функциями и объектами), а старые все скрипты просто подхватились.
В новых проектах (у меня это не сайты) для Web интерфейса использую NodeJS + NowJS — основное преимущество это использование одного языка в клиенте и сервере ну и RPC «без напряга» (фишка NowJS — возможность легко вызвать функцию на другой стороне (с клиента на сервере и наоборот) и получить обратно callback).
Еще одно применение у меня это создание сетевых сервисов для разных железяк, которые работают по Serial интерфейсу. Например, когда несколько устройств сидит на RS-485 (разные датчики или реле) и надо с ними общаться другим программам по сети. Асинхронность и сетевые возможности NodeJS приходятся очень кстати.
Это виртуальная машина скорее всего. которая запускается из снапшота. Так что ничего там не испротится.
Опять мимо — это не синтаксический сахар. А велосипед изобретать — да полезно, чтобы понять как оно работает внутри. Только в первом абзаце своего поста Вы отказались от изобретения велосипеда. Я бы сказал, что Socket.IO и NowJS позволяют работать на разных уровнях абстракции. Socket.IO — уровень сокетов, NowJS — уровень разделяемых объектов. Можно опуститься еще ниже, но тяжело. Ну а ko.liveModel() на столько же нативная, как io.connect(). ko.liveModel() выводит нас на новый уровень — уровень разделяемой модели, которая привязана к элементам DOM. В результате изменения в DOM одного клиента, автоматически приводят к изменениям у остальных. Я просто хотел обратить внимание на эту технологию.
Вы бы хоть глянули, что там. Что значит «на чистом JS»? А SocketюIO или тот же jQuery — это по вашему не чистый JS? И чем Socket.IO «чище» NowJS? Так бы сразу и написали — «хотел написать свой велосипед».
Тут еще меньше кода Клиент Сервер. Это KnockoutJS+NowJS(SocketIO)+Плугин для Knockout (ссылки на него на Github). Кстати, почему никто не пишет про Knockout 1.3? Там много вкусного.
да черт! не нажимать Ctrl+Enter!

так вот SLES 10 и 11
выполнив set под рутом
получил какой то мусор в environment у всех пользователей
мусор представляет собой какой-то shell скрипт, точнее набор скриптов
как убрать не понял
гугль не помог
выполнил set под рутом
я вот не совсем в ногу, но понять что это не могу.
Да меня интересует фильтр не по видам, а исходя из логики проекта. Т.е. по именам.

Ну с просмотром изменений проще — можно из двух баз выдрать метаданные и сравнить два скрипта, как два текстовых файла. Конечно, хорошо бы, чтоб это было автоматизировано.
В IBExpert — это инструмент администрирования для Interbase/Firebird. Уже давно есть подобная функция — Сравнение БД, сравнивает структуру, генерирует скрипты для приведения в одинаковый вид, для данных есть аналогичная вещь.
Давно ею успешно пользуюсь.

Чего не хватает там — фильтра для структуры, т.е. когда нужно синхронизировать часть объектов, а не все. Ну критерием для фильтра могла бы быть принадлежность той или иной схеме, но в Interbase/Firebird нет схем. Устроил бы фильтр по регулярке от имени объекта.
Практическое применения для планшета, кстати, — это способ показать нечто большее чем способен отобразить экран. Эдакая интуитивная замена скроллингу. Впрочем… На знаю — это надо пробовать, чтоб сказать, что удобнее.
Для Firebird/Interbase есть похожий инструмент в IBExpert. Часто им пользуюсь.
Разобрался. В данном случае надо так делать:

<div id="sub-model-view" data-bind='template: {  name: currMenuTemplate, data: subModel } '>


и в модели

var model = {
    ...
		currMenuTemplate: function(){
			return model.menus[model.currMenuIdx()].template;	
		},
                subModel: {...} 
   ...
	};


и подгружать модель в subModel.
О сейчас как раз с ним ковыряюсь. Пытаюсь сделать динамическую подгрузку шаблонов и моделей.

<div>
	{{each(idx, menu) menus }}
	 <button  data-bind="click: click">${caption}</button>
	{{/each}}
</div>
<div id="sub-model-view" data-bind='template: {  name: currMenuTemplate } '>


var model = {
		menus:[
		       MenuItem('Услуги/Операции','eq-operations'),
		       MenuItem('Рабочие места','eq-workplaces')
		      ],	
		currMenuIdx: ko.observable(0),
		currMenuTemplate: function(){
			return model.menus[model.currMenuIdx()].template;	
		}
	};

function MenuItem(caption, template){
		var r = {
			caption: caption,
			template: template,
			click:  function(){ ActivateMenu( r ); } 
			};
		return r;
	};
	
	
	function ActivateMenu(mi){
		var i = model.menus.indexOf(mi);
		model.currMenuIdx(i);
		$.koApplication.loadModel('ui/js/eq/'+mi.template+'.js'); 
	}



Когда меняется currMenuIdx — меняется шаблон. Кстати, я пока не понял почему. Магия какая-то… Код подгрузки шаблона я не показал — там нет проблем. Так вот не могу понять как модель привязать к такому меняющемуся шаблону. Он обращается к основной модели и не находит там нужных свойств. Так пока писал у меня уже возникло несколько идей. Пойду проверять.
я иногда немного в другом виде использую такое для выполнения блока кода с разными параметрами:

function DoOneThing(){
 ...
}
function DoOtherThing(){
 ...
}

(function f(name,cb){
 $('<button/>')
  .appendTo('#container')
  .addClass('commonClass')
  .text(name)
  .click(cb);
return f;})('Одна',DoOneThing)('Вторая',DoOtherThing);


Понятно, что можно так же объявить обычную функцию, но так просто короче.
Не описан способ вызова анонимных функций.
(function (x){ console.log(x);})('Hello world');

или
!function (x){ console.log(x);}('Hello world');


или именованных функций

(function f(x){ console.log(x); return f; })('Hello')('world');
// при этом прошу заметить
f('foo'); // exception


или для рекурсии

(function f(x){ console.log(x); if(x>0) f(x-1);})(10);


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

Information

Rating
Does not participate
Location
Украина
Registered
Activity