Простенькая тестовая задачка
От: Handie  
Дата: 28.06.12 07:32
Оценка: :))) :))) :)
Вот, предложили сделать забавное заданице

Разработать простейший WEB server, отвечающий следующим требованиям:
1) Возвращает статический HTML контент (CGI не нужны).
2) Однопроцессный, но многопоточный.
3) Рассчитан на большое количество одновременных запросов.
4) Корректно возвращает HTTP коды ошибок и заголовки.
5) Никаких стронних библиотек — только STL, posix, glibc
6) Сервер должен компилироваться и запускаться под Linux. "

Душевные ребята
Re: Простенькая тестовая задачка
От: Ryoga  
Дата: 28.06.12 07:49
Оценка:
Здравствуйте, Handie, Вы писали:

H>Вот, предложили сделать забавное заданице


H>Разработать простейший WEB server, отвечающий следующим требованиям:

H>1) Возвращает статический HTML контент (CGI не нужны).
H>2) Однопроцессный, но многопоточный.
H>3) Рассчитан на большое количество одновременных запросов.
H>4) Корректно возвращает HTTP коды ошибок и заголовки.
H>5) Никаких стронних библиотек — только STL, posix, glibc
H>6) Сервер должен компилироваться и запускаться под Linux. "

H>Душевные ребята


Нескромный вопрос — что за вакансия? А если не секрет, то и что за контора?
Re[2]: Простенькая тестовая задачка
От: Handie  
Дата: 28.06.12 07:56
Оценка:
R>Нескромный вопрос — что за вакансия? А если не секрет, то и что за контора?

Программист С++.
Контора — ее имя слишком хорошо известно в узких кругах
Re: Простенькая тестовая задачка
От: Yarik_L  
Дата: 28.06.12 08:06
Оценка: :))
Здравствуйте, Handie, Вы писали:

H>Вот, предложили сделать забавное заданице


H>Разработать простейший WEB server, отвечающий следующим требованиям:

H>1) Возвращает статический HTML контент (CGI не нужны).
H>2) Однопроцессный, но многопоточный.
H>3) Рассчитан на большое количество одновременных запросов.
H>4) Корректно возвращает HTTP коды ошибок и заголовки.
H>5) Никаких стронних библиотек — только STL, posix, glibc
H>6) Сервер должен компилироваться и запускаться под Linux. "

H>Душевные ребята


Все правильно. Проверяют три вещи:
1) умение пользоваться гуглом (задача — найти готовый опенсорсный проект с заданными характеристиками);
2) базовые знания svn/git/etc (найденный проект надо как-то скопипастить);
3) навыки рефакторинга (чтобы не спалили).

Контора часом не из Редмонда?
Re[3]: Простенькая тестовая задачка
От: void78  
Дата: 28.06.12 08:06
Оценка:
Ну да: лошадь кушает овёс, Волга впадает в Каспий, а некоторые конторы (типа mail.ru или рамблер-а) требуют выполнения тестового задания, похожего на это.

искренне Ваш К.О.


R>>Нескромный вопрос — что за вакансия? А если не секрет, то и что за контора?


H>Программист С++.

H>Контора — ее имя слишком хорошо известно в узких кругах
Re: Простенькая тестовая задачка
От: De-Bill  
Дата: 28.06.12 08:11
Оценка:
H>Душевные ребята

Реализация в простейшем виде не должна занять больше 500 строк кода.
Re[2]: Простенькая тестовая задачка
От: Handie  
Дата: 28.06.12 08:34
Оценка:
DB>Реализация в простейшем виде не должна занять больше 500 строк кода.

Так надо еще все коды ошибок возвращать Boost — низзя. libevent/libev/libuv — низзя. epoll напрямую
Re[2]: Простенькая тестовая задачка
От: const_volatile  
Дата: 28.06.12 08:43
Оценка: +2 -1
Здравствуйте, De-Bill, Вы писали:

DB>Реализация в простейшем виде не должна занять больше 500 строк кода.


2) многопоточный.
4) Корректно возвращает HTTP коды ошибок и заголовки.


одного из этих двух пунктов достаточно, чтобы не уложиться. 500 строк — это тупо select/accept/send/recv в одном потоке и никакого функционала.
Re[3]: Простенькая тестовая задачка
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 28.06.12 08:51
Оценка:
Здравствуйте, Handie, Вы писали:

DB>>Реализация в простейшем виде не должна занять больше 500 строк кода.


H>Так надо еще все коды ошибок возвращать Boost — низзя. libevent/libev/libuv — низзя. epoll напрямую

Звери.
Sic luceat lux!
Re: Простенькая тестовая задачка
От: okman Беларусь https://searchinform.ru/
Дата: 28.06.12 09:11
Оценка:
Здравствуйте, Handie, Вы писали:

H>Вот, предложили сделать забавное заданице


H>Разработать простейший WEB server, отвечающий следующим требованиям:


H>3) Рассчитан на большое количество одновременных запросов.


Большое — это сколько, интересно ? Сто, тысяча, много тысяч ?

H>4) Корректно возвращает HTTP коды ошибок и заголовки.


Фиг его знает, какое-то размытое требование. Они что, хотят полноценный HTTP-сервер с
content negotiation, accept-range и сжатием ? Наверное, можно на все штатные GET-запросы
возвращать HTTP/1.0 200 OK, Content-Length и body, а на все остальное 400 Bad Request.
И пускай потом только заикнутся о том, что это некорректно.

H>5) Никаких стронних библиотек — только STL, posix, glibc


М-да... Нет, я все понимаю, но без сторонних либ это ж сколько кода лишнего писать !
Уже просто для обработки входящего GET-запроса нужна целая HTTP state machine,
которая парсит статусную строку, вытаскивает URL, заголовки и т.д.
Только это пока напишешь да протестируешь, уже уйдет прилично времени, боюсь даже
предположить, сколько именно.

H>Душевные ребята


Это точно. Душевные ребята, и задания у них душевные.
Re[2]: Простенькая тестовая задачка
От: okman Беларусь https://searchinform.ru/
Дата: 28.06.12 09:16
Оценка: +1
Здравствуйте, Yarik_L, Вы писали:

Y_L>Все правильно. Проверяют три вещи:

Y_L>1) умение пользоваться гуглом (задача — найти готовый опенсорсный проект с заданными характеристиками);

5) Никаких стронних библиотек — только STL, posix, glibc

Re: Простенькая тестовая задачка
От: Abyx Россия  
Дата: 28.06.12 09:16
Оценка: :)))
Здравствуйте, Handie, Вы писали:

