?

Log in

Michael's Journal [entries|friends|calendar]
Michael

[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

Разворачиваем список правильно [13 Oct 2013|05:18pm]
Задачка на разворачивание односвязного списока задом наперёд и некоторые её вариации очень популярны на программистских интервью. Несмотря на её бесполезность при оценке пригодности кандидата к практической работе, из задачки можно неожиданно много выжать в качестве упражнения по кодированию на С++.

Шаг 0. Традиционное решение

Как выглядит традиционное решение? Сначала определяем стуктуру node для представления узла списка. Полагаем, что в каждом узле хранится какой-то payload, который нас в рамках данной задачи не волнует, и указатель на следующий узел (в последнем узле он будет нулевым):
struct node
{
    ...
    node *pnext;
};
Искомая функция получает указатель на голову списка, переворачивает список и возвращает указатель на голову перевёрнутого списка:
node *reverse(node *phead)
{
    node *prhead = nullptr; // Здесь в итоге окажется указатель на голову перевёрнутого списка.

    while (phead != nullptr)
    {
        node *p = phead->pnext;
        phead->pnext = prhead;
        prhead = phead;
        phead = p;
    }

    return prhead;
}
Решение простое, работающее, и, если речь идёт о техническом интервью, обычно достаточное. Тем не менее, этот простой код можно неоднократно улучшить, а в процессе улучшения открыть для себя много нового и интересного. Этим мы и займёмся.Read moreCollapse )
post comment

О восприятии времени [06 May 2013|06:42pm]
Перекидываемся сегодня в тарелочку на пляже, пиздим о чём-то своём. Лепящий неподалёку куличики мальчонка прислушивается-присматривается, потом подходит -- "Вы по-гавайски разговариваете?" -- "Нет, говорю, по-русски. А что, похожи на гавайцев?" -- "Ну, тычет пальцем в Аню, у неё купальник гавайский (чем-то да, похож, с большими рельефными цветуями)". Потом задумывается и выдаёт: "По-русски… А вы когда приехали -- в субботу или в воскресенье?"

Update: чуть не забыл видео-рилейтед.
1 comment|post comment

The case of the hot heart [10 Feb 2013|10:48am]
Давнее подозрение оказалось верным: hot в американском английском произносится полностью идентично heart в британском.
6 comments|post comment

[15 Apr 2012|02:25pm]
[ mood | giggly ]

Пятую неделю проникаюсь стэнфордовским курсом ПГМ. Всех с праздником Светлой Пасхи!

3 comments|post comment

Everybody lies [29 Feb 2012|05:57pm]
Отличная история с хэппи эндом про "все врут".
Turns out that their driver's implementation of DoesDriverSupport was something like this:
BOOL DoesDriverSupport(REFGUID guidCapability)
{
    return TRUE;
}
In other words, whenever DirectX asked, "Can you do this?" they answered, "Sure, we do that," without even checking what the question was.

(The driver must have been written by the sales department.)
post comment

Новости C++ [23 Feb 2012|07:55pm]
Из стандарта регулярно узнаёшь что-нибудь новое про такие вроде бы простейшие основы основ, что если б сам в стандарте не прочитал, ни за что бы не поверил.

Оказывается:
  • возвращаемым типом у main может быть только int, а void никогда не было ISO стандартом;
  • но при этом в main (и только в main) можно опустить return. Это тогда считается return 0;
  • в stdlib.h есть стандартные макросы EXIT_SUCCESS и EXIT_FAILURE;
  • new int и new int() — разные вещи;
post comment

Checked Exceptions - это что-то плохое [16 Feb 2012|10:54pm]
Годное полешко для холиварного флейма: Checked Exceptions Might Have Their Place, But It Isn't In Java

The team working on lambdas for Java has found checked exceptions a major stumbling block essentially for the reasons outlined here. A significant amount of work is going into easing that pain.

In short, as it stands the design of the Java language requires you to either avoid reusable abstractions or wrap useless checked exceptions in boilerplate. And if I want to avoid reusable abstractions then I know where to find Pascal. Could checked exceptions be made workable? Perhaps with some careful language design. But Java isn't that design.
1 comment|post comment

[03 Feb 2012|12:51am]
Сегодня был на Going Native 2012. Сидел наполненный тихим счастьем, как ребёнок, попавший в мир с ожившими сказочными героями. Вот они, все здесь. Такие знакомые и любимые, читанные-перечитанные. Чебурашка, Крокодил ГенаСтрауструп, Саттер, Александреску:


Удивительное ощущение живого присутствия в центре событий. Что-то значимое происходит здесь и сейчас а не где-то там, в другом мире, на недоступном Олимпе.

И алкогольная социализация вечером:


(Аня, посмотрев на фотку, сказала что мы чем-то похожи)

Никакими книжками для автографов я, понятное дело, заранее не озаботился, спохватился только сегодня. В перерыве между конференцией и пати обзванивал книжные. Ближайшая книжка по C++ обнаружилась в Вудинвиле, в десяти милях от нас. Аня, услышав цену в 65 баксов за кусок мёртвого дерева, обрисовала в красках, что она думает обо мне и о C++, но героически съездила, купила книжку и привезла под автограф прямо на пати:


Мне нравится такой день сурка!
5 comments|post comment

Ещё перашки [16 Jan 2012|10:16pm]
Пирожки второго эшелона, не попавшие в хит-парад, но прошедшие предварительный отбор:

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

бобры скучают в вестибюле
повсюду мрамор и гранит
на чахлой пальме посредине
табличка дерево не грызть

фелляцию ответ не верный
я повторяю свой вопрос
кого любил всем сердцем гамлет
кого вы слышите кого
Read more...Collapse )

Посчитал, отобранных получилось 4% от всех просмотренных. Невысокий КПД.
2 comments|post comment

Перашки [15 Jan 2012|11:14pm]
Прослоупочил целое культурное явление пирожки. Полдня навёрстывал упущенное. По результатам ознакомления -- личный хит-парад:

купил айфон а чо с ним делать
где кнопки чтобы нажимать
и как мне позвонить сереге
а вот и он звонит и чо

возьми указку в руки зоя
и ею ткни меня в живот
сильнее тыкай ты не бойся
ох блять теперь звони врачу

искусствоведов группа тихо
восторженно глядит на холст
и вдруг один седой и строгий
отчетливо сказал говно

продолжение хит-парадаCollapse )
1 comment|post comment

Merry Christmas [25 Dec 2011|02:00am]
У нас тут вокруг Рождество: джингл белз, лет ит сноу, а в торговом центре длинной змеёй вьётся очередь детишек к заветному фото на коленке у вусмерть замученного Санты.

Погоды стоят при этом предсказанные: тепло, сухо и зелено.


Вечнозелёный штат, да. Как никогда к месту звучит сегодня любимая рождественская песня:


Merry Christmas, folks! :)
2 comments|post comment

F# [18 Dec 2011|04:32am]
Третьего дня у нас в Бинге проездом был Дон Сайм, рассказывал про F#. Я, естественно, не мог не сходить вживую послушать евангелие от производителя.

Дон пополнил ряд "человеков из телевизора". До него ряд пополнялся, в основном, в заводской столовке. Работаю я, правда, не в Редмонде, а в Белвью, в плане селебритей у нас тут и труба пониже, и дым пожиже. Навскидку можно вспомнить ченнел-найновского... хм... ну, скажем, популяризатора Брайана Бекмана, и красиво возвышающуюся над стайкой китайцев Алёну_цпп.

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

Выяснилось, что почти все присутствующие уже имеют опыт общения с F#, поэтому прелюдия и sales pitch были опущены и перешли сразу к делу. Как и следовало ожидать, презентация была про главное нововведение в F# 3.0: type providers. Нововведение представляет собой интересную попытку сбычи давнишней мечты толп практикующих программистов: обеспечить типо-безопасный доступ к наборам данных с заранее неизвестной структурой. Реляционные базы, XML, OData и т.п.

Идея состоит в том, что на каждый вид представления данных пишется type provider, который на ходу выковыривает информацию о структуре данных и генерит информацию о типах. Причём делает это не только в компайл-тайм, но и в дизайн-тайм -- для автокомплишена. И это, вроде бы, не в чистом виде кодогеренация: сгенерённая информация о типах вовсе не обязательно должна превратиться в дотнетовские типы.

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

Меня смутило то, что IDE, получается, должна иметь возможность лазать в интернеты мало того что при компиляции, но и прямо в процессе набивания мной кода. Докладчик, однако, мои опасения развеял, сказав что партия об этом позаботилась и всё, что нужно, конфигурируется и кэшируется.

