LINUX.ORG.RU

Есть предложение считать NikS'a политической проституткой.

Он очень похож на Брюса Эккеля, который каждые полгода "думает" на новом модном языке.

;=)

anonymous
()

Дык! Так я же техническим маркетингом занимаюсь - Linux на разные аппаратные платформы "проталкиваю".

А старая моя любовь - это Smalltalk. ;-)

NikS
() автор топика

Niks, а где взял, как оно работает и вообще?

anonymous
()

Ужо не надо, спасибо, нашел сам :-)

anonymous
()

как на счет mod_mono? Без проблем все заработало? И под какой апач?

anonymous
()

Да балавство это всё .....
Ну хоть головой пробей все стены ActiveX ну не заработает ....
А какой толк от всех этих .NET и ASP если нет ActiveX ??

ezhikov
()

>> А какой толк от всех этих .NET и ASP если нет ActiveX ??

Может быть, я и заблуждаюсь, но вообще то объекты среды .NET призваны в значительной степени заменить COM объекты, не лишенные недостатков.

Мне просто очень понравилась лаконичность .NET WebForms решения данного примера. Безусловно, IBM WAS 5 поддерживает нынче и struts и многие другие вкусности, однако в изделии IBM такой краткости кода, увы, достичь невозможно.

К сожалению, Java за последнее время превращаетсЯ в неуправляемого монстра. Хотя это моя личная точка зрения и я на ней не настаиваю. Мне лично очень нравятся Smalltalk и ML-языки. IMHO, Smalltalk развивает абстрактное мышление, а ocaml - логическое. Постараюсь запостить скриншот самого нового обновления IBM VA Smalltalk 6.01 для Linux.

NikS
() автор топика

просвети меня почему бы не сделать то же самое вот так
и быстрее и короче и работает везде

<html>
<script>
function roll( elem ){
if( elem.value=='One' ){
elem.value='Two';
}else{
elem.value='One';
}
}
</script>
<input type=button value='One' onclick="roll(this)";>
</html>

ezhikov
()

Ну вот ещё... Это ж .net, а ты тут разумный подход ищёшь... Надо ж прогресс стимулировать, чтобы у всех были жирные каналы и мощные сервера... То же мне, придумал - на клиенте надпись на кнопке менять... Ты бы ещё на ассемблере кнопку написал.

P.S. :)))))))))))))

Mossy
()

>> и работает везде

А теперь, пожалуйста, напишите на JavaScript (не .NET'овском JavaScript'e на сервере!) динамическую выборку данных из СУБД.

Заранее Вам признателен.

NikS
() автор топика

ну давай без крайностей ....я могу те показать клиентский js который работает с бд но только при наличии odbc и только в ie .....
Использовать .NET ради этих asp:Button глупость ....
Скажи что есть в этом .NET какие такие вкусности которых у меня нет сейчас ..... я просто не знаю и интересуюсь ....

ezhikov
()

я тут начал потихоньку с этим добром разбираться. Создалось впечатление, что попросту есть написанные скрипты для контролов, которые загружаются при запросе. Например я экпериментировал с asp:calendar. Да, на aspx это всего одна строка. В браузере получается вполне нормальный DataPicker. Но это есть ничто иное как огромный html с javascript, который мне все и отображает, причем еще при каждом клике лезет на сервер, чтобы поменять выбранную дату. Вобщем-то пока выигрышь не понятен.

anonymous
()

>> и только в ie

>> работает везде

Противоречие не находите?

>> Использовать .NET ради этих asp:Button глупость

А если с помощью кнопок (списков, строк ввода & etc.) Вы вводите параметры в запрос?

NikS
() автор топика

>> есть написанные скрипты для контролов, которые загружаются при запросе

Согласен. ASP поддерживал (и поддерживает) не только Basic Script на сервере, но и JScript не сервере, если я ничего не путаю. Ключевое слово "на сервере"...

NikS
() автор топика

а пример нельзя увидеть, а то я как раз именно это и делаю.