H>Вот, предложили сделать забавное заданице


H>Разработать простейший WEB server, отвечающий следующим требованиям:

H>1) Возвращает статический HTML контент (CGI не нужны).
H>2) Однопроцессный, но многопоточный.
H>3) Рассчитан на большое количество одновременных запросов.
H>4) Корректно возвращает HTTP коды ошибок и заголовки.
H>5) Никаких стронних библиотек — только STL, posix, glibc
H>6) Сервер должен компилироваться и запускаться под Linux. "

H>Душевные ребята


отправьте им ссылку на http сервер из примеров к asio, и скажите что Вы выполнили задание на 83%
In Zen We Trust
Re: Простенькая тестовая задачка
От: vayerx  
Дата: 28.06.12 09:34
Оценка:
О, я кажется тоже общался с этими ребятами :)
правда, я нашел работу раньше, чем они проверили задание.
если писать в труъ-стиле, то в 500 строк вписаться реально, но не факт, что они такое хотят увидеть.

Здравствуйте, Handie, Вы писали:

H>Вот, предложили сделать забавное заданице


H>Разработать простейший WEB server, отвечающий следующим требованиям:

H>1) Возвращает статический HTML контент (CGI не нужны).
H>2) Однопроцессный, но многопоточный.
H>3) Рассчитан на большое количество одновременных запросов.
H>4) Корректно возвращает HTTP коды ошибок и заголовки.
H>5) Никаких стронних библиотек — только STL, posix, glibc
H>6) Сервер должен компилироваться и запускаться под Linux. "

H>Душевные ребята :-)
Re[2]: Простенькая тестовая задачка
От: vayerx  
Дата: 28.06.12 09:39
Оценка:
Здравствуйте, okman, Вы писали:

O>Уже просто для обработки входящего GET-запроса нужна целая HTTP state machine,

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

Не так уж и много, как может показаться вначале. У GET-запроса довольно простая структура — в 17-20 простых состояний вполне можно уложиться :)
Re: Простенькая тестовая задачка
От: redp Ниоткуда redplait.blogspot.com
Дата: 28.06.12 09:48
Оценка: :)))
бгг
паранойя не болезнь, а критерий профпригодности
Re[3]: Простенькая тестовая задачка
От: Handie  
Дата: 28.06.12 09:52
Оценка:
Здравствуйте, vayerx, Вы писали:

V>Здравствуйте, okman, Вы писали:


O>>Уже просто для обработки входящего GET-запроса нужна целая HTTP state machine,

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

V>Не так уж и много, как может показаться вначале. У GET-запроса довольно простая структура — в 17-20 простых состояний вполне можно уложиться


Сысоев обошелся вот такой простенькой стейт-машиной (из node.js)

enum state
{ s_dead = 1 /* important that this is > 0 */

, s_start_req_or_res
, s_res_or_resp_H
, s_start_res
, s_res_H
, s_res_HT
, s_res_HTT
, s_res_HTTP
, s_res_first_http_major
, s_res_http_major
, s_res_first_http_minor
, s_res_http_minor
, s_res_first_status_code
, s_res_status_code
, s_res_status
, s_res_line_almost_done

, s_start_req

, s_req_method
, s_req_spaces_before_url
, s_req_schema
, s_req_schema_slash
, s_req_schema_slash_slash
, s_req_host_start
, s_req_host_v6_start
, s_req_host_v6
, s_req_host_v6_end
, s_req_host
, s_req_port_start
, s_req_port
, s_req_path
, s_req_query_string_start
, s_req_query_string
, s_req_fragment_start
, s_req_fragment
, s_req_http_start
, s_req_http_H
, s_req_http_HT
, s_req_http_HTT
, s_req_http_HTTP
, s_req_first_http_major
, s_req_http_major
, s_req_first_http_minor
, s_req_http_minor
, s_req_line_almost_done

, s_header_field_start
, s_header_field
, s_header_value_start
, s_header_value
, s_header_value_lws

, s_header_almost_done

, s_chunk_size_start
, s_chunk_size
, s_chunk_parameters
, s_chunk_size_almost_done

, s_headers_almost_done
, s_headers_done

/* Important: 's_headers_done' must be the last 'header' state. All
* states beyond this must be 'body' states. It is used for overflow
* checking. See the PARSING_HEADER() macro.
*/

, s_chunk_data
, s_chunk_data_almost_done
, s_chunk_data_done

, s_body_identity
, s_body_identity_eof

, s_message_done
};
Re[2]: Простенькая тестовая задачка
От: Handie  
Дата: 28.06.12 09:56
Оценка:
A>отправьте им ссылку на http сервер из примеров к asio, и скажите что Вы выполнили задание на 83%

Зачем я буду подвергать себя стрессам при общении со столь одаренными людьми?
Re[4]: Простенькая тестовая задачка
От: vayerx  
Дата: 28.06.12 09:58
Оценка:
Здравствуйте, Handie, Вы писали:

H>Здравствуйте, vayerx, Вы писали:

V>>Не так уж и много, как может показаться вначале. У GET-запроса довольно простая структура — в 17-20 простых состояний вполне можно уложиться :)

H>Сысоев обошелся вот такой простенькой стейт-машиной (из node.js)


там состояния и для запроса и для ответа. кроме того, например, для разбора http-версии выделять состояние на каждую букву не обязательно — можно сделать функционально. ну а в целом — таки да, примерно так :)
Re[3]: Простенькая тестовая задачка
От: okman Беларусь https://searchinform.ru/
Дата: 28.06.12 10:06
Оценка:
Здравствуйте, vayerx, Вы писали:

V>Не так уж и много, как может показаться вначале.


Угу, вначале обычно так и кажется, что не много
Re: Простенькая тестовая задачка
От: acDev Россия  
Дата: 28.06.12 10:29
Оценка:
Здравствуйте, Handie, Вы писали:

H>Вот, предложили сделать забавное заданице

H>Душевные ребята

Ребята из рэмблера?
Re[2]: Простенькая тестовая задачка
От: Handie  
Дата: 28.06.12 10:30
Оценка:
D>Ребята из рэмблера?

нет
Re: Простенькая тестовая задачка
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 28.06.12 10:45
Оценка:
Вобщем-то, хотят они довольно простую штуку. Особенно с учетом того что не надо делать ничего асинхронного. Думаю что реально сделать за часов 20 чистого времени. Но, надо ли, если не компания мечты
Re[2]: Простенькая тестовая задачка
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 28.06.12 10:46
Оценка: :))
Здравствуйте, redp, Вы писали:

R>бгг

Наверное поэтому рамблер.почтой никто и не пользуется.
Sic luceat lux!
Re[2]: Простенькая тестовая задачка
От: Handie  
Дата: 28.06.12 11:11
Оценка:
KP>Вобщем-то, хотят они довольно простую штуку. Особенно с учетом того что не надо делать ничего асинхронного. Думаю что реально сделать за часов 20 чистого времени. Но, надо ли, если не компания мечты

У меня после работы в IBM нет компании мечты. За что большое спасибо компании IBM.
Re[3]: Простенькая тестовая задачка
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 28.06.12 11:30
Оценка:
Здравствуйте, Handie, Вы писали:

H>У меня после работы в IBM нет компании мечты. За что большое спасибо компании IBM.


Да, большие корпорации штука странная, на любителя. Кому-то будет в кайф, а кого-то воротит.
Re[2]: Простенькая тестовая задачка
От: vayerx  
Дата: 28.06.12 12:05
Оценка:
Здравствуйте, redp, Вы писали:

R>бгг

ну у всех разные задачи: кому-то нужны сугубо практики — чтоб код лабали, кому-то с теорией — что бы вначале поисследовать могли, а кому-то сугубо теоретики. странно, конечно, что теоретики и практики косо смотрят друг на друга, пошетухински как-то
Re[2]: Простенькая тестовая задачка
От: alzt  
Дата: 28.06.12 13:30
Оценка: +1
Здравствуйте, De-Bill, Вы писали:

H>>Душевные ребята


DB>Реализация в простейшем виде не должна занять больше 500 строк кода.


Реализация на 500 будет похожа на студенческую поделку. Кучу функционала там не будет. Да хотя бы "Корректно возвращает HTTP коды ошибок и заголовки.". В итоге откажут, т.к. слишком простенький сервер.
Re[3]: Простенькая тестовая задачка
От: okman Беларусь https://searchinform.ru/
Дата: 28.06.12 13:54
Оценка:
Здравствуйте, Handie, Вы писали:

H>У меня после работы в IBM нет компании мечты. За что большое спасибо компании IBM.


Это должно звучать гордо, позитивно или как-то иначе ?
Re: Простенькая тестовая задачка
От: Smooky Россия  
Дата: 28.06.12 14:31
Оценка:
Здравствуйте, Handie, Вы писали:

H>Вот, предложили сделать забавное заданице


H>Душевные ребята


Вообще конечно такие тестовые задания уже давно наводят на мысль... В пень такие компании и задания! Как тут уже сказали, разве что это только не компания мечты!

Но я не об этом хотел сказать. Вот ведь интересная штука, ведь строителю не предлагают же при приёме на работу продемонстрировать построить тестовый дом, этажей так в 9 с подводом коммуникаций и установкой ТВ антены в качестве фичи, или врачу на собеседовании же не предлагают отрезать кусочек мозга циркуляркой в качестве демонстрации своих способностей с последуюшим размышлением и разбором тестового задания, и т.д.
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Re: Простенькая тестовая задачка
От: ML380 Земля  
Дата: 28.06.12 14:46
Оценка:
Здравствуйте, Handie, Вы писали:

H>Вот, предложили сделать забавное заданице


H>Разработать простейший WEB server, отвечающий следующим требованиям:

H>1) Возвращает статический HTML контент (CGI не нужны).
H>2) Однопроцессный, но многопоточный.
H>3) Рассчитан на большое количество одновременных запросов.
H>4) Корректно возвращает HTTP коды ошибок и заголовки.
H>5) Никаких стронних библиотек — только STL, posix, glibc
H>6) Сервер должен компилироваться и запускаться под Linux. "

H>Душевные ребята


Во. Только адаптировать для запуска в многопоточной среде. Ну и ждущий сокет, при коннекте к которому плодились бы эти потоки.
Re[2]: Простенькая тестовая задачка
От: vayerx  
Дата: 28.06.12 15:03
Оценка:
Здравствуйте, ML380, Вы писали:

ML>Во. Только адаптировать для запуска в многопоточной среде. Ну и ждущий сокет, при коннекте к которому плодились бы эти потоки.


select и "большое количество одновременных запросов" "под Linux" — так себе идея. старт потока на каждый коннект — в общем-то тоже излишне.
Re: Простенькая тестовая задачка
От: Трололоша  
Дата: 28.06.12 20:00
Оценка:
Здравствуйте, Handie, Вы писали:

H>Разработать простейший WEB server, отвечающий следующим требованиям:

H>1) Возвращает статический HTML контент (CGI не нужны).
H>2) Однопроцессный, но многопоточный.
H>3) Рассчитан на большое количество одновременных запросов.
H>4) Корректно возвращает HTTP коды ошибок и заголовки.
H>5) Никаких стронних библиотек — только STL, posix, glibc
H>6) Сервер должен компилироваться и запускаться под Linux. "

Вполне нормальный таск.
... << RSDN@Home>>
Да, йа зелёный тролль!
Re: Простенькая тестовая задачка
От: 0x8000FFFF Россия  
Дата: 28.06.12 21:26
Оценка:
http://nginx.org/ru/
Re: Простенькая тестовая задачка
От: ArtemGorikov Австралия жж
Дата: 28.06.12 22:25
Оценка:
Здравствуйте, Handie, Вы писали:

H>Вот, предложили сделать забавное заданице


H>Разработать простейший WEB server, отвечающий следующим требованиям:

H>1) Возвращает статический HTML контент (CGI не нужны).
H>2) Однопроцессный, но многопоточный.
H>3) Рассчитан на большое количество одновременных запросов.
H>4) Корректно возвращает HTTP коды ошибок и заголовки.
H>5) Никаких стронних библиотек — только STL, posix, glibc
H>6) Сервер должен компилироваться и запускаться под Linux. "

H>Душевные ребята


Судя по их ограничению 3 дня на выполнение- нормальное задание, действительно почитать API и написать, 8-15часов чистого времени на почитать, подумать, написать, отладить.
Re[3]: Простенькая тестовая задачка
От: ML380 Земля  
Дата: 28.06.12 22:27
Оценка:
Здравствуйте, vayerx, Вы писали:
V>старт потока на каждый коннект — в общем-то тоже излишне.
Выбор из пула свободного потока. Или имеется ввиду что-то другое?

V>select и "большое количество одновременных запросов" "под Linux" — так себе идея.

