Home
Mike's Journal
 
[Most Recent Entries] [Calendar View] [Friends]

Below are the 20 most recent journal entries recorded in Mike's LiveJournal:

    [ << Previous 20 ]
    Wednesday, December 16th, 2009
    6:11 pm
    Телефонное собеседование
    Провел (точнее говоря, принял участие) в очередном subj, которое в который раз подтвердило, что я лох и не знаю элементарных вещей из computer science ("что-то мне название Вашего ВУЗа ни о чем не говорит...").

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

    Часть 1 (щадяще-болтологически-вводная-она же якобы тест на знание computer science).
    Проверим, как Вы знаете computer science.
    Выберите из списка один из терминов и поговорите о нем (читай: смело выкладывайте все, что знаете, но если уж что-то не то ляпнули - знайте: мы вас за язык не тянули).
    а) NP-полные задачи (стремновато, ведь попросят привести примеры);
    б) инвариант цикла (это элементарно, но зачем применяется - непонятно. не стал выбирать эту тему);
    в) контекстно-свободная грамматика (вот эту точно вижу в гробу);
    г) deadlock, он же "тупик" по-русски (опасно говорить на эту тему);
    д) сборщик мусора (опасно, но я выбрал эту тему);
    е) вычислительная сложность алгоритма (если схитришь и не выберешь это, спросят все равно, а заодно и попросят привести примеры);
    Результат: я опасно походил по граблям, нарвался на п. е) и в итоге часть 1 кончилась неприятным разговором о видах сортировок и их алгоритмической сложности, что обернулось полным техническим поражением.

    Часть 2. "Хорошо ли вы знаете С++?"
    Дешевые знакомые трюки не прошли:
    а) есть ли виртуальные конструкторы, зачем нужен виртуальный деструктор
    б) что такое const и как объявить указатель на константу и константный указатель
    Результат: победа по части 2.

    Часть 3. "Хитровывернутая задачка".
    Условия:
    Гостиница, N номеров. Число N задано наперед.
    Есть администратор А.
    Надо сделать класс для администратора А, который бы умел следующее:
    а) отвечать на вопрос "есть ли свободные номера?": bool anyFreeRooms() const
    б) мог бы занять номер int occupyRoom() - возвращает номер комнаты.
    в) освободить номер: void freeRoom( int room ) - помечает комнату как свободную.
    Технические ограничения:
    1. Пользователь данного класса является "хорошим", т.е. не освобождает незанятый номер, не занимает номер, если нет свободных номеров, не освобождает один и тот же номер дважды и т.д. (а я вообще не обратил на это условие внимания)
    2. Вычислительная сложность для пунктов а), б) и в) должна быть O(1)
    При этом на создание самого объекта для администратора не имеется ограничений.
    Дали 10 минут подумать, но результат оказался плачевным...даже с помощью интернета не удалось ничего полезного выудить. Так я и понёс околесицу про vector<bool>.
    Ага, догадался уже потом (спустя пару часов), что надо было просто сконструировать list<int>, который будет представлять собой список свободных номеров, и забить его всеми числами от 1 до N.
    Wednesday, December 9th, 2009
    10:26 am
    Почти невозможное
    Мдаа...Хорошо бы сделать нотный редактор online по типу Finale (такого еще нет в мире) плюс библиотеку из всей нотной литературы мира забить туда (хотя бы несколькосотлетней давности, чтобы не было проблем с копирайтом). Такой еще тоже нет на свете. Вот подспорье композиторам будет: взял на-copy/paste-ил себе из Баха, Бетховена или Моцарта (спец. фича для Шнитке; жаль только, что он уже умер :). Записал онлайн. Расшарил ноты, чтобы показать друзьям. И партитуры раздавать оркестру можно. Очень удобно. Также можно выставлять свои произведения и в паблик-доступ: вот, мол, мой портфолио. Не хочешь выставлять - не надо, пользуйся ими приватно. И проигрывать можно будет. И в MIDI переводить при желании. И в формат Finale. И напечатать можно. И все это бесплатно. Платить только за продвинутые фичи.
    А? Как идея?
    Friday, October 23rd, 2009
    9:08 am
    Django
    С горя пошел изучать Django.
    Thursday, October 22nd, 2009
    3:03 pm
    Быдлокодер (aka Горе-программист; англ. Code Monkey)
    Почти все, что я программирую, коллегам приходистя переписывать: "Он писал это, не вникая в суть проблемы", "Это написано абы как". Бедные коллеги! Что ж я могу сделать, если я такой идиот и думаю в основном спинным мозгом. Нет, пожалуй, мне пора переквалифицироваться в тестеры, хватит уже мучить коллег и юзеров. Хотя тестером может я еще и худшим буду, чем программером...
    Monday, October 19th, 2009
    10:16 am
    ISO files parser/creator
    Мдаааа...написать его оказалось мегажестью... я даже не ожидал. STL, к сожалению, так и не узнал в процессе написания.
    Sunday, October 4th, 2009
    11:40 pm
    Высокая Нотка на "Детском Радио"
    Вот и обзавелось "Детское Радио" своим музкультпросветработником. Ля-ля-ля-ля-ля-ля-ля-ля-ля-а-а-а! И всё бы ничего, да только наступил маленькой Высокой Нотке на ухо Боооольшой басовитый - и очень тяжелый - медведь. Не, я серьезно. Взяли бы на роль и.о. Высокой Нотки чувиху, умеющую хотя бы немного петь (я уж не говорю имеющую слух, это почти невозможно в условиях Д.Р., хотя подошла бы любая выпускница Гнесинки) - было бы гораздо приятнее, да и детям не портился бы слух. А тем временем В.Н. продолжает петь горлом, мимо нот и - о боже - на всю страну и портить слух всем детям Р.Ф. (а ведь детское радио слушают и в Ульяновске, и в Самаре, и в Р.Н.Д. (http://www.deti.fm)!
    Friday, October 2nd, 2009
    11:07 am
    Застрелиться
    Yandex.Server выдает сообщение (у них вообще с английским беда):
    Service shot down
    Wednesday, September 2nd, 2009
    10:22 pm
    Текучка
    Сегодня не буду, вопреки обыкновению, себя бичевать. Сами можете оценить мои профессиональные "достижения".
    Первая половина дня прошла под знаком Unicode. После неторопливой работы я эасобачил массив на 65536 элементов, по которому можно преобразовывать любую самую затейливую буковку из Unicode в ANSI (никто и не утверждал, что успешно, но все, что может, он преобразовывает!). Универсальный конвертер сделан (облом произошел только с китайско-японскими языками, но это как-нибудь потом настрою)!
    Вторая часть дня прошла в обсуждениях и обдумываниях распределенной атаки на пароли по сети. Нужно было продумать и заимплементить одну важную фичу. Когда один компьютер и один поток - это хорошо. Когда два - уже хуже. Когда их много, мозги перестают справляться. ООП рулит, но он значительно превышает по возможностям возможности моего мозга. В результате заимплементил какую-то кривизну, которую придется еще выпрямлять и выпрямлять.
    Tuesday, August 11th, 2009
    8:05 pm
    На днях написал код, кидающий в большом количестве исключения из конструктора и (о ужас!) сам конструктор был аж на 2 экрана. В результате подвергся (о боже!) публичному остракизму с заведением кейса и последующим рефакторингом. Welcome to http://govnokod.ru!
    Monday, August 10th, 2009
    2:15 pm
    http://geo-search.ru
    Зыпустили прыэктик:
    http://geo-search.ru/
    Welcome!
    Saturday, May 9th, 2009
    11:09 am
    Bad karma
    Шо ето за на? Юмористы, блин...

    -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
    7D9F1538F9 796 Fri May 8 19:47:38 *********@ergosolo.ru
    (host mx1.yandex.ru[77.88.21.89] said: 450 4.5.0 Bad karma! (in reply to RCPT TO command))
    *********@yandex.ru
    Tuesday, March 3rd, 2009
    6:02 pm
    Friday, January 16th, 2009
    12:00 pm
    prototype.js
    Дмитрия Котерова в топку! http://www.prototypejs.org/, и поля доступны в Python через req.values!
    Saturday, January 10th, 2009
    9:38 am
    AJAX и Python
    Прикручиваю subj[0] к subj[1]. Использую библиотеку великого гуру Дмитрия Котерова: http://en.dklab.ru/lib/JsHttpRequest/.
    Как-то странно получается...тело аякс-запроса доступно через cgi.FieldStorage.value, а дальше надо, видимо, как-то извращаться...извращаюсь:

    def unescape( self, text ):
        """Removes URLencoded character references from a text string."""
        def fixup( m ):
            text = m.group(0)
            if text[:2] == "%u":
                # unicode character reference
                try:
                    return unichr(int(text[2:], 16))
                except ValueError:
                    pass
            else:
                # ascii character reference
                try:
                    return chr(int(text[1:], 16))
                except ValueError:
                    pass

            return text # leave as is
        re.sub("%u\w{4}", fixup, text)
        return re.sub("%\w{2}", fixup, text)

    def parseRequest( self, content ):
        plist = map(lambda x: x.strip(), content.split('&'))
        pdict = {}
        for p in plist:
            i = p.find('=')
            if i >= 0:
                name = p[:i].strip().lower()
                value = p[i+1:].strip()
                if len(value) >= 2 and value[0] == value[-1] == '"':
                    value = value[1:-1]
                pdict[name] = self.unescape( value )
            return pdict

    def do( self ):
        logging.debug( 'Check.do, req=%s' % ( self.req.fieldStorage(), ) )

        d = self.parseRequest( self.req.fieldStorage().value )
    Sunday, December 28th, 2008
    8:12 am
    Гуру STL тоже делают ошибки
    Из книги Скотта Майерса "Эффективное использование STL":
    "Библиотека STL не содержит умных указателей с подсчетом ссылок. Написание хорошего умного указателя (то есть такого, который бы всегда правильно работал) - задача не из простых, и заниматься ею стоит лишь в случае крайней необходимости. Я привел код умного указателя с подсчетом ссылок в "more Effective C++" в 1996 году. Хотя код был основан на хорошо известной реализации умного указателя, а перед изданием книги материал тщательно проверялся опытными программистами, за эти годы было найдено несколько ошибок. Количество нетривиальных сбоев, возникающих при подсчете ссылок в умных указателях, просто невероятно."
    А вы говорите...если уж даже великий гуру сделал столько ошибок в кажущихся несложными реализациях, что говорить о простых смертных. Коммерческий софт просто кишит ошибками (только 99.99% из них не проявляются и никогда не проявятся на практике).
    Friday, December 26th, 2008
    5:33 pm
    Оптимизаторы
    Воспоминание: повёрнутые на оптимизации яндексоиды оптимизируют даже подсчет количества выставленных битиков в числе, дабы не делать лишние сдвиги!
    Суровая правда жизни: клали мы (разработчики коммерческого софта) на всякую оптимизацию, оборачивая даже (!) STL-ные контейнеры.
    Wednesday, December 24th, 2008
    5:56 pm
    Сортированная "мапа"
    Вот что делает с программерами отсутствие знания STL-я.
    Понадобилось решить элементарную задачку: из файла (не будем уточнять, какого именно) читаются строки и некие значения, соответствующие этим строчкам. Это классический "хэшмэп". Сейчас апологеты STL-ля съедят меня с криками "в STL нет хэшмэпа, есть просто мэпа!!!". Успокойтесь. Я, как только речь заходит про STL, начинаю сразу в нем "плавать", как тюлень, случайно попавший не в свой водоем, так что не буду с вами спорить. Так вот, вернемся к задачке. Строки читаются произвольно, а пишутся в лексикографическом порядке (естественно, с соответствующими им значениями из hashmap). Что это? Сразу наступил глубокий затык и коллапс. Задачка-то для младшей школы...Ай-яй-яй-яй-яй. Вот что делает с программерами оборачивание STL-ля.
    Thursday, December 18th, 2008
    11:05 pm
    Работайте в Acronis-е!
    Открытое письмо на вакансию www.acronis.ru/company/employment/vacancy/vacancy.html

    >Проектировщик/программист С++ (СPP developer)

    >Career code: cpp design


    Девелопмент или дизайн? Определитесь может быть все-таки? Понятно, что без дизайна нет девелопмента, зато без девелопмента бывает дизайн, но все-таки...тут девелопмент или дизайн?

    >Requirements:
    >-отличное знание C++, STL, синхронизации;


    Дуб дубом. 8 лет программирую на С++, а ни STL-ля, ни синхронизации не знаю. На вопрос: "какие объекты синхронизации в Windows Вы знаете?" отвечаю: "Критические секции, эвенты. Больше ничего.". "Ничего? А семафоры?". "Нет". После чего разговор переходит в другое русло. На вопрос: "Как? Вы не знаете STL-я?" отвечаю: "Да, не знаю, потому что он у нас весь обернут", на что получаю кислую мину, мол, так делают только идиоты, и отправляюсь восвояси.

    >-умение разбираться в чужом исходном коде;

    Эт пожалуйста, сколько угодно. Люблю разгребать лопатой (или даже руками) отстой.

    >-опыт разработки ПО на C++ более 3-х лет.

    Более 8 лет, но так и не научился программировать нормально. На проектировщика не потяну.

    >Salary: starts from 78500 RUR

    Ууууууу! За такую зарплату я готов по 24 часа в сутки разгребать чужой исходный код, и даже без лопаты.

    >Working conditions:
    >Мы предлагаем работу в стабильной и успешной компании, полное соблюдение ТК РФ, перспективы карьерного роста
    >и достойную оплату труда (по результатам собеседования).

    Да, да, да. А вы еще не обанкротились? И когда планируете?

    >Для сотрудников:
    >- бесплатное питание;
    >- корпоративный абонемент в фитнес-клуб;
    >- комплексная медицинская страховка (ДМС);
    >- офис находится рядом со ст. м. Савеловская/Отрадное;
    >- интересные условия по переезду для кандидатов из других регионов.

    >Send your resume via e-mail: hr@acronis.ru or use the form below. Please specify the career code "cpp >design" in the Subject of your message.


    Да, да, да, обязательно пошлю, но я же тупой дятел, и вы меня все равно не примете на работу, но начнете названивать каждые полгода и приглашать на собеседования, на котором опять выяснится, что я не знаю ни STL-ля, ни объектов синхронизации, потом опять у HR-а закончится оперативка и он опять названивать начнет (быстро забывает, что я не знаю STL-ля и объектов синхронизации, памяти не хватает).
    Wednesday, December 17th, 2008
    1:45 pm
    Текущая директория в виндах
    Понятие "текущей директории" в Windows атрофировано, как и многое из того, что ее предшественник MS DOS взял из linux. Вот, взгляните сюда:

    getcwd.c

    _TSCHAR * __cdecl _tgetdcwd_nolock (
    int drive,
    _TSCHAR *pnbuf,
    int maxlen
    )
    {
    ...
    /* Get the drive index of the default drive */
    ...
    /*
    * Get the current directory string on that drive and its length
    */
    ...
    ret = GetFullPathName( drvstr, maxlen, p, &pname );

    ...
    return p;
    }



    Теперь вопрос на засыпку: от чего зависит текущая директория в Windows?
    Monday, December 15th, 2008
    11:38 am
    Надо и поворчать
    Разгрести десятки мегабайт исходников вручную (типа убрать кучу навоза лопатой) - это работка для меня, а вот придумать креатифф - нее, тут сразу найдутся охотники...
[ << Previous 20 ]
About LiveJournal.com

Advertisement