Re: Разработка javascript
От: VladiCh  
Дата: 08.12.05 15:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вопрос. Заказчики настояли на широком использовании на клиенте javascript. У нас есть опыть его использования, но опыт этот сугубо негативный. Работа с непростыми скриптами напоминает войну с тараканами, исправляешь одну ошибку — появляется две, несмотря на то что разработчики грамотные.

А>Нанять отдельного javascript программера мы не может и на это нет времени.
А>Может кто-то смог выработать успешные метотоды работы с javascript? Поделитель плиз.

JavaScript — сам по себе замечательный язык, если его правильно использовать. Он очень гибкий, там есть наследование, замыкания, которые в C# появились напирмер только с версии 2, Боюсь, что в основном его используют неправильно. Почитайте здесь например. Но разрабатывать на нем с нуля сложный гуй слишком трудоемко. Смотрите в сторону хорошей библиотеки типа этой.
Re[6]: Разработка javascript
От: VladiCh  
Дата: 08.12.05 15:39
Оценка:
Здравствуйте, Роман Дубров, Вы писали:

РД>Аноним wrote:

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

РД>100% согласен.

РД>И начинать надо с "правильного" фреймворка чтобы когда дойдешь до
РД>реализации самой бизнес-логики, не отвлекаться на сугубо джаваскриптовые
РД>заморочки...

РД>Кстати кто подскажет какиенить библиотеки для создания юзер интерфейса в

РД>аяксовых веб-приложениях, можно платные?

РД>BackBase радует возможностями, но тормозище....


РД>--

РД>np: [foobar2000] not started

см. тут
Re[2]: Разработка javascript
От: VladiCh  
Дата: 08.12.05 15:47
Оценка:
Здравствуйте, VladiCh, Вы писали:

VC>Здравствуйте, Аноним, Вы писали:


А>>Нанять отдельного javascript программера мы не может и на это нет времени.


А вот это зря... Без отдельного программера вы больше времени потеряете на обучение разработчиков тому, как правильно надо писать на JS (это хоть и не так сложно, но требует времени, т.к. концепция существенно отличается от mainstream-языков. Просто на нем действительно толком мало кто писать умеет правильно). Могу свои услуги предложить в качестве JavaScript-программера .
Re[7]: Разработка javascript
От: Роман Дубров Украина Я@Blogspot
Дата: 09.12.05 10:15
Оценка:
VladiCh wrote:
> РД>BackBase радует возможностями, но тормозище....
>
> см. тут <http://www.bindows.net>

уже смотрел
+ идея супер — вин апи на джаваскрипте
— грузится долго
— в gecko кой-че не работает
— стоит как паровоз

--
np: [foobar2000] not started
Posted via RSDN NNTP Server 2.0
http://www.linkedin.com/in/romandubrov .::. http://roman-dubrov.blogspot.com/ .::. http://www.flickr.com/photos/romandubrov/
Re[8]: Разработка javascript
От: VladiCh  
Дата: 09.12.05 10:40
Оценка:
Здравствуйте, Роман Дубров, Вы писали:

РД>VladiCh wrote:

>> РД>BackBase радует возможностями, но тормозище....
>>
>> см. тут <http://www.bindows.net>

РД>уже смотрел

РД>+ идея супер — вин апи на джаваскрипте
РД>- грузится долго
РД>- в gecko кой-че не работает
РД>- стоит как паровоз

2. грузится долго, но можно его за-gzipовать, будет грузиться в 10 раз быстрее. можно и динамически подгружать только то что нужно.

3. в gecko работает. не работает только в opera, да и то я думаю с opera 9 сделают поддержку.

4. это да, не очень дешево. если бы не цена, сам бы использовал . а так пришлось свою библиотечку писать, попроще, на аналогичных принципах.
Re[5]: Разработка javascript
От: VladiCh  
Дата: 09.12.05 10:46
Оценка:
Здравствуйте, Joker6413, Вы писали:

