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 |
| | 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 |
| | 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 |
| | 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 ]
|