Ведение блога в ИТ

User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Ведение блога в ИТ

Post by Мальчик-Одуванчик »

crypto5 wrote:А где задается сколько в парикмахерской стульев в зале ожидания?
Это вы верно заметили. За давностью я уже подзабыл начальные условия. И про стулья в зале ожидания и про то что парикмахер только один. Заглянул в блог Сергуньки - там даже нет условия в каком порядке обслуживаются посетители, присевшие на стул.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Ведение блога в ИТ

Post by Мальчик-Одуванчик »

Вечерком переделал - получилась банальщина. Одна рабочая нитка, она же рабочее место, она же парикмахер.

Code: Select all

io_service service;
std::atomic<int> available_chairs;

void serveclient(std::string client) {
    ++available_chairs;
    std::cout << "serve client: " << client << ",available chairs: " << available_chairs << std::endl;
}
void visitclient(std::string client) {
    if(available_chairs) {
        --available_chairs;
        service.post(bind(serveclient,client));
    } else { std::cout << "no available chairs" << std::endl;}
}
int main() {
    std::string clients[] = {"client1","client2","client3","client4","client5","client6"};
    available_chairs=5;
    boost::thread_group threads;
    threads.create_thread([](){service.run();});
    for(std::string client : clients) visitclient(client);
    boost::this_thread::sleep(boost::posix_time::seconds(1));
    threads.join_all();
    return 0;
}
Совсем неинтересно. Наверное стоит усложнить задачу.
-добавить несколько рабочих стульев как в типичной парикмахерской. То есть парикмахер может обслуживать несколько клиентов единовременно
-ввести очерёдность обслуживания

Потом ещё немножко усложнить :
-добавить несколько парикмахеров. (редко мне попадалась парикмахерская с одним парикмахером)
-добавить запись к конкретному парикмахеру и очередность обслуживания в рамках нескольких очередей (при этом рабочие стулья и стулья для ожидания - общие)

Вот тогда возможно и появится уровень задачки для интервью
AxelA
Новичок
Posts: 46
Joined: 23 Apr 2011 18:43
Location: WA

Re: Ведение блога в ИТ

Post by AxelA »

Мальчик-Одуванчик wrote:Вечерком переделал - получилась банальщина. Одна рабочая нитка, она же рабочее место, она же парикмахер.

Code: Select all

int main() {
    std::string clients[] = {"client1","client2","client3","client4","client5","client6"};
...
    for(std::string client : clients) visitclient(client);
...
}
Совсем неинтересно.
Ну конечно не интересно, у вас клиенты того, строем ходят.
Когда они будут из разных веток приходить, должно стать слегка повеселее.

// И, кстати, это не совсем канонично - всегда пускать клиентов через queue.
// В оригинальной (по крайней мере в википедиевской) формулировке, в wait room идут только когда парикмахер занят.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Ведение блога в ИТ

Post by Мальчик-Одуванчик »

AxelA wrote:
Ну конечно не интересно, у вас клиенты того, строем ходят.
Когда они будут из разных веток приходить, должно стать слегка повеселее.

// И, кстати, это не совсем канонично - всегда пускать клиентов через queue.
// В оригинальной (по крайней мере в википедиевской) формулировке, в wait room идут только когда парикмахер занят.
Об том что ходят строем я подумал но решил для простоты не вводить временных задержек.
Хотя согласен, что таймауты между приходами клиентов и ввседение времени обслуживания сделают пример поинтереснее. Что касается сведения к каноническому случаю, то можно считать что общее количество стульев это
один стул парикмахера и оставшиеся в комнате ожидания.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Ведение блога в ИТ

Post by crypto5 »

Мальчик-Одуванчик wrote: Об том что ходят строем я подумал но решил для простоты не вводить временных задержек.
Всмысл не в "строем" и с задержкой, а в том что они приходят одновременно и в разных потоках. На данный момент ваша программа такое обрабатывает некоректно, например между if(available_chairs) и --available_chairs; в другом потоке кто-то может тоже уменьшит значение, и тогда у вас там окажется негативное значение, а клиентов в зале ожидания будет больше чем стульев.
In vino Veritas!
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Ведение блога в ИТ

Post by Мальчик-Одуванчик »