Вообще, у меня по поводу F# смешанные чувства. С одной стороны, вроде бы, праздник-праздник: полноценный функциональный язык, который при этом first-class citizen на любимой мейнстримовой платформе. А присмотришься повнимательней, так непонятно где радость от этой ёлочной игрушки. First-class-ность, мягко говоря, преувеличена: компиляторы C# и VB.NET живут прямо в .NET-е, а F# нужно ставить отдельно и в дальнюю жопу. То есть попользовать, например, для скрптования -- хрен там. Да и сам язык какой-то ни рыба, ни мясо. По части пролетарских функциональных фич (лямбды-замыкания, map-grep-fold) его уже догнал, а местами и перегнал, C#, а по части непролетарских фич и возможностей для расширения сознания простого быдлокодера (монады, классы типов, GADT) F# смотрится бледненько на фоне Хаскеля.

Конкретно вопрос про классы типов меня волнует давно. Без них несладко живётся даже в объектно-ориентированных языках, богатых наследованием и виртуальными функциями. Как без классов типов можно что-то ненаколенное написать на функциональном языке, я плохо представляю. Грех было, имея перед собой живого создателя языка, не взять его ласково за пуговицу и не спросить, входит ли в творческие планы автора добавление классов типов в F#. Не входит: это отдалит и обособит F# от платформы .NET и более традиционных языков. У меня, конечно, своё мнение на этот счёт, но что я буду -- учить дедушку кашлять? Отпустил пуговицу и поблагодарил.

В целом впечатление от общения осталось положительное. Товарищ имеет относительно происходящего вокруг своё мнение, вовсе не обязательно совпадающее с мнением партии и правительства, и исходя из этого выбирает приоритетные направления развития языка.

Желания бежать и глубже изучать F# вот прям щас не повяилось, но очень интересно посмотреть, взлетят или не взлетят type providers. Если взлетят, это вполне тянет на deal breaker.
2 comments|post comment

Как это делается в Америке [15 Dec 2011|08:37pm]
Начал писать коммент вот сюда, потом решил что можно и пост написать.

Месяца три назад звонок на мобильный:

- Мистер такой-то?
- Да.
- Тут по вашей кредитке транзакция подозрительная прошла, мы её временно заблокировали. Покупка чего-то там в таком-то магазине в Калифорнии.
- Не, эт точно не моё, я из своей деревни никуда не выезжал.
- Прекрасно. Тогда карту мы блокируем окончательно. Перезвоните, пожалуйста, в банк, скажите, что карта скомпрометирована, попросите перевыпустить.
- Э... А вы кто?
- Мы другая компания, занимаемся мониторингом фрода. И просматривайте, на всякий случай, несколько дней расходы по карте. Может, ещё что проявится.
- Спасибо, обязательно.
- Хэв э найс дей.

Вешаю трубку, звоню в банк.

- Алё, банк? Это я, такой-то. Перевыпустите, пожалуйста, скомпрометированную карту такую-то.
- Да, конечно. Адрес у вас не изменился? Отлично. Новая карта придёт по почте в течение десяти дней.
- Спасибо.
- Хэв э найс дей.

Карта пришла через несколько дней. Записи о левой транзакции в истории операций я даже не увидел.

Респект местной банковской системе и конкретно нашему местечковому First Tech Credit Union. Особенно на фоне страшных историй про неприкрытое кидалово клиента в аналогичной ситуации в Райфе - лучшем из известных мне российских банков.
4 comments|post comment

Локализация Windows 8 [12 Nov 2011|10:00pm]
Вот здесь до 21 ноября все желающие могут поучаствовать в переводе терминов для русской версии Windows 8.

Апдейт. Пост был отредактирован, дабы не вводить читателя в заблуждение об уровне моей личной заинтересованности в локализации Windows 8.
12 comments|post comment

Кто там [02 Sep 2011|01:35am]
Вот те на. Полез на ютьюб за ссылкой на "L-Y" Тома Лерера и случайно сделал открытие века. Оказывается, эпизод с "кто там?" в Простоквашино — это нагло спизжтворческая переработка одной из серий The Electric Company, американского образовательного телесериала для детей (1971 год):



2 comments|post comment

Бутылочку чего-чего? [15 Jun 2011|02:29pm]
Помните анекдот про японца в русской глубинке и кока-колу?

На днях в лифте три юных китайца (интерны, наверное), оживлённо общались на родном языке. Вот так: «Мяу-мяу сяо-сяо — айфон!» — «Айфон — мяу-мяу сяо-сяо!». Лифты быстрые, окончание истории Штирлиц не дослушал. А вот если бы Штирлиц активнее следил за новостями, то, конечно, сразу бы догадался, что фруктовая компания выкатила очередную версию «чего-чего».
4 comments|post comment