J>Здравствуйте, Роман Дубров, Вы писали:


РД>>Аноним wrote:


>>> РД>А вообще javascript — это фигня,

>>>
>>> Фигня. Но поддерживать ее — , злости не хватает.

РД>>см выше.

РД>>в принципе не отличается от поддержки любой другой технологии... просто
РД>>со своими бзиками.

J>Не согласен, этнтропия jscript кода растет в вообще несяной прогрессии.


Может, вы просто не умеете его готовить? . В сыром виде он действительно довольно некрасив. Посмотрите способы правильного приготовления например здесь.
Re[6]: Разработка javascript
От: Joker6413  
Дата: 09.12.05 11:51
Оценка:
Здравствуйте, VladiCh, Вы писали:

VC>Может, вы просто не умеете его готовить? . В сыром виде он действительно довольно некрасив. Посмотрите способы правильного приготовления например здесь.


Очевидно не умею, так я точно не смогу:

var _biInPrototype=false;function _biExtend(fConstr,fSuperConstr,sName){_biInPrototype=true;var p=fConstr.prototype=new fSuperConstr;if(sName){p._className=sName;}
p.constructor=fConstr;_biInPrototype=false;return p;}
Object.isEmpty=function(o)
{for(var _ in o)
return false;return true;};Object.getKeys=function(o){var r=[];for(var i in o){r.push(i);}
return r};Object.getValues=function(o){var r=[];for(var i in o){r.push(o[i]);}
return r;};if(!Array.prototype.indexOf){Array.prototype.indexOf=function(obj,fromIndex){if(fromIndex==null){fromIndex=0;}else if(fromIndex<0){fromIndex=Math.max(0,this.length+fromIndex);}
for(var i=fromIndex;i<this.length;i++){if(this[i]===obj)
return i;}
return-1;};}
if(!Array.prototype.lastIndexOf){Array.prototype.lastIndexOf=function(obj,fromIndex){if(fromIndex==null){fromIndex=this.length-1;}else if(fromIndex<0){fromIndex=Math.max(0,this.length+fromIndex);}
for(var i=fromIndex;i>=0;i--){if(this[i]===obj)
return i;}
return-1;};}
Array.prototype.contains=function(o){return this.indexOf(o)!= -1;};Array.prototype.copy=function(o){return this.concat();};Array.prototype.insertAt=function(o,i){this.splice(i,0,o);};Array.prototype.insertBefore=function(o,o2){var i=this.indexOf(o2);if(i== -1)
this.push(o);else this.splice(i,0,o);};Array.prototype.removeAt=function(i){this.splice(i,1);};Array.prototype.remove=function(o){var i=this.indexOf(o);if(i!= -1)
this.splice(i,1);};if(!Array.prototype.forEach){Array.prototype.forEach=function(f,obj){var l=this.length;for(var i=0;i<l;i++){f.call(obj,this[i],i,this);}};}
if(!Array.prototype.filter){Array.prototype.filter=function(f,obj){var l=this.length;var res=[];for(var i=0;i<l;i++){if(f.call(obj,this[i],i,this)){res.push(this[i]);}}
return res;};}
if(!Array.prototype.map){Array.prototype.map=function(f,obj){var l=this.length;var res=[];for(var i=0;i<l;i++){res.push(f.call(obj,this[i],i,this));}
return res;};}
if(!Array.prototype.some){Array.prototype.some=function(f,obj){var l=this.length;for(var i=0;i<l;i++){if(f.call(obj,this[i],i,this)){return true;}}
return false;};}
if(!Array.prototype.every){Array.prototype.every=function(f,obj){var l=this.length;for(var i=0;i<l;i++){if(!f.call(obj,this[i],i,this)){return false;}}
return true;};}
String.prototype.trim=function(){return this.replace(/(^\s+)|\s+$/g,"");};String.prototype.capitalize=function(){return this.charAt(0).toUpperCase()+this.substr(1);};Function.READ=1;Function.WRITE=2;Function.READ_WRITE=3;Function.prototype.addProperty=function(sName,nReadWrite){var p=this.prototype;nReadWrite=nReadWrite||Function.READ_WRITE;var capitalized=sName.capitalize();if(nReadWrite&Function.READ)
{p["get"+capitalized]=function()
{return this["_"+sName];};}
if(nReadWrite&Function.WRITE)
{p["set"+capitalized]=function(v)
{this["_"+sName]=v;};}};function BiObject(){}

