Оценка экспрессии и Хождение по деревьям с использованием полиморфизма? (Ала Стив Егге)

Сегодня утром я читал книгу Стива Йегге "когда полиморфизм терпит неудачу", когда наткнулся на вопрос, который его коллега обычно задавал потенциальным сотрудникам, когда они приходили на собеседование в Amazon.

Как пример полиморфизма в действие, давайте посмотрим на классику "eval" вопрос интервью, который (как насколько я знаю) был доведен до Amazon автор: Рон Браунштейн. Вопрос в том довольно богатый, как ему удается зондируйте большое разнообразие важных навыки: OOP дизайн, рекурсия, двоичный код деревья, полиморфизм и время выполнения набор текста, общие навыки кодирования и (если вы хотите сделать его еще более трудным) теория парсинга.

В какой-то момент кандидат с надеждой осознает, что вы можете представлять собой арифметическое выражение в двоичном виде дерево, предполагая, что вы только используете бинарные операторы, такие как" +", "-", "* " ,"/". Листовые узлы - это все числа, а внутренние узлы являются все операторы. Оценка состояния выражение означает ходить по дереву. Если кандидат этого не понимает, вы можете мягко привести их к этому, или если это необходимо, просто скажи им.

Даже если ты расскажешь им, это все равно будет неприятно. интересная проблема.

Первая половина вопроса, которая некоторые люди (чьи имена я буду называть защищать до последнего вздоха, но их инициалы-Вилли Льюис) feel is a Требования К Работе, Если Вы Хотите Позвонить Вы Сами Разработчик И Работаете На Amazon, на самом деле довольно сложно. То вопрос заключается в следующем: как вы идете от Ан арифметическое выражение (например, в a строку), такие как "2 + (2)" к дерево выражения. У нас может быть ADJ вызов по этому вопросу у некоторых точка.

Вторая половина такова: допустим, это проект из 2 человек и ваш партнер, кого мы будем называть "Willie", это ответственный за преобразование строковое выражение в дереве. Вы получаете самая простая часть: вам нужно решить, что именно классы Вилли должен построить дерево С. Вы можете сделать это в любом случае язык, но убедитесь, что вы выбираете один, или Вилли вручит тебе assembly язык. Если он чувствует себя раздраженным, то это будет для процессора то есть нет дольше производится в производстве.

Вы были бы поражены, узнав, сколько кандидатов БОФФ вот этот.

Я не буду давать вам ответ, но ... Стандартное плохое решение предполагает использование состояния переключателя или случая (или просто доброе старомодное каскадное "если"). Один Немного лучшее решение включает в себя использование таблицы указателей функций, и вероятно лучшее решение предполагает использование полиморфизма. Я рекомендуем вам работать через него иногда. Забавная штука!

Итак, давайте попробуем решить эту проблему всеми тремя способами. Как перейти от арифметического выражения (например, в строке), такого как "2 + (2)", к дереву выражений, используя каскадные if, таблицу указателей функций и / или полиморфизм?

Не стесняйтесь решать один, два или все три вопроса.

[update: заголовок изменен, чтобы лучше соответствовать тому, что было в большинстве ответов.]

oop   recursion   polymorphism   binary-tree    

532   16   03:31, 22nd August, 2020


Каков формат строки подключения ASP.NET для связанного сервера?

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

Меня заверили, что я должен ожидать, что смогу подключиться к живому серверу, прежде чем мы выйдем в прямой эфир. К сожалению, я достиг той точки в своей разработке, когда мне нужно больше, чем образцы записей маркеров, которые в настоящее время находятся в промежуточной базе данных. Итак, я надеялся подключиться к связанному серверу.

До сих пор в моей разработке против этой схемы был против самого промежуточного сервера, используя объекты Subsonic. Все это прекрасно работает.

Я могу подключиться через SQL Server Management Studio к этому связанному серверу и выполнять свои запросы напрямую. Я также могу выполнять "ручные" запросы в C# против связанного сервера, подключив строку подключения к промежуточному серверу и запустив мои запросы как

SELECT * из OpenQuery([LINKEDSERVER], 'QUERY')

Тем не менее, объекты Subsonic-это то, что позволяет мне вовремя и в рамках бюджета реализовать этот проект, поэтому я не собираюсь делать прямые запросы в своем коде.

То, что я ищу, - это есть ли способ указать строку подключения к связанному серверу. Я просмотрел много записей на форуме и т. д. по этой теме и большинству ответов кажется, что они полностью замалчивают часть вопроса "linked server", сосредоточившись на основном синтаксисе строки соединения.

asp.net   sql-server    

369   4   03:23, 22nd August, 2020


Статья про преимущества Qt4 над Qt3?

Подкиньте пожалуйста ссылку на сабжевую статью. Я понимаю, что вопрос устарел уже на несколько лет, ибо того и гляди Qt5 выйдет, но все же. Требуется она чтобы хоть как-то убедить разработчиков все еще использующих Qt3, что переход крайне желателен :)

