LINUX.ORG.RU
решено ФорумTalks

Сегодня рассмотрели троих кандидатов, и...

 , , ,


1

2

Шеф дал объявление на вакансию пыхера.
За вчера и сегодня пришло три решения тестового задания.

Надо было распарсить любую страницу любого сайта на наличие ссылок, и разделить их на три группы:

1) внутренние 2) внешние 3) находящиеся внутри тега <noindex> и/или имеющие атрибут rel со значением nofollow.

Это жесть, я вам скажу.
Первые два нагавнякали лапши.
Вся лапша работает ПО РАЗНОМУ, выпарсивает на разных сайтах разные наборы ссылок.

У третьего автора тоже лапша, но его лапша особенная — она заточена на парсинг ТОЛЬКО ОДНОГО сайта, по остальным говорит что ссылок нет ни одной.

Ааааааааааааааааааааааа!!!!!!!!! Хочу это все развидеть!

Я правда не видел сам текст вакансии.
Возможно в ней что-то (кеш|требования) слишком занижено, вот и попадаются такие «тимлиды»..

З.Ы.: Это не показуха илитарности. Это вопрошение: где искать вменяемых пыхеров?

★★★★★

Последнее исправление: deep-purple (всего исправлений: 1)

Ответ на: комментарий от deep-purple

Да народ угорает, наверно. Уведомление приходит, а ответить нельзя.

chkalov
()

А для чего вам на php парсить страницы на предмет ссылок? Какая-то странная задача. Нужен парсер? Пусть напишут на чём умеют, главное результат. Нужен программист на php? Дайте нормальную задачу для теста.

Дай ссылку на вакансию с тестовой задачей, может от неё веет на сто метров, что набор идёт в ООО «Вектор», вот и идёт туда народ после беглого прочтения книжки «выучить PHP за 7 часов».

shrub ★★★★★
()
Последнее исправление: shrub (всего исправлений: 1)

Быдлокодеры повсюду, если это даже пивное быдло осилило, то и я смогу рано, или поздно, пришло время демпинга :trollface:

FiXer ★★☆☆☆
()
Ответ на: комментарий от stevejobs

а я в своё время руками писал XML/HTML парсер :) http://hawkee.com/snippet/8282/

          while ($bfind(&read,%i,<)) {
            var %i = $v1 + 1, %> = $bfind(&read,%i,>), %xml = $gettok($bvar(&read,%i,$calc(%> - %i)).text,1,32)
            var %i = $bfind(&read,%i,</), %> = %> + 1, %data = $feed.char($bvar(&read,%>,$iif($calc(%i - %>) < 4096,$v1,$v2)).text)
            echo %xml == %data
          }

в общем всё просто, до тех пор пока в &read есть символ < (открывающий элемент), то берем его, потом ищем >, вырезаем — получаем тэг, потом ищем </ закрывающий его элемент, и получаем между ними данные. вот и всё. :)

сейчас бы на php я точно так же сделал, не по-символьно конечно, но искал бы <a и затем >, и уже между ними искал href, опционально rel как требуется в ТЗ.

модуль для PHP на щщях это конечно круто, но слишком вычурно. =)

Spoofing ★★★★★
()
Ответ на: комментарий от deep-purple

[\s]{1}

Какая-то странная магия. Я не понял, чем это отличается от просто \s.

Deleted
()
Ответ на: комментарий от Sadler

Немного копипасты:

You can't parse [X]HTML with regex. Because HTML can't be parsed by regex. Regex is not a tool that can be used to correctly parse HTML. As I have answered in HTML-and-regex questions here so many times before, the use of regex will not allow you to consume HTML. Regular expressions are a tool that is insufficiently sophisticated to understand the constructs employed by HTML. HTML is not a regular language and hence cannot be parsed by regular expressions. Regex queries are not equipped to break down HTML into its meaningful parts. so many times but it is not getting to me. Even enhanced irregular regular expressions as used by Perl are not up to the task of parsing HTML. You will never make me crack. HTML is a language of sufficient complexity that it cannot be parsed by regular expressions. Even Jon Skeet cannot parse HTML using regular expressions. Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp. Parsing HTML with regex summons tainted souls into the realm of the living. HTML and regex go together like love, marriage, and ritual infanticide. The <center> cannot hold it is too late. The force of regex and HTML together in the same conceptual space will destroy your mind like so much watery putty. If you parse HTML with regex you are giving in to Them and their blasphemous ways which doom us all to inhuman toil for the One whose Name cannot be expressed in the Basic Multilingual Plane, he comes. HTML-plus-regexp will liquify the n​erves of the sentient whilst you observe, your psyche withering in the onslaught of horror. Rege̿̔̉x-based HTML parsers are the cancer that is killing StackOverflow it is too late it is too late we cannot be saved the trangession of a chi͡ld ensures regex will consume all living tissue (except for HTML which it cannot, as previously prophesied) dear lord help us how can anyone survive this scourge using regex to parse HTML has doomed humanity to an eternity of dread torture and security holes using regex as a tool to process HTML establishes a breach between this world and the dread realm of c͒ͪo͛ͫrrupt entities (like SGML entities, but more corrupt) a mere glimpse of the world of reg​ex parsers for HTML will ins​tantly transport a programmer's consciousness into a world of ceaseless screaming, he comes, the pestilent slithy regex-infection wil​l devour your HT​ML parser, application and existence for all time like Visual Basic only worse he comes he comes do not fi​ght he com̡es, ̕h̵i​s un̨ho͞ly radiańcé destro҉ying all enli̍̈́̂̈́ghtenment, HTML tags lea͠ki̧n͘g frǫm ̡yo​͟ur eye͢s̸ ̛l̕ik͏e liq​uid pain, the song of re̸gular exp​ression parsing will exti​nguish the voices of mor​tal man from the sp​here I can see it can you see ̲͚̖͔̙î̩́t̲͎̩̱͔́̋̀ it is beautiful t​he final snuffing of the lie​s of Man ALL IS LOŚ͖̩͇̗̪̏̈́T ALL I​S LOST the pony he comes he c̮omes he comes the ich​or permeates all MY FACE MY FACE ᵒh god no NO NOO̼O​O NΘ stop the an​*͑̾̾​̅ͫ͏̙̤g͇̫͛͆̾ͫ̑͆l͖͉̗̩̳̟̍ͫͥͨe̠̅s ͎a̧͈͖r̽̾̈́͒͑e n​ot rè̑ͧ̌aͨl̘̝̙̃ͤ͂̾̆ ZA̡͊͠͝LGΌ ISͮ̂҉̯͈͕̹̘̱ TO͇̹̺ͅƝ̴ȳ̳ TH̘Ë͖́̉ ͠P̯͍̭O̚​N̐Y̡ H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̧̨̱̹̭̯ͧ̾ͬC̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝S̨̥̫͎̭ͯ̿̔̀ͅ

cvs-255 ★★★★★
()
Ответ на: комментарий от Frost

Я не уверен, что ему сразу стоит браться за фреймворк. Пускай для начала избавится от лапши хотя бы.

Kilte ★★★★★
()
<?php
$raw = file_get_contents('http://spfng.com');
$set = 0;
while ($v1 = strpos($raw, '<a', $set)) {
        $set = $v1 + 1;
        if ($v2 = strpos($raw, '>', $set)) {
                echo substr($raw, ($v1 + 1), ($v2 - $v1 - 1)).'<br>';
  }
}
?>

код для вывода ссылок из html, вот. =) осталось таким же образом выдернуть значение из href, с учетом nofollow. короч как два пальца об..эцсамое, об асфальт, ТС.

Spoofing ★★★★★
()

я и не удивлен

Надо было распарсить любую страницу любого сайта на наличие ссылок, и разделить их на три группы:

И все трое справились. Нигде не указано что разные сайты) Вот взяли любой один))

Таким ТЗ ты нормального человека не найдешь. Потому что нормальный «опытный» программист имеет как минимум 2 запасных вакансии куда он может пойти, если на текущей работе не понравится. Сам язык абсолютно не важен. А по таким ТЗ только новички и будут лезть с гавнокодом. Поэтому ничего удивительного.

kiotoze ★★★★
()

1) внутренние 2) внешние 3) находящиеся внутри тега <noindex> и/или имеющие атрибут rel со значением nofollow.

Какое-то задание для сеошника со знанием PHP. Как бы ты сам сделал? (последовательность).

anonymous_sama ★★★★★
()
Ответ на: комментарий от Kilte

Одно другому не мешает, в этом случае заодно посмотрит чужой код и сравнит.

Frost ★★★
()
Ответ на: комментарий от i-rinat

не, не обратил на это внимания. Теперь понятно.

kiotoze ★★★★
()
Ответ на: комментарий от kiotoze

пропускает a-теги между noindex, осталось сделать только substr для href с учётом rel=nofollow и ТС может принимать меня на работу, только я не хочу. =)

<?php
$raw = file_get_contents('http://spfng.com');
$set = 0;
while ($v1 = strpos($raw, '<a', $set)) {
        $set = $v1 + 1;
        if (strpos($raw, '<noindex', $set) < $v1 && strpos($raw, '</noindex', $set) > $v1) {
                continue;
        }
        if ($v2 = strpos($raw, '>', $set)) {
                echo substr($raw, ($v1 + 1), ($v2 - $v1 - 1)).'<br>';
        }
}
?>
Spoofing ★★★★★
()
Ответ на: комментарий от Spoofing

^ вот смотри, аналогично с noindex сделать, пропускать куски данного кода. :)

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

Sadler ★★★
()
Ответ на: комментарий от Sadler

ответственность за косяки будет лично на тебе, а не дядьках из какого-нибудь апача, выпускающих библиотеку