crypto5 wrote:
Мальчик-Одуванчик wrote: Об том что ходят строем я подумал но решил для простоты не вводить временных задержек.
Всмысл не в "строем" и с задержкой, а в том что они приходят одновременно и в разных потоках. На данный момент ваша программа такое обрабатывает некоректно, например между if(available_chairs) и --available_chairs; в другом потоке кто-то может тоже уменьшит значение, и тогда у вас там окажется негативное значение, а клиентов в зале ожидания будет больше чем стульев.
Вообще-то пофиг как они приходят, поскольку неявно выстраиваются в очередь. Парикмахер то один.
Да и потоки зачем тут нужны - как раз классическая очередь. Есть место - встал в очередь, нет - гуляй.
К примеру - парикмахерская будет что-то типа сервера, слушающего на двери. Зачем на клиентов городить свои потоки?
Клиены посылают запросы на обслуживание и эти запросы выстраиваются в подобие очереди. Запрос на обслуживание обрабатывается только в основном потоке, поэтому здесь в принципе не будет ошибки с подсчетом стульев. Другое дело, что в этом решении выбор следующего клиента из очереди не определен.
У меня поток только на рабочее место парикмахера, да и то то - исключительно из расчета на их дальнейшее увеличение.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Ведение блога в ИТ

Post by crypto5 »

Потоки нужны потому что клиенты - это могут быть люди или программы, живущие в других местах/серверах, друг о друге ничего не знающие, и как выстраиваться в очередь тоже не знают, а посылают запросы себе одновременно и независимо.
In vino Veritas!
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Ведение блога в ИТ

Post by Мальчик-Одуванчик »

crypto5 wrote:Потоки нужны потому что клиенты - это могут быть люди или программы, живущие в других местах/серверах, друг о друге ничего не знающие, и как выстраиваться в очередь тоже не знают, а посылают запросы себе одновременно и независимо.
Ну и ради бога. Главное что на принимающей стороне эти запросы упорядочиваются.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Ведение блога в ИТ

Post by crypto5 »

Ну да, в этом и задача фактически - упорядочить запросы. Ваше же решение выглядит как "предположим запросы упорядочены"
In vino Veritas!
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Ведение блога в ИТ

Post by Мальчик-Одуванчик »

crypto5 wrote:Ну да, в этом и задача фактически - упорядочить запросы. Ваше же решение выглядит как "предположим запросы упорядочены"
Не так - они упорядочиваются через их обработку. Все-таки действительно стоит воткнуть таймеры для большей наглядности.
AxelA
Новичок
Posts: 46
Joined: 23 Apr 2011 18:43
Location: WA

Re: Ведение блога в ИТ

Post by AxelA »

AxelA wrote:Ну конечно не интересно, у вас клиенты того, строем ходят.
Когда они будут из разных веток приходить, должно стать слегка повеселее.
Сорри, опечатался, под "ветками", конечно, треды имелись в виду.
Мальчик-Одуванчик wrote:
crypto5 wrote:Ну да, в этом и задача фактически - упорядочить запросы. Ваше же решение выглядит как "предположим запросы упорядочены"
Не так - они упорядочиваются через их обработку. Все-таки действительно стоит воткнуть таймеры для большей наглядности.
Как crypto5 уже упомянул, таймеры не при чем. Сделайте что бы клиенты приходили из разных тредов. В этом случае visitclient() (в ее текущем виде) будет работать некорректно.
User avatar
Kolbasoff
Уже с Приветом
Posts: 3481
Joined: 02 Jan 2005 22:10

Re: Ведение блога в ИТ

Post by Kolbasoff »

Вот такой вопрос к бывалым. Я тут тоже сподобился на ведение блога, решил интересную чисто теоретическую математическую задачку, проверил решение и написал библиотечку небольшую. Ну и вообще думаю эту тему развивать дальше в своем блоге и на гитхабе, привлекая слушателей и потенциальных заказачиков. Все хорошо, кроме одного пункта в моем контракте, который стандартный, про владение интеллектуальной пропердью. Он есть у всех вас: фултаймеров, контракторов W2 и 1099, неважно. В принципе, тема моей задачки вообше не пересекается с тем, чем я занимаюсь на работе, т.е. формально это не создано в ходе работы на клиента и не относиться к сервису, оказанному клиенту. Клиенту скорее всего это все пофиг, он жирный, ленивый и богатый, поэтому хочется иметь потенциальную возможность его и в дальнейшем доить с перерывами на обед, и не давать повода к конфликтам любого масштаба. С другой стороны, хочется более интересного занятия чем же-ту-и-и, ну и халтурок там и всего такого.

Посему вопрос: имеет ли смысл подождать до окончания контракта, или опубликоваться сейчас, ибо всем все пофиг? Сейчас опубликоваться было бы лучше, так как пока протечет до поисковиков, потом до народа, проходит пару месяцев. А я хочу что бы следующий гиг был поинтеллектуальнее, чем та копи-паста, которой я занимаюсь сейчас.

Спасибо.
reality
Уже с Приветом
Posts: 256
Joined: 14 Jul 2011 09:07
Location: SaintP -> NYC

Re: Ведение блога в ИТ

Post by reality »

Я бы опубликовал.
User avatar
valchkou
Уже с Приветом
Posts: 4185
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Ведение блога в ИТ

Post by valchkou »

