You can subscribe to this list here.
2003 |
Jan
|
Feb
(22) |
Mar
(6) |
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
(3) |
Sep
(1) |
Oct
(15) |
Nov
(13) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(2) |
Feb
(2) |
Mar
|
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
2005 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Max B. <be...@ma...> - 2003-10-24 18:33:35
|
Hello Peter, Thursday, October 23, 2003, 7:53:56 AM, you wrote: PBS> Max Belugin wrote: >> Нельзя написать функцию которая работает с любым объектом, у которого >> есть метод add PBS> А кому нужна такая функция? как правило, имена отражают назначение. часто не хочется быть в зависимости от того, поддержал ли автор класса определенный интерфейс или нет. PBS> Функция пишется в расчете на определенные, а PBS> не на любые, типы объектов и перегружается сколько надо раз. Для любых PBS> есть java.lang.reflect.*. Только типизация здесь ни при чем, это PBS> называется late binding. Также это называется динамической типизацией. В случае reflect мы получаем длинный неудобный способ работы с тем, с чем в динамических языках есть короткий и простой способ работы. >> > обязательном порядке" - это даже хорошо, т.к., забыв определить >> > нужный метод, в Java я получу ошибку на этапе компиляции, а в Питоне >> > - на этапе выполнения. >> именно этот я и вкладывал когда писал "надежность меньше, реюз >> больше" PBS> Такой реюз делается через полиморфизм, при этом надежность остается. Такой реюз через полиморфизм требует больше кода => меньше реюза. Также в Java невозможно описать отдельно от класса каким образом данный класс реализует данный интерфейс - навпример в Eclipse для этого своя архитектура с инстерфейсом IAdaptable >> > Во-первых, никто и не обещал, что она останется. Во-вторых, не вижу >> > в этом проблемы. Реализация функции - моя. Списки, переданные в map >> > - тоже мои. Наверное, я знаю, что мне ожидать на выходе? >> О... если так рассуждать, статическая типизация вообще не нужна. См. >> предыдущее предложение. PBS> Не расскажете, как Вы пришли к такому заключению? Я не улавливаю никакой PBS> связи, предыдущее предложение не помогает. Ну как - все мое, я знаю, что получится на выходе, а что не мое - посмотрю в документации - зачем мне статический контроль типов? >> >>Кстати, тебе придтся для каждого случая вызова функции создавать >> >>wrapper, который читебальности не прибавит. >> я говорил про фрапперы функций. Как напримар воспользовавшись твоим >> map зключить все строки списка в кавычки. PBS> Function f = new Function() { PBS> public Object call(FunctionArguments args) { PBS> return "\"" + args.get(0) + "\""; PBS> } PBS> }; PBS> List ql1 = BuiltIn.map(f, l1); PBS> List ql2 = BuiltIn.map(f, l2); PBS> Где здесь вообще враппер, не говоря уже про каждый случай вызова? допустим у вас уде есть функция, заключающая строку в кавычки. >> >>не надо. и тебе как - для скриптинга это удобно? (реализация 9 раз >> >>одного и того же) >> > Удобно, что здесь неудобного? И какое мне, как пользователю, дело до >> > реализации? >> то есть ты не хочешь обощать части своих скриптов и т.д. PBS> Наверное, я напрочь тупой, но нельзя ли расшифровать, что значит PBS> "обобщать части своих скриптов и т.д."? вам как пользователю _чего_ дело до реализации _чего_? например, вы обнаруживаете, что в большом количестве ваших скриптов используется кусочек, который можно обобщить, параметризовать и назвать map. Так как в Java есть примитивы (то есть не все является объектом) вы должны написать 9 реализация вашего кусочка. Потом написать врапперы на каждый класс, который может быть представлен как коллекция, и потом каждый раз оборачивать функцию, которую бы вам хотелось вызвать. >> >>Ничего - городить на каждый чих врапперы конечно можно, но >> >>читаемости не прибавит. >> > Это субъективно. Два-три враппера _я_ выдерживаю. >> То есть, по твоему, врапперы прибавляют читаемость? PBS> Нет. Они, до определенного количества, ее не убавляют. а по-моему, убавляют. >> >>String - не коллекция. Массив - не коллекция. >> > Вы же только что согласились, что врапперы можно написать. >> а так же писать врапперы на каждый новый тип массива. >> напишите Wrapper для String [] теперь для Applet [] PBS> Для того, чтобы добавить элементы массива в список, не надо знать их PBS> реальный тип, поэтому я напишу один для Object[]. потом делать приведение Object[] к String[] и т.д. в-общем, без этого проще. И этих мелких упрощений набирается много. >> >>>>- функции - это объекты >> >>врапперов не надо писать, с ними можно делать все, что с объектами. >> > А что еще делают с функцией, кроме как вызывают? >> сравнивают, передают в качестве параметра, хранят в переменных и >> списках. PBS> Чем для этого не подходит интерфейс Function? тем, что про него никто кроме нас с вам не знает. Соответственно все существующий функции надо оборачивать, причем для операции сравнения следить за тем, чтобы существовала ровно одна обертка для каждой функции. >> > Не понял. Писать за Вас это будет любая IDE. А зачем это читать? >> как любая IDE будет за меня _читать_ этот не относящийся к делу код. PBS> А кто за меня будет читать и писать все эти self'ы в методах класса? это да. в ruby используют @ - так короче. PBS> Это PBS> к вопросу о лаконичности. А конструктор/методы предка вызывать не через PBS> super, а по имени? Это к вопросу о реюзе. Предлагаю прекратить членами PBS> меряться. Почему бы не померятся. Тем более что члены не наши а ван Россума с Гослингом. Это поможет узнать особенности их конструкции. >> эти примеры были только иллюстрацией. PBS> Иллюстрацией чего? удобств питона: все есть объект, все есть коллекция, есть удобный синтаксис для работы с этим. >> Еще, питон обладает большей способностью консервировать щелчки с тем >> чтобы дальнейшем щелкать меньше. PBS> Это как? реюз больше - свою работу сожно сохранить, а потом использовать (см. пример с map) >> > решили. Я просто хотел узнать, чем Питон лучше Java в плане >> > кроссплатформенности. >> http://python.org/download/download_other.html PBS> Количество - это хорошо. А что с качеством? не знаю, я пока пользуюсь на одной платформе. >> ;))) вот в конце вы мне предложили писать на питоне, толькопод JVM PBS> Я такого не предлагал. Я предложил написать свои хелперы или взять PBS> готовые, если хочется лаконичности. А уж на что эти хелперы будут похожи PBS> - дело вкуса писателя. я говорю о языке - а язык это и есть один большой хелпер. -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |
From: Max B. <be...@ma...> - 2003-10-24 05:04:15
|
Hello winscript-talks, Это маленькие прогнраммки, записанные как JS ссылки http://www.bookmarklets.com/ -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |
From: Peter B. S. <vs...@ho...> - 2003-10-23 07:41:10
|
Max Belugin wrote: > Нельзя написать функцию которая работает с любым объектом, у которого > есть метод add А кому нужна такая функция? Функция пишется в расчете на определенные, а не на любые, типы объектов и перегружается сколько надо раз. Для любых есть java.lang.reflect.*. Только типизация здесь ни при чем, это называется late binding. > > обязательном порядке" - это даже хорошо, т.к., забыв определить > > нужный метод, в Java я получу ошибку на этапе компиляции, а в Питоне > > - на этапе выполнения. > именно этот я и вкладывал когда писал "надежность меньше, реюз > больше" Такой реюз делается через полиморфизм, при этом надежность остается. > > Во-первых, никто и не обещал, что она останется. Во-вторых, не вижу > > в этом проблемы. Реализация функции - моя. Списки, переданные в map > > - тоже мои. Наверное, я знаю, что мне ожидать на выходе? > О... если так рассуждать, статическая типизация вообще не нужна. См. > предыдущее предложение. Не расскажете, как Вы пришли к такому заключению? Я не улавливаю никакой связи, предыдущее предложение не помогает. > >>Кстати, тебе придтся для каждого случая вызова функции создавать > >>wrapper, который читебальности не прибавит. > я говорил про фрапперы функций. Как напримар воспользовавшись твоим > map зключить все строки списка в кавычки. Function f = new Function() { public Object call(FunctionArguments args) { return "\"" + args.get(0) + "\""; } }; List ql1 = BuiltIn.map(f, l1); List ql2 = BuiltIn.map(f, l2); Где здесь вообще враппер, не говоря уже про каждый случай вызова? > >>не надо. и тебе как - для скриптинга это удобно? (реализация 9 раз > >>одного и того же) > > Удобно, что здесь неудобного? И какое мне, как пользователю, дело до > > реализации? > то есть ты не хочешь обощать части своих скриптов и т.д. Наверное, я напрочь тупой, но нельзя ли расшифровать, что значит "обобщать части своих скриптов и т.д."? > >>Ничего - городить на каждый чих врапперы конечно можно, но > >>читаемости не прибавит. > > Это субъективно. Два-три враппера _я_ выдерживаю. > То есть, по твоему, врапперы прибавляют читаемость? Нет. Они, до определенного количества, ее не убавляют. > >>String - не коллекция. Массив - не коллекция. > > Вы же только что согласились, что врапперы можно написать. > а так же писать врапперы на каждый новый тип массива. > напишите Wrapper для String [] теперь для Applet [] Для того, чтобы добавить элементы массива в список, не надо знать их реальный тип, поэтому я напишу один для Object[]. > >>>>- функции - это объекты > >>врапперов не надо писать, с ними можно делать все, что с объектами. > > А что еще делают с функцией, кроме как вызывают? > сравнивают, передают в качестве параметра, хранят в переменных и > списках. Чем для этого не подходит интерфейс Function? > > Не понял. Писать за Вас это будет любая IDE. А зачем это читать? > как любая IDE будет за меня _читать_ этот не относящийся к делу код. А кто за меня будет читать и писать все эти self'ы в методах класса? Это к вопросу о лаконичности. А конструктор/методы предка вызывать не через super, а по имени? Это к вопросу о реюзе. Предлагаю прекратить членами меряться. > эти примеры были только иллюстрацией. Иллюстрацией чего? > Еще, питон обладает большей способностью консервировать щелчки с тем > чтобы дальнейшем щелкать меньше. Это как? > > решили. Я просто хотел узнать, чем Питон лучше Java в плане > > кроссплатформенности. > http://python.org/download/download_other.html Количество - это хорошо. А что с качеством? > ;))) вот в конце вы мне предложили писать на питоне, толькопод JVM Я такого не предлагал. Я предложил написать свои хелперы или взять готовые, если хочется лаконичности. А уж на что эти хелперы будут похожи - дело вкуса писателя. -- 0xdeadbeef |
From: Max B. <be...@ma...> - 2003-10-18 01:28:22
|
Peter B. Shalimoff wrote: >>>>статическая типизация нее позволяет использовать a+b для любых >>>>объектов, на множестве которых определен + > > > Надеялся, что при ответе Вы перечитаете эту фразу и исправите ее на то, > что _действительно_ хотели сказать. Потому что в таком виде - это, > извините, бред. > Нельзя написать функцию которая работает с любым объектом, у которого есть метод add > >>>При чем здесь статичность типизации? >> >>при том, что для получения функции, которая вызывает метод X у объекта >>y надо в обязательносм порядке декларировать интерфейс объекта y. > > > Интерфейс декларируется у типа, а не у объекта. Если у меня есть n > объектов одного типа, то и вести себя они должны одинаково - как > предписано интерфейсом. А не так, что n-1 одинаковые, а у какого-то > одного объекта есть левый метод X, неописанный в интерфейсе. И "в > обязательном порядке" - это даже хорошо, т.к., забыв определить нужный > метод, в Java я получу ошибку на этапе компиляции, а в Питоне - на этапе > выполнения. > именно этот я и вкладывал когда писал "надежность меньше, реюз больше" > >>>>напиши на Java аналог функции map - у тебя не получится именно из за >>>>того, что Java - язык статически типизированный. > > > Вот зачем надо было это говорить, зная про Jython? > > >>>=== Function.java === >>>public interface Function >>>{ >>> public Object call(FunctionArguments args); >>>} >> >>Все - здесь статическая типизация накрылась. > > > Во-первых, никто и не обещал, что она останется. Во-вторых, не вижу в > этом проблемы. Реализация функции - моя. Списки, переданные в map - тоже > мои. Наверное, я знаю, что мне ожидать на выходе? > О... если так рассуждать, статическая типизация вообще не нужна. См. предыдущее предложение. > >>Кстати, тебе придтся для каждого случая вызова функции создавать >>wrapper, который читебальности не прибавит. Ты сам бы стал >>пользоваться такой map? > > > Стал бы. Для меня BuiltIn.map(null, new List[]{l1, l2,l3}); выглядит > читабельно. Для абстрактных "остальных", думаю, десяти перегруженных > map'ов, принимающих разное количество List'ов, должно хватить. я говорил про фрапперы функций. Как напримар воспользовавшись твоим map зключить все строки списка в кавычки. > > >>не надо. и тебе как - для скриптинга это удобно? (реализация 9 раз >>одного и того же) > > > Удобно, что здесь неудобного? И какое мне, как пользователю, дело до > реализации? то есть ты не хочешь обощать части своих скриптов и т.д. > > >>>>- все литералы, про которые я думаю как о коллекции является >>>>коллекцией (в том числе строка) >>> >>>А что мешает на Java написать класс наподобие такого: >> >>Ничего - городить на каждый чих врапперы конечно можно, но читаемости >>не прибавит. > > > Это субъективно. Два-три враппера _я_ выдерживаю. То есть, по твоему, врапперы прибавляют читаемость? > > >>>>- все эти коллекции доступны единообразно и существует множество >>>>"синтаксического сахара" для работы с коллекциями >>> >>>В Java они доступны не менее единообразно - java.util.* >> >>String - не коллекция. Массив - не коллекция. > > > Вы же только что согласились, что врапперы можно написать. а так же писать врапперы на каждый новый тип массива. напишите Wrapper для String [] теперь для Applet [] > >>>>- функции - это объекты >> >>врапперов не надо писать, с ними можно делать все, что с объектами. > > > А что еще делают с функцией, кроме как вызывают? сравнивают, передают в качестве параметра, хранят в переменных и списках. >>как мне написать класс, кторый за меня будет писать _и читать_ >>class Program{ >> public static void main(String args){ >> } >>} > > > Не понял. Писать за Вас это будет любая IDE. А зачем это читать? как любая IDE будет за меня _читать_ этот не относящийся к делу код. >>Тогда я не совсем понимаю что ты вкладываешь в понятие скриптинг. >>Для меня - автоматизация повседневных задач. > Для меня - тоже. Вывод на печать списка строковых литералов - это не > повседневная задача, а детский сад. Вывод на печать списка строк, > полученных откуда-то извне (БД, парсинг файла, сеть и т.п.) - это еще > смахивает на задачу. эти примеры были только иллюстрацией. перед печатью можно со строками что-то сделать... > > >>>>хочется ли тебе ради одноразового скрипта писать все эти Buffered >>>>readerы и т.д.? >>> >>>Мне вообще никогда ничего не хочется писать. Хочу щелкнуть пальцами >>>и получить готовую программу. Хотя, иногда даже пальцами щелкать >>>лень. Buffered reader'ы буду использовать из-за оправданности этого >>>использования, а не из-за n-разовости использования скрипта. >> >>А зачем щелкать пальцами 20 раз, если вместо этого можно щелкнуть 2? > Кто-то же должен 20 раз щелкнуть, чтобы все остальные, включая этого > "кого-то" могли щелкнуть только 2. Спросите у автора Питона, зачем он > 20 раз щелкал. Потому что питона у него не было. Еще, питон обладает большей способностью консервировать щелчки с тем чтобы дальнейшем щелкать меньше. > > >>Чем Java для скриптинга лучше? > > > Не знаю. Я не собирался доказывать, что Java лучше, это Вы без меня > решили. Я просто хотел узнать, чем Питон лучше Java в плане > кроссплатформенности. http://python.org/download/download_other.html > А также все вкусности, потому что в официальной > документации я их задолбался вычислять. а это надо не доки, а введение на досуге прочитать. >>>>для скриптинга лаконичность важна. >>> >>>Лаконичность можно и в Java сделать, написав пакет >>>scripting.your_favourite_scripting_language. >> >>то есть Jython переписать - а зачем? > > > Макс, ну что Вы как этот. Если есть готовое, то берем и юзаем. Если нету > - пишем, а потом юзаем. ;))) вот в конце вы мне предложили писать на питоне, толькопод JVM |
From: Peter B. S. <vs...@ho...> - 2003-10-16 21:05:59
|
Max Belugin wrote: > >>статическая типизация нее позволяет использовать a+b для любых > >>объектов, на множестве которых определен + Надеялся, что при ответе Вы перечитаете эту фразу и исправите ее на то, что _действительно_ хотели сказать. Потому что в таком виде - это, извините, бред. > > При чем здесь статичность типизации? > при том, что для получения функции, которая вызывает метод X у объекта > y надо в обязательносм порядке декларировать интерфейс объекта y. Интерфейс декларируется у типа, а не у объекта. Если у меня есть n объектов одного типа, то и вести себя они должны одинаково - как предписано интерфейсом. А не так, что n-1 одинаковые, а у какого-то одного объекта есть левый метод X, неописанный в интерфейсе. И "в обязательном порядке" - это даже хорошо, т.к., забыв определить нужный метод, в Java я получу ошибку на этапе компиляции, а в Питоне - на этапе выполнения. > >>напиши на Java аналог функции map - у тебя не получится именно из за > >>того, что Java - язык статически типизированный. Вот зачем надо было это говорить, зная про Jython? > > === Function.java === > > public interface Function > > { > > public Object call(FunctionArguments args); > > } > Все - здесь статическая типизация накрылась. Во-первых, никто и не обещал, что она останется. Во-вторых, не вижу в этом проблемы. Реализация функции - моя. Списки, переданные в map - тоже мои. Наверное, я знаю, что мне ожидать на выходе? > Кстати, тебе придтся для каждого случая вызова функции создавать > wrapper, который читебальности не прибавит. Ты сам бы стал > пользоваться такой map? Стал бы. Для меня BuiltIn.map(null, new List[]{l1, l2,l3}); выглядит читабельно. Для абстрактных "остальных", думаю, десяти перегруженных map'ов, принимающих разное количество List'ов, должно хватить. > не надо. и тебе как - для скриптинга это удобно? (реализация 9 раз > одного и того же) Удобно, что здесь неудобного? И какое мне, как пользователю, дело до реализации? > >>- все литералы, про которые я думаю как о коллекции является > >>коллекцией (в том числе строка) > > А что мешает на Java написать класс наподобие такого: > Ничего - городить на каждый чих врапперы конечно можно, но читаемости > не прибавит. Это субъективно. Два-три враппера _я_ выдерживаю. > >>- все эти коллекции доступны единообразно и существует множество > >>"синтаксического сахара" для работы с коллекциями > > В Java они доступны не менее единообразно - java.util.* > String - не коллекция. Массив - не коллекция. Вы же только что согласились, что врапперы можно написать. > >>- функции - это объекты > врапперов не надо писать, с ними можно делать все, что с объектами. А что еще делают с функцией, кроме как вызывают? > Рекомендую написать что-нибудь объектное на ABAP. Тогда, может быть, > возникнет уважение к хорошему синтаксису ;) Я не против хорошего синтаксиса. > как мне написать класс, кторый за меня будет писать _и читать_ > class Program{ > public static void main(String args){ > } > } Не понял. Писать за Вас это будет любая IDE. А зачем это читать? > Тогда я не совсем понимаю что ты вкладываешь в понятие скриптинг. > Для меня - автоматизация повседневных задач. Для меня - тоже. Вывод на печать списка строковых литералов - это не повседневная задача, а детский сад. Вывод на печать списка строк, полученных откуда-то извне (БД, парсинг файла, сеть и т.п.) - это еще смахивает на задачу. > >>хочется ли тебе ради одноразового скрипта писать все эти Buffered > >>readerы и т.д.? > > Мне вообще никогда ничего не хочется писать. Хочу щелкнуть пальцами > > и получить готовую программу. Хотя, иногда даже пальцами щелкать > > лень. Buffered reader'ы буду использовать из-за оправданности этого > > использования, а не из-за n-разовости использования скрипта. > А зачем щелкать пальцами 20 раз, если вместо этого можно щелкнуть 2? Кто-то же должен 20 раз щелкнуть, чтобы все остальные, включая этого "кого-то" могли щелкнуть только 2. Спросите у автора Питона, зачем он 20 раз щелкал. > Чем Java для скриптинга лучше? Не знаю. Я не собирался доказывать, что Java лучше, это Вы без меня решили. Я просто хотел узнать, чем Питон лучше Java в плане кроссплатформенности. А также все вкусности, потому что в официальной документации я их задолбался вычислять. > >>для скриптинга лаконичность важна. > > Лаконичность можно и в Java сделать, написав пакет > > scripting.your_favourite_scripting_language. > то есть Jython переписать - а зачем? Макс, ну что Вы как этот. Если есть готовое, то берем и юзаем. Если нету - пишем, а потом юзаем. -- 0xdeadbeef |
From: Max B. <be...@ma...> - 2003-10-14 05:24:25
|
Peter B. Shalimoff wrote: >>PBS> Что значит "меньше реюза"? >>статическая типизация нее позволяет использовать a+b для любых >>объектов, на множестве которых определен + > > > При чем здесь статичность типизации? при том, что для получения функции, которая вызывает метод X у объекта y надо в обязательносм порядке декларировать интерфейс объекта y. >>напиши на Java аналог функции map - у тебя не получится именно из за >>того, что Java - язык статически типизированный. > > === Function.java === > public interface Function > { > public Object call(FunctionArguments args); > } > Все - здесь статическая типизация накрылась. Кстати, тебе придтся для каждого случая вызова функции создавать wrapper, который читебальности не прибавит. Ты сам бы стал пользоваться такой map? > === FunctionArguments.java === > import java.util.LinkedList; > public class FunctionArguments extends LinkedList { } > > > >>или хотя бы аналог такой функции >>def sum(Xs): >> r=Xs[0] >> for x in Xs[1:]: >> r=r+x >> return r >>print sum([1,2,3]) >>print sum(['1','2','3']) >>print sum([[1,2],[2,3]]) >>print sum('1234') > > > Объясните смысл последней конструкции? демонстрация того, что строковый литерал - тоже коллекция > > import java.util.List; > class MyMath > { > static double sum(double[] a); > static float sum(float[] a); > static long sum(long[] a); > static int sum(int[] a); > static byte sum(byte[] a); > static boolean sum(boolean[] a); > > static String sum(char[] a); > static String sum(String[] a); > > static List sum(List[] a); > } > > Реализацию, думаю, необязательно приводить? не надо. и тебе как - для скриптинга это удобно? (реализация 9 раз одного и того же) >>- оператор for работает с коллекциями (будет в тигре, знаю) > > > Вы читали, как он на самом деле работает? Такой же сахар, как и > оператор +. да, сахар - все есть сахар. Java тоже есть сахар на байткодом. >>- все литералы, про которые я думаю как о коллекции является >>коллекцией (в том числе строка) > > > А что мешает на Java написать класс наподобие такого: Ничего - городить на каждый чих врапперы конечно можно, но читаемости не прибавит. > > > >>- все эти коллекции доступны единообразно и существует множество >>"синтаксического сахара" для работы с коллекциями > > > В Java они доступны не менее единообразно - java.util.* String - не коллекция. Массив - не коллекция. > > >>- функции - это объекты > > > И что? > врапперов не надо писать, с ними можно делать все, что с объектами. > >>мне нравится, кстати, отсутствие скобок (все равно я отступы так >>ставлю, зачем еще и скобки) > > А не угнетает, что вместо 'i++' надо писать 'i+=1'? А бэкслэш в конце > строки ставить, если хочется выражение на несколько строк разбить? Мы > не про синтаксис говорили. Я, по крайней мере. > Я говорю про язык. Для скриптинга. Рекомендую написать что-нибудь объектное на ABAP. Тогда, может быть, возникнет уважение к хорошему синтаксису ;) >>спасать мир не надо, но для _скриптинга_ важно, чтобы простые, >>часто используемые вещи делались просто. Если каждый раз, когда >>надо просто прочитать текстовый файл, необходимо городить множество >>конструкций, это минус. > Ну так берется и пишется класс, городящий это все за меня. как мне написать класс, кторый за меня будет писать _и читать_ class Program{ public static void main(String args){ } } >>PBS> Надеюсь, "подвох" не в количестве строк? :) >>именно в них. > > > На программах такого размера это выглядит особенно эффектно. Только > практической ценности в них - ноль. Тогда я не совсем понимаю что ты вкладываешь в понятие скриптинг. Для меня - автоматизация повседневных задач. > >>теперь напиши аналог такого скрипта >>for line in file('1.py'): >> print '>>>'+line >>хочется ли тебе ради одноразового скрипта писать все эти Buffered >>readerы и т.д.? > > > Мне вообще никогда ничего не хочется писать. Хочу щелкнуть пальцами и > получить готовую программу. Хотя, иногда даже пальцами щелкать лень. > Buffered reader'ы буду использовать из-за оправданности этого > использования, а не из-за n-разовости использования скрипта. А зачем щелкать пальцами 20 раз, если вместо этого можно щелкнуть 2? Чем Java для скриптинга лучше? > >>для скриптинга лаконичность важна. > > > Лаконичность можно и в Java сделать, написав пакет > scripting.your_favourite_scripting_language. то есть Jython переписать - а зачем? |
From: Peter B. S. <vs...@ho...> - 2003-10-14 04:59:50
|
Max Belugin wrote: > PBS> Что значит "меньше реюза"? > статическая типизация нее позволяет использовать a+b для любых > объектов, на множестве которых определен + При чем здесь статичность типизации? На определенность оператора "на множестве" каких-либо типов влияет только его (оператора) осмысленность для этих типов. В случае с Питоном добавляется еще и лень автора языка. :) Попробуйте сложить оператором + (или +=) коллекцию и не коллекцию, например, [1] и 2, или 1 и "2", или "1" и 2. Все эти операторы - сахар, не больше. Ну нельзя в Java определять операторы - и что? Кому надо, делает интерфейсы с методами add/sub/div/mul/что_там_еще и реализует их в нужных классах. > напиши на Java аналог функции map - у тебя не получится именно из за > того, что Java - язык статически типизированный. :) Что Вы привязались к этой типизации? Если расскажете, какая разница между tuple и list, сделаю, как в Питоне. === Test.java === import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class Test { public static void main(String[] args) { Test t1 = new Test(); t1.test(); } void test() { LinkedList l1 = new LinkedList(); l1.add("Yops"); l1.add(new Integer(2)); LinkedList l2 = new LinkedList(); l2.add("l2::zombuk"); LinkedList l3 = new LinkedList(); l3.add("l3::1"); l3.add("l3::2"); l3.add("l3::3"); List[] a1 = {l1, l2, l3}; List rv; System.out.println("Gonna call map(None, l1, l2, l3)"); rv = BuiltIn.map(null, a1); System.out.println("rv=" + rv); dumpList(rv); System.out.println("Gonna call map(f, l1, l2, l3)"); rv = BuiltIn.map(f, a1); System.out.println("rv=" + rv); dumpList(rv); System.out.println("Gonna call map(f2, l1)"); rv = BuiltIn.map(f2, l1); System.out.println("rv=" + rv); dumpList(rv); System.out.println("Gonna call map(None, <modified l1>)"); l1.add(null); l1.add("l1::after_null"); rv = BuiltIn.map(null, l1); System.out.println("rv=" + rv); dumpList(rv); } static void dumpList(List l) { int i = 0; for (Iterator li = l.iterator(); li.hasNext(); i++) { System.out.println("l[" + i + "]='" + li.next() + "'"); } } static final Function f = new Function() { public Object call(FunctionArguments args) { System.out.print("f: "); for (int i = 0; i < args.size(); i++) { if (i > 0) { System.out.print(", "); } System.out.print("args[" + i + "]=" + args.get(i)); } System.out.println(""); return null; } }; static final Function f2 = new Function() { public Object call(FunctionArguments args) { System.out.print("f2: "); for (int i = 0; i < args.size(); i++) { if (i > 0) { System.out.print(", "); } System.out.print("args[" + i + "]=" + args.get(i)); } System.out.println(""); return null; } }; } === BuiltIn.java === import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class BuiltIn { public static List map(Function func, final List[] lists_arr) { if (func == null) func = identityFunction; final LinkedList rc = new LinkedList(); final int lists_count = lists_arr.length; final Iterator[] lists_iters = new Iterator[lists_count]; final FunctionArguments args = new FunctionArguments(); boolean more_items = true; while (more_items) { args.clear(); more_items = false; for (int i = 0; i < lists_count; i++) { Iterator li = lists_iters[i]; if (li == null) { li = lists_iters[i] = lists_arr[i].iterator(); } args.add(li.hasNext() ? li.next() : null); more_items |= li.hasNext(); } rc.add(func.call(args)); } return rc; } public static List map(Function func, final List list) { if (func == null) func = identityFunction; final LinkedList rc = new LinkedList(); final FunctionArguments args = new FunctionArguments(); for (Iterator li = list.iterator(); li.hasNext(); ) { args.clear(); args.add(li.next()); rc.add(func.call(args)); } return rc; } private static final Function identityFunction = new Function() { public Object call(final FunctionArguments args) { return args.size() == 1 ? args.get(0) : new LinkedList(args); } }; } === Function.java === public interface Function { public Object call(FunctionArguments args); } === FunctionArguments.java === import java.util.LinkedList; public class FunctionArguments extends LinkedList { } > или хотя бы аналог такой функции > def sum(Xs): > r=Xs[0] > for x in Xs[1:]: > r=r+x > return r > print sum([1,2,3]) > print sum(['1','2','3']) > print sum([[1,2],[2,3]]) > print sum('1234') Объясните смысл последней конструкции? import java.util.List; class MyMath { static double sum(double[] a); static float sum(float[] a); static long sum(long[] a); static int sum(int[] a); static byte sum(byte[] a); static boolean sum(boolean[] a); static String sum(char[] a); static String sum(String[] a); static List sum(List[] a); } Реализацию, думаю, необязательно приводить? > - оператор for работает с коллекциями (будет в тигре, знаю) Вы читали, как он на самом деле работает? Такой же сахар, как и оператор +. > - все литералы, про которые я думаю как о коллекции является > коллекцией (в том числе строка) А что мешает на Java написать класс наподобие такого: import java.util.List; public class Q { static List newCollection(String s); static List newCollection(char[] a); static List newCollection(CharBuffer cb); static List newCollection(StringBuffer sb); static List newCollection(о_чем_еще_я_думаю_как_о_коллекции z); } > - все эти коллекции доступны единообразно и существует множество > "синтаксического сахара" для работы с коллекциями В Java они доступны не менее единообразно - java.util.* > - функции - это объекты И что? > - строковые литералы могут быть как со специальными символами, так и > без их учета (для Java я себе даже сделал скриптец в фаре, который > удвояет бекслешы) а в питоне достаточно написать r'c:\Programs > files\test' - особенно помагает с регулярными выражениями. Да, удобно. Еще мне нравится list comprehensions. Такой мини-SQL. :) > мне нравится, кстати, отсутствие скобок (все равно я отступы так > ставлю, зачем еще и скобки) А не угнетает, что вместо 'i++' надо писать 'i+=1'? А бэкслэш в конце строки ставить, если хочется выражение на несколько строк разбить? Мы не про синтаксис говорили. Я, по крайней мере. > спасать мир не надо, но для _скриптинга_ важно, чтобы простые, > часто используемые вещи делались просто. Если каждый раз, когда > надо просто прочитать текстовый файл, необходимо городить множество > конструкций, это минус. Ну так берется и пишется класс, городящий это все за меня. > PBS> Надеюсь, "подвох" не в количестве строк? :) > именно в них. На программах такого размера это выглядит особенно эффектно. Только практической ценности в них - ноль. > теперь напиши аналог такого скрипта > for line in file('1.py'): > print '>>>'+line > хочется ли тебе ради одноразового скрипта писать все эти Buffered > readerы и т.д.? Мне вообще никогда ничего не хочется писать. Хочу щелкнуть пальцами и получить готовую программу. Хотя, иногда даже пальцами щелкать лень. Buffered reader'ы буду использовать из-за оправданности этого использования, а не из-за n-разовости использования скрипта. > для скриптинга лаконичность важна. Лаконичность можно и в Java сделать, написав пакет scripting.your_favourite_scripting_language. -- 0xdeadbeef |
From: Max B. <be...@ma...> - 2003-10-10 14:34:41
|
Hello winscript-talks, Вообще SpiderMonkey - продвинутый: тут тебе и свойства .... а вот имплементация под windows с GUI: http://wxjs.sourceforge.net/ -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |
From: Max B. <be...@ma...> - 2003-10-10 07:13:15
|
Hello Peter, Friday, October 10, 2003, 1:23:52 AM, you wrote: PBS> Max Belugin wrote: >> Peter B. Shalimoff wrote: >> > Почему не Java? >> - Java строго типизированный (больше надежность, меньше реюза) PBS> Что значит "меньше реюза"? статическая типизация нее позволяет использовать a+b для любых объектов, на множестве которых определен + напиши на Java аналог функции map - у тебя не получится именно из за того, что Java - язык статически типизированный. или хотя бы аналог такой функции def sum(Xs): r=Xs[0] for x in Xs[1:]: r=r+x return r print sum([1,2,3]) print sum(['1','2','3']) print sum([[1,2],[2,3]]) print sum('1234') C:\0>python 1.py 6 123 [1, 2, 2, 3] 1234 >> - в java нет много языковых вкусностей, которые есть в Python PBS> Например? Только именно языковых, а не стандартной (или еще какой) PBS> библиотеки. Ничего, кроме параметров функции по умолчанию и closures PBS> (5.11 Lambdas), не нашел. - оператор for работает с коллекциями (будет в тигре, знаю) - все литералы, про которые я думаю как о коллекции является коллекцией (в том числе строка) - все эти коллекции доступны единообразно и существует множество "синтаксического сахара" для работы с коллекциями - функции - это объекты - строковые литералы могут быть как со специальными символами, так и без их учета (для Java я себе даже сделал скриптец в фаре, который удвояет бекслешы) а в питоне достаточно написать r'c:\Programs files\test' - особенно помагает с регулярными выражениями. >> - Python лаконичен. PBS> :))) Хороший аргумент. Примерно такого же рода, как и этот: мне нравится, кстати, отсутствие скобок (все равно я отступы так ставлю, зачем еще и скобки) >> - в java даже для того, чтобы написать hello, world надо заводить класс PBS> Можно подумать, чтобы завести класс, надо, как минимум, спасти мир. Это PBS> уже на религию смахивает, по-моему. спасать мир не надо, но для _скриптинга_ важно, чтобы простые, часто используемые вещи делались просто. Если каждый раз, когда надо просто прочитать текстовый файл, необходимо городить множество конструкций, это минус. >> напиши, например аналог программы: >> for a in ['alpha', 'beta', 'gamma']: >> print a PBS> Надеюсь, "подвох" не в количестве строк? :) именно в них. PBS> public class z PBS> { PBS> public static void main(String[] args) PBS> { PBS> Object[] a = {"alpha", "beta", "gamma"}; PBS> for (int i=0; i<a.length; i++) { PBS> System.out.println(a[i]); PBS> } PBS> } PBS> } теперь напиши аналог такого скрипта for line in file('1.py'): print '>>>'+line хочется ли тебе ради одноразового скрипта писать все эти Buffered readerы и т.д.? для скриптинга лаконичность важна. -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |
From: Peter B. S. <vs...@ho...> - 2003-10-09 21:25:13
|
Max Belugin wrote: > Peter B. Shalimoff wrote: > > Почему не Java? > - Java строго типизированный (больше надежность, меньше реюза) Что значит "меньше реюза"? > - в java нет много языковых вкусностей, которые есть в Python Например? Только именно языковых, а не стандартной (или еще какой) библиотеки. Ничего, кроме параметров функции по умолчанию и closures (5.11 Lambdas), не нашел. > - Python лаконичен. :))) Хороший аргумент. Примерно такого же рода, как и этот: > - в java даже для того, чтобы написать hello, world надо заводить класс Можно подумать, чтобы завести класс, надо, как минимум, спасти мир. Это уже на религию смахивает, по-моему. > напиши, например аналог программы: > for a in ['alpha', 'beta', 'gamma']: > print a Надеюсь, "подвох" не в количестве строк? :) public class z { public static void main(String[] args) { Object[] a = {"alpha", "beta", "gamma"}; for (int i=0; i<a.length; i++) { System.out.println(a[i]); } } } -- 0xdeadbeef |
From: Max B. <be...@ma...> - 2003-10-08 18:14:05
|
Peter B. Shalimoff wrote: > Max Belugin wrote: > >>С моей точки зрения Питон - лучший выбор для скриптинга, особенно если >>нужен кроссплатформенный > > > Почему не Java? > - Java строго типизированный (больше надежность, меньше реюза) - в java нет много языковых вкусностей, которые есть в Python - Python лаконичен. - в java даже для того, чтобы написать hello, world надо заводить класс напиши, например аналог программы: for a in ['alpha', 'beta', 'gamma']: print a |
From: Peter B. S. <vs...@ho...> - 2003-10-08 05:02:20
|
Max Belugin wrote: > С моей точки зрения Питон - лучший выбор для скриптинга, особенно если > нужен кроссплатформенный Почему не Java? -- 0xdeadbeef |
From: Max B. <be...@ma...> - 2003-10-06 12:53:16
|
Hello Max, Monday, October 6, 2003, 10:58:14 AM, you wrote: MB> Руби - скриптовый язык, в том числе и под виндовс, похож на изрядную MB> долю смолтока, с некоторым количеством перла и питона. MB> http://www.artima.com/intv/ruby.html Кстати, там же - интервью с Гвидо ван Россумом - автором языка Питон (http://www.python.ru). С моей точки зрения Питон - лучший выбор для скриптинга, особенно если нужен кроссплатформенный Интервью http://www.artima.com/intv/python.html -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |
From: Max B. <be...@ma...> - 2003-10-06 06:58:24
|
Hello winscript-talks, Руби - скриптовый язык, в том числе и под виндовс, похож на изрядную долю смолтока, с некоторым количеством перла и питона. http://www.artima.com/intv/ruby.html -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |
From: Max B. <be...@ma...> - 2003-09-04 07:42:57
|
Hello winscript-talks, http://www.workflowconcepts.com/jsdb/ -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |
From: Max B. <be...@ma...> - 2003-08-27 08:16:11
|
Hello winscript-talks, http://www.objenv.com/cetus/oo_jscript.html -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |
From: Peter B. S. <vs...@ho...> - 2003-08-11 05:52:16
|
Здравствуйте. Как сгенерить typelib'у из нескольких компонентов? === t.wsc === <package> <component id="c1">...</component> <component id="c2">...</component> </package> === reg.js === var tl = new ActiveXObject("Scriptlet.TypeLib"); tl.AddURL("t.wsc"); tl.Path = "t.tlb"; tl.GUID = "..."; tl.MajorVersion = 1; tl.MinorVersion = 0; tl.Write(); H:\TEMP\z\WSC>cscript reg.js H:\TEMP\z\WSC\reg.js(256, 5) (null): Name already exists in the library. Даже если разнести компоненты по разным файлам, а потом делать: tl.AddURL("c1.wsc"); tl.AddURL("c2.wsc"); ... tl.Write(); то получаю такое же исключение. Я так понимаю, scrobj.dll создает для каждого компонента dispinterface с всегда одним и тем же именем Automation, или что? В MSDN ни слова не нашел про это. Неужели все руками придется делать? -- 0xdeadbeef |
From: Max B. <be...@ma...> - 2003-08-07 08:53:45
|
Привет All: Ваш друг Max Belugin считает, что следующая статья интересная и захотел переслать её Вам. Сравнение быстродействия различных сред для создания COM объектов (Дата: Четверг, 07 августа, 2003 г. - 01:52 BT) Тема: Windows Scripting Host URL: http://winscript.sourceforge.net/modules.php?op=modload&name=News&file=article&sid=7&newlang=rus Вы можете прочитать интересные статьи в Windows Scripts http://winscript.sourceforge.net/ |
From: Max B. <be...@ma...> - 2003-07-28 07:31:01
|
Hello winscript-talks, Случайно наткнулся на статью, где перечислены различные скриптовые языки под Windows - ForthScript, HaskellScript, LuaScript, NullScript, PerlScript, Python, RubyScript, TclScript - это кроме штатных VBScript, JScript http://www.mvps.org/scripting/languages/ -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |
From: Max B. <be...@ma...> - 2003-04-03 07:07:27
|
Hello winscript-talks, http://winscript.sourceforge.net/modules.php?op=modload&name=News&file=article&sid=5&mode=thread&order=0&thold=0 http://activex.sf.net - SMTP, POP3, UUE, FINGER, Internet Time, Ping, DNS, Winsock, FTP, Whois, Ras, Des, Base64, CRC, QuottedPrintable и все бесплатно! правда сам не проверял, но доки вроде описаны толково. active jms - доступ к Java Messaging Service через Active X и тоже бесплатно http://active-jms.sourceforge.net/ -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |
From: Max B. <be...@ma...> - 2003-03-26 09:59:22
|
Hello winscript-talks, Добавил в "ссылки" еще один сайт http://www.winscripter.com интересный, но давно не обновлялся. форум живой -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |
From: Max B. <be...@ma...> - 2003-03-21 06:54:49
|
Hello winscript-talks, http://www.compulenta.ru/2003/3/20/38387/ Новая критическая дыра во всех версиях Windows 20 марта 2003 года, 11:58; текст: Иван Карташев Корпорация Microsoft сообщила об обнаружении новой критической дыры в Windows. В отличие от недавно обнаруженной прорехи, новая дыра опасна не только для пользователей Windows 2000. По информации Microsoft, она имеется во всех поддерживаемых в настоящее время версиях Windows от Windows 98 и NT 4 до Windows XP. Для всех этих операционных систем уязвимость носит критический характер. Причиной уязвимости является возможность возникновения ошибки переполнения буфера в модуле jscript.dll, ответственном в Windows за обработку скриптов JScript. Для осуществления атаки хакер должен создать HTML-документ и включить в него скрипт, использующий дыру. Затем эту страницу можно разместить на веб-сайте и заманить туда пользователя или отправить в виде электронного письма в формате HTML. В случае успешного использования дыры злоумышленник захватит управление компьютером с правами пользователя, работающего на нем в данный момент. Поскольку уязвимость носит критический характер, Microsoft настоятельно рекомендует всем пользователям Windows немедленно установить соответствующую заплатку. Если это по каким-то причинам невозможно, то можно принять и другие меры: запретить использование скриптов в браузере. При использовании Outlook 98 или 2000 желательно установить пакет обеспечения безопасности. В Oulook Express 6 и Outlook 2002 обработка скриптов по умолчанию отключена, и использовать уязвимость нельзя. Подробную информацию о дыре и заплатках можно найти в бюллетене безопасности Microsoft MS03-008. -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |
From: Max B. <be...@ma...> - 2003-03-18 07:36:16
|
Hello replymsg, Monday, March 17, 2003, 10:11:09 PM, you wrote: -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |
From: <wom...@ho...> - 2003-03-14 14:02:27
|
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </head> <body> <table border="0" width="560" bordercolor="#B1415E" cellspacing="0" cellpadding="5" bordercolordark="#FFFFFF"> <tr> <td width="500" colspan="5"> <p style="margin-left: 5; margin-top: 0; margin-bottom: 12"><font color="#B1415E" face="Verdana" size="5">Шикарное дамское белье: <br> </font><font color="#B1415E" face="Verdana" size="2">весенняя распродажа на </font><a href="http://www.womanstyle.ru"><font face="Verdana" size="2" color="#B1415E">WomanStyle.ru</font></a></p> <p style="font-size: 11px; margin-left: 5; margin-top: 6; margin-bottom: 6"><font color="#808080" face="Verdana">Бесплатная доставка курьером по Москве на следующий день. <br> Доставка по почте во все города России. Накопительная система скидок. </font></td> </tr> <tr> <td width="100" valign="top" align="left"> <p style="margin-left: 5; margin-top: 0; margin-bottom: 4"><a href="http://www.womanstyle.ru/menu.asp?parent=767&cmd=down&groupid=6"><font face="Verdana" size="1" color="#808080">Comazo</font></a> <p style="margin-left: 5; margin-top: 0; margin-bottom: 4"><a href="http://www.womanstyle.ru/menu.asp?parent=768&cmd=down&groupid=6"><font face="Verdana" size="1" color="#808080">Lilly</font></a></td> <td width="100" valign="top" align="left"> <p style="margin-top: 0; margin-bottom: 4"><a href="http://www.womanstyle.ru/menu.asp?parent=769&cmd=down&groupid=6"><font face="Verdana" size="1" color="#808080">Lormar</font></a></p> <p style="margin-top: 0; margin-bottom: 4"><a href="http://www.womanstyle.ru/menu.asp?parent=766&cmd=down&groupid=6"><font face="Verdana" size="1" color="#808080">Comet</font></a></td> <td width="100" valign="top" align="left"> <p style="margin-top: 0; margin-bottom: 4"><a href="http://www.womanstyle.ru/menu.asp?parent=765&cmd=down&groupid=6"><font face="Verdana" size="1" color="#808080">KEY</font></a></p> <p style="margin-top: 0; margin-bottom: 4"><a href="http://www.womanstyle.ru/menu.asp?parent=764&cmd=down&groupid=6"><font face="Verdana" size="1" color="#808080">Italion Fashion</font></a></p> </td> <td width="100" valign="top" align="left"> <p style="margin-top: 0; margin-bottom: 4"><a href="http://www.womanstyle.ru/menu.asp?parent=770&cmd=down&groupid=6"><font face="Verdana" size="1" color="#808080">Rosme</font></a> <p style="margin-top: 0; margin-bottom: 4"><a href="http://www.womanstyle.ru/menu.asp?parent=771&cmd=down&groupid=6"><font face="Verdana" size="1" color="#808080">Милавица</font></a></td> <td width="100" valign="top" align="left"> <p style="margin-top: 0; margin-bottom: 4"><a href="http://www.womanstyle.ru/menu.asp?parent=772&cmd=down&groupid=6"><font face="Verdana" size="1" color="#808080">Пальметта</font></a></p> <p style="margin-top: 0; margin-bottom: 4"><a href="http://www.womanstyle.ru/menu.asp?parent=806&cmd=down&groupid=6"><font face="Verdana" size="1" color="#808080">Лаума</font></a></td> </tr> <tr> <td width="100"><a href="http://www.womanstyle.ru/product.asp?id=615"><img src="http://www.womanstyle.ru/ItemsImages/L1879_s.jpg" border="0" width="100" height="100"></a></td> <td width="100"><a href="http://www.womanstyle.ru/product.asp?id=826"><img src="http://www.womanstyle.ru/ItemsImages/dream_u_s.jpg" border="0" width="100" height="100"></a></td> <td width="100"><a href="http://www.womanstyle.ru/product.asp?id=64"><img src="http://www.womanstyle.ru/ItemsImages/1-755-0_s.jpg" border="0" width="100" height="100"></a></td> <td width="100"><a href="http://www.womanstyle.ru/product.asp?id=645"><img src="http://www.womanstyle.ru/ItemsImages/audace_u_s.jpg" border="0" width="100" height="100"></a></td> <td width="100"><a href="http://www.womanstyle.ru/product.asp?id=631"><img src="http://www.womanstyle.ru/ItemsImages/L8261_s.jpg" border="0" width="100" height="100"></a></td> </tr> <tr> <td width="500" colspan="5"> <p style="font-size: 11px; margin-top: 10; margin-bottom: 6" align="left"><font face="Verdana" color="#808080">Цены приятны, как весеннее солнышко. Консультации по выбору белья по телефонам </font></p> <p style="margin-top: 0; margin-bottom: 6" align="left"><b><font face="Verdana" color="#B1415E" size="3">(095) 799-9268, -67</font></b></td> </tr> </body> |
From: Max B. <be...@ma...> - 2003-03-01 06:01:19
|
Hello Peter, Saturday, March 1, 2003, 1:35:50 AM, you wrote: PBS> ----- Original Message ----- PBS> From: "Max Belugin" <be...@ma...> PBS> To: <win...@li...>; PBS> <scr...@li...> PBS> Sent: Saturday, March 01, 2003 12:27 AM PBS> Subject: Пример дирижирования MSIE при помощи JScript PBS> Может, все-таки, так? :) PBS> function waitFor(b){ PBS> while(b.ReadyState!=4) WScript.sleep(1); PBS> while(b.Document.readyState!="complete") WScript.sleep(1); PBS> } //waitFor Да. Так лучше. -- Best regards, Max mailto:be...@ma... |