Qt    

251   2   03:04, 22nd August, 2020


Вопрос настройки NLog ( logger for .Net )?

Есть сервис с референсом библиотеки №1,

Сервис вызывает 2 метода из библиотеки №1.


Библиотека №1 содержит референс на библиотеку №2.

Библиотека №1 дергает методы из библиотеки №2.


( Сервис -> библиотека №1 -> библиотека №2 )


Nlog.config сделал для библиотеки №1, окружил вызовы из нее методов библиотеки №2 логгером.


— Конфигурация лога для библиотеки №1:

<font color="black"><font color="#0000ff">&lt;?</font><font color="#800000">xml</font> <font color="#ff0000">version</font><font color="#0000ff">=&quot;1.0&quot;</font> <font color="#ff0000">encoding</font><font color="#0000ff">=&quot;utf-8&quot;</font> ?<font color="#0000ff">&gt;</font><br/>
<font color="#0000ff">&lt;</font><font color="#800000">nlog</font> <font color="#ff0000">xmlns</font><font color="#0000ff">=&quot;http://www.nlog-project.org/schemas/NLog.xsd&quot;</font><br/>
&nbsp;&nbsp;&nbsp;<font color="#ff0000">xmlns:xsi</font><font color="#0000ff">=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</font><font color="#0000ff">&gt;</font><br/>
<br/>
&nbsp;&nbsp;<font color="#0000ff">&lt;</font><font color="#800000">targets</font><font color="#0000ff">&gt;</font><br/>
&nbsp;&nbsp;&nbsp;<font color="#0000ff">&lt;</font><font color="#800000">target</font> <font color="#ff0000">xsi:type</font><font color="#0000ff">=&quot;File&quot;</font> <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">name</font><font color="#0000ff">=&quot;logfile&quot;</font> <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">fileName</font><font color="#0000ff">=&quot;${basedir}/log_worker.txt&quot;</font> <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">layout</font><font color="#0000ff">=&quot;${longdate}:${message} ${exception:format=message,stacktrace:separator=*}&quot;</font> <font color="#0000ff">/&gt;</font><br/>
&nbsp;&nbsp;&nbsp;<br/>
&nbsp;&nbsp;&nbsp;<font color="#0000ff">&lt;</font><font color="#800000">target</font> <font color="#ff0000">xsi:type</font><font color="#0000ff">=&quot;EventLog&quot;</font><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">name</font><font color="#0000ff">=&quot;eventlog&quot;</font><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">layout</font><font color="#0000ff">=&quot;${longdate}:${message} ${exception:format=message,stacktrace:separator=*}&quot;</font><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">machineName</font><font color="#0000ff">=&quot;zabr-ПК&quot;</font><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">source</font><font color="#0000ff">=&quot;ADReplicator Service Job&quot;</font><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">category</font><font color="#0000ff">=&quot;ADReplicator&quot;</font><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">log</font><font color="#0000ff">=&quot;Application&quot;</font> <font color="#0000ff">/&gt;</font><br/>
<br/>
&nbsp;&nbsp;&nbsp;<font color="#0000ff">&lt;</font><font color="#800000">target</font> <font color="#ff0000">xsi:type</font><font color="#0000ff">=&quot;Console&quot;</font> <font color="#ff0000">name</font><font color="#0000ff">=&quot;console&quot;</font> <font color="#0000ff">/&gt;</font><br/>
&nbsp;&nbsp;<font color="#0000ff">&lt;/</font><font color="#800000">targets</font><font color="#0000ff">&gt;</font><br/>
<br/>
&nbsp;&nbsp;<font color="#0000ff">&lt;</font><font color="#800000">rules</font><font color="#0000ff">&gt;</font><br/>
&nbsp;&nbsp;&nbsp;<font color="#0000ff">&lt;</font><font color="#800000">logger</font> <font color="#ff0000">name</font><font color="#0000ff">=&quot;*&quot;</font> <font color="#ff0000">minlevel</font><font color="#0000ff">=&quot;Error&quot;</font> <font color="#ff0000">writeTo</font><font color="#0000ff">=&quot;eventlog&quot;</font> <font color="#0000ff">/&gt;</font><br/>
&nbsp;&nbsp;&nbsp;<font color="#0000ff">&lt;</font><font color="#800000">logger</font> <font color="#ff0000">name</font><font color="#0000ff">=&quot;*&quot;</font> <font color="#ff0000">minlevel</font><font color="#0000ff">=&quot;Trace&quot;</font> <font color="#ff0000">writeTo</font><font color="#0000ff">=&quot;logfile&quot;</font> <font color="#0000ff">/&gt;</font><br/>
&nbsp;&nbsp;&nbsp;<font color="#0000ff">&lt;</font><font color="#800000">logger</font> <font color="#ff0000">name</font><font color="#0000ff">=&quot;*&quot;</font> <font color="#ff0000">minlevel</font><font color="#0000ff">=&quot;Info&quot;</font> <font color="#ff0000">writeTo</font><font color="#0000ff">=&quot;console&quot;</font> <font color="#0000ff">/&gt;</font><br/>
&nbsp;&nbsp;<font color="#0000ff">&lt;/</font><font color="#800000">rules</font><font color="#0000ff">&gt;</font><br/>
<font color="#0000ff">&lt;/</font><font color="#800000">nlog</font><font color="#0000ff">&gt;</font></font><br/>
<br/>
<font color="gray">* This source code was highlighted with <a href="http://virtser.net/blog/post/source-code-highlighter.aspx"><font color="gray">Source Code Highlighter</font></a>.</font>