А как можно по-другому?
Re[3]: Простенькая тестовая задачка
От: Pzz Россия https://github.com/alexpevzner
Дата: 28.06.12 23:30
Оценка:
Здравствуйте, Handie, Вы писали:

H>Так надо еще все коды ошибок возвращать Boost — низзя. libevent/libev/libuv — низзя. epoll напрямую


Не все, а только корректно соответствующие ситуации. А ошибочных ситуаций, которые может заметь игрушечный HTTP-сервер, не так уж и много.
Re: Простенькая тестовая задачка
От: Pzz Россия https://github.com/alexpevzner
Дата: 28.06.12 23:32
Оценка:
Здравствуйте, Handie, Вы писали:

H>Разработать простейший WEB server, отвечающий следующим требованиям:

H>1) Возвращает статический HTML контент (CGI не нужны).
H>2) Однопроцессный, но многопоточный.
H>3) Рассчитан на большое количество одновременных запросов.
H>4) Корректно возвращает HTTP коды ошибок и заголовки.
H>5) Никаких стронних библиотек — только STL, posix, glibc
H>6) Сервер должен компилироваться и запускаться под Linux. "

День работы, примерно. Если многопоточный, ОК, два дня работы (надо еще придумать, куда там потоки применить )
Re[2]: Простенькая тестовая задачка
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 28.06.12 23:39
Оценка: +5
Здравствуйте, Pzz, Вы писали:

Pzz>День работы, примерно. Если многопоточный, ОК, два дня работы (надо еще придумать, куда там потоки применить )


Ты только на быстрый просмотр соответствующих RFC потратишь пол дня.
Re[3]: Простенькая тестовая задачка
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.06.12 00:57
Оценка:
Здравствуйте, kaa.python, Вы писали:

Pzz>>День работы, примерно. Если многопоточный, ОК, два дня работы (надо еще придумать, куда там потоки применить )


KP>Ты только на быстрый просмотр соответствующих RFC потратишь пол дня.


Ну вроде речь о том, что надо с 793-го начинать, не шла
Re[4]: Простенькая тестовая задачка
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 29.06.12 00:59
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Ну вроде речь о том, что надо с 793-го начинать, не шла


А как ты реализуешь требования 1 и 3 хотя бы не проглядев RFC относящиеся в HTTP?
Re[2]: Слоник
От: sdf
Дата: 29.06.12 03:08
Оценка:
Здравствуйте, acDev, Вы писали:

D>Здравствуйте, Handie, Вы писали:


H>>Вот, предложили сделать забавное заданице

H>>Душевные ребята

D>Ребята из рэмблера?


Они-они. Это Слонег из Рампочты опять отжигает.
Re: Простенькая тестовая задачка
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 29.06.12 03:19
Оценка:
Только что понял, что ты не сказал самого главного. А сколько денег-то дают?
Re[4]: Простенькая тестовая задачка
От: sdf
Дата: 29.06.12 03:20
Оценка: 1 (1) +1
Здравствуйте, ML380, Вы писали:

V>>select и "большое количество одновременных запросов" "под Linux" — так себе идея.

ML>А как можно по-другому?
epoll, kqueue.
Re[2]: Простенькая тестовая задачка
От: Handie  
Дата: 29.06.12 06:10
Оценка:
AG>Судя по их ограничению 3 дня на выполнение- нормальное задание, действительно почитать API и написать, 8-15часов чистого времени на почитать, подумать, написать, отладить.

Сам про три дня придумал?
Re[3]: Простенькая тестовая задачка
От: ArtemGorikov Австралия жж
Дата: 29.06.12 07:00
Оценка:
Здравствуйте Handie, Вы писали:

H>Сам про три дня придумал?


Зачем же- ссылка на блог того нанимателя пробегала здесь в теме. С интересом почитал.
... Отправлено с помощью КЫВТ.андроид 0.1
Re[4]: Простенькая тестовая задачка
От: Handie  
Дата: 29.06.12 07:31
Оценка: +1
H>>Сам про три дня придумал?

AG>Зачем же- ссылка на блог того нанимателя пробегала здесь в теме. С интересом почитал.


Ссылка совсем не туда. И контора эта — не Рамблер.
лет пять назад я уже написал HTTP сервер в качестве тестового — с тех пор зарекся иметь дело с неадекватными работодателями и делать тестовые задания
Re: Простенькая тестовая задачка
От: sss1024 http://microforms.mobile-mir.com/
Дата: 29.06.12 08:03
Оценка: 1 (1) +1
Здравствуйте, Handie, Вы писали:

H>Вот, предложили сделать забавное заданице


H>Разработать простейший WEB server, отвечающий следующим требованиям:

H>1) Возвращает статический HTML контент (CGI не нужны).
H>2) Однопроцессный, но многопоточный.
H>3) Рассчитан на большое количество одновременных запросов.
H>4) Корректно возвращает HTTP коды ошибок и заголовки.
H>5) Никаких стронних библиотек — только STL, posix, glibc
H>6) Сервер должен компилироваться и запускаться под Linux. "

H>Душевные ребята


http://elonen.iki.fi/code/nanohttpd/#download

на жабе чуть больше 1000 строк. С++ по сравнению с жабой отстой, но эту тысячу строк можно переписать относительно быстро.
Re: Простенькая тестовая задачка
От: minorlogic Украина  
Дата: 29.06.12 09:03
Оценка:
Задача действительно простая. Но очень объемная. Это различные понятия.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Простенькая тестовая задачка
От: vsb Казахстан  
Дата: 29.06.12 09:14
Оценка:
Здравствуйте, okman, Вы писали:

H>>5) Никаких стронних библиотек — только STL, posix, glibc


O>М-да... Нет, я все понимаю, но без сторонних либ это ж сколько кода лишнего писать !

O>Уже просто для обработки входящего GET-запроса нужна целая HTTP state machine,
O>которая парсит статусную строку, вытаскивает URL, заголовки и т.д.
O>Только это пока напишешь да протестируешь, уже уйдет прилично времени, боюсь даже
O>предположить, сколько именно.

Зачем его парсить? Надо пропарсить первую строку вида GET {url} HTTP/1.0, всё остальное парсить не надо, прочитать файл, соответствующий url-у и выплюнуть его клиенту. Если файла нет, выплюнуть 404. Если первая строка не подохдит под указанный шаблон, bad request сказать.
Re[3]: Простенькая тестовая задачка
От: okman Беларусь https://searchinform.ru/
Дата: 29.06.12 09:48
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Зачем его парсить? Надо пропарсить первую строку вида GET {url} HTTP/1.0, всё остальное парсить не надо, прочитать файл, соответствующий url-у и выплюнуть его клиенту. Если файла нет, выплюнуть 404. Если первая строка не подохдит под указанный шаблон, bad request сказать.