anonymous
()

работает везде было сказано про один скрипт .....
а в ie работает как известно то что позволяет к бд подцепитсья ....
Ну ваобще естественно по моему вводить в запрос всё что требуется обработать на стороне сревера .... причём на стороне сервера обрабатывается не более 70% данных ..... можно ли например часть обработки этих asp:Button проводить на клиенте ?

ezhikov
()

Насчёт "ключевое слово 'на сервере'" я ооочень даже несогласен ....
Да одни проблемы из за того что всё делается на сервере ....
Это в окнце концов плохой стиль не проверять валидность email и наличие
пароля как в этом форуме на клиенте .... Очень часто можно избежать клиентскими скриптами львиной доли обращений к серверу .....

ezhikov
()

>> не более 70% данных

Я весьма признателен Вам за Ваши замечания, но позвольте мне не согласиться с Вашим утверждением об обработке 70% данных на сервере. Моя весьма субъективная точка зрения: 100%.

Я совсем запамятовал, что такого хорошего и скриптового есть в моем любимом lynx'е;-). И насколько безопасен JavaScript, особенно с "мультиформами"?

NikS
() автор топика

А вообще можно ли в C# работать с LDAP, SNMP? Заранее благодарен!

anonymous
()

Ну начнём с того что пользователи lynx изначально свободны всилу их меньшенства. В расчёт здраво брать IE Mozilla и Opera (указаны в порядке убывания важности) . 100% ? ну а почему бы например набирая новость для этого же допустим сайта не посмотреть у себя в броузере на _клиентской_
стороне prewiev ? Почему бы внесто полного перезагруза страницы не использовать загрузку только того ,что надо и только тогда, когда надо ?
(речь не идёт о frame потому как использование фреймов плохой стиль).

ezhikov
()

>> LDAP, SNMP

Я может быть несколько торможу, но разве для C# нет средств взаимодействия с программами, написанными на C?

NikS
() автор топика

>> на _клиентской_

Позвольте, можно ли через "мультиформу" "увести" некоторый файл от клиента на сервер? Можно ли через JavaScript на стороне клиента "сабмитнуть" (извините за новояз) эту форму?

NikS
() автор топика

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

Byte
()

Да можно сабмитить формы это не вызывает больших сложностей ....
Насчёт файлов я обычно открываю небольшое диалоговое окно ....
Например надо закачать картинку открываем окошко закачиваем и отображаем в первоначальном окне .....

ezhikov
()

Скажу честно, меня интересует вопрос: что лучше предлажить пользователям в качестве обработчика Web-запросов на сервере. (Естественно, только Linux-сервере, мое мягко скажем, отношение к мелкомягким общеизвестно!)

Такие тут вот альтернативы:

1. mono - это шанс "играть на чужом поле". Xммм... 2. Tomcat (+ Struts + J2EE)- хорошо, пока предлагается, но JIT под Linux сам видел как валится при недетерминированном числе тредов (даже под zLinux, на "старших юниксах" и z/OS USS не валится). 3. apache native API - хорошо, но где взять простейший tutorial не по CGI, а именно по native. (То же и для Tux'а) 4. IBM VA Smalltalk - отлично, но стоит как авианосец.

Так что мне посоветоваться и выслушать все точки зрения всегда полезно.

NikS
() автор топика

>> открываю небольшое диалоговое окно

Так, собственно и сделана дроставка фапйлов скриншотов на LOR. На Java сервлет для восприятия файла от сервера могу запостить. (Как тут без обработчика на стороне сервера?)

Вопрос в том, может ли JavaScript инициировать передачу некого файла без корректного и _осознанного_ нажатия пользователя на submit, а при загрузке странице? Если это так, то дыра в защите, однако...

PS. Куда, кстати, подевался наш любитель lynx'а? ;-). Он Вам покажет!;-)))

NikS
() автор топика

Да вовсе и не так она у вас сделана .....
обьясняю как закачать файл без скачки какой либо странцы
и с единственным обращением к серверу только чтоб отдать файл
при нажатии кнопки "закачать" открывается пустое окно в которое скрипт же пишет содержимое поволяющее закачать файл .....и потом при нажатии кнопки закачать файл заливается и об успешности операции сообщается родительскому окну .....
сдесь сделано далеко не так .....
Насчёт всех этих ухищрений java ..... да от лукавого это всё ...
намного удобнее писать допустим на php или другом скрипте а уже узкие места на С ...... стабильность выше а производительность соизмерима ....
затраты труда примерно равны ....

ezhikov
()

Если от выполнения скрипта зависит функциональность и тот же пользователь links'а не сможет работать с ресурсом то это неоправданно. В таких случаях надо писать альтернативный код, что вносит, опять таки, избыточность.

Byte
()

>> Насчёт всех этих ухищрений java ..... да от лукавого это всё ...

Код в студию, pls.. Свой код на Java я могу представить.

>> другом скрипте

.ASP C# - это скрипт? JSP - это скрипт? Нужно ли мне объяснить что такое скриптовые языки в "нагруженных" серверах? Чай не для домашних страничек JSP юзают! Спросите по поводу скриптовых языков у некого господина, покинувшего безвременно наш форум.;-) Он Вам очень популярно и в _вежливых_ выражениях это объяснит. А также объяснит, что для IL код будет гнать не только COBOL и Fortran, а и его любимый функциональный F#.

NikS
() автор топика

Я готов предоставить любой код из мноюупомянутого .....какой именно вас интересует ?

ezhikov
()

Интересует передача файла на сервер. 

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class GetFileServlet extends HttpServlet {

    public void doPost(HttpServletRequest request, 
                       HttpServletResponse response) 
      throws ServletException, IOException {

        ServletOutputStream servletOutputStream = 
          response.getOutputStream();

        String contentType = request.getContentType(); 

        DataInputStream dataInputStream = 
           new DataInputStream(request.getInputStream());

        int  length    = request.getContentLength();
                    byte array[]   = new byte[length];
        int  dataRead  = 0,
             totalData = 0;

        while (totalData < length) {

            dataRead = 
              dataInputStream.read(array, totalData, length);
            totalData += dataRead;
        }

        String data = new String(array);

        int lastIndex = contentType.lastIndexOf("=");
        String boundary = contentType.substring(lastIndex + 1,
                                        contentType.length());
        int position = data.indexOf("filename=\"");
        position = data.indexOf("\n", position) + 1;
        position = data.indexOf("\n", position) + 1;
        position = data.indexOf("\n", position) + 1;
        String fileData = data.substring(position, 
          data.indexOf(boundary, position) - 4);

        FileOutputStream fileOutputStream = 
          new FileOutputStream("grabbed");
        fileOutputStream.write(array,
          position, fileData.length());
        fileOutputStream.close();

        dataInputStream.close();

        servletOutputStream.println("<h3>Done!</h3>");

        servletOutputStream.close();                  
    }
}

"Вежливый" субмиттер 

<html>
  <head>
    <title>File Transfer</title>
  </head>
  <body>
    <form name   = f1 
          method = POST
          action =" servlet/GetFileServlet" 
          enctype=" multipart/form-data">
      <input type=file   name=fileName   ><p>
      <input type=submit value="Transfer">
   </form>
  </body>
</html>


NikS
() автор топика

http://linuxportal.ru/en/category.php вот сдесь сделано так как я говорил только это не окончательный вариант - есть код получше там где ваобще не обращается на сервер до закачки ... но он щас не лежит на публичном месте .... а так писать громоздко .... окончательный вариант представлю позже ;)

ezhikov
()

Очень боюсь быть голословным уж извините вот как это сделать это черновик но мысль и суть ясна

<html>
<script>
function upload(){
	var win=window.open("about:blank");
	var inh='<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></head><body><center><form enctype="multipart/form-data" action="/en/upload.php" method="post">';
	inh+='<input type="hidden" name="MAX_FILE_SIZE" value="10000">';
	inh+='<input name="image" type="file"><input type="submit" value="Туда"></form></center></body></html>
';
	win.document.write(inh);
}
</script>
<input type=button value='choose' onclick='upload()'>
</html>

ezhikov
()

>> win.document.write(inh);

Супер! Если "повесим" это не на клик, а на загрузку страниц, то специалисты по безопасности могут смело идти на покой.

Только вот у меня в Mozille сей великолепный скриптовый код (в отличие от Java/C# каббалистики) не работает. Так что не все так уж в этой жизни и плохо!;-))

NikS
() автор топика

ведь прошу же не судить лихо у меня он в mozille реботает
это черновик .....
насчёт win.document.write(); извините а какая опасность писать во мною же созданное окно ?
нет в мозилле точно пашет ....

во вторых как видишь это саммый навороченный вариант .... посмотри отлаженный предыдущий .... там пашет всё и во всех броузерах

ezhikov
()

я не понял а зачем это вешать на onload ?
реально не понимаю ....

ezhikov
()

как видишь всё что делаю я не отвергает твоих трудов просто таким нехитрым макаром мы:
1) Уменьшаем нагрузку на сервер 
2) Меньше заставляем ждать пользователя
3) Пользовательский интерфейс становится удобнее и понятнее

ezhikov
()

>> 1) Уменьшаем нагрузку на сервер

И увеличивая нагузку на каналы и уменьшая степень защиты приложения.

Дык! Так ведь, понимаете, не только одни писючки x86 имеют место быть в этом мире. Есть также zSeries, pSeries, iSeries, Sun Sparc, HP PA.

Кстати по какому классу безопасности сертифицирован z/OS?

>> 2) Меньше заставляем ждать пользователя

Подвергая его опасности быть хакнутым?

>> 3) Пользовательский интерфейс становится удобнее и понятнее

Это кому как.

NikS
() автор топика

>> извините а какая опасность писать во мною же созданное окно ?

Запустите мой пример. На сервер файл при "мультиформе" уходит. На _сервер_!

NikS
() автор топика

Ну если судить по количеству кода, который должен написать разработчик для поддержки загрузки файла, то здесь явно выигрывает ПХП.
Там есть функция move_upload_file() и ассоц массив $_FILES со всей инфой о загруженных файлах.
На обычном ASP сделать аплоад тоже нужно было писать много кода.
Как это делаеться в ASP.NET еще не разобрался.

Кстати, я тоже собрал этот XSP то при выполнии запроса, он не отдает ничего. И просто остаеться висеть в памяти до kill

kka
()

> Вопрос в том, может ли JavaScript инициировать передачу некого файла 
> без корректного и _осознанного_ нажатия пользователя на submit, а при 
> загрузке странице? Если это так, то дыра в защите, однако...
В IE  был баг позволяющий именно так и делать. Последовательность проста. JavaScript посылает управляющие команды ctrl-c, change focus, ctrl-v на поле <input type="file" и затем делает submit этой формы. Таким образом можно выкачивать без ведома пользователя любые файлы с его машины.
Сейчас не знаю исправили или нет, но проблема оказалась тогда более фундаментальной чтобы решить ее с помощью простой заплатки.


> Ну если судить по количеству кода, который должен написать 
> разработчик для поддержки загрузки файла, то здесь явно 
> выигрывает ПХП.
> Там есть функция move_upload_file() и ассоц массив $_FILES со всей 
> инфой о загруженных файлах. 
Точно также просто в Java. Вот мой код:
import com.ibm.useful.http.*;
...

public boolean upload(HttpServletRequest request, String parameter) {
  boolean result = true;
  try {
    if (request.getContentType().indexOf("multipart/form-data")!=-1) {
      PostData multidata   = new PostData(request);
      FileData tempFile    = multidata.getFileData(parameter);
      String fileName      = tempFile.getFileName();
      FileOutputStream fos = new FileOutputStream(new File(dir, fileName));
      fos.write(tempFile.getByteData());
      fos.close();
    } else {
      result = false;
    } // if
  } catch (Exception ex) {
    result = false;
  } // try-catch

  return result;
} // boolean upload(HttpServletRequest, String)

А PHP много где проигрывает и в скорости тоже.

Korwin ★★★
()

NikS ты кнешно извини тока я никак понять не могу чем это я те тек сикурность то нарушил ?
Обьясни мне пожалуста это как это я буду хакнут ....
кстати диалог это только вариант которым пользусь я ..... могу показать как аплодить файл на сервер без открытия окон ......

P.S. Извини кнешно по моему ты просто протов всего того чего сам не знаешь ....

ezhikov
()

Можно немного оффтопика?
Все время все повторяют "фрейм - плохой стиль, фрейм - плохой стиль".
Кто-нить, объясните в чем его "плохость" или это из той же серии
"не используйте goto"?

jackill ★★★★★
()

Ну не знаю как остальные, а я предпочитаю все данные от форм обрабатывать на сервере, по причине того что еще неизвестно что мне может прилететь от клиетна. Например расчитываю получить от супер-пуперного броузерного скрипта валидный емайл, а мне какой нить кулхацкер задвигает вместо него пару мег какогоо нибудь хлама, и что мне с ним делать ежели я только на клиентскую часть и понадеюсь?

anonymous
()

Проще надо быть. Вот код со struts-el (с поддержкой jstl):

Форма:

<html-el:form action="/image.do?action=upload" enctype="multipart/form-data">
 <html-el:file property="fileName"/>
 <html-el:submit property="save" />
 <html-el:cancel />
</html-el:form>

Код:

public ActionForward upload(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException {
  if (!isCancelled(httpServletRequest)) {
    IFile file = (IFile) ((DynaActionForm) actionForm).get("fileName");

    servlet.log("contentType:" + file.getContentType());
    servlet.log("name:" + file.getName());
    servlet.log("size:" + file.getSize());

    InputStream is = file.getInputStream();
    // ....

    return actionMapping.findForward("success");
  }
  return actionMapping.findForward("cancel");
}

anonymous
()

Struts - это, конечно, ruleZZZ, но WSAD для IBM WAS 5 тяжела, однако... (см. два предыдущих моих скриншота.)

mono - это рискованная игра на чужом поле.

>> как это я буду хакнут

Sorry за контрвопрос: Можно ли сабмит "навесить" на загрузку страницы?

>> P.S. Извини кнешно по моему ты просто протов всего >> того чего сам не знаешь ....

Ну, это абсолютно непродуктивный переход на личности. Я знаю то, что востребовано на рынке.

>> в чем его "плохость"

Не знаю. Документация по Java API с фреймами мне очень даже удобна.

PS. Всем спасибо за поддержание беседы!;-)

NikS
() автор топика

Нет сабмит на загрузку страницы не повесить .... но можно отправить файл не обновляя страницы - это я имел в виду

ezhikov
()

> Struts - это, конечно, ruleZZZ, но WSAD для IBM WAS 5 тяжела, однако... (см. два предыдущих моих скриншота.) 

А WSAD обязателен (если я правильно понял, это WebSphere Studio Application Developer?). Чем плох вариант использовать ant для всех плясок?

> mono - это рискованная игра на чужом поле. 

+ слабый инструментарий (есть IDE сравнимое по функциональности и удобству с IDEA, eclipse ?), зачаточные технологии (уже появился аналог JUnit?).

anonymous
()

>> А WSAD обязателен

Дык! Обязателен, если музыку заказывает ИБМ. Я не сотрудник IBM EE/A, мне не обязательна Web Сфера.

К счастью, в мои служебные обязанности входит маркетинг zLinux, а маркетинг WAS и прочих монстров - это по телефону: +7-(095)-940-2000. ;-))

NikS
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.