Kolbasoff wrote:Сейчас опубликоваться было бы лучше, так как пока протечет до поисковиков, потом до народа, проходит пару месяцев.
если данный вопрос/ответ часто ищется на stackoverflow к примеру, то посетители начнут приходить почти сразу, как только на форуме опубликуешь ссылку на своё решение.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Ведение блога в ИТ

Post by Интеррапт »

Публикуйте. А если чего-то стесняетесь из-за работодателя, ну так имя свое не вставляйте туда пока, только никнейм. Ну или вставьте имя и фамилию, но немного не в той транскрипции, под которой вы известны у работодателя.
User avatar
Kolbasoff
Уже с Приветом
Posts: 3481
Joined: 02 Jan 2005 22:10

Re: Ведение блога в ИТ

Post by Kolbasoff »

Интеррапт wrote:Публикуйте. А если чего-то стесняетесь из-за работодателя, ну так имя свое не вставляйте туда пока, только никнейм. Ну или вставьте имя и фамилию, но немного не в той транскрипции, под которой вы известны у работодателя.
Да, пожалуй опубликую под никнэймом. А стоит ли давать ссылку на блог из линкедина? Я так думаю, что нет, так как заинтересованные товарисчи, if any, придут из блога, а не из линкдина/резюме. А рекрутерам все равно чем там чувак мается, лишь бы продать.
IContentProvider
Уже с Приветом
Posts: 5542
Joined: 30 Aug 2007 17:39
Location: USA

Re: Ведение блога в ИТ

Post by IContentProvider »

Kolbasoff wrote:В принципе, тема моей задачки вообше не пересекается с тем, чем я занимаюсь на работе, т.е. формально это не создано в ходе работы на клиента и не относиться к сервису, оказанному клиенту.
Какой штат? В Кали например, есть аппендикс в согласии с законом №таким-то, работодатель не может претендовать на то, что не пересекается с работой. Думаете как народ работает параллельно в стартапах?
Kolbasoff wrote: А стоит ли давать ссылку на блог из линкедина? Я так думаю, что нет, так как заинтересованные товарисчи, if any, придут из блога, а не из линкдина/резюме.
Да, опубликуйте ссылку на linkedin. В блоги ходят в массе другие господа-товарищи по другим ключевым словам, им нужна инфа, а не работники. Еще можно приклеить резюме к блогу, тогда будут еще ходить по слову "резюме".
User avatar
Kolbasoff
Уже с Приветом
Posts: 3481
Joined: 02 Jan 2005 22:10

Re: Ведение блога в ИТ

Post by Kolbasoff »

IContentProvider wrote:Какой штат? В Кали например, есть аппендикс в согласии с законом №таким-то, работодатель не может претендовать на то, что не пересекается с работой. Думаете как народ работает параллельно в стартапах?
Штат Вирджиния, но дело не в законах даже, а в самом факте ведения технического блога с интересными задачками. Никто не будет наезжать за ведение блога, но как тут заметил Коммисар, в био-фарма-мед индустрии (а я как раз к медицине присосался, и нет, это не обамакера.гов) всякие блоги не приветствуются, особенно если это не переворот строки способом #101, а эксерсизы с притензией на научность или псевдо-научность. Посмотрят, подумают "ага, еще один писатель, кто знает, сам он это придумал или скоммуниздил с работы. в любом случае, нам писатели не нужны, а нужны копатели" И резюме фтопку.
IContentProvider wrote:Да, опубликуйте ссылку на linkedin. В блоги ходят в массе другие господа-товарищи по другим ключевым словам, им нужна инфа, а не работники. Еще можно приклеить резюме к блогу, тогда будут еще ходить по слову "резюме".
Так что шифроваться через всякие никнэймc бессмысленно, даже странно. Ну посмотрим, однако, где-нибудь поближе к завершению контракта опубликую все равно, сейчас я зафрахтован до конца Июля. Заодно еще пару задачек решу, что бы потом публиковать потихоньку.

А где нынче хорошие тематические форумы по ИТ располагаются? Ну, кроме Привета, конечно?
IContentProvider
Уже с Приветом
Posts: 5542
Joined: 30 Aug 2007 17:39
Location: USA

Re: Ведение блога в ИТ

Post by IContentProvider »

Kolbasoff wrote: Так что шифроваться через всякие никнэймc бессмысленно, даже странно.
...
А где нынче хорошие тематические форумы по ИТ располагаются? Ну, кроме Привета, конечно?
Тогда надо смотреть по контактом на Linkedin, есть ли опасные. Если будет вход с Linkedin, то с ником в блоге не будет обратного - входа с блога на Linkedin. Можно еще сделать второй профиль на Linkedin с ником и залинковать оттуда, не указывая имени текущего работодателя.

По какой именно тематике форум? На Привете он очень общий.
User avatar
Kolbasoff
Уже с Приветом
Posts: 3481
Joined: 02 Jan 2005 22:10