Про заголовки в запросе не забыли ? Если их проигнорировать, реализация HTTP-сервера
будет некорректной. Например, клиент хочет принимать только HTML в кодировке UTF-8, для
чего указывает заголовки "Accept: text/html, *;q=0" и "Accept-Charset: UTF-8, *;q=0", а
в файле у нас лежит text/plain в Windows-1251. По теории HTTP, здесь нужно вернуть
статус "406 Not Acceptable". Понятно, что задание тестовое и на такие "мелочи" вроде
как могут и глаза закрыть, но ведь топикстартер писал, что (цитата):

4) [сервер] корректно возвращает HTTP коды ошибок и заголовки.

Re[2]: Простенькая тестовая задачка
От: antirest  
Дата: 29.06.12 09:55
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Только что понял, что ты не сказал самого главного. А сколько денег-то дают?


Автор не рассказал ещё и того, что в этой компании (не помню название) предлагают ещё и другое задание в качестве альтернативы — не такое масштабное, какой-то С++ контейнер. Или вообще какой-то собственный С++-код с многопоточностью.
Re: Простенькая тестовая задачка
От: justinian Мухосранск  
Дата: 29.06.12 09:59
Оценка:
Здравствуйте, Handie, Вы писали:

H>Вот, предложили сделать забавное заданице


H>Разработать простейший WEB server, отвечающий следующим требованиям:

H>1) Возвращает статический HTML контент (CGI не нужны).
H>2) Однопроцессный, но многопоточный.
H>3) Рассчитан на большое количество одновременных запросов.
H>4) Корректно возвращает HTTP коды ошибок и заголовки.
H>5) Никаких стронних библиотек — только STL, posix, glibc
H>6) Сервер должен компилироваться и запускаться под Linux. "

H>Душевные ребята


Сколько-то лет назад я делал именно такое тестовое задание. Задание получил в среду-четверг. Приступил в субботу утром, с перерывами потратил все выходные. Оффер получил, но так им и не воспользовался.
Re[4]: Простенькая тестовая задачка
От: vsb Казахстан  
Дата: 29.06.12 10:01
Оценка:
Здравствуйте, okman, Вы писали:

vsb>>Зачем его парсить? Надо пропарсить первую строку вида GET {url} HTTP/1.0, всё остальное парсить не надо, прочитать файл, соответствующий url-у и выплюнуть его клиенту. Если файла нет, выплюнуть 404. Если первая строка не подохдит под указанный шаблон, bad request сказать.


O>Про заголовки в запросе не забыли ? Если их проигнорировать, реализация HTTP-сервера

O>будет некорректной. Например, клиент хочет принимать только HTML в кодировке UTF-8, для
O>чего указывает заголовки "Accept: text/html, *;q=0" и "Accept-Charset: UTF-8, *;q=0", а
O>в файле у нас лежит text/plain в Windows-1251. По теории HTTP, здесь нужно вернуть
O>статус "406 Not Acceptable". Понятно, что задание тестовое и на такие "мелочи" вроде
O>как могут и глаза закрыть, но ведь топикстартер писал, что (цитата):
O>

O>4) [сервер] корректно возвращает HTTP коды ошибок и заголовки.


Имхо, без конкретной спецификации подобных ситуаций самому, конечно, можно и apache http server в итоге написать, но это явно не то, что хотят видеть от тестового задания. В тестовой задаче хотят видеть, как человек организует код, как пишет комментарии, обработку ошибок. В данном задании базовые навыки работы со строками, файлами, понимание принципов написания серверов, держащих большое число соединений. А как вы пишете — там придётся конфиг писать, чтобы задавать кодировку файлов (ведь каждый файл может быть в своей кодировке). Для конфига парсер А на практике браузеру по барабану, он любую кодировку покажет, ещё и сам определит, если неправильно будет указано.

И вообще

If an Accept header field is present,
and if the server cannot send a response which is acceptable
according to the combined Accept field value, then the server SHOULD
send a 406 (not acceptable) response.

А SHOULD это не MUST.

Ну а так — парсинг заголовков не намного сложнее. Читаем каждую строку, находим ':', что получилось складываем в отображение name->value, останавливаемся на первой пустой строке. Потом по этому отображению при необходимости проверяем наличие интересующего заголовка и смотрим, чего от нас хотят.
Re[3]: Простенькая тестовая задачка
От: Handie  
Дата: 29.06.12 10:21
Оценка:
A>Автор не рассказал ещё и того, что в этой компании (не помню название) предлагают ещё и другое задание в качестве альтернативы — не такое масштабное, какой-то С++ контейнер. Или вообще какой-то собственный С++-код с многопоточностью.

Ну да, пришлите код который писали на прошлой или позапрошлой работе. Я на такие предложения всегда отвечал — NDA.
Я принципиально не делаю тестовые задания, просто в этот раз меня поразила масштабность задания
Re[4]: Простенькая тестовая задачка
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 29.06.12 10:27
Оценка:
Здравствуйте, Handie, Вы писали:

H>Ну да, пришлите код который писали на прошлой или позапрошлой работе. Я на такие предложения всегда отвечал — NDA.


А я просто даю линку на мой ГитХаб аккаунт. Все довольны
Re[5]: Простенькая тестовая задачка
От: Handie  
Дата: 29.06.12 10:40
Оценка: 1 (1)
KP>А я просто даю линку на мой ГитХаб аккаунт. Все довольны

А у меня все С++ репозитории — приватные
Re[5]: Простенькая тестовая задачка
От: okman Беларусь https://searchinform.ru/
Дата: 29.06.12 10:48
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Имхо, без конкретной спецификации подобных ситуаций самому, конечно, можно и apache http server в итоге написать, но это явно не то, что хотят видеть от тестового задания. В тестовой задаче хотят видеть, как человек организует код, как пишет комментарии, обработку ошибок. В данном задании базовые навыки работы со строками, файлами, понимание принципов написания серверов, держащих большое число соединений.