Здесь и там [20 May 2011|09:02pm]
Знаете что забавно. Смена картинки. Ну, то есть правильно говорить смена точки зрения, но как-то оно не так звучит. Смена "здесь" и "там". Вот ставишь обычно винду или что ещё которое таймзону хочет, оно тебе што по дефолту выставляет? "(UTC-08:00) Pacific Time (US & Canada)":


Раздражало всегда. Мелко, но раздражало. UTC-8:00, my ass! Ладно бы GMT выставляло: хоть и не родное, но что-то нейтральное, общечеловеческое. А то подсовывает, сука, вселенские ебеня какие-то, край света, где и люди-то, небось, не живут. А если и живут, то дикие и с пёсьими головами и нахуй им вообще виндовс. И вот ты ставишь винду, выплёвывает она тебе диалог таймзоны с вот таким дефолтом, ты, как всегда, мысленно выматерившись, уже нажал Alt и сейчас нажмёшь Down, чтобы промотать далеко вниз до UTC+3:00, и тут понимаешь, что никуда мотать не надо. Это теперь твоя таймозона. Ты здесь живёшь.
5 comments|post comment

Bellevue, WA [18 Apr 2011|10:40am]
Здравствуйте, дорогие радиослушатели! Наше радио возобновляет вещание из городка Бельвью (ударение, несмотря на явную французскость названия, на первый слог), штат Вашингтон.

Релокация прошла успешно, практически без приключений. Уже почти две недели как мы переехали и неделя как я на работе.

В свободное от работы время мы тут как животинки, которых перевезли в новое место, активно бегаем, обнюхиваем всё вокруг и помечаем территорию в гугль-мапсах. Для облегчения беганья и помечания была арендована на первые несколько дней машина и куплен навигатор Google Nexus S. С машиной было удобно, но четырёх дней на колёсах нам для начала хватило (подробности будут отдельно). Сейчас гуляем пешком и на автобусах -- в Сиэтле и окрестностях очень хорошая автобусная сеть, чем-то напоминающая лондонскую. А на Nexus меня продавец в BestBuy-е уболтал дополнительно взять типо страховку за десятку в месяц, по которой я им в любой момент приношу сломаный/поцарапанный/разбитый телефон и они его без разговоров меняют на новый. Учитывая, что желание расхерачить эту гламурную стекляшку о стену с каждым днём становится сдерживать всё труднее, скоро я проверю как эта страховка работает.

Поселились мы временно прямо в даунтауне. Разноцветный домик на переднем плане -- наш апартмент-комплекс, а работа находится в районе дальнего подъёмного крана. Очень удобно, до работы идти пятьсот метров. Так близко от офиса я ещё никогда не жил -- ну, если не считать работы из дома, конечно. Надо думать о долгосрочном жилье, а прям даже съезжать не хочется. Только не подумайте, что мы живём в промзоне, а работаю я таджиком на стройке: просто на гугле фотки хрен знает скольки летней давности. Майкрософтовский стрит-вью посвежее, но он у меня с домашнего интернета очень хреново открывается.

Подключился к T-Mobile: +1-425-6382540. Скорее всего, правда, номер поменяется -- с покрытием у T-Mobile оказалось не очень даже в городе, будем пробовать AT&T. Сотовая связь и порядки в ней, вообще, заслуживают отдельного рассказа. Наши ОПСОСы на фоне местных выглядят просто как благодетели-бессребренники.

Погода здесь сносная, температура порядка десяти градусов, дождь идёт не каждый день, даже пара-тройка дней была солнечных. Вообще температура рекордно низкая для середины апреля, местные офигевают, говорят, обычно заметно теплее, а летом так и вообще тепло. Но главная радость, конечно -- чистый воздух и чистые дороги. В этом смысле тут оказалось всё как в Европе: по дому можно спокойно ходить в уличной обуви и из носа не приходится регулярно выковыривать чёрные козявки. Просто какое-то секретное достижение североатлантической цивилизации, запрещённое к экспорту в Россию.

Надо ещё написать: о перелёте, о машинах, о быте/питании, об окрестностях, о работе. Stay tuned.
26 comments|post comment

Великий-могучий [11 Mar 2009|04:15pm]
И снова подглядел прекрасное в каментах у аввы:
…при Пушкине языковые нормы были, как мне кажется, не такие жесткие, как при Розентале.
1 comment|post comment

Маленькие радости [24 Dec 2008|03:59pm]
Создатели языка C# — это рыцари без страха, упрёка, сомнений и рефлексии. Майкрософтовский документ про новые фичи в C# 4.0 первым делом порадовал следующим:
   C# 4.0 introduces a new static type called dynamic.
7 comments|post comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]