За косяки гнобить всё же будут программиста, а не абстрактного дядьку из апача. Чтобы над дядькой поглумиться, надо его сначала найти. А программист — вот он сидит. Его и назначат виноватым.

i-rinat ★★★★★
()
Ответ на: комментарий от Sadler

Вот так и получается лапша и быдлокод.

да ладно, я бы распихал всё по-функциям и сделал нормально, только ж мне за это не заплатят. я так, чисто для поддержания разговора вбрасываю. =)

и вообще, пора спать идти. доброй ночи всем.

Spoofing ★★★★★
()
Ответ на: комментарий от Sadler

Потому что ответственность за косяки будет лично на тебе, а не дядьках из какого-нибудь апача, выпускающих библиотеку.

а пока сторонние дядьки будут что-то у себя править, тебя нагонят с работы.

либо, ты должен будешь починить им библиотеку и протолкнуть изменение в релиз.

что из этого приятнее?

n_play
()

Парсить DOM регулярками - вообще извращение, это не регулярный язык.

CatsCantFly
()
Ответ на: комментарий от n_play

а пока сторонние дядьки будут что-то у себя править, тебя нагонят с работы.

А ты их не жди, исправляй сам. В этом случае работает классическое «быстро, дёшево, качественно, ненужное вычеркнуть».

и протолкнуть изменение в релиз.

В этом нет никакой необходимости. Форк для внутренних нужд сделать несложно. Хотя, конечно, патч бросить авторам стоит.

Sadler ★★★
()
Последнее исправление: Sadler (всего исправлений: 2)
Ответ на: комментарий от Sadler

Форк для внутренних нужд сделать несложно

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

А ты их не жди, исправляй сам. В этом случае работает классическое «быстро, дёшево, качественно, ненужное вычеркнуть».

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

n_play
()
Ответ на: комментарий от Sadler

Потому что ответственность за косяки будет лично на тебе, а не дядьках из какого-нибудь апача, выпускающих библиотеку

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

vostrik ★★★☆
()
Ответ на: комментарий от Ford_Focus

Ссылку на вакансию в студию

Лорчую ссылку на вакансию, алсо вилку зарплат. Это бы многое объяснило.

HeipaVai1o
()

Это вопрошение: где искать вменяемых пыхеров?

чем больше народу в области, тем больше количественная вероятность попадания на особей определенной категории

в процентах же всё одинаково

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

reprimand ★★★★★
()
Ответ на: комментарий от Spoofing

Ну да, я пока домой ехал, уже понял что сморозил, и даже подумал что кто-нибудь успеет это подметить, чо уж тут ))

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от stevejobs

Нет, есть прекрасное решение и на пыхе. Часть его даже показали.

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от vostrik

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

Я не программист, а админ (но софт писать приходится часто в силу специфики), потому мой код не тестирует отдел QA, а баги могут всплыть только на практике, в некоторых случаях это может обернуться потерей денег организации. Потому я предпочитаю доверять себе меньше, нежели тому же апачу.

Sadler ★★★
()
Ответ на: комментарий от Spoofing

Ты забыл про те ссылки которые внутри <noindex> они должны попасть в ту же группу что и нофолловые. А так же разобраться вообще это внутренняя ссылка или внешняя, что может быть и начинаться на слеш, на точку или две, или с протоколом и доменом.

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от anonymous_sama

Я сделал за 15 минут. Позже покажу. Давай еще чутка побурлим ))

deep-purple ★★★★★
() автор топика

Только не плачь!
А попробуйте сузить кандидатов:
«Требования:
-php
- ASP.NET/C#»
Не знаю, как другим, а C# мне мозги начал вставлять на место, когда я осваивал нормальное прогрммирование (после php и perl, не говоря о каше из C и C++ в одном).

Shadow ★★★★★
()

Пых-пых илитка такая пых-пых илитка

Пых-пых оттягивает на себе всяких недоучившихся студиоузов, которые иначе бы путались под ногами в enterpriZe Java.

Поскольку я НЕ работаю в «стартапе» «Рога и копыта»(С)(R), то меня вполне устраивает старый добрый

http://htmlparser.sourceforge.net/

Учите матчасть.

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)

shrub, Ford_Focus, HeipaVai1o и кто там еще вакансию хотел.. Короче нашел я её:

Хорошее знание PHP‚ MySQL. Опыт работы с CMS. Понимание HTML верстки‚ CSS. Владение базовым функционалом jQuery. Желателен опыт работы с Git.

Вилка: 40-60к.

Вот оно и лезет кто не попадя.
Завтра скажу шефу пусть переиначивает требования и вилочку приподнимет.

Лучше уж вменяемого чела, чем какому-то похеристу доверять данные гонять в БД. Ато там бабло заказчицкое крутится. Если оно ссылки собрать не смогло, таки с остальным то же самое будет — половину данных растеряет.

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от Spoofing

знаю аски коды символов наизусть, программёрская жысть заставила. =)

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

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