Re: Ведение блога в ИТ

Post by Kolbasoff »

IContentProvider wrote:Тогда надо смотреть по контактом на Linkedin, есть ли опасные. Если будет вход с Linkedin, то с ником в блоге не будет обратного - входа с блога на Linkedin. Можно еще сделать второй профиль на Linkedin с ником и залинковать оттуда, не указывая имени текущего работодателя.
Тут за всеми не усмотришь. Да и странно, когда клиент шифруется, значит, чё-то опасается.
IContentProvider wrote:По какой именно тематике форум? На Привете он очень общий.
Ну я тоже двинулся в след за Сабиной по направлению к Зоркусу :-) Т.е. в сторону дата-копания, хадупа, статистики и пр. Ибо гонять туда-сюда ХМЛ-ы как-тo поднадоело. В бигдате побольше инжиниринга, однозначно. Т.е. форумы где как раз бигдата обсуждается и сопутствующие ей товары. И еще такой вопрос: на wordpress можно вставлять математические формулы? Т.е. могу ли я вставить кусок в MathML и он будет рендириться как формула, а не как текст?
IContentProvider
Уже с Приветом
Posts: 5542
Joined: 30 Aug 2007 17:39
Location: USA

Re: Ведение блога в ИТ

Post by IContentProvider »

Kolbasoff wrote:Т.е. в сторону дата-копания, хадупа, статистики и пр. Ибо гонять туда-сюда ХМЛ-ы как-тo поднадоело. В бигдате побольше инжиниринга, однозначно. Т.е. форумы где как раз бигдата обсуждается и сопутствующие ей товары. И еще такой вопрос: на wordpress можно вставлять математические формулы? Т.е. могу ли я вставить кусок в MathML и он будет рендириться как формула, а не как текст?
Это я не спец, но тоже бы почитала если кто-то знает форумы.

Имеется ввиду wordpress.com или wordpress.org? Тупо погуглив wordpress и MathML, пишут что имеются плагины для wordpress.org:
http://wordpress.org/plugins/wpmathpub/
http://wordpress.org/plugins/mathjax-latex/

.com кажется ничего такого не дает, говорят что вручную надо.
User avatar
Kolbasoff
Уже с Приветом
Posts: 3481
Joined: 02 Jan 2005 22:10

Re: Ведение блога в ИТ

Post by Kolbasoff »

IContentProvider wrote:.com кажется ничего такого не дает, говорят что вручную надо.
.com вроде LaTeX понимает, а LiveWriter его не понимает, короче бардак. Буду шлепать в виде картинок, как Вики делает.

А вот такая просьба к коллегам: накидайте мне плиз алгоритмических задачек которые не уменьшают размер изначального объекта, т.е. такие например как сортировка массивов, балансировка деревьев и пр. А какие задачки еще вы знаете?
User avatar
fruit6
Уже с Приветом
Posts: 4205
Joined: 10 Jan 2004 01:22
Location: n-sk -> MD -> VA

Re: Ведение блога в ИТ

Post by fruit6 »

Kolbasoff wrote:
IContentProvider wrote:.com кажется ничего такого не дает, говорят что вручную надо.
.com вроде LaTeX понимает, а LiveWriter его не понимает, короче бардак. Буду шлепать в виде картинок, как Вики делает.

А вот такая просьба к коллегам: накидайте мне плиз алгоритмических задачек которые не уменьшают размер изначального объекта, т.е. такие например как сортировка массивов, балансировка деревьев и пр. А какие задачки еще вы знаете?
стартапы пытающиеся выпендриться обязательно в дополнение к поискам подстрок спрашивают про графы. поиски разного рода особенностей типа циклов.
User avatar
Kolbasoff
Уже с Приветом
Posts: 3481
Joined: 02 Jan 2005 22:10

Re: Ведение блога в ИТ

Post by Kolbasoff »

fruit6 wrote:стартапы пытающиеся выпендриться обязательно в дополнение к поискам подстрок спрашивают про графы. поиски разного рода особенностей типа циклов.
Хотелось бы, что бы решение задачки имело какой-нибудь практический интерес. Т.е. пост в блоге начинается не с "на одном интервью меня спросили решить задачку АБЦ...", а "решение задачи АБЦ имеет практическое применение в...".
AxelA
Новичок
Posts: 46
Joined: 23 Apr 2011 18:43
Location: WA

Re: Ведение блога в ИТ

Post by AxelA »

Kolbasoff wrote: Хотелось бы, что бы решение задачки имело какой-нибудь практический интерес.
Максим Мозговой "C++ мастер-класс: 85 нетривиальных проектов, решений и задач" - тут широкий спектр классических алгоритмов с практическими применениями - графы, деревья.

Return to “Работа и Карьера в IT”