Вопрос:


Что сделать, чтобы окружить логами библиотеку №2? (Или все то же самое указать?)

.NET    

252   2   02:57, 22nd August, 2020


Нужна программа для составления расписания приема клиентов

Программа будет использоваться в автосервисе.
Т.е. должно учитываться приблизительное время на ремонт, которое указывается мастером.
А также количество самих мастеров которые в данный момент работают.
На самом деле, сойдет любая программа для составления расписания, не привязанная к какому-то виду бизнеса.

Заранее спасибо.



Как yandex вычисляет контекст?

Бред, конечно и немного паранойи, но факт — фактом. С утра полез смотреть кое что по javascript, после глянул почту (на яндексе). Понятно что пока смотрел почту, яша мне ненавязчиво предлагал всякие разные объявление с javasсript связанные, но когда он мне показал рекламу "***кода", средство от кашля, мне стало жутковато. Я с утра покашливал, но как эта дрянь могла узнать… Реально неуютно. Залепил глазок камеры и микрофон. Понимаю что идиот, но как эта дрянь узнала? Простое совпадение?

P.S. убрал название лекарства, что бы не подумали…

Яндекс    

242   5   02:37, 22nd August, 2020


Vkontakte open api и проблема с правами?

Никак не могу разобраться как выставить права приложению. Вроде бы все просто:


Подключаем в хедере
&lt;script src=&quot;http://vk.antizapret.ru/js/api/xd_connection.js?2&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br/>
&lt;script src=&quot;http://vkontakte.ru/js/api/openapi.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br/>



Далее пишем в body
&lt;script type=&quot;text/javascript&quot;&gt;<br/>
<br/>
VK.init({<br/>
 apiId: my_id<br/>
 });<br/>
<br/>
VK.UI.button('login_button');<br/>
<br/>
VK.callMethod('showInstallBox',0);<br/>
&lt;/script&gt;<br/>
<br/>



Авторизация проходит нормально, все апи через VK.api выполняются нормально, но как только хочу вызвать showInstallBox появляется ошибка

TypeError: Result of expression 'options' [undefined] is not an object. vkontakte.ru/js/api/openapi.js:317



Так же пробовал вызывать по onClick, после полной загрузки страницы, то же самое.


Что я делаю не так? Может что-то не подключил? Может не так вызываю?

Заранее благодарю.

JavaScript   ВКонтакте    

342   1   02:32, 22nd August, 2020


SQL Server 2005-экспорт таблицы программно (запустите файл .sql, чтобы перестроить его)

У меня есть база данных с таблицей клиентов, которые имеют некоторые данные

У меня есть еще одна база данных в офисе, что все то же самое, но мой стол клиентов пуст

Как я могу создать sql файл в SQL Server 2005 (T-SQL), который берет все, что находится на столе клиентов из первой базы данных, создает, скажем, buildcustomers.sql, я zip этот файл, копирую его по сети, выполняю его на моем SQL сервере и вуаля! мой столик клиентов полон

Как я могу сделать то же самое для всей базы данных?

sql   sql-server   sql-server-2005   database-table    

445   7   02:22, 22nd August, 2020


Типа reformal.ru (feedback виджет) на английском?

Смотрел кое-что в топе гугла, но не понравилось отсутствие в виджете формы для добавления идеи (у реформал форма прямо в виджете). Кто-нибудь может подсказать такой сервис с английским интерфейсом (у реформал вроде только русский?) и формой для добавления идеи прямо в виджете? А также с наличием free тарифа.



Расширение Виртуального Диска

Привет всем, я использую Virtual PC и работаю с виртуальным жестким диском (*.vhd), размер которого составляет только 8.2 GB. Я бы хотел удвоить размер до чего-то вроде 16-20GB. Я вижу варианты для уплотнения VHD, но ничего, чтобы расширить его. Он установлен на "dynamically expand", но я устанавливаю какое-то программное обеспечение, и он, похоже, не изменяет свой размер на большее пространство.

Большое спасибо.

virtualization   virtual-pc   vhd    

410   7   02:20, 22nd August, 2020