Снова открыта вакансия для работы над проектом www.weborama.ru Нам нужен активный, ответственный, целеустремленный коллега в команду: в возрасте от 23 до 30 лет который отлично знает ООП и паттерны проектирования (MVC), умеет их применять на практике синтаксис PHP 5 ему хорошо знаком (а если это 5.3 - плюс в карму) нативный JavaScript его не пугает. A еще он поработал с популярными JS фреймвоками (мы любим ОО JS). c MySQL он на «ты» — умеет писать сложные SQL-запросы и не только SELECT. А если ещё и со средствами отладки SQL знаком — мы тебя уже почти взяли он не боится регулярных выражений верстать ему не придётся, но знать CSS 2.1, основы CSS 3 и особенности браузеров Mozilla/Internet Explorer/Opera/Konqueror/Safari желательно его не пугает чужой код, он готов в нём разбираться и помогать документировать его если он работал в команде, использовал svn, trac — ещё один плюсик в карму З/П по итогам собеседования (от 20 000 р). Контактный телефон: +7 927 517 05 96 (Евгений) Мы предлагаем: комфортное рабочее место на 8-часовой рабочий день 5 дней в неделю в центре Волгограда оформление согласно ТК РФ своевременная оплата эффективного труда (о ее размере мы договоримся на собеседовании) дружный, сплочённый коллектив и печенюшки с кофе Резюме отправлять на: eugene [at] weborama [dot] ru
не претендую на вакансию,просто интересно, под средствами отладки SQL понимаются дебагеры позволяющие выполнить запрос пошагово?
"не претендую на вакансию" (С) разве на MySQL можно написать сложные запросы? MVC - это один паттерн проектирования.
alexsoff, это sql запрос со большим количеством "джойнов" и с большим количеством подзапросов, а также где во where указаны подзапросы. да, забыл сказать, что дело даже не в том, что синтаксический анализатор "справится" с "расшифровкой" этого запроса, а в том, чтобы был построен оптимальный "план запроса" и этот запрос был выполнен в приемлемое время.
Я думаю что в данном случае под сложными запросами понималось умение составить самому оптимальный запрос, минуя вложенные подзапросы. Если я не ошибаюсь, то до недавнего времени майэскуэлевцы вообще советовали избегать вложенных подзапросов.
ахереть) я как-то этим ребятам писал мол блаблабла вы а*уенные, но вот я типа не подхожу по некоторым критериям. ну грят напеши там о себе, своём опыте и блаблабла. а чо мне писать? я тогда ваще в запарке был, на отдых валил. решил позвонить - трубу чота не брали ни разу и не соизволили перезвонить на пропущенный номер. после отдыха чето было думал было им отправить письмецо с резюмешкой, ну чо - раз не надо им то чо я отправлять буду. KоT, оллололо - тож мне сложный запрос муахахаха агагага добавлено через 11 минут http://pic.ipicture.ru/uploads/091120/4V4N4Lk7Z2.jpg - это одна из самых примитивных моделек (даже без комментариев). в модельке вложенных множеств ваще много чо интереснава муааххахаа всем чмоки
Вот запрос, решающий задачу Энштейна, которая, как выразился AlTk, совершенно не сложная: set nocount on declare @sig table(sig varchar(10)) -- сигареты declare @color table(col varchar(10)) -- цвета домов declare @drink table(dri varchar(10)) -- напитки declare @anim table(ani varchar(10)) -- животные declare @nats table(nat varchar(10)) -- национальности insert @sig select 'Pall Mall' union select 'Dunhill' union select 'Marlboro' union select 'Winfield' union select 'Rothmans' insert @color select 'red' union select 'green' union select 'white' union select 'blue' union select 'yellow' insert @drink select 'tea' union select 'beer' union select 'cofe' union select 'milk' union select 'water' insert @anim select 'fish' union select 'dog' union select 'cat' union select 'horse' union select 'bird' insert @nats select 'eng' union select 'norv' union select 'shved' union select 'dat' union select 'nem' --собственно сам запрос select * from @sig s1 ,@color c1 , @drink d1 , @anim a1, @nats n1, @sig s2 ,@color c2 , @drink d2 , @anim a2, @nats n2, @sig s3 ,@color c3 , @drink d3 , @anim a3, @nats n3, @sig s4 ,@color c4 , @drink d4 , @anim a4, @nats n4, @sig s5 ,@color c5 , @drink d5 , @anim a5, @nats n5 where s1.sig<>s2.sig and s1.sig<>s3.sig and s1.sig<>s4.sig and s1.sig<>s5.sig and s2.sig<>s3.sig and s2.sig<>s4.sig and s2.sig<>s5.sig and s3.sig<>s4.sig and s3.sig<>s5.sig and s4.sig<>s5.sig and c1.col<>c2.col and c1.col<>c3.col and c1.col<>c4.col and c1.col<>c5.col and c2.col<>c3.col and c2.col<>c4.col and c2.col<>c5.col and c3.col<>c4.col and c3.col<>c5.col and c4.col<>c5.col and d1.dri<>d2.dri and d1.dri<>d3.dri and d1.dri<>d4.dri and d1.dri<>d5.dri and d2.dri<>d3.dri and d2.dri<>d4.dri and d2.dri<>d5.dri and d3.dri<>d4.dri and d3.dri<>d5.dri and d4.dri<>d5.dri and a1.ani<>a2.ani and a1.ani<>a3.ani and a1.ani<>a4.ani and a1.ani<>a5.ani and a2.ani<>a3.ani and a2.ani<>a4.ani and a2.ani<>a5.ani and a3.ani<>a4.ani and a3.ani<>a5.ani and a4.ani<>a5.ani and n1.nat<>n2.nat and n1.nat<>n3.nat and n1.nat<>n4.nat and n1.nat<>n5.nat and n2.nat<>n3.nat and n2.nat<>n4.nat and n2.nat<>n5.nat and n3.nat<>n4.nat and n3.nat<>n5.nat and n4.nat<>n5.nat and ( (n1.nat='eng' and c1.col='red') or (n2.nat='eng' and c2.col='red') or (n3.nat='eng' and c3.col='red') or (n4.nat='eng' and c4.col='red') or (n5.nat='eng' and c5.col='red') ) -- 1 and ( (n1.nat='shved' and a1.ani='dog') or (n2.nat='shved' and a2.ani='dog') or (n3.nat='shved' and a3.ani='dog') or (n4.nat='shved' and a4.ani='dog') or (n5.nat='shved' and a5.ani='dog') ) --2 and ( (n1.nat='dat' and d1.dri='tea') or (n2.nat='dat' and d2.dri='tea') or (n3.nat='dat' and d3.dri='tea') or (n4.nat='dat' and d4.dri='tea') or (n5.nat='dat' and d5.dri='tea') ) -- 3 and ( (c1.col='green' and c2.col='white') or (c2.col='green' and c3.col='white') or (c3.col='green' and c4.col='white') or (c4.col='green' and c5.col='white') ) -- 4 and ( (c1.col='green' and d1.dri='cofe') or (c2.col='green' and d2.dri='cofe') or (c3.col='green' and d3.dri='cofe') or (c4.col='green' and d4.dri='cofe') or (c5.col='green' and d5.dri='cofe') ) -- 5 and ( (s1.sig='Pall Mall' and a1.ani='bird') or (s2.sig='Pall Mall' and a2.ani='bird') or (s3.sig='Pall Mall' and a3.ani='bird') or (s4.sig='Pall Mall' and a4.ani='bird') or (s5.sig='Pall Mall' and a5.ani='bird') ) -- 6 and (d3.dri='milk') -- 7 and ( (s1.sig='Dunhill' and c1.col='yellow') or (s2.sig='Dunhill' and c2.col='yellow') or (s3.sig='Dunhill' and c3.col='yellow') or (s4.sig='Dunhill' and c4.col='yellow') or (s5.sig='Dunhill' and c5.col='yellow') ) -- 8 and (n1.nat='norv') -- 9 and ( (s1.sig='Marlboro' and 'cat'=a2.ani) or (s2.sig='Marlboro' and 'cat' in (a1.ani, a3.ani)) or (s3.sig='Marlboro' and 'cat' in (a2.ani, a4.ani)) or (s4.sig='Marlboro' and 'cat' in (a3.ani, a5.ani)) or (s5.sig='Marlboro' and 'cat'=a5.ani)) -- 10 and ( (s1.sig='Dunhill' and 'horse'=a2.ani) or (s2.sig='Dunhill' and 'horse' in (a1.ani, a3.ani)) or (s3.sig='Dunhill' and 'horse' in (a2.ani, a4.ani)) or (s4.sig='Dunhill' and 'horse' in (a3.ani, a5.ani)) or (s5.sig='Dunhill' and 'horse'=a5.ani)) -- 11 and ( (s1.sig='Winfield' and d1.dri='beer') or (s2.sig='Winfield' and d2.dri='beer') or (s3.sig='Winfield' and d3.dri='beer') or (s4.sig='Winfield' and d4.dri='beer') or (s5.sig='Winfield' and d5.dri='beer') ) -- 12 and ( (n1.nat='norv' and 'blue'=c2.col) or (n2.nat='norv' and 'blue' in (c1.col, c3.col)) or (n3.nat='norv' and 'blue' in (c2.col, c4.col)) or (n4.nat='norv' and 'blue' in (c3.col, c5.col)) or (n5.nat='norv' and 'blue'=c5.col)) -- 13 and ( (s1.sig='Rothmans' and n1.nat='nem') or (s2.sig='Rothmans' and n2.nat='nem') or (s3.sig='Rothmans' and n3.nat='nem') or (s4.sig='Rothmans' and n4.nat='nem') or (s5.sig='Rothmans' and n5.nat='nem')) -- 14 and ( (s1.sig='Marlboro' and 'water'=d2.dri) or (s2.sig='Marlboro' and 'water' in (d1.dri, d3.dri)) or (s3.sig='Marlboro' and 'water' in (d2.dri, d4.dri)) or (s4.sig='Marlboro' and 'water' in (d3.dri, d5.dri)) or (s5.sig='Marlboro' and 'water'=d5.dri)) -- 15
alexsoff, так с синтаксической точки зрения запрос действительно прост какое применение в реальной жизни эта штука находит? я сам не программер ниразу, а так, говнокодир, вот интересуюсь у умных людей чо да как добавлено через 1 минуту вообще если у вас есть сложный скуль запрос - у вас говёная архитектура приложения. это так - имхо добавлено через 1 час 5 минут и да, вакансия весьма достойная и оплата хорошая и требования более чем адекватные. не понимаю почему ещё не нашли сотрудника
alexsoff, Что сложного в этом запросе?? Кучка условий? Как уже сказано сложный запрос - это запрос для которого сложно построить оптимальный план исполнения.
Сложность запросов, а также сложность исходных текстов программ, всегда оценивается по человеко/часам необходимым для написание оных. Для написание запроса, который не сможет оптимизировать даже навороченая СУБД мне нужно будет 15 минут, а вот для написания запроса, который решает задачу Энштейна мне необходимо несколько часов (если решать с нуля).
Относительно ресурсов сложным быть не может. Может быть трудоемким. Набить 20 страниц в ворд с распечатанного текстка - это трудоемкая, но врядли очень сложная задача. Приведенный случай примерно эквивалентен.
Неужели Вам самим не очевидно, что кроссворды, логические задачи, шахматы очень развивают мозги. Вы в среьез думаете, что если посадить миллиард китайцев и заставить их набирать что- то хаотическое на клавиатуре, то по теории вероятности они напишут Войну и Мир?
Нет, я абсолютно уверен что это не так. Необходима еще обратная связь, иными словами управляющее воздействие. Причем тут это???
Вот один из моих опусов(полтора года назад): Код: CREATE FUNCTION GenPass(len INT) RETURNS varchar(128) BEGIN DECLARE re VARCHAR(512) DEFAULT '^[#A-Za-z0-9_-]'; DECLARE abc VARCHAR(512) DEFAULT "abcdefgh"; DECLARE result VARCHAR(255) DEFAULT ""; DECLARE c CHAR(1); DECLARE iter INT DEFAULT 255; WHILE iter >= 0 DO IF (CHAR(iter) REGEXP re) THEN SET abc = CONCAT(abc, CHAR(iter)); END IF; SET iter = iter - 1; END WHILE; WHILE CHAR_LENGTH(result) < len DO SET c = SUBSTRING(abc, FLOOR(RAND() * (CHAR_LENGTH(abc)+1)), 1); SET result = CONCAT(result, c); END WHILE; RETURN result; END; SELECT GenPass(10); Пример простой, но показывает потенциал СУБД. Хотя в плане хранимок я предпочитаю PostgreSQL. Да и отсутствие таких элементарщин, как массивы, посылает лучи поноса в сторону MySQL. P.S. А что, 20т.р. для таких вакансил в Волгограде - норма? При условии съемной хаты - хватит только на еду.
))) Вы приходите на собеседование. Думаю, всем будет интересно. И у вас будет отличная возможность показать свои знания и получить от этого реальную пользу. Вакансия открыта.