Re[2]: Разработка javascript
От: Joker6413  
Дата: 09.12.05 11:59
Оценка:
Здравствуйте, VladiCh, Вы писали:

VC>Здравствуйте, Аноним, Вы писали:


А>>Вопрос. Заказчики настояли на широком использовании на клиенте javascript. У нас есть опыть его использования, но опыт этот сугубо негативный. Работа с непростыми скриптами напоминает войну с тараканами, исправляешь одну ошибку — появляется две, несмотря на то что разработчики грамотные.

А>>Нанять отдельного javascript программера мы не может и на это нет времени.
А>>Может кто-то смог выработать успешные метотоды работы с javascript? Поделитель плиз.

VC>JavaScript — сам по себе замечательный язык, если его правильно использовать.


Увы... пока не определимся "как правильно" нет смысла обсуждать "неправильное" использование. Я пока могу говорить только об повышенной энтропии кода, как о факте. Чем это вызванно — особенностями языка или методом разработки я пока сказать не могу.
Re[9]: Разработка javascript
От: Роман Дубров Украина Я@Blogspot
Дата: 09.12.05 12:45
Оценка:
VladiCh wrote:
> 2. грузится долго, но можно его за-gzipовать, будет грузиться в 10 раз
> быстрее. можно и динамически подгружать только то что нужно.
очень даже может быть, но демка на сайте этого не делает

> 3. в gecko работает. не работает только в opera, да и то я думаю с opera

> 9 сделают поддержку.
во первых я ж не сказал что совсем не работает... работает но не все.
оперу фтопку, мне ее поддерживать не надо

> 4. это да, не очень дешево. если бы не цена, сам бы использовал . а так

> пришлось свою библиотечку писать, попроще, на аналогичных принципах.
а я щас blueshoes ковыряю...

--
np: [foobar2000] not started
Posted via RSDN NNTP Server 2.0
http://www.linkedin.com/in/romandubrov .::. http://roman-dubrov.blogspot.com/ .::. http://www.flickr.com/photos/romandubrov/
Re[7]: Разработка javascript
От: Роман Дубров Украина Я@Blogspot
Дата: 09.12.05 12:48
Оценка:
Joker6413 wrote:
> Очевидно не умею, так я точно не смогу:
[skip]

и что тут сложного? Или ты классы на джаваскрипте никогда не писал? А
если в чужом трудно разбираться — или бьютифаер в руки или конкретно в
этом случае пинать разработчиков — не зря ж такие деньги им плачены...

--
np: [foobar2000] not started
Posted via RSDN NNTP Server 2.0
http://www.linkedin.com/in/romandubrov .::. http://roman-dubrov.blogspot.com/ .::. http://www.flickr.com/photos/romandubrov/
Re[7]: Разработка javascript
От: VladiCh  
Дата: 09.12.05 12:53
Оценка:
Здравствуйте, Joker6413, Вы писали:

J>Здравствуйте, VladiCh, Вы писали:


VC>>Может, вы просто не умеете его готовить? . В сыром виде он действительно довольно некрасив. Посмотрите способы правильного приготовления например здесь.


J>Очевидно не умею, так я точно не смогу:


J>