В том-то и дело, что из данных входных условий, которые приведены в тестовом задании,
совершенно непонятно, что именно будут проверять и что хотят видеть в итоге.
Возможно, это как раз тест на глубокое понимание TCP и HTTP. Может быть, сделанный
экзаменуемым сервер сразу же запустят в тестовой среде и начнут бомбить его искусно
подготовленными заранее HTTP-запросами с "изюминками", чтобы сразу отсеять слишком
наивные или некорректные реализации. Или натравят на сервер какой-нибудь peach и
будут решать в таком духе: "продержался его сервак более часа — берем на работу".
При таком раскладе, кстати, сразу становится понятно, почему нельзя использовать
сторонние реализации, такие как apache или nginx, так как они выдержат подобные
испытание, а наспех писанный за пару вечеров сервер — вряд ли.

vsb>А как вы пишете — там придётся конфиг писать, чтобы задавать кодировку файлов (ведь каждый файл может быть в своей кодировке). Для конфига парсер А на практике браузеру по барабану, он любую кодировку покажет, ещё и сам определит, если неправильно будет указано.


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

vsb>И вообще


vsb> If an Accept header field is present,

vsb> and if the server cannot send a response which is acceptable
vsb> according to the combined Accept field value, then the server SHOULD
vsb> send a 406 (not acceptable) response.

vsb>А SHOULD это не MUST.


Можно забить на SHOULD, но это будет "conditionally compliant".

vsb>Ну а так — парсинг заголовков не намного сложнее. Читаем каждую строку, находим ':', что получилось складываем в отображение name->value, останавливаемся на первой пустой строке. Потом по этому отображению при необходимости проверяем наличие интересующего заголовка и смотрим, чего от нас хотят.


В целом, я с Вами согласен — ради тестового задания вряд ли стоит порождать такого
монстра, который бы выдерживал большие нагрузки, умело обрабатывал некорректные
запросы, работал через прокси, имел кэш и т.д. Но согласитесь, даже в таком простом
деле, как парсинг заголовков, даже для тестового задания придется учесть некоторые
моменты, иначе решение никакой критики не выдержит и свалится на первой же встряске.
Например, пришло два одинаковых заголовка с разными значениями, или где-то потерялись
закрывающие кавычки, или в запросе встретился заголовок Trailer, который нужно не
потерять после вычитки body, и т.д. Если речь идет про устройство в такую контору,
как Рамблер или Гугл, то все, что связано с работой сетей и, в частности, обработкой
HTTP, может принести дополнительные баллы.

Все IMHO.
Re[2]: Простенькая тестовая задачка
От: Хон Гильдон Россия  
Дата: 29.06.12 10:54
Оценка: +1
Здравствуйте, redp, Вы писали:

R>бгг


Это типа подразумевается, что соискатель готов убить 3 дня на то, чтобы пройти собеседование в рамблер? Не удивительно, что никто не горит желанием
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[2]: Простенькая тестовая задачка
От: Donz Россия http://donz-ru.livejournal.com
Дата: 29.06.12 11:38
Оценка:
Здравствуйте, redp, Вы писали:

R>бгг


Для справедливости дал там ссылку на эту тему
Re[5]: Простенькая тестовая задачка
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.06.12 11:58
Оценка: +3
Здравствуйте, kaa.python, Вы писали:

Pzz>>Ну вроде речь о том, что надо с 793-го начинать, не шла


KP>А как ты реализуешь требования 1 и 3 хотя бы не проглядев RFC относящиеся в HTTP?


Ну я в нем свободно ориентируюсь, вообще-то. Это дает мне право утверждать в резюме, что я знаю протокол HTTP

Но в принципе, я не стал бы давать соискателю задачу, которая требует больше 1-2 часов на решение. Ну или если неймется, такая работа должна быть оплачена.
Re[3]: [spoiler]
От: vayerx  
Дата: 29.06.12 13:29
Оценка:
Здравствуйте, antirest, Вы писали:

A>Автор не рассказал ещё и того, что в этой компании (не помню название) предлагают ещё и другое задание в качестве альтернативы — не такое масштабное, какой-то С++ контейнер. Или вообще какой-то собственный С++-код с многопоточностью.


Phorm
Re: Простенькая тестовая задачка
От: de1  
Дата: 30.06.12 07:08
Оценка:
Здравствуйте, Handie, Вы писали:

H>Вот, предложили сделать забавное заданице


H>Разработать простейший WEB server, отвечающий следующим требованиям:

H>1) Возвращает статический HTML контент (CGI не нужны).
H>2) Однопроцессный, но многопоточный.
H>3) Рассчитан на большое количество одновременных запросов.
H>4) Корректно возвращает HTTP коды ошибок и заголовки.
H>5) Никаких стронних библиотек — только STL, posix, glibc
H>6) Сервер должен компилироваться и запускаться под Linux. "

H>Душевные ребята


Phorm чтоли? Там на выбор же дают две задачи, либо это, либо реализация класса бинарного буффера (по сути аналог QByteBuffer). Мне, если честно, лень стало делать.
Re[2]: Простенькая тестовая задачка
От: Handie  
Дата: 30.06.12 10:30
Оценка:
de1>Phorm чтоли? Там на выбор же дают две задачи, либо это, либо реализация класса бинарного буффера (по сути аналог QByteBuffer). Мне, если честно, лень стало делать.

В Qt есть QByteArray и QBuffer. QByteBuffer нет
Re[3]: Слоник
От: 3R  
Дата: 30.06.12 15:52
Оценка: 1 (1) +3 -1
Здравствуйте, sdf, Вы писали:
D>>Ребята из рэмблера?
sdf>Они-они. Это Слонег из Рампочты опять отжигает.

