Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программирование
Новый Черняховский Форум > Hard & Soft > Программное обеспечение
Страницы: 1, 2, 3, 4, 5, 6, 7
Iceman
Я Си-программер, и чо?
Прекрасно понимаю для чего были созданы другие языки, просто они не лежат в плоскости поих действий.
Сейчас вапще на ПХП пишу, кстати...
fantom
Чё, чё.
Сила гигагерцев и гигабайтов, по сути, сняла вопрос о быстродействии и по ставила вопрос о скорости разработки.
Об максимально эффективном соотношении код/качество.
Это как раз то, чего не хватает Си. Более того, ссыласясь на справочник по трудозатратам по языкам программирования:
1. Ассемблер - 320
2. Ада - 240
3. Си - 180
4. Вжик Си++(МастДай) - 145
5. Вжик Барсик(МастДай) - 125
6. ПХП - 86
7. Руби - 44
8. Питон - 32
Вот и ответ на вопрос почему Си в пролёте.
А если надо, средствами того же Python - можно и компилятор нарисовать.
Собственно, такой проект есть - перевод скриптов в исполняемые модули.
Iceman
Ну и флаг в руки.

Немного подумав, добавляет:
Только здесь статистика по тредозатратам...
А можно привести сравнительную характеристику по "мощности" языка т.е. по его возможностям

З.Ы. Нет Дельфей и Си# кста
mihalich
Цитата(fantom @ 22.03.2006 - 18:29)
Хм. АйсМАнн!
Ты не понял главной мысли!
playsh открыл новую эпоху в мире программирования!!!
То что используется стиль MUD - это только начало.
Python позволяет сверху навесить 3D-интерфейс без особых напрягов. "30 фрейм пер секонд" будет обеспечено даже на не мощных машинах. Вот оно, грядущее VR!!!!!
*


Да уж... уже сейчас имеем С# - язык домохозяек umnik.gif, а переход с С/С++ на С# напоминает переход из школы в детский сад. А если зделают программирование в стиле игры, то это будет финиш shok.gif
Iceman
Между прочим Си# - не такой уж и колхоз... довольно мощный язык, но немного сложный (лично для меня) в понимании....
fantom
Си"Шарп" - я и за язык то не считаю.
Явная передалка Джавы на мастдайный манер.
По краней мер в игру "Найди 10 отличий" я с удовольствием/возмущением проиграл. smile.gif
Что касается мощности языка - на Python никак не не проигрывает, напримре Дельфям. В дистрибутив в 10 метров влазит и графика, и интернет, и базы данных, и мультимедиа, и многопоточные веб-приложения. ИМХО, Python делает Delphi процентов на 30%. Положа руку на сердце - я не ас в Delphi? далее чем клиент-клиент прикладнухи с перкачкой иоконок каждую секунду по таймеру - днло не пошло. smile.gif)) Но зато у меня есть фолиант по Делфям 7, страниц так на 1200.
Что касается понимания, это, ИМХО, архиважнейший из наиважнейших параметров. Толку от мощи ассемблера, если к 20-му килобайту текста (без мощных инструментов и соотвествующей сноровки) уже сам непонимаешь о чём речь идёт. %)
Питон в этом смысле, даёт фору Си++ (и уж тем более Си) - раза 4. Как впрочем и указано в книге по разработке больших проектов.
--------------
Привожу полную и точную таблицу.
Орлов. "Технологии разработки программного обеспечения" 2-е издание, 2003 год, стр. 46.
Ассемблер - 320
Си - 128
Кобол - 106
Фортран - 106
Паскаль - 90
С++ - 64
LISP -64
Prolog - 64
Java - 53
Ada 95 - 49
Miranda - 40
Haskel - 38
Visual C++ - 34
Visual Basic - 32
Delphi Pascal - 29
SmalTalk - 22
Perl - 21
HTML3 - 15
---------------
Моё личное ИМХО:
С# - 30...32
Python -19...20
Iceman
Хыыы
Повезло мне, походу, ибо работаю сейчас с Перлом и ХТМЛом smile.gif
А я и не подозревал насколько я должен быть счастлив smile.gif
Brutall
А что такое HTML3?
fantom
Перла - один из самых мощных извратов. Традиционно считается он наиболее подходит для обработки регулярных выражений. Питон, в первых своих инкарнациях не пытался оторвать лавры Перла, но на момент сейчас - в 1,5 раза таки делает Перлу - спасибо компилированному ядру. Но это несущественно. Существенно то, что Перл ИЗВРАТНО поддерживает классы. А Питон - имеет встроенную поддержку, как классов, так и пакетов. Причём классы имеют специальные методы - __init__, __del__, __add__, __mod__ и т. д.
Так что, ты должен быть счастлив.
Что касается ХТМЛ3 - Бруталл, ты шутишь наверно???
Это стандарт на ХТМЛ установленный консорциумом WWW. Один из его вариантов.
Iceman
А что насчет PHP?
И классы нормально обрабатываются, и методы в поряде... и вапще...
Интересно какие требования у Питона к жлезу и ПО на серваке.
Каковы нагрузки на сервак при одноврменном подключении сотни-другой пользователей....
Со скриптами cgi и формируемыми страницами HTML всё ясно. Всё это счастье прикручивается к вэб-серваку двумя строчками кода.
С PHP, как модулем срвера, траблов немного больше. Хотя если руки из правильных мест растут, тоже прикручиватся бз проблем. Стабильность работы такой связки проврена временем.
А что можт прдложить Питон обычному среднестатистическому программеру и, как частный случай, web-разработчику.
worldmind
Перл не чморите, тексты обрабатывать перлом с регулярными выражениями одно удовольствие - практически божественная власть над информацией
Balamut
Цитата(ICEMan @ 22.03.2006 - 23:34)
Я Си-программер, и чо?
Прекрасно понимаю для чего были созданы другие языки, просто они не лежат в плоскости поих действий.
Сейчас вапще на ПХП пишу, кстати...
*

я как-то ради прикола накатал на сях и скомпилировал web-приложеньце. очень шустро вертелось.
Iceman
Да, кстати...
Balamut прав. Приложения на Си довольно шустрые. А рабочих приложений Питона я что-то ни разу не встречал... Или я даун, или на нем ничего серьезного не писалось.

Кроме того, фантом...
Скажи мне как обстоят дела у Питона с разработкой крупных проектов? Не всяких там калькуляторов и "Hello, world!", а реально полноценных программных продуктов.
Как реализуется поддержка классов и обработка ризличного рода процедур?
Всё это делатся через мозг или через Ж..?
Пока вопросов больше нет.

З.Ы. Мануалы и толстые талмуды о замечательности языка читать впадлу. Проверять же опытным путём - просто лень. Потому и интересуюсь у тебя.
Собсна говоря, передо мной в скором будущем встанет кирпичной стеной небольшой проект, который, возможно, придёцца реальзовывать силами PHP, что в перспективе - боооольшой геморрой. Вот я и ищу альтернативу.
У меня пока всё.
fantom
Не чморите ПЕРЛ - это прямо истерический крик какой-то. %)
Я не против Перла. Я против программёров у которых элементарное чувство прекрасного железобетонно заменено многочисленными нулями в глазах. smile.gif)) Думаю, намёк ясен.
Любое компилированное приложение - это 4...50 интерпретаторов по скорости.
Хоть на чём пиши (Вжик Бейски не в счёт, как я вся типа платформа .NET)
И если крут в Си - тру и респект. НО когда вопрос касается оперативной разработки о бокатки - вот тут игрушечные языки - полный вперёд!
На вопрос "какие крутые проги есть на Питоне" могу привести пару примеров: под Линуксом известна прога mailman - поддерживает массовые рассылки подписных листов, аудит и управление - мало не покажется. Также под Линуксом есть несколько карточных игр написанных на Питон, типа солитёр.
Есть интерактивная игра 3D-шуттер также написанный на Питоне, и предназначенный для одновременной игры в интернете (ответ на вопрос как быстро).
Также под различными платформами есть масса приложений для администрирования, архивирования, оповещения, сканирования на предмет искажения вирусами. У меня на сайте есть ссылка на сайт parnassus - там более 3 тысяч программ на Питоне во всех областях применения компьютеров - от текстовых редакторов, до плагинов к графическому пакету Майя. Пакет ОупенОфис содержит в себе интегрированный дистрибутив Питона для выполнения множества макросов, кои на себя берут до 30% нагрузки этого пакета.
Главный гвоздь, убеждающий меня в правильности Питона - Гугл. Движок этой поисковой системы (да и сервисы тоже) - ПОЛНОСТЬЮ сделаны на Питоне.
Когда решался вопрос о том какой язык выбрать, выбор пал в пользу Питона, так как он поддерживает распределённые вычисления стандартными средствами, а количество ошибок в нём значительно меньше, по сравнению с другими аналогами.
Те мануалы, которые я мог бы предложить - исключительно на аглицком буржуйском, поэтому не буду.
Что касается именно классов и процедур (объектно-ориентированного подхода и функционального программирования), ИМХО, процедуры - реализованы с исчерпывающим извратом. Классы - в лучших традициях С++, но гораздо прозрачнее, читабельнее, и до смешного просто.
Вот тебе примерчик с классом, типа хелло, ворлд.
-------------------
class Hello():
def Hi(self, Name='Wasja'):
print 'Hello, '+Name

a=Hello(Name='IceMann')
a.Hi
----------------------------
Для заметки - ключевой параметр SELF в Питоне имеет тот же смысл, что и в С++ this.Но Питон более открыт и не имеет шаманского кода. Для обращения экземпляра объекта к своим методам, в теле класса явно указывается что метод принадлежит к классу.
Если класс следует использовать многократно, то его можно вынести в отдельный файл и импортировать примерно так:
-----------
from MyClass import Hello
-------------
После этого класс можно юзать спокойно. Вообще мне известно по крайней мере о 5 варинатах импортирования переменных, процедур, классов, модулей и пакетов.
Iceman
То есть ты признаешь что для крупного, многообещающего проекта предпочтительнее Си, нежели Питон spiteful.gif
Согласен, на "игрушечных" языках можно реализовать средней руки проекты типа Гугла, не привлекая все возможности работы с классами и процедурами таких гигантов как Си или той же платформы .NET.
Кстати, про .NET...
Вполне мощный и перспективный продукт. Но. Как всегда есть одно НО.
Он слишком громоздкий.

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

ИМХО, хороший программист не только тот, кто знает несколько языков...
Хороший программист - это человек, который выберет под свой проект оптимально подходящий язык программирования и сможет через него максимально реализовать все полученые им знания.
Может быть сказал немножко криво... вы уж извините... последние пару месяцев сплю по часу-два в сутки cray.gif
worldmind
На питоне настрочен векторный редактор инскейп
Iceman
Интересно, именно поэтому он не получил широкого распространения? smile.gif
worldmind
Не поэтому, просто проект открытый, дорабатывают
Iceman
GNU GPL?
worldmind
УГУ см.
http://www.inkscape.org/
Iceman
Продукт сыроват...
До Корела ему, конечно, как до Магадана в тапочках...
Хотя... Если над ним работают грамотные кодеры, может и получится что-то стоящее.
Ты сам им пользовался?
Iceman
Значиццо, у меня трабл.
Есть, допустим, следующий код:
Код
if (isset($_GET["ready"])==True){

 $query1 = "INSERT INTO troubles SET complete='4' WHERE idn='".$_GET["ready"]."'";
 mysql_query($query1,$db);

 $query2 = "SELECT * FROM troubles WHERE idn='".$_GET["ready"]."'";
 $data=mysql_fetch_assoc(mysql_query($query2,$db));
 $tshootdate = date("d.m.Y");
 $tshoottime = date("H:i:s");
 $query3 = "INSERT INTO arh_troubles SET idn='".$data["idn"]."', model='".$data["model"]."', uname='".$data["uname"]."', ugcode='".$data["ugcode"]."', ugroup='".$data["ugroup"]."', sysplace='".$data["sysplace"]."', place='".$data["place"]."', ptype='".$data["ptype"]."', comments='".$data["comments"]."', getdate='".$data["getdate"]."', gettime='".$data["gettime"]."', tshootdate='".$tshootdate."', tshoottime='".$tshoottime."', tshooter='".$data["tshooter"]."', complete='".$data["complete"]."'";
 mysql_query($query3,$db);

 $query4 = "DELETE FROM troubles WHERE idn='".$_GET["ready"]."'";
 mysql_query($query4,$db);
}

Вкратце:
Всё это - кривой скрипт перемещения записи из одной таблицы в другую.
По идее, предназначено для архивирования.
Если в скрипт из строки браузера передается переменная ready, выпорлняется вся эта шняга.
Начинается она с того, что в поле с номером $_GET[ready] в ячейку complete (всё в первой таблице) вносится значение "4". Идентификатор. Для чего - не суть. Он, в принципе тут участия не принимает.

Далее в ассоциативный массив $data выбираются и вносятся значения из той же самой строки таблицы. Согласно этих данных строится следующий запрос по добавлению данных во вторую таблицу (arh_troubles).
Этот запрос выполняется, после чего четвертым запросом удаляется ненавистная запись из первой таблицы и по идее все должны быть счастливы.
Внимание, вопрос:
Какого Нажмите для просмотра прикрепленного файла во второй таблице (arh_troubles) кроме нужной записи появляется ещё одна, совершенно левая, пустая строчка?
Третий день бьюсь головой ап клавиатуру. Тацы с бубнами ни разу не помогают. Что делать? Такое ведь невозможно...

Подумав, добавляет:
Посмотрел скока у меня весит скрипт обработки всего одной страницы и ужаснулся... 28Кб
И всё это написано вручную. И всё это всего одна страница, модераторская... а сколько ещё таких страниц... Про страницы для обычных смертных вообще молчу.
worldmind
Инскайпом не пользовался, юзаю OpenOffice Draw. А твой трабл не понятен, попробуй сформированные запросы вывести в лог или в браузер, может что проясниться, Удаляется то нормально или тоже три строки? :-)
MuXaJIbI4
а почему ты так запись добавляешь
попоробуй так
$query3 = "INSERT INTO arh_troubles VALUES ('$data[dn]', '$data[model]', '$data[uname]', '$data[ugcode]', '$data[ugroup]', '$data[sysplace]', '$data[place]', '$data[ptype]', '$data[comments]', '$data[getdate]', '$data[gettime]', '$tshootdate', '$tshoottime', '$data[tshooter]', '$data[complete]')";
хотя твой вариант может быть правильней ......... ведь я не знаю всели тут поля перечислены
Iceman
Там в некоторых строках должны в определенных ситуациях присутствовать NULL... и это не все строки...
Пробовал так же как и ты. Чего-то накосячил, плюнул и поставил такой вид запроса. Кроме того там куча дополнительных полей ещё, слишком огромный запрос получается.
Ладно. Ещё раз попробую составить длинный запрос. Хоть бы получилось pray.gif ... запарился уже... если даже в этом случае не получится, придётся искать другие методы... Кроме того, ошибки могут быть в других функциях. Надо ещё раз код пересмотреть внимательно. Я умру... cray.gif
MuXaJIbI4
INSERT вставляет одну запись в таблицу ........ поэтому мне кажется у тебя скорее всего идёт обращение к этому скрипту ещё откудато
Iceman
Вот и я о том же. На самом деле это всего лишь маленький кусочек одной функции. Буду пересматривать.
Я, конечно, могу выложить сюда весь скрипт, но вы запаритесь его читать... там что-то порядка 800 строф smile.gif

Немного подумав, добавляет:
Хм... Меня терзают смутные сомнения.
На самом деле запрос по занесению данных в таблицу arh_troubles во всём файле встречается всего один раз - здесь.

Боюсь что эта функция где-то неявно вызывается. Или повторное обращение происходит по лишней итерации.
Вот жеж блин написал блок... чёрт ногу сломит rolleyes.gif

Немного подумав, добавляет:
Ай, блин... ну его нафиг.
В понедельник продолжу. С работы скоро уже уходить. Наконец то выходные...
Balamut
Цитата(ICEMan @ 7.04.2006 - 14:19)
Значиццо, у меня трабл.
Есть, допустим, следующий код:
Код
$query1 = "INSERT INTO troubles SET complete='4' WHERE idn='".$_GET["ready"]."'";

*

чото не догоняю как это ваще работает. помоему нет у оператора INSERT опции WHERE (если это не INSERT SELECT - а это не INSERT SELECT - нет SELECT и обрабатывается одна строчка). может вместо INSERT INTO поставить UPDATE ?
Iceman
Balamut, good.gif
Iceman
Только вот эта строчка отвечает за внесение значения в таблицу troubles, а лишняя строчка появляется в arh_troubles smile.gif
Balamut
Цитата(ICEMan @ 7.04.2006 - 21:12)
Только вот эта строчка отвечает за внесение значения в таблицу troubles, а лишняя строчка появляется в arh_troubles smile.gif
*

хрен его знает что там в коде мускуля - я не интересовался. определенно выполнение запроса с таким синтаксисом (INSERT + WHERE) вызывает глюк. а уж как он там проявляется - (может она заносит в последнюю таблицу использованную оператором INSERT) хрен его знает. странно то в лог ничего не вываливает. или вываливает? ща попробую.

попробовал.
мускуль 3.23 на INSERT + WHERE заругалсо...
Iceman
На рабочем серваке отключены все уведомления.
Попробую завтра конструкцией or die(mysql_error()); чего нить добицца...
fantom
Пока дошёл до последнего поста - аж мозг закипел. smile.gif
ПО поводу вставления пустой строки, имхо, где-то в конце скрипта нет команды завершения транзакции (?), и мускуль думает, что сейчас будет ещё раз обращение, и поэтому ЗАРАНЕЕ готовит ещё одну строку в базе данных. (а иногда и 10 сразу spiteful.gif )
В любом случае надо смотреть логи, что творит код. Допускаю такую мысль, что и транзакции там не причём.
-------------------
Что касается предпочтительности языка для создания супер-пупер проекта - всё зависит от того, каким языком в совокупности лучше всего владеет группа кодеров. Если Си - то пусть будет Си. Если Перл - да запросто.
А вот что касается всей мощи использования классов, вот тут как раз Питон Перл делает, и ощутимо подвигает Си++ для покурить.
Я бы не стал утверждать, что Гугл - это частный случай использования Питона. Это одна из самых крупных компаний в интернете по капиталу, и крупнейший спонсор проекта Питон - ежегодные отчисления на добровольной основе в фонд Питона составляют более 5 млн. долларов. Общие отчисления в фонд Питона каждый год составляют более 20 млн. долларов от таких контор как IBM, AMD, Sun, NEC, Samsung, Oracle(sic!!!), Intel насколько я помню принципиально не отчисляет никаких денег smile.gif)). Можно сказать - жмоты.
Что касается главного преимущества Питона - РЕКОРДСМЕН по портабельности. Программа написанная один раз - будет выполняться ВЕЗДЕ. Главный мысль клёвый чел Гуидо ван Россам.
И кстати, Питон поддерживает (встроенными средставми) в виде классов Bercli DB, cookie, socet Server, HTTP_Server, Server_Proxy, XML-RPC, CGI-XML_RPC, email, MIME, rfc822, csv, HTML-Parser, audio-oop, image-oop, wav, AU, md5, sha, ..... И ещё около 250 встроенных модулей со всякой всячиной. Почему я именно эти привёл - да потому что на них сделать движок - самое милое дело.
И кстати, и логирование встроенными средствами тоже поддерживается. smile.gif

Немного подумав, добавляет:
--------------
Гугл в Питере собрается открыть толи 200, толи 500 рабочих мест. Делайте выводы, господа хорошие.
fantom
Ура, товарищи!
Python 2.5 alfa доступен для скачивания! smile.gif))
Уже больше недели.
Сам пока его только качаю, но по отзывам нововведений вполне хватает. smile.gif
Будем посмотреть.
alexweb
Так. Вставлю свои пять копеек по поводу написания софтины, которая бы забирала только новые посты и позволяла постить новые мессаги без жуткого html траффика. К сожалению, все распространенные форумные движки страдают этой х***й.

Единственный правильный шаг в этом направлении - это использование веб-сервисов, а именно написание серверной компоненты (в данной ситуации - плагина к форуму), которая будет xml-rpc или soap сервером.
Этот плагин будет отвечать за авторизацию и за предоставление доступа к данным (в чистом виде, без html, css траффика).

Клиентские приложения при таком подходе можно будет писать на чем угодно. Можно даже написать на XUL плагин к gecko браузерам (см http://xpoint.ru)
SunOfABeach
Цитата(alexweb @ 17.04.2006 - 14:20) *
Единственный правильный шаг в этом направлении - это использование веб-сервисов, а именно написание серверной компоненты (в данной ситуации - плагина к форуму), которая будет xml-rpc или soap сервером.
Этот плагин будет отвечать за авторизацию и за предоставление доступа к данным (в чистом виде, без html, css траффика).

По твоему наущению я уже думал в этом направлении и пришел к выводу, что разарабатывать нужно в три основных этапа:

1. Разработка протокола обмена данными;
2. Разработка серверной части;
3. Разработка простого клиента.

Пункт 1 - самый важный. Имхо, лучше всего придумать какой-нибудь XML-формат. Желательно, чтобы XML использовался и для запросов, и для ответов, тогда простой клиент может быть написан даже на ajax'е.

Пока это все укладывается в твои выводы. Единственное, с чем я не совсем согласен, это с написанием сервера. Имхо, тут сервер лишнее, достаточно скрипта, обслуживающего запросы.
Iceman
2alexweb
Ты абсолютно прав.
alexweb
2SunOfABeach
Я в принципе и имел в виду скрипт(ы), а не сервер

Цитата
Пункт 1 - самый важный. Имхо, лучше всего придумать какой-нибудь XML-формат. Желательно, чтобы XML использовался и для запросов, и для ответов, тогда простой клиент может быть написан даже на ajax'е.

Никакого нового формата выдумывать не нужно - давно уже умные придумали SOAP, и в ЛЮБОМ ЯЗЫКЕ ЕСТЬ СРЕДСТВА ДЛЯ РАБОТЫ С НИМ, что значительно ускоряет разработку

Для справки:

# SOAP — протокол обмена структурированными сообщениями в распределенной вычислительной среде. ...
ru.wikipedia.org/wiki/SOAP

# Протокол доступа простых объектов. Протокол, описывающий модель упаковки XML запросы и ответы. Обмен сообщениями через SOAP позволяет обмениваться серверу и клиенту любой информацией в формате XML.
www.webasyst.ru/glossary.htm
Iceman
В общем целом нужно всего лишь отработать алгоритм синцхронизации БД форума (вернее его части - мы не заватываем закрытую информацию, недоступную на форуме, только паблик.) с БД на локальной машине. Можно для простоты решения даже структуру БД не менять.
Кроме того, нужно написать сервлет для авторизации.
Сам же клиент предполагается как оболочка для локальной БД у юзера, которая будет отвечать за:
- начало авторизации
- обработка куки
- поддержка сессии
- синхронизация с серверной БД автоматически/по требованию
- формы ответа+цитирования, изменения персональных данных

Может быть что-то упустил...
SunOfABeach
Цитата(alexweb @ 17.04.2006 - 16:22) *
2SunOfABeach
Я в принципе и имел в виду скрипт(ы), а не сервер
Никакого нового формата выдумывать не нужно - давно уже умные придумали SOAP, и в ЛЮБОМ ЯЗЫКЕ ЕСТЬ СРЕДСТВА ДЛЯ РАБОТЫ С НИМ, что значительно ускоряет разработку

В любом языке есть средства для работы с XML. Ну, по крайней мере, в любом современном. SOAP есть подмножество XML, которое в данном конкретном случае, имхо, есть средство избыточное.

Давай разберем, что нам нужно для реализации.

1. Авторизация.
От клиента серверу передается логин-пароль, от сервера клиенту - SID. В упрощенном случае можно даже без этого обойтись, а передавать логин-пароль при каждом запросе. Но лучше SID, тогда для уверенности можно хранить информацию о SID (IP, например) на сервере.

2. Запросы клиента
2.1. Запрос на выборку
Запрос, по которому сервер возвращает клиенту список сообщений, удовлетворяющих условиям. Именно эти условия и должны отражаться в запросе. Т.е. тут что-то наподобие простого SELECT из синтаксиса SQL, где в FROM используется имя ID топика, а в WHERE прописываются эти самые условия.
Пример:
Код
<query>
  <command>select</command>
  <from>[topicID]</from>
  <where>
    <start>[startPosition]</start>
    <records>[recordsToShow]</records>
    <user>[userID or userName]</user>
    <dateFrom>[messageDateFrom]</dateFrom>
    <dateTo>[messageDateTo]</dateTo>
<!-- другие условия -->
  </where>
</query>


2.2. Запросы на изменение
А тут что-то типа UPDATE, INSERT и DELETE в SQL.
Тут то же самое, что и при SELECT, только добавляются поля <messageID> и/или <messageText>.

3. Ответы сервера.
Это вообще самая простая часть. Ответ сервера состоит из двух частей: 1) сообщение об ошибках, 2) выборка.
Пример:
Код
<answer>
  <errors>
    <errCode>0</errCode>
    <errDescrition>Well done</errDescription>
  </errors>
  <messages>
    <message id="[messID]">
      <date>[date]</date>
      <userID>[userID]</userID>
      <userName>[userName]</userName>
<!-- тут еще какие-нибудь поля... -->
      <messageText>
скажите, а пачиму у миня низопускаеццо венда.
я вчира пирифарматирывал винт и она пиристала зопускаццо
можыт быть у миня какойнибуть вируз?
      </messageText>
    </messID>
    <message id="[messID]">
<!-- остальные сообщения -->
    </messID>
  </messages>
</answer>


Все, больше ничего не нужно. Вся остальная функциональность, типа смайликов, предварительного просмотра, цитирования и т.п. - все это делается на клиенте.

Т.о. получаем, что серверная часть есть своего рода ретранслятор из XML в SQL при обращении клиента, и из ответа БД в XML при ответе сервера.

Так что SOAP тут - из пушки по воробьям.

Теперь что касается клиента. Вначале, думаю, было бы разумно сделать клиента на ajax'е. Потом нужно будет на его основе отладить и описать API и протокол.

Надеюсь, понятно объяснил?
Balamut
Цитата(ICEMan @ 8.04.2006 - 00:12) *
На рабочем серваке отключены все уведомления.
Попробую завтра конструкцией or die(mysql_error()); чего нить добицца...

интересно чем закончилось....
Iceman
Цитата(Balamut @ 18.04.2006 - 19:56) *
интересно чем закончилось....

Да ничем не закончилось.
При подстановке mysql_close() в функцию закрывалась сессия с БД и ничего не грузилось.
В любом случае данная функция не при чем. Я поставил автоматическую запись даты и времени архивирования записи и сравнил время появления данных в архиве с фактическим временем архивации записей. Нет ни одного совпадения.
Сейчас занимаюсь поиском неявных вызовов данной функции и, матерясь, удаляю левые нулевые записи smile.gif
fantom
Почитал на предыдущей странице по поводу SOAP-XML.
Вот мля не согласен! %)
Ниже были приведены хмл-тексты, ну вы меня хоть растреляйте - ГДЕ ЭКОНОМИЯ ТРАФФИКА?
Не проще ли делать примерно так:
#001А мне пофигу!#00CДа кто тебя спрашивать будет. spiteful.gif #0A1 Да не ты уж видимо.
Коды будут обозначать теги типа, <messages>, <errors> - всяк короче будет.
Ну и опять же. gzip, ау, где ты???
Brutall
Подскажите кто-нить, тут такая проблема возникла. Надо написать прогу на простом СИ:

Скопировать содержимое всех найденных директориев с именем ТМР в корневой директорий, переименовав их ТМР1, ТМР2, …

Написал почти всю, проблема осталась в том, чтобы скопировать файлы из найденных каталогов с именем TMP в нужный. Как сделать? А то чот затупил. Вот сама прога:
Код
#include<dos.h>
#include<dir.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int y=1;
char path2[300]=" :\\TMP1",z1[300]="";
void CopyDir(void)
  {
  struct ffblk ff; int x,n=3;
  char path3[300];
  strcpy(z1,path2);
  for (x=findfirst("*.*",&ff,FA_DIREC);!x;x=findnext(&ff))
    if (ff.ff_name[0]!='.'&&ff.ff_attrib&'\x10')
      {
      getcurdir(getdisk()+1,path3);
      while (path3[n]!='T'||path3[n+1]!='M'||path3[n+2]!='P')n++;
      strcat(strcat(strcat(z1,path3+n+3),"\\"),ff.ff_name);
      if (mkdir(z1)!=0)
    printf("Error creating directory\n");
      chdir(ff.ff_name);
      CopyDir();
      chdir("..");
      }
  }

void NextDir(void)
  {
  struct ffblk ff; int x;
  char cmp[]="TMP", z[3];
  for (x=findfirst("*.*",&ff,FA_DIREC);!x;x=findnext(&ff))
    if (ff.ff_name[0]!='.'&&ff.ff_attrib&'\x10')
      {
      chdir(ff.ff_name);
      if (!strcmp(ff.ff_name,cmp))
    {
    path2[6]=0;
    itoa(y++,z,10);
    strcat(path2,z);
    if (mkdir(path2)!=0)
      printf("Error creating directory\n");
    else CopyDir();
    }
      else
    NextDir();
    chdir("..");
      }
  }

void main(void)
  {
  char path[300];
  getcurdir(getdisk()+1,path);
  path2[0]=getdisk()+'A';
  NextDir();
  chdir("path");
  }
Тошик
Вооо!!! Наконецто я добрался до этой темы!!! Всё я поселяюсь в ней!!! )))
html,css,javascript,php+mysql - Моя стихия...
Iceman
2 Тошик
Даффай насчот С++ smile.gif
2Бруталл,
Честно, мне влом лезть в мануалы. Попробуй разобрацца сам. Но насколько я помню в С++ нет полного копирования файта, только в потоке. Хотя, быть модет я ошибаюсь...
Brutall
О! Нашёл. Думал уже посимвольно файл копировать, или по строкам, но откопал там функцию, которая вызывает досовские команды:
system(argum);
а там в аргументе можно указать "copy c:\\1.txt G:\\shit\2.txt"
Iceman
Ну вот и всё smile.gif
Представляю себе что бы было при использовании последовательности
1 fopen...
2 ferror...
3 feof...
4 fgets...
5 fputs...
6 fclose...
smile.gif
Iceman
Найден рецепт LDAP-авторизации, проблемой которого я занимаюсь уже пять месяцев.
Скрипт может определить имя пользователя, зашедшего на страницу, и домен, в котором он находится.
Если кому понадобится - пишите.
fantom
А я пару дней назад вычислил как в Python можно генерировать звуки системной бикалкой и воспроизводить звук более чем 50 форматов. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2024 IPS, Inc.