J>var _biInPrototype=false;function _biExtend(fConstr,fSuperConstr,sName){_biInPrototype=true;var p=fConstr.prototype=new fSuperConstr;if(sName){p._className=sName;}
J>p.constructor=fConstr;_biInPrototype=false;return p;}
J>Object.isEmpty=function(o)
J>{for(var _ in o)
J>return false;return true;};Object.getKeys=function(o){var r=[];for(var i in o){r.push(i);}
J>return r};Object.getValues=function(o){var r=[];for(var i in o){r.push(o[i]);}
J>return r;};if(!Array.prototype.indexOf){Array.prototype.indexOf=function(obj,fromIndex){if(fromIndex==null){fromIndex=0;}else if(fromIndex<0){fromIndex=Math.max(0,this.length+fromIndex);}
J>for(var i=fromIndex;i<this.length;i++){if(this[i]===obj)
J>return i;}
J>return-1;};}
J>if(!Array.prototype.lastIndexOf){Array.prototype.lastIndexOf=function(obj,fromIndex){if(fromIndex==null){fromIndex=this.length-1;}else if(fromIndex<0){fromIndex=Math.max(0,this.length+fromIndex);}
J>for(var i=fromIndex;i>=0;i--){if(this[i]===obj)
J>return i;}
J>return-1;};}
J>Array.prototype.contains=function(o){return this.indexOf(o)!= -1;};Array.prototype.copy=function(o){return this.concat();};Array.prototype.insertAt=function(o,i){this.splice(i,0,o);};Array.prototype.insertBefore=function(o,o2){var i=this.indexOf(o2);if(i== -1)
J>this.push(o);else this.splice(i,0,o);};Array.prototype.removeAt=function(i){this.splice(i,1);};Array.prototype.remove=function(o){var i=this.indexOf(o);if(i!= -1)
J>this.splice(i,1);};if(!Array.prototype.forEach){Array.prototype.forEach=function(f,obj){var l=this.length;for(var i=0;i<l;i++){f.call(obj,this[i],i,this);}};}
J>if(!Array.prototype.filter){Array.prototype.filter=function(f,obj){var l=this.length;var res=[];for(var i=0;i<l;i++){if(f.call(obj,this[i],i,this)){res.push(this[i]);}}
J>return res;};}
J>if(!Array.prototype.map){Array.prototype.map=function(f,obj){var l=this.length;var res=[];for(var i=0;i<l;i++){res.push(f.call(obj,this[i],i,this));}
J>return res;};}
J>if(!Array.prototype.some){Array.prototype.some=function(f,obj){var l=this.length;for(var i=0;i<l;i++){if(f.call(obj,this[i],i,this)){return true;}}
J>return false;};}
J>if(!Array.prototype.every){Array.prototype.every=function(f,obj){var l=this.length;for(var i=0;i<l;i++){if(!f.call(obj,this[i],i,this)){return false;}}
J>return true;};}
J>String.prototype.trim=function(){return this.replace(/(^\s+)|\s+$/g,"");};String.prototype.capitalize=function(){return this.charAt(0).toUpperCase()+this.substr(1);};Function.READ=1;Function.WRITE=2;Function.READ_WRITE=3;Function.prototype.addProperty=function(sName,nReadWrite){var p=this.prototype;nReadWrite=nReadWrite||Function.READ_WRITE;var capitalized=sName.capitalize();if(nReadWrite&Function.READ)
J>{p["get"+capitalized]=function()
J>{return this["_"+sName];};}
J>if(nReadWrite&Function.WRITE)
J>{p["set"+capitalized]=function(v)
J>{this["_"+sName]=v;};}};function BiObject(){}


Это самая примитивная обфускация JavaScript-ового кода, уменьшающая к тому же его размер .
Приведите его к нормальному виду и все будет более-менее понятно.
Хотя мне не очень нравятся некоторые частносит в bindows, но в целом идея весьма здравая.
Re[8]: Разработка javascript
От: VladiCh  
Дата: 09.12.05 12:57
Оценка:
Здравствуйте, Роман Дубров, Вы писали:

РД>Joker6413 wrote:

>> Очевидно не умею, так я точно не смогу:
РД>[skip]