Посмотрел ЖЖ этого Андрея Шетухина (http://stellar.moikrug.ru/). Это неадекват — вот характерный диалог: http://slonik-v-domene.livejournal.com/107288.html?thread=1920792#t1920792
И это начальник почтовой службы Рамблера. Есть кто из Рамблера, знакомый с ним? Как вы с таким человеком работаете?
Re[4]: Слоник
От: const_volatile  
Дата: 30.06.12 16:02
Оценка:
Здравствуйте, 3R, Вы писали:

3R>Посмотрел ЖЖ этого Андрея Шетухина (http://stellar.moikrug.ru/). Это неадекват — вот характерный диалог: http://slonik-v-domene.livejournal.com/107288.html?thread=1920792#t1920792


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

3R>И это начальник почтовой службы Рамблера. Есть кто из Рамблера, знакомый с ним? Как вы с таким человеком работаете?


какое отношение это имеет к его работе? (оставим за скобками то, что рамблер-почта вполне себе работает и нареканий с профессиональной точки зрения не вызывает)

нет, я с ним не знаком.
Re[5]: Слоник
От: 3R  
Дата: 30.06.12 16:21
Оценка: 7 (2) +3 -1
Здравствуйте, const_volatile, Вы писали:

_>человек вместо бана озалупливает тролля. можно только восторгаться его терпением.

Эээ.. вы все в рамблере матом разговариваете?
_>какое отношение это имеет к его работе? (оставим за скобками то, что рамблер-почта вполне себе работает и нареканий с профессиональной точки зрения не вызывает)
Дык он начальник, общение с подчиненными входит в его работу.

Вот еще прекрасный пример: http://slonik-v-domene.livejournal.com/95710.html
Re[4]: Слоник
От: sdf
Дата: 30.06.12 17:26
Оценка:
Здравствуйте, 3R, Вы писали:

3R>Здравствуйте, sdf, Вы писали:

D>>>Ребята из рэмблера?
sdf>>Они-они. Это Слонег из Рампочты опять отжигает.

3R> Как вы с таким человеком работаете?

Не из Рамблера, но пару раз пересекался. Человек весьма экспрессивый и прямолинейный, но дело знает хорошо. Очень часто правду в глаза говорит и не лицемерит, за это его многие не любят.

каково работать с таким начальником, может рассказать Южанинов, который от него сбежал
Re[5]: Слоник
От: 3R  
Дата: 30.06.12 18:24
Оценка: +1 -1
Здравствуйте, sdf, Вы писали:
sdf>Не из Рамблера, но пару раз пересекался. Человек весьма экспрессивый и прямолинейный, но дело знает хорошо. Очень часто правду в глаза говорит и не лицемерит, за это его многие не любят.
sdf>каково работать с таким начальником, может рассказать Южанинов, который от него сбежал

То, что правду говорит, это хорошо. Но не любят его, имхо, скорее за немотивированные оскорбления и хамство на ровном месте.
Re[6]: Слоник
От: sdf
Дата: 30.06.12 18:29
Оценка: -5
Здравствуйте, 3R, Вы писали:

3R>То, что правду говорит, это хорошо. Но не любят его, имхо, скорее за немотивированные оскорбления и хамство на ровном месте.

Оскорбления и хамство у него как раз вполне мотивированные. Он просто с дураками не церемонится.
Re[3]: Простенькая тестовая задачка
От: superman  
Дата: 30.06.12 19:37
Оценка: -1
Здравствуйте, Handie, Вы писали:

H>Контора — ее имя слишком хорошо известно в узких кругах


Бек-енд тим в конторе на С? Там было даже чуть покруче...
Re[4]: Слоник
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 30.06.12 22:32
Оценка: 9 (4) +4
Довольно показательный момент. Человек совершенно не умеет общаться — мат на мате в ЖЖ и при этом дает не менее отмороженные тестовые задания. Вообще, хорошо что есть публичные форумы, ЖЖ и прочее — можно отсеять полнейшего неадеквата на ранней стадии общения. Причем, при столь неадекватном поведении, уже глубоко попровну на его профессиональные навыки — с ним же каждый день видется.
Re[5]: Слоник
От: Трололоша  
Дата: 01.07.12 00:19
Оценка:
Здравствуйте, const_volatile, Вы писали:

_>человек вместо бана озалупливает тролля. можно только восторгаться его терпением.

Когда еда заходится матерным визгом у троллей настаёт время десерта.

3R>>И это начальник почтовой службы Рамблера. Есть кто из Рамблера, знакомый с ним? Как вы с таким человеком работаете?

_>какое отношение это имеет к его работе?
Ну как бы если он так легко срывается в неадекват то и в работе очень вероятно ведёт себя так же.
... << RSDN@Home>>
Да, йа зелёный тролль!
Re[4]: Простенькая тестовая задачка
От: aik Австралия  
Дата: 02.07.12 01:41
Оценка:
Здравствуйте, okman, Вы писали:

H>>У меня после работы в IBM нет компании мечты. За что большое спасибо компании IBM.

O>Это должно звучать гордо, позитивно или как-то иначе ?

Зная камрада и его проект лично, он должен сблевывать (и небезосновательно) каждый раз когда слышит "IBM" Хотя, бывает, на самом деле и хуже, и лучше.
Re[5]: Простенькая тестовая задачка
От: Handie  
Дата: 02.07.12 06:37
Оценка: +2 :)
aik>Зная камрада и его проект лично, он должен сблевывать (и небезосновательно) каждый раз когда слышит "IBM" Хотя, бывает, на самом деле и хуже, и лучше.

Я благодарен IBM за жизненный опыт, IBM научила меня не покупаться на громкие имена и "крутизну". Так как круче IBM уже ничего быть не может, то теперь меня работа в крутых компаниях не интересует.
Re[4]: Слоник
От: EM Великобритания  
Дата: 02.07.12 14:26
Оценка: :)))
Здравствуйте, 3R, Вы писали:

3R>Здравствуйте, sdf, Вы писали:

D>>>Ребята из рэмблера?
sdf>>Они-они. Это Слонег из Рампочты опять отжигает.

3R>Посмотрел ЖЖ этого Андрея Шетухина (http://stellar.moikrug.ru/). Это неадекват — вот характерный диалог: http://slonik-v-domene.livejournal.com/107288.html?thread=1920792#t1920792

3R>И это начальник почтовой службы Рамблера. Есть кто из Рамблера, знакомый с ним? Как вы с таким человеком работаете?


Поиск работы
Я ищу работу c 25 июня 2012.


http://stellar.moikrug.ru/

доотжигался пацанчик...
Опыт — это такая вещь, которая появляется сразу после того, как была нужна...
Re: Простенькая тестовая задачка
От: alf_kadett  
Дата: 02.07.12 20:14
Оценка:
Здравствуйте, Handie, Вы писали:

H>Вот, предложили сделать забавное заданице


H>Разработать простейший WEB server, отвечающий следующим требованиям:

H>1) Возвращает статический HTML контент (CGI не нужны).
H>2) Однопроцессный, но многопоточный.
H>3) Рассчитан на большое количество одновременных запросов.
H>4) Корректно возвращает HTTP коды ошибок и заголовки.
H>5) Никаких стронних библиотек — только STL, posix, glibc
H>6) Сервер должен компилироваться и запускаться под Linux. "

H>Душевные ребята


На моей первой работе было такое задание, но под Java. 16 часов работы, фигня вопрос.
Re[2]: Простенькая тестовая задачка
От: мыщъх США http://nezumi-lab.org
Дата: 02.07.12 20:31
Оценка:
Здравствуйте, De-Bill, Вы писали:

H>>Душевные ребята

DB>Реализация в простейшем виде не должна занять больше 500 строк кода.
что значит в простейшем виде? в простейшем виде достаточно возвращать одну ошибку -- сервер не доступен. в чуть более сложном виде -- это вполне полноценный продукт, с которым можно выходить на рынок. скажем, маленький и шустренький сервер для встраиваемых устройств типа там сливного бачка от унитаза.

хотя, стоп. они сказали за линух. ну дык на любом (мыслимом) линухе web сервер уже есть из коробки. осталось только его запустить.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[3]: Простенькая тестовая задачка
От: мыщъх США http://nezumi-lab.org
Дата: 02.07.12 20:48
Оценка: -1
Здравствуйте, vayerx, Вы писали:

V>Здравствуйте, okman, Вы писали:


V>Не так уж и много, как может показаться вначале.

V>У GET-запроса довольно простая структура — в 17-20 простых состояний вполне можно уложиться
ща. хотя бы почитайте за обфускацию урлов -- и все это сервер должен поддерживать. и тут я скоромно промолчу, если у нас документ в Вынь-кодировке, а клиент понимает только KOI-8 или DOS -- сервер должен перекодировать. иначе, это неправильный такой сервер будет.

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

если писать по уму, чтобы дурь каждого была (не)видна, нужно писать свой рантайм, чтобы не зависеть от окружения. нужно писать логгеры и средства профилировки. плюс нагрузочные тесты, дабы доказать, что сервер держит соединения. причем, нужно обрабатывать не только "не найден", "плохой запрос", но и "сервер недоступен", т.к. недоступность сервера отличается от недоступности документа.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[4]: Простенькая тестовая задачка
От: Korden_nn  
Дата: 02.07.12 20:53
Оценка:
Здравствуйте, superman, Вы писали:

S>Бек-енд тим в конторе на С? Там было даже чуть покруче...


Кстати, не знаю как насчет топикстартера, а вообще мне тоже эта тестовая задачка напомнила ту же, что и Вам... Правда на нее 3 недели давали...
Я фигней прострадал 2 недели и 6 дней... вообще не притронулся... а потом с 19.00 воскресенья до 11.00 понедельника — сделал... 16 часов чистого времени... все как положено — много кофе, нервы, крики в 2 часа ночи — WTF?? переделывание архитектуры с нуля и т.д.
И взяли, в Праге сейчас. Даже недочетов не нашли...

Это я к тому что кто как работает... Кто-то по чуть-чуть каждый день... Кто-то как я — залпом... Когда реально надо и когда очень хочется, то можно и за ночь такое сделать... Но я второй раз такое не осилю... По уму конечно — 3 недели (если по вечерам делать)...
Re[4]: Простенькая тестовая задачка
От: vayerx  
Дата: 03.07.12 08:52
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>Здравствуйте, vayerx, Вы писали:


V>>Не так уж и много, как может показаться вначале.

V>>У GET-запроса довольно простая структура — в 17-20 простых состояний вполне можно уложиться :)
М>ща. хотя бы почитайте за обфускацию урлов -- и все это сервер должен поддерживать. и тут я скоромно промолчу, если у нас документ в Вынь-кодировке, а клиент понимает только KOI-8 или DOS -- сервер должен перекодировать. иначе, это неправильный такой сервер будет.

М>парсить запросы, чтобы нас не захачили -- это тема отдельного разговора и тут все намного сложнее.


М>если писать по уму, чтобы дурь каждого была (не)видна, нужно писать свой рантайм, чтобы не зависеть от окружения. нужно писать логгеры и средства профилировки. плюс нагрузочные тесты, дабы доказать, что сервер держит соединения. причем, нужно обрабатывать не только "не найден", "плохой запрос", но и "сервер недоступен", т.к. недоступность сервера отличается от недоступности документа.


Разработать простейший WEB server

Re[2]: Простенькая тестовая задачка
От: EM Великобритания  
Дата: 03.07.12 22:53
Оценка: +3 :)
Здравствуйте, alf_kadett, Вы писали:


_>На моей первой работе было такое задание, но под Java. 16 часов работы, фигня вопрос.


если 10% месячной зарплаты для вас "фигня вопрос" отошлите ее мне.
Заранее спасибо
Опыт — это такая вещь, которая появляется сразу после того, как была нужна...
Re[3]: Простенькая тестовая задачка
От: TMU_1  
Дата: 04.07.12 05:19
Оценка:
Y_L>>Все правильно. Проверяют три вещи:
Y_L>>1) умение пользоваться гуглом (задача — найти готовый опенсорсный проект с заданными характеристиками);

O>

O>5) Никаких стронних библиотек — только STL, posix, glibc



Это входит в понятие "найти готовый опенсорсный проект с заданными характеристиками"
Re[3]: Простенькая тестовая задачка
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 04.07.12 09:02
Оценка:
Здравствуйте, Handie, Вы писали:

DB>>Реализация в простейшем виде не должна занять больше 500 строк кода.


H>Так надо еще все коды ошибок возвращать


Кажется в таких условиях возможных кодов там примерно 4 штуки. ok, файл не найден, нет прав на чтения файла, и клиент прислал какую-то херню.

H>Boost — низзя. libevent/libev/libuv — низзя. epoll напрямую
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[4]: Простенькая тестовая задачка
От: Handie  
Дата: 04.07.12 09:05
Оценка:
A>Кажется в таких условиях возможных кодов там примерно 4 штуки. ok, файл не найден, нет прав на чтения файла, и клиент прислал какую-то херню.

А Вы перенимайте передовую технологию собеседований в Яндекс. Пусть кандидаты сначала докажут, что у них есть воля к победе. А то приходит всякий немотивированный народ на собеседования.
Re[3]: Простенькая тестовая задачка
От: andrew11  
Дата: 04.07.12 18:14
Оценка:
Здравствуйте, Handie, Вы писали:

DB>>Реализация в простейшем виде не должна занять больше 500 строк кода.


H>Так надо еще все коды ошибок возвращать Boost — низзя. libevent/libev/libuv — низзя. epoll напрямую


А киньте, пожалуйста, в личку их название и контакты. Как раз специализируюсь на таком.
Re[5]: Простенькая тестовая задачка
От: Философ Ад http://vk.com/id10256428
Дата: 05.07.12 00:53
Оценка:
Здравствуйте, vayerx, Вы писали:

V>

Разработать простейший WEB server


и что это значит?
Всё сказанное выше — личное мнение, если не указано обратное.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.