>> 5) Вопросы по вакансии, а не по резюме.
>> Конечно каждый несет ответственность за то,
>> что у него написано в CV. И я понимаю, что
>> если у меня указаны C++ или JavaScript меня могут
>> спросить по любому из этих языков, даже если они
>> не есть моими профильными.
Я считаю, что нужно обязательно спросить обо всем, что есть в резюме в разделе заявленных навыков.
Если есть Pascal и Assembler – без проблем:
А можно ли Assembler использовать внутри Pascal?
А как создать класс на Pascal?
C++(STL)?
Я понимаю, что на этом языке была сделана последняя и единственная лаба в институте, но про контейнеры в STL я обязательно спрошу. Просто: перечислите те, которые помните.
И все равно, что вы тестировщиком к нам устраиваетесь.
Все, что перечислено в резюме в разделе «навыки» должно быть покрыто вопросами, пусть даже самыми простыми. Иначе, почему оно там?
Все очень просто. Люди врут. Но, на их языке это «преувеличение»
У нас проект просто такой, в который CI система никак не клеится. Сборка и тестирование билда у нас отдельно. Билд тестировать можно только из инсталляции. Ну, а релизы у нас раз в год. В итоге, авто-тесты нужны только тестировщикам :). Некоторые разработчики тоже пишут юнит и интеграционные тесты, но всё это децентрализированно, не для всей команды.
А билды собираются посредством JScript и bat-файлов.
Также (через bat-файлы) выглядит и последующий запуск тестов:
В последствии отправляется отчет по почте, который можно потом благодаря интеграции Gallio + Visual Studio на своей машине и проанализировать/пофиксить.
В такой системе нет карантина. И каждый упавший тест каждый раз отвлекает очень сильно. Так что их можно либо пофиксить либо подавить ассерты с известными багами.
[Test]
public void TestSearchGoogleForThisIsATestWorkaround04()
{
// Actual: "this is a test - Поиск в Google"
// * Arrange
IWebDriver selenium = new InternetExplorerDriver();
var googlePage = new GoogleSearchPage(selenium);
string googleSearchPhrase = "This is a test";
// * Act
googlePage.Search(googleSearchPhrase);
// * Assert
// 1. Should contain the search phrase
WorkaroundFor(BOOGLE_01,
() => StringAssert.Contains(googleSearchPhrase, selenium.Title) // <==== тут
);
// 2. Should contain our Company name
StringAssert.Contains("Google", selenium.Title);
}
Не знаю, насколько Ваш подход будет полезен в модульных тестах, но вот в системно-интеграционных, аля Selenium через UI – будет очень полезен.
Эт мобильный и бюджетный вариант для съемной квартиры.
В случае чего – все быстро собирается – и вперед! (Кроме стола, конечно, но стол я выбирал)
Оригинал:
Очень давно у меня было похожее устройство, которое называлось тетрис. Понятно, что прошло много времени, и технологии изменилось. Это сразу же заметно, ведь появилась четвертая кнопка «вверх» на джойстике, которой у меня не было. Значительно улучшился звук, который просто создает эффект присутствия (и это только после просмотра ролика на ютубе, а представляете как оно в реале?!).
В общем я уже заказал это устройство и купил акций компании, которая его выпускает
Есть такой вариант мозгового штурма, когда команда людей придумывает громкие газетные заголовки, как бы показывая в такой форме, какие риски может ожидать продукт.
Точное описание найти не могу, вот в моей интерпретации:
Ведущий штурма рассказывает историю:
Рано утром, вы просыпаетесь. В голове еще крутится недавно увиденный сон.
Вы протираете глаза, вялый и сонный, заходите на кухню. Готовите себе кофе.
На автомате, вы садитесь за компьютер. Открываете любимый новостной сайт… и тут:
Всю сонливость как рукой снимает. На лице застывает гримаса удивления. Через все тело проходит неприятная дрожь.
Вы видите заголовок новости. И понимаете, что эта очень неприятная новость о вашем продукте. Как звучит этот заголовок?
Варианты могут быть самые разные:
Иван Иванович стал несчастным обладателем 999 садовых гномов, вместо 1-го
Интернете магазин оскорбляет пользователей перечнем товаров
9-ти летняя девочка купила 3 цистерны самогона в интернет магазине
Капча «B1TCH» стала причиной судового иска на 200 миллионов
Нет, пробовал без group by, SQL Server выдает ошибку
Msg 8120, Level 16, State 1, Line 1
Column 'dbo.Dinners.DinnerID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
когда я дописываю GROUP BY DinnerID — уже ругается на Title
Вот скрипт создания Диннерз:
CREATE TABLE [dbo].[Dinners](
[DinnerID] [int] IDENTITY(1,1) NOT NULL,
[Title] [nvarchar](50) NOT NULL,
[EventDate] [datetime] NOT NULL,
[Description] [nvarchar](256) NOT NULL,
[HostedById] [nvarchar](256) NULL,
[HostedBy] [nvarchar](256) NOT NULL,
[ContactPhone] [nvarchar](20) NOT NULL,
[Address] [nvarchar](50) NOT NULL,
[Country] [nvarchar](30) NOT NULL,
[Latitude] [float] NOT NULL,
[Longitude] [float] NOT NULL,
CONSTRAINT [PK_Dinners] PRIMARY KEY CLUSTERED
(
[DinnerID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Наибольший объем одной из моих продакшн баз данных – 50 гиг.
В таких условиях работает вполне сносно.
Есть лабораторные базы данных, размер которых до 20 Мб. Я удаляю элемент одним способом: смотрю какие таблицы модифицируются.
Таким образом я узнал как правильно удалять элементы чтобы не сломать зависимости, где находится таблицы с конфигурационными данными, что происходит в результате тех или инных операций.
В моей ситуации таких таблиц около 210 и этот подход позволят очень быстро найти именно те таблицы, на которых в дальнейшем необходимо сосредоточить исследование.
Конкретно в моей ситуации – этот подход очень полезен, но я не могу гарантировать пользу в контексте вашего проекта.
Ваш комментарий натолкнул меня на дальнейшие исследования.
При помощи такого дубового запроса, можно посчитать контрольную сумму для каждого ряда таблицы, а потом сравнить diff с предыдущим состоянием:
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) AS CHKSUM, *
FROM [dbo].[Dinners]
GROUP BY [DinnerID]
,[Title]
,[EventDate]
,[Description]
,[HostedById]
,[HostedBy]
,[ContactPhone]
,[Address]
,[Country]
,[Latitude]
,[Longitude]
Осталось только придумать, как сделать этот код более универсальным.
Когда вернусь – сразу отпишусь о результате. Возможно через 3-ри — 5-ть лет.
>> Конечно каждый несет ответственность за то,
>> что у него написано в CV. И я понимаю, что
>> если у меня указаны C++ или JavaScript меня могут
>> спросить по любому из этих языков, даже если они
>> не есть моими профильными.
Я считаю, что нужно обязательно спросить обо всем, что есть в резюме в разделе заявленных навыков.
Если есть Pascal и Assembler – без проблем:
А можно ли Assembler использовать внутри Pascal?
А как создать класс на Pascal?
C++(STL)?
Я понимаю, что на этом языке была сделана последняя и единственная лаба в институте, но про контейнеры в STL я обязательно спрошу. Просто: перечислите те, которые помните.
И все равно, что вы тестировщиком к нам устраиваетесь.
Все, что перечислено в резюме в разделе «навыки» должно быть покрыто вопросами, пусть даже самыми простыми. Иначе, почему оно там?
Все очень просто. Люди врут. Но, на их языке это «преувеличение»
А за статью – спасибо. Очень классно написано.
Реквестую видео камеру в микроволновке!
А билды собираются посредством JScript и bat-файлов.
Также (через bat-файлы) выглядит и последующий запуск тестов:
В такой системе нет карантина. И каждый упавший тест каждый раз отвлекает очень сильно. Так что их можно либо пофиксить либо подавить ассерты с известными багами.
Я тоже копал на эту тему:
Не знаю, насколько Ваш подход будет полезен в модульных тестах, но вот в системно-интеграционных, аля Selenium через UI – будет очень полезен.
Как делают в Windows: архив.exe
Как делают некоторые читатели Хабр: archive.tar.gz.exe
www.microsoft.com/en-us/download/details.aspx?id=43
Почему нельзя было обойтись одним файлом? Ведь каждая версия – это отдельный билд. Не факт, что они будут работать идентично.
В случае чего – все быстро собирается – и вперед! (Кроме стола, конечно, но стол я выбирал)
Оригинал:
С пояснениями:
http://habrastorage.org/storage2/585/122/baa/585122baa70aeb87feac877332ece2f5.jpg
В общем я уже заказал это устройство и купил акций компании, которая его выпускает
ru.wikipedia.org/wiki/%D0%9C%D0%B0%D0%BD%D1%82%D1%8B
Точное описание найти не могу, вот в моей интерпретации:
Ведущий штурма рассказывает историю:
Варианты могут быть самые разные:
В таком случае, ваш вариант с DinnerID имеет больше смысла
Msg 8120, Level 16, State 1, Line 1
Column 'dbo.Dinners.DinnerID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
когда я дописываю GROUP BY DinnerID — уже ругается на Title
Вот скрипт создания Диннерз:
В таких условиях работает вполне сносно.
Есть лабораторные базы данных, размер которых до 20 Мб. Я удаляю элемент одним способом: смотрю какие таблицы модифицируются.
Таким образом я узнал как правильно удалять элементы чтобы не сломать зависимости, где находится таблицы с конфигурационными данными, что происходит в результате тех или инных операций.
В моей ситуации таких таблиц около 210 и этот подход позволят очень быстро найти именно те таблицы, на которых в дальнейшем необходимо сосредоточить исследование.
Конкретно в моей ситуации – этот подход очень полезен, но я не могу гарантировать пользу в контексте вашего проекта.
При помощи такого дубового запроса, можно посчитать контрольную сумму для каждого ряда таблицы, а потом сравнить diff с предыдущим состоянием:
Осталось только придумать, как сделать этот код более универсальным.