РД>и что тут сложного? Или ты классы на джаваскрипте никогда не писал? А

РД>если в чужом трудно разбираться — или бьютифаер в руки или конкретно в
РД>этом случае пинать разработчиков — не зря ж такие деньги им плачены...

На самом деле в JavaScript'е нет классов, можно сделать только их эмуляцию, правда довольно полноценную, с наследованием, виртуальными/не виртуальными функциями и даже ограничением видимости (public/private/protected), если очень хочется. Правда т.к. это все-таки эмуляция, создание этих псевдо-классов и тому подобные вещи происходят в рантайме, а т.к. язык очень слаботипизированный, то писать бизнес-логику на нем все же не очень удобно. Вот GUI — вполне.
А вообще обещают в будущих версиях Mozilla сделать поддержку JavaScript 2, он же ECMAScript 4, который уже реализован и в .NET (JScript .NET) и к примеру ActionScript 2 — это тоже ECMAScript 4. Там есть и типизация и классы и это вообще совсем другой язык.
Re[3]: Разработка javascript
От: VladiCh  
Дата: 09.12.05 13:03
Оценка:
Здравствуйте, Joker6413, Вы писали:

J>Здравствуйте, VladiCh, Вы писали:


VC>>Здравствуйте, Аноним, Вы писали:


VC>>JavaScript — сам по себе замечательный язык, если его правильно использовать.


J>Увы... пока не определимся "как правильно" нет смысла обсуждать "неправильное" использование. Я пока могу говорить только об повышенной энтропии кода, как о факте. Чем это вызванно — особенностями языка или методом разработки я пока сказать не могу.


Правильно — это используя "псевдоклассы", т.е. эмулчцию классов в JavaScript. На этих "псевдоклассах" можно построить любой сложности иерархию и работать с ним как с обычным ОО-языком типа C#, Java и т.п.
Ну и потом есть определенные приемы разработки в зависимости от того, какого типа приложение вам нужно. Если типа толстого клиента на JavaScript, то реализовать нормальный интерфейс удаленного вызова типа XML-RPC, SOAP и т.п. На эту тему можно долго разговаривать, если есть желание можно вынести в отдельный топик.
Re[10]: Разработка javascript
От: VladiCh  
Дата: 09.12.05 13:31
Оценка:
Здравствуйте, Роман Дубров, Вы писали:


>> 3. в gecko работает. не работает только в opera, да и то я думаю с opera

>> 9 сделают поддержку.
РД>во первых я ж не сказал что совсем не работает... работает но не все.
РД>оперу фтопку, мне ее поддерживать не надо

Не работают там графики, диаграммы и т.п. Судя по их форуму, они собираются прикрутить их при помощи SVG, поддерживаемого в Firefox 1.5.

>> 4. это да, не очень дешево. если бы не цена, сам бы использовал . а так

>> пришлось свою библиотечку писать, попроще, на аналогичных принципах.
РД>а я щас blueshoes ковыряю...

посмотрел я этот blueshoes... чисто php-ориентированный + нет нормального javascript-фреймворка, все на каких-то заплатках построено.
Re[11]: Разработка javascript
От: VladiCh  
Дата: 09.12.05 13:32
Оценка:
Здравствуйте, VladiCh, Вы писали:

VC>Здравствуйте, Роман Дубров, Вы писали:


VC>посмотрел я этот blueshoes... чисто php-ориентированный + нет нормального javascript-фреймворка, все на каких-то заплатках построено.


не, вру, вроде что-то более-менее есть, хотя подробно не разбирался.
Re[8]: Разработка javascript
От: Joker6413  
Дата: 11.12.05 12:32
Оценка:
Здравствуйте, Роман Дубров, Вы писали:

РД>Joker6413 wrote:

>> Очевидно не умею, так я точно не смогу:
РД>[skip]

РД>и что тут сложного? Или ты классы на джаваскрипте никогда не писал?


С какой версии jscript они начинаются и с каким ie эта версия ставиться?

РД>А если в чужом трудно разбираться — или бьютифаер


о аштойта? дайте сцылу.
Re[4]: Разработка javascript
От: Joker6413  
Дата: 11.12.05 12:35
Оценка:
Здравствуйте, VladiCh, Вы писали:

J>>Увы... пока не определимся "как правильно" нет смысла обсуждать "неправильное" использование. Я пока могу говорить только об повышенной энтропии кода, как о факте. Чем это вызванно — особенностями языка или методом разработки я пока сказать не могу.


VC>Правильно — это используя "псевдоклассы", т.е. эмулчцию классов в JavaScript. На этих "псевдоклассах" можно построить любой сложности иерархию и работать с ним как с обычным ОО-языком типа C#, Java и т.п.


По этому поводу уже задал вопрос выше. (Последний раз пришлось серьезно работать со скриптом в 2002 году).

VC>Ну и потом есть определенные приемы разработки в зависимости от того, какого типа приложение вам нужно. Если типа толстого клиента на JavaScript, то реализовать нормальный интерфейс удаленного вызова типа XML-RPC, SOAP и т.п.


Не... этого не требуется.
Re[9]: Разработка javascript
От: VladiCh  
Дата: 12.12.05 08:32
Оценка: 6 (1)
Здравствуйте, Joker6413, Вы писали:

J>Здравствуйте, Роман Дубров, Вы писали:


РД>>Joker6413 wrote:

>>> Очевидно не умею, так я точно не смогу:
РД>>[skip]

РД>>и что тут сложного? Или ты классы на джаваскрипте никогда не писал?


J>С какой версии jscript они начинаются и с каким ie эта версия ставиться?


Практически с любой версии. Классов и соответственно наследования классов там нет, есть только объекты и наследование объектов на основе прототипов. Но тем не менее можно организовать псведоклассы и наследование псевдоклассов, просто для удобства работы.

здесь

Правда по этой ссылке в примерах есть кое-какие неточности, к примеру функция 'uber' работает некорректно.
Ключевые слова, по которым надо смотреть документацию JavaScript — prototype, call, apply.

РД>>А если в чужом трудно разбираться — или бьютифаер


J>о аштойта? дайте сцылу.


автоматический форматтер JavaScript-ового текста

здесь
Re[10]: Разработка javascript
От: VladiCh  
Дата: 12.12.05 08:35
Оценка:
Здравствуйте, VladiCh, Вы писали:

VC>Здравствуйте, Joker6413, Вы писали:


Вообще JavaScript больше похож не на Java/C#/C++, а на такие языки как Perl или Python. Если вы хорошо разбираетесь в каком-нибудь из них, то и "правильное" программирование на JavaScript освоить будет несложно.
Re[10]: Разработка javascript
От: Joker6413  
Дата: 12.12.05 09:17
Оценка:
Здравствуйте, VladiCh, Вы писали:

VC>Здравствуйте, Joker6413, Вы писали:


J>>Здравствуйте, Роман Дубров, Вы писали:


РД>>>Joker6413 wrote:

>>>> Очевидно не умею, так я точно не смогу:
РД>>>[skip]

РД>>>и что тут сложного? Или ты классы на джаваскрипте никогда не писал?


J>>С какой версии jscript они начинаются и с каким ie эта версия ставиться?


VC>Практически с любой версии. Классов и соответственно наследования классов там нет, есть только объекты и наследование объектов на основе прототипов. Но тем не менее можно организовать псведоклассы и наследование псевдоклассов, просто для удобства работы.


VC>здесь


Ну так вот я тебе скажу, с IE 5.0 идет javascript в котором поддержки классов нет. А IE 5.0 идет с win 2000. Достаточно ли они устарели чтобы с ними не считаться?

РД>>>А если в чужом трудно разбираться — или бьютифаер


J>>о аштойта? дайте сцылу.


VC>автоматический форматтер JavaScript-ового текста


VC>здесь


спасибо
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.