|  | 
 
 | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|   Bargest: Сообщения перенесены из этой темы сюда. раз уж руби упомянули: http://pastie.org/4683398 Код: def from
  @text.scan(between('<b>Участников:</b>','из')).map &:to_i
end
def to
  @text.scan(between('из', '</div>')).map &:to_i
end
def link
  @text.scan(between('</center><a href=', '><b>')).map &:strip
end
output from.zip(to, link)три функции возвращают три массива, последняя строчка их склеивает в массив из трёх колонок: http://pastie.org/4683422 Последний раз редактировалось Bargest, 19.09.2012 в 17:26. | 
| 
			 
			#2  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 Научить человека хардкодить для решения конкретной задачи это одно, а вот научить человека пользоваться готовым инструментом, позволяющим решать целый ряд подобных задач это другое. Учитесь писать код? Учитесь сразу писать его грамотно. Последний раз редактировалось Lost_Fish, 10.09.2012 в 14:09. | 
| 
			 
			#3  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 Эх, вот такие вот они современные кодеры... сколько я видел таких, когда написать sort() может, а понять как он выполняется - нет. С тем кодом у кодера будет работать голова, а не поиск гугля. | 
| Этот пользователь сказал Спасибо @Rafa3L за это полезное сообщение: | ||
|  
Bargest (10.09.2012)
 | ||
| 
			 
			#4  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 | 
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
|  
@Rafa3L (10.09.2012)
 | ||
| 
			 
			#5  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 Ну да. Это кодера ты очень точно описал. Ну то кодер. Настоящий программист найдет в гугле бесплатную %notsuper_lib_name_here% и напишет чат на ней. И нефиг изобретать велосипед. Чем быстрее и с минимумом трудозатрат будет выполнена задача - тем проще в первую очередь самому программисту. Писать что-то свое с нуля нужно только в случае если чего-то такого ВООБЩЕ нигде нет или для самообучения (развлечения читай). Вот так вот. | 
| 
			 
			#6  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 На многих МК подключение лишней библиотеки равно выходу за пределы доступной памяти и крашу всего проекта. Также я бы не стал в серьёзном проекте полагаться на труды Васи Пупкина из села Задрипинска, который выпустил мне бесплатную библиотеку.  Ну а самообучение никогда развлечением не считаю. Единственный толковый способ получения знаний. | 
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
|  
@Rafa3L (10.09.2012)
 | ||
| 
			 
			#7  
			
			
			
			
		 | |||
| 
 | |||
|   имхо для html нужен парсер, но регулярки всяко лучше, чем кусок хардкода по сути решение занимает три строчки, ещё три вывод в memo, а всё остальное – повторно используемый код какие ещё нужны аргументы?  ps что бы писать повторно используемый код, тоже нужна голова Код: //(освобождений объектов нету)
uses PerlRegEx;
function scan(input, regexp: string; group: byte = 0): TStringList;
var
  reg: TPerlRegEx;
  found: boolean;
begin
  reg := TPerlRegEx.Create;
  reg.Subject := input;
  reg.RegEx   := regexp;
  result := TStringList.Create;
  found := reg.Match;
  while found do
  begin
    result.Add(reg.Groups[group]);
    found := reg.MatchAgain;
  end;
end;
function between(one, two: string): string;
begin
  result := format('%s(.*?)%s', [one, two]);
end;
procedure TForm1.doscanClick(Sender: TObject);
var
  one, two, three: TStringList; i: integer;
begin
  one := scan(input.Text, between('<b>Участников:</b>','из'), 1);
  two  := scan(input.Text, between('из', '</div>'), 1);
  three := scan(input.Text, between('</center><a href=', '><b>'), 1);
  output.Clear;
  for i := 0 to one.Count - 1 do
    output.Lines.add(format('%s * %s * %s', [one[i],two[i],three[i]]));
end; | 
| 
			 
			#8  
			
			
			
			
		 | ||||
| 
 | ||||
|   Решил проверить твой метод и сравнить с моим: 1. Результаты: Мой метод: Код: 0 32 /tournaments/4970671/act=join&step=1 0 16 /tournaments/4973598/act=join&step=1 3 16 /tournaments/4970554/act=join&step=1 1 16 /tournaments/4973288/act=join&step=1 0 32 /tournaments/4970598/act=join&step=1 Твой метод: Код: 0 * овой фонд:</b> 10.800<br><li> <b>Длительность:</b> до 64 минут<li> <b>Уровень игрока:</b> 3<li> <b>Опыт футболистам:</b> 200%<li> <b>Участников:</b> 0 из 32 * /tournaments/4970671/act=join&step=1 0 * овой фонд:</b> 5.300<br><li> <b>Длительность:</b> до 71 минут<li> <b>Уровень игрока:</b> 3<li> <b>Опыт футболистам:</b> 200%<li> <b>Участников:</b> 0 из 16 * /tournaments/4973598/act=join&step=1 3 * овой фонд:</b> 4.900<br><li> <b>Длительность:</b> до 57 минут<li> <b>Уровень игрока:</b> 3<li> <b>Опыт футболистам:</b> 200%<li> <b>Участников:</b> 3 из 16 * /tournaments/4970554/act=join&step=1 1 * овой фонд:</b> 5.300<br><li> <b>Длительность:</b> до 71 минут<li> <b>Уровень игрока:</b> 3<li> <b>Опыт футболистам:</b> 200%<li> <b>Участников:</b> 1 из 16 * /tournaments/4973288/act=join&step=1 0 * овой фонд:</b> 10.600<br><li> <b>Длительность:</b> до 64 минут<li> <b>Уровень игрока:</b> 3<li> <b>Опыт футболистам:</b> 200%<li> <b>Участников:</b> 0 из 32 * /tournaments/4970598/act=join&step=1 (в задании сказано: Т.е. мне нужно: нашёл первое слово 'Участников' , нашёл количество участников '0 из 32',проанализировал сколько и нашёл строку со ссылкой '/tournaments/4970598/act=join&step=1'. и все.) 2. Скорость: (для одинакового числа повторений, задавал 100...0.) Мой метод: 00:01 сек ; Твой метод: 1 минута 25 сек ; Итог, как минимум в 85 раз медленнее. П.с.: и тот мой метод далеко не хардкод, я его писал на коленке и много не думал, там его можно еще ускорять и ускорять... Последний раз редактировалось @Rafa3L, 12.09.2012 в 00:34. | 
| 
			 
			#9  
			
			
			
			
		 | |||
| 
 | |||
|   удивительно, но у меня тот код возвращает: Код: 0 * 32 * /tournaments/4970671/act=join&step=1 0 * 16 * /tournaments/4973598/act=join&step=1 3 * 16 * /tournaments/4970554/act=join&step=1 1 * 16 * /tournaments/4973288/act=join&step=1 0 * 32 * /tournaments/4970598/act=join&step=1 что бы тот код написать на коленке и он сразу заработал надо или быть гением, или же писать каждый день кучи такого хардкода  Код:   if s[i+1]='ч' then
  if copy(s,i+2,8)='астников' then
    begin
    if s[i+18]='и' then //21-я после буквы "У", и между "0 из 32"
    begin
      t1:=s[i+16]; // 0 16-я после буквы "У"
      t2:=copy(s,i+21,2); //32  21-я после буквы "У",длина 2
      t3:=copy(s,i+106,36); //ccылка 106-я после буквы "У",длина 36если придётся уточнить код (из за ложных совпадений например) в моём случае всё делается очевидным образом в вашем – сколько времени придётся подбирать правильные циферки, и сколько циклов добавить? имхо всё очевидно: если не знаете "X", нет желания изучать "X" (возможно и по объективным причинам) => не надо оправдывать это "производительностью", так и скажите: не знаю, нет желания. (в "X" можете подставить: регулярные выражения, ООП, agile?, ...) ни один человек знающий регулярки не будет писать ту жесть, если только он не под по дулом пистолета. наверно потому что дураки, и придумали регулярки тоже дураки  | 
| 
			 
			#10  
			
			
			
			
		 | ||||
| 
 | ||||
|   To @Rafa3L если показывать такой код потенциальному работадателю шансы на трудоустройство резко падают, они такой код просто не смотрят, проверено  | 
| 
			 
			#11  
			
			
			
			
		 | ||||
| 
 | ||||
|   Когда-то давно я писал на одном непрограммском форуме, и там часто споры заканчивался в стиле "сам ты дурак!".  А когда начал читать математически-программные форумы, то первое что понравилось это то что в споре прав тот кто докажет что прав на примере, в верном решении задачи. Когда-то прогеры были честными энтузиастами, которым было безразлично к коммерции. Сейчас же выше явный пример современного подхода в программировании. Это уже полу прогер полу коммерсант, привыкший "парить" лоху-заказчику. И тут я вижу, Pyro, вместо того чтобы доказать что его код лучший переходит на аргументы: "И ты не знаешь выражений, ты лох!" А то что с его выражениями программа работает в 85 раз медленнее уже его не интересует. Это идет из америки, где у заказчика куча денег и он хочет красивую картинку. И он понятия не имеет как оно на самом деле работает. И возникает целая каста программистов-коммерсантов-консультантов, задачей которых есть не написание качественной быстрой нересурсоемкой программы, а задача "впарить" "лохам" красивые решения. О работодателях, если ко мне придет устраиваться прогрер, для которого чтобы найти в тексте слово необходимы регулярные выражения - он будет послан далеко в астрал. А слова "удивительно а у меня код работает" - это фирменная фишка?) Это вы всем заказчикам так парите? Последний раз редактировалось @Rafa3L, 12.09.2012 в 20:13. | 
| 
			 
			#12  
			
			
			
			
		 | ||||
| 
 | ||||
|   Нормально все с регулярками там работает. Ты наверное не ту библиотеку подключил или еще что. Может IDE глючило. Сам же написал, что результат неверный получил. Проверь еще раз. И не надо переходить на личности и домысливать того чего не было. Pyro не называл тебя лохом и не подразумевал этого. | 
| 
			 
			#13  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 | 
| 
			 
			#14  
			
			
			
			
		 | ||||
| 
 | ||||
|   всего лишь хотел сказать что в достаточно серьёзном проекте, таком как автоматизация предприятия, твой хардкод не будет никому интересен, по упомянутым Pyro причинам + скорость разработки давольно большого объема кода резко падает, я переписывал жутко тормозящую неповоротливою прогу у которой на главной форме 15т. строчек кода, а форм там было около 30 разного калибра, предыдущие 2 хардкодера писали её 2 года сперва один, потом второму было лень переписывать он сидел подкручивал, переписал за 4 месяца стало намного лучше. Добавить, изменить, доработать что-то занимает намного меньше времени чем раньше. Вопрос к @Rafa3L чем ООП лучше твоего подхода? P.S. Без обид, может ты не тот язык выбрал, может стоило попробовать ассемблер?  Последний раз редактировалось Lost_Fish, 13.09.2012 в 08:29. | 
| 
			 
			#15  
			
			
			
			
		 | |||
| 
 | |||
|   аргументы в пользу того кода уже я приводил: (производительность программистов) > если что-то пошло не так(редизайн сайта), то можно обойтись изменениями только в трёх строчках кода > повторно используемый код для других задач/для других программистов > ясный и понятный код, без комментариев, без анти-паттернов "Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку." Мартин Фаулер по поводу этих и других аргументов, всё уже написано во множестве хороших книг http://habrahabr.ru/post/135897/ нет энтузиазма читать книги, или если какие другие причины, то не надо обвинять американцев, или говорить, что программирование деградирует с каждым днём (потому что это не так) именно энтузиасты читают книги/пишут статьи, учавствуют/создают open source проекты я ещё в open-source не освоился, но начинал это зло примерно так: сначала услышал от одного php-иста, что он никогда бы на дельфи не стал писать бд+интерфейс к ней. прочитал книжку по php+ajax, что бы написать один рабочий скрипт, оттуда узнал про регулярки, скачал книгу про регулярки, для того, чтобы удобно практиковаться в регулярках – скачал perl, но синтаксис мне не понравился сразу, взялся за python, написал на нём скрипт для себя, потом из за отсутствия простейшей мелочи в синтаксисе, решил проверить, есть ли она в руби, в руби она была – взялся за руби, и только там узнал, что ооп – удобная штука (и ооп это только начало). в общем не надо про коммерцию, или американцев, каждый делает так, как считает правильным, и в принципе невозможно, что бы программирование деградировало Цитата: 
  ) | 
| Этот пользователь сказал Спасибо Pyro за это полезное сообщение: | ||
|  
cdtj (18.09.2012)
 | ||