-
Хочу узнать свой скилл.
-
Три вопроса по теме "знание и понимание VCL":
1. У каких компонентов есть событие OnCreate?
2. Почему этого события нет у других компонентов?
3. Если Вы пишете свой компонент, в предках которого события OnCreate нет, то как можно реализовать такое событие (или его аналог)?
Если действительно хотите узнать свой скилл, то отвечать нужно "на память", никуда не подглядывая.
-
> Юрий Зотов © (11.06.16 08:26) [1]
> Три вопроса по теме "знание и понимание VCL":
>
> 1. У каких компонентов есть событие OnCreate?
Которые обрабатывают событие WM_CREATE.
> 2. Почему этого события нет у других компонентов?
Там где это не нужно.
> 3. Если Вы пишете свой компонент, в предках которого события
> OnCreate нет, то как можно реализовать такое событие (или
> его аналог)?
Перекрыть AfterConstruction()?
-
Дядя Юра.
А в чем смысл сих вопросов? Ответы простые, но не всем'же нужны знания создания компонентов.
Вот вы лучше скажите ... Вопрос вынес в отдельную тему.
-
-
> K-1000 © (11.06.16 09:34) [2]
Увы, все три ответа - неверные.
-
> Хочу узнать свой скилл.
Выложи пример своего кода на обозрение - узнаешь.
-
> Pavia © (11.06.16 09:35) [3]
> А в чем смысл сих вопросов?
В выяснении того, насколько человек знает (а главное, понимает!) VCL.
> Ответы простые
А Вы сначала попробуйте на них ответить. Вдруг окажется, что не такие уж они и простые?
> но не всем'же нужны знания создания компонентов.
Не всем. Поэтому мы и выясняем скилзы отвечающего - может ли он писать свои компоненты, или пока еще только готовые может использовать?
> Вот вы лучше скажите ... Вопрос вынес в отдельную тему.
Пошел читать.
-
Вообще, хотелось бы получить именно задания по программированию.
Типа: "нужно написать класс для работы с [на ваше усмотрение]".
-
> Игорь Шевченко © (11.06.16 10:02) [6]
>
> > Хочу узнать свой скилл.
>
>
> Выложи пример своего кода на обозрение - узнаешь.
Хорошая идея. )
-
> Выложи пример своего кода на обозрение - узнаешь.
Результат будет один и тот-же вне зависимости от кода.
-
> K-1000 © (11.06.16 14:30) [8]
> Типа: "нужно написать класс для работы с [на ваше усмотрение]".
1. Это - чисто на программирование:
Написать библиотеку для работы со знаковыми целыми числами, визуально задаваемыми строками в любой позиционной системе счисления с основанием от 2 до 256. Разрядная сетка имеет длину 256 байт. Реализовать следующий набор операций:
- ввод и вывод;
- перевод из одной кодировки в другую (прямая, обратная, дополнительная);
- перевод из одной системы счисления в другую;
- сложение и вычитание.
2. А это чтобы - с VCL и WinAPI помучаться:
Написать класс формы, у которой контролы могут быть расположены в неклиентской области (в том числе, в design-time).
-
> Юрий Зотов © (11.06.16 15:03) [11]
Это все частные задачи, а не показатель уровня.
Довести проект до релиза, внедрить его, получить положительные отзывы - вот что выдает уровень. Это важно умение.
А как у вас переменные называются, как код отформатирован, сколько памяти ест ваш алгоритм (если он решает задачу), используете ли вы goto и тому подобные факты по большому счету никого не интересуют, кроме заурядных программистов.
-
Да, в [6] чуть ли не единственный работающий способ узнать скилл программиста.
причем, чем больше кода, тем лучше. еще лучше какой-нибудь готовый проект.
именно по-этому, один из лучших способов в любой момент найти, без особых усилий, приличную работу по нашей специальности - вести свой open source проект (будь то приложение, библиотека, фреймворк и т.д.), который действительно полезен хотя бы десятку человек.
> [11]
> системе счисления
> Разрядная сетка
есть такой тип программиста - очень высокий уровень IQ, очень сильное алгоритмическое мышление, в голове может, так сказать, держать огромное количество переменных и их связей. однако, отсутствие знаний о проектировании, архитектуре и хотя бы основных паттернах, презрение к, не побоюсь этого слова, фреймворкам, делают чтение кода похожим на чтение иероглифов. не дай бог дело дойдет до "творчества", допустим, SQL запросов (однажды видел форум написанный на одном SQL запросе, немного преувеличиваю, конечно, но почти так).
т.е. подобными заданиями можно выявить программиста с хорошо работающей головой и хорошей памятью, но не более. будет ли это полезный работник - далеко и далеко не факт.
поэтому я за [6].
-
> DayGaykin © (11.06.16 22:47) [12]
>
>
> > Юрий Зотов © (11.06.16 15:03) [11]
>
> Это все частные задачи, а не показатель уровня.
>
> Довести проект до релиза, внедрить его, получить положительные
> отзывы - вот что выдает уровень.
Чей уровень?
Прикладного программиста в некоей фирме решающей некие частные задачи? Возможно в этом случае ты прав. Но что хотел узнать о своём уровне автор вопроса?
-
> DayGaykin © (11.06.16 22:47) [12]
Ну и вдобавок.
> Довести проект до релиза, внедрить его, получить положительные
> отзывы - вот что выдает уровень.
Это относится к индивидуальным предпринимателям-программистам. В нормальной ситуации за это всё должны отвечать многие.
-
Удалено модератором
Примечание: Создание пустых сообщений
-
> Германн © (12.06.16 01:46) [15]
>
> > DayGaykin © (11.06.16 22:47) [12]
>
> Ну и вдобавок.
>
> > Довести проект до релиза, внедрить его, получить положительные
>
> > отзывы - вот что выдает уровень.
>
> Это относится к индивидуальным предпринимателям-программистам.
> В нормальной ситуации за это всё должны отвечать многие.
Это относится ко всем. Один ты или в команде не имеет значения. Если нет результатов - нет и мастерства, будьте вы там хоть все суперменами.
По этой теории тот же alexdn больший мастер, чем большинство здесь, потому что есть результат. А то что пол-форума считают его глупым значения не имеет.
Раньше я тоже считал мастерами тех, кто составляет безупречные алгоритмы, кто знает все "фишки" и "трюки" и так далее. Сейчас для меня мастерство измеряется количеством пользователей, количеством денег и(или) количеством сэкономленного людям времени. Что будет дальше - не знаю.
-
Неожиданный ракурс приняло обсуждение...
ТС спрашивает тестовые задания по Delphi. Из этого следует, что он хочет понять свой уровень, как программиста.
Ему же предлагают оценить свой уровень как аналитика, архитектора, менеджера, сейлера... в общем, кого угодно, но только не программиста.
А давайте еще дадим ему гастрономические рецепты? Тогда он сможет оценить свой уровень, как повара. Нам ведь наплевать, что хотел он совсем другого, не так ли?.
Болтовня высокого уровня...
-
> Германн © (12.06.16 01:48) [16]
Правильные ответы я, конечно, привести могу. Но хотелось бы, чтобы их привели те, кто посчитал вопросы очень простыми.
Это же нетрудно и недолго... раз все так просто...
-
-
DayGaykin © (11.06.16 22:47) [12]
Lamers must die!
-
Вопросы содержащие в себе фразу "никуда не поглядывая", по-моему по определению бесполезны, потому что автоматически подразумевают, что поглядывая на них ответить легко. Я вот например со всеми этими нюансами конструкторов сталкиваюсь раз в пятилетку. У меня есть конечно какие-то соображения по этим вопросам, но понять насколько они верны я смогу посмотрев в код. А если код всегда под рукой, то в чем ценность этого знания?
Идея написать преобразование чисел между системами счисления уже лучше. С той точки зрения, что будет интересно посмотреть как именно человек это сделает. Я бы даже для большей красноречивости усложнил: допустим один класс будет представлять собой число и всю информацию о нем, а другой - операции над такими классами-числами. Не из практических соображений, а просто чтобы увидеть что получится и как.
Ну и лучше всего конечно посмотреть на код. Какой-нибудь опенсорс в идеале.
-
> Kerk © (12.06.16 11:47) [22]
Хорошо - ответь, подглядывая. Куда угодно.
:o)
-
Если честно, лень. Но я посмотрю когда буду рядом с компьютером.
P.S. Как продолжение задачи про конвертацию, я бы попросил добавить операции над римскими числами. Чтобы посмотреть как оно впишется в код написанный по первоначальной формулировке.
-
> Kerk © (12.06.16 13:20) [24]
> добавить операции над римскими числами. Чтобы посмотреть как оно
> впишется в код написанный по первоначальной формулировке.
Впишется. В библиотеку добавляются 4 функции:
- ввод/вывод римских чисел;
- перевод из римской системы в любую позиционную и обратно.
Таким образом, задача сводится к уже решенной. А самое главное, что это расширение функционала никак не влияет на уже отлаженный код. Поэтому впишется.
PS
Кстати, эту задачу я не из головы придумал - это был реальный курсовой проект одного студента-первокурсника из МИРЭА. Только задача у него была более объемной, чем я здесь обозначил.
-
Так я ж не говорю, что не впишется. Я говорю, что конкретное решение конкретного человека многое о нем расскажет.
-
> Юрий Зотов © (12.06.16 08:30) [19]
>
> > Германн © (12.06.16 01:48) [16]
>
> Правильные ответы я, конечно, привести могу. Но хотелось
> бы, чтобы их привели те, кто посчитал вопросы очень простыми.
>
>
Я написал тот пост не к тому, чтобы ты дал ответ. Просто сей вопрос ты уже тут задавал когда-то. И тогда и сейчас на него сходу не смог ответить никто из желающих проверить свой "скилл".
P.S. Я тоже не смог :(
Но мне так глубоко в VCL не было нужды залезать.
-
> Leonid Troyanovsky © (11.06.16 09:52) [4]
Только на delphimaster.net и сохранилось упоминание о королевской квинтане.
А некоторые не понимают для чего сей хостинг нужно оплачивать.
-
> Юрий Зотов © (11.06.16 15:03) [11]
Хорошие задания.
А можно ещё на для большего выбора? Я немного любитель с графикой поработать...
-
> А некоторые не понимают для чего сей хостинг нужно оплачивать.
Я не понимаю.
-
> K-1000 © (13.06.16 04:56) [29]
> с графикой поработать...
В центр формы положить ListBox (так, чтобы он не закрывал всю форму). На форме нарисовать несколько линий, пересекающих ListBox. Все линии должны быть видны полностью и не должны исчезать при любых действиях.
-
> Германн © (13.06.16 00:28) [27]
> на него сходу не смог ответить никто из желающих
Vuk смог (в чем можно было и не сомневаться). Еще кто-то смог (уж и не помню, кто именно).
Эти, на первый взгляд действительно простые вопросы на самом деле требуют именно понимания VCL, одними знаниями тут не обойтись.
Даже самый простой вопрос (первый) уже предполагает 2 варианта ответа - частный и общий. Частный ответ - это просто перечисление компонентов, имеющих событие OnCreate. А общий ответ начинается словами "Событие OnCreate имеют компоненты, которые..." - и далее идет расшифровка этого "которые".
Надо ли пояснять, что частный вариант предполагает знание, а общий - понимание VCL ?
-
> Германн © (13.06.16 00:28) [27]
> мне так глубоко в VCL не было нужды залезать.
Само собой, это нужно не всем. Цель этого теста другая. Мы предлагали эти вопросы (в числе других, конечно) соискателям на трудоустройство. По ответам было видно насколько человек силен (или слаб) в той или иной области. И если в данный момент нам было нужно закрыть кадровую прореху в какой-то области, а человек показал, что именно эту область он знает хорошо, то общий результат теста был положительным - даже если соискатель не смог хорошо ответить на вопросы из других областей.
-
> Игорь Шевченко © (12.06.16 10:25) [21]
> DayGaykin © (11.06.16 22:47) [12]
>
> Lamers must die!
Игорь, если ламеры не вымерли, значит для чего-то они нужны :)
-
занимательно :)
procedure TForm1.winpaint(var Msg: TWmPaint);
var
DC: HDC;
begin
inherited;
DC := GetDCEx(Handle, 0, DCX_PARENTCLIP);
LineTo(DC, 300, 200);
ReleaseDC(Handle, DC);
end;
-
а не, контрол же перехватит ) не так всё сходу и просто ))
-
> DayGaykin © (13.06.16 12:39) [34]
> если ламеры не вымерли, значит для чего-то они нужны
Два варианта:
1. Они не вымерли потому, что быстро плодятся.
2. Они нужны для того, чтобы быть звеном в пищевой цепочке.
:o)
-
> megavoid © (13.06.16 12:58) [36]
> а не, контрол же перехватит ) не так всё сходу и просто
Ну не буду же я задавать задачку, которая решается одной простейшей строчкой в OnPaint формы?
:o)
В том-то фокус, что когда контрол получит свое WM_PAINT, то он спокойно отрисуется стандартным образом - ведь ни о каких линиях он ничего не знает (и не должен знать).
Пример решения этой задачки есть на сайте Розыча - но уж точно не в одну строчку.
-
Более сложный вариант графической задачки - нарисовать не линию, а картинку, часть которой - на форме, а другая часть - на ListBox. Конечно, картинка не должна исчезать или искажаться ни при каких действиях.
-
> Kerk © (12.06.16 13:20) [24]
> Если честно, лень. Но я посмотрю когда буду рядом с компьютером.
Ну ок, играть так играть.
Предположу, что все дело в порядке загрузки DFM. Глядя на датамодуль и форму, видно, что они в конструкторе вызывают InitInheritedComponent перед вызовом OnCreate, чтобы прочитать свои внутренности. Это и делает разницу. В момент работы конструктора остальных компонентов значения свойств еще не прочитаны и события вызывать нельзя. Судя по коду, все как-то так.
-
> Kerk © (13.06.16 14:09) [40]
Все верно (в чем я и не сомневался). Но остался третий вопрос - а как все же сделать событие OnCreate (или его аналог) например, в потомке TButton (если такое вообще возможно) ?
-
> Юрий Зотов © (13.06.16 14:27) [41]
Судя по коду перекрыть TComponent.Loaded
-
> Юрий Зотов © (13.06.16 14:27) [41]
Судя по коду перекрыть TComponent.Loaded
-
Кстати, когда я устраивался в одну фирму, меня попросили показать что, какую-то мою программу можно скачать, установить и она будет работать. Помимо, теоретических вопросов.
Это в продолжение о вопросе профессионализма.
-
> Юрий Зотов © (13.06.16 11:42) [31]
А подглядывать куда-нибудь можно? :)
Ведь когда прогер "решает задачу" он гуглит или нужно без этого?
-
> DayGaykin © (13.06.16 14:53) [43]
Loaded, конечно.
Итак, сообщество убедительно продемонстрировало умение понимать чужой код. Что немаловажно, спору нет.
По поводу "программу можно скачать, установить и она будет работать". А как быть, если в Интернете моих программ нет? Это как-то влияет на мой уровень профессионализма?
-
> K-1000 © (13.06.16 15:56) [45]
Гуглить можно, конечно.
-
> Юрий Зотов © (13.06.16 16:00) [46]
Отсутствие ни о чем не говорит, а присутствие будет плюсом к уровню.
-
> DayGaykin © (13.06.16 14:53) [43]
Еще по поводу "программу можно скачать, установить и она будет работать". Это прокатит для программ типа "Hello, world!" Не в смысле сложности, а в смысле того, что программе, какая бы сложная она ни была, ничего не требуется, кроме нее самой и каких ее локальных ресурсов.
У меня же вопрос обстоит совсем иначе. Для того, чтобы моя программа заработала, сначала нужно:
- купить, установить и настроить сервер БД;
- развернуть саму БД;
- купить, установить и настроить сервер приложений;
- развернуть мою программу;
- разрешить взаимодействие всех этих компонентов по сети.
И как быть?
-
> DayGaykin © (13.06.16 16:06) [48]
> присутствие будет плюсом к уровню.
Присутствие программы в сети убедительно говорит о том, что ее автор (а может, даже и не сам автор) умеет выкладывать файлы в сеть. Больше это присутствие не говорит ни о чем.
Но оно, конечно, плюс к его уровню. Серьезнейший.
LOL
-
> - купить, установить и настроить сервер БД;
> - развернуть саму БД;
> - купить, установить и настроить сервер приложений;
> - развернуть мою программу;
> - разрешить взаимодействие всех этих компонентов по сети.
>
Это говорит об умении болоболить, а не о сложности программы.
sudo apt install postgresql openjdk tomcat
И еще 3-4 команды.
Наверняка или к демобазе подключится или демо серверу.
-
> DayGaykin © (13.06.16 16:48) [51]
1. Выражения выбираем, да? Кстати "балаболить" пишется через "а" в обоих случаях.
2. Дело не в сложности, а в том, что инсталлировать ради собеседования кучу софта никто не будет.
-
> Дело не в сложности, а в том, что инсталлировать ради собеседования
> кучу софта никто не будет.
Я привел и другие способы продемонстрировать результат.
Вы не согласны с тем, что возможность продемонстрировать результат - это всегда большой плюс при оценке уровня профессионализма.
-
> DayGaykin © (13.06.16 17:15) [53]
> Я привел и другие способы продемонстрировать результат.
Увы, я их не увидел. Где смотреть?
> Вы не согласны с тем, что возможность продемонстрировать результат -
> это всегда большой плюс при оценке уровня профессионализма.
Что плюс - согласен. Что всегда и что большой - не согласен.
Об уровне профессионализма программиста гораздо больше говорят его исходники. А если есть сомнения в авторстве исходников, то несколько вопросов по ним прояснят картину. И не надо ничего ни скачивать, ни устанавливать.
PS
Однако, мы ушли в оффтоп. Может, завяжем этот никчемный спор ни о чем?
-
По поводу программ в интернете и исходников поделюсь поучительно историей. Однажды наняли мы в команду программиста. У него и исходники в интернете, и программы работают, и вообще по общению видно, что он толковый программист. Но вот начал он работать и то в него будильник сломался, то с детьми надо сидеть, то вообще больничный. Так он за несколько месяцев не сделал почти ничего. В итоге пришлось расстаться. Абсолютно не понимая, что с ним такое. Потому что все что он делает вне работы объективно весьма солидно. Из любопытства обратились к его предыдущему работодателю и оказалось, что его уволили с прошлой работы по тем же самым причинам. Ровно та же история.
Какова мораль? Да черт его знает. Наверно стоит уделять больше внимания отзывам с прошлого места работы.
-
Я понял одно - главное никому не показывать исходников ))))
Сразу бинарники надо давать - мастера же! Разберутся!!! ))
-
> Игорь Шевченко © (13.06.16 10:26) [30]
>
>
> > А некоторые не понимают для чего сей хостинг нужно оплачивать.
>
>
>
> Я не понимаю.
>
Ну я как раз об этом и говорил.
-
> DayGaykin © (13.06.16 12:39) [34]
>
>
> > Игорь Шевченко © (12.06.16 10:25) [21]
> > DayGaykin © (11.06.16 22:47) [12]
> >
> > Lamers must die!
>
> Игорь, если ламеры не вымерли, значит для чего-то они нужны
> :)
Например для модерирования форума ДМ. Ну как вариант.
-
> Юрий Зотов © (13.06.16 12:03) [32]
>
> > Германн © (13.06.16 00:28) [27]
> > на него сходу не смог ответить никто из желающих
>
> Vuk смог (в чем можно было и не сомневаться). Еще кто-то
> смог (уж и не помню, кто именно).
>
> Эти, на первый взгляд действительно простые вопросы на самом
> деле требуют именно понимания VCL, одними знаниями тут не
> обойтись.
>
> Даже самый простой вопрос (первый) уже предполагает 2 варианта
> ответа - частный и общий. Частный ответ - это просто перечисление
> компонентов, имеющих событие OnCreate. А общий ответ начинается
> словами "Событие OnCreate имеют компоненты, которые..."
> - и далее идет расшифровка этого "которые".
>
> Надо ли пояснять, что частный вариант предполагает знание,
> а общий - понимание VCL ?
На следующей личной встрече я (если не забуду) уточню некоторые аспекты VCL
-
Если не забуду, то постараюсь выяснить всё о файлах dfm.
-
> Юрий Зотов © (13.06.16 13:15) [38]
>
> Пример решения этой задачки есть на сайте Розыча - но уж
> точно не в одну строчку.
Раз по заданию пишут целые статьи опытные прогеры, то почему это задание должно быть на скилл?
-
> K-1000 © (11.06.16 14:30) [8]
> Вообще, хотелось бы получить именно задания по программированию.
> Типа: "нужно написать класс для работы с [на ваше усмотрение]".
Свой велосипед каждый может нашкодить.
Ценность специалиста - в умении разбираться в чужих поделках и уметь их по делу использовать в нужный момент, не изобретая свои велосипеды.
А ответов на вопросы ЮЗ я не знаю.
-
-
> Игорь Шевченко © (14.06.16 10:33) [63]
> K-1000 © (14.06.16 06:09) [61]
>
> Судя по твоим репликам у тебя скилл нулевой. Рано тебе такие
> задачи решать.
По каким конкретно репликам?
-
> Kerk © (13.06.16 19:39) [55]
> Какова мораль? Да черт его знает. Наверно стоит уделять
> больше внимания отзывам с прошлого места работы.
Было бы занятно, если бы по тому же принципу жен выбирали :)
-
> K-1000 © (14.06.16 06:09) [61]
> Раз по заданию пишут целые статьи опытные прогеры, то почему
> это задание должно быть на скилл?
Мне просто было интересно рассказать о "нюансах".
Заметь - о нюансах, а не о самом решении :)
-
> KSergey © (14.06.16 09:46) [62]
> Ценность специалиста - в умении разбираться в чужих поделках
> и уметь их по делу использовать в нужный момент, не изобретая
> свои велосипеды.
К сожалению - не соглашусь.
Разобраться в чужой поделке можно достаточно легко чтобы начать на нее влиять (а сделай ка мне эту колонку в гриде зеленой).
А вот понять, почему нельзя этого делать, да еще чтоб не поломать весь проект, давя на старый и опытный коллектив всем своим молодым знанием - многого стоит :)
-
> Юрий Зотов © (13.06.16 13:15) [38]
> Пример решения этой задачки есть на сайте Розыча
А можно ссылку? не смел найти.
ну т.е. на ум мне приходит способ положить поверх формы окно (и поверх всех дочерних окон), на котором отрисовывать только нужную линию. Но на удивление я так делал в одной программе - и далеко не всё было гладко.
-
По поводу вопросов: самое занятное в них то, что задающий спрашивает то и только то, что знает сам.
Это очень показательно при обходе компаний по вакансиям. Занимательное дело, доложу я вам!
-
> KSergey © (14.06.16 16:44) [68]
> А можно ссылку? не смел найти.
http://alexander-bagel.blogspot.ru/2013/03/draw-over-twincontrol.html
> KSergey © (14.06.16 16:45) [69]
> По поводу вопросов: самое занятное в них то, что задающий
> спрашивает то и только то, что знает сам.
> Это очень показательно при обходе компаний по вакансиям.
> Занимательное дело, доложу я вам!
Было-бы очень странно если наоборот :)
-
> KSergey © (14.06.16 16:45) [69]
> По поводу вопросов: самое занятное в них то, что задающий
> спрашивает то и только то, что знает сам.
Даже не знаю - плакать или смеяться...
Впрочем, если это Вас не устраивает, то могу спросить Вас о том, чего не знаю сам.
Готовы?
-
KSergey криво сформулировал, но по сути я с ним согласен. Очень часто есть тенденция спрашивать о том, с чем недавно сталкивался или о чем недавно прочитал. В итоге собеседование превращается в викторину: читает ли кандидат те же блоги, что и ты.
Не перестаю считать, что вопрос про OnCreate из этой серии. Кто-то сталкивался, кто-то нет. Как это характеризует? Да никак. Кто читал эту ветку, ответит правильно :)
-
сформулировано не криво.
сформулировано с т.з. третьего лица, наблюдающего собеседование со стороны.
а те, кто не знают плакать или смеяться,
те примеряют высказывание к тестирующей стороне,
к тому же подразумевая что высказывается не наблюдатель, а тестируемый.
-
> Kerk © (14.06.16 21:21) [72]
> Не перестаю считать, что вопрос про OnCreate из этой серии.
Совершенно согласен и скажу даже сильнее: любой технический вопрос на собеседовании - из этой серии. Поскольку ответ спрашивающий всегда знает заведомо.
-
Не любой технический вопрос на собеседовании из этой серии.
Поскольку ответ спрашивающий не всегда знает заведомо.
-
> Kerk © (14.06.16 21:21) [72]
> KSergey криво сформулировал, но по сути я с ним согласен.
> Очень часто есть тенденция спрашивать о том, с чем недавно
> сталкивался или о чем недавно прочитал. В итоге собеседование
> превращается в викторину: читает ли кандидат те же блоги, что и ты.
Я в самом деле выразился не очень понятно, т.е. понять комичность ситуации может лишь тот, кто её видел. Спасибо за развёрнутое толкование.
Вопросы в самом деле бывают настолько порой специфичны и узки, что они, с одной стороны, отменно отвечают своим задачам ("знание и понимание VCL"), с другой стороны, ответ на них знает только тот, кто ровно этим вопросом случайно заморачивался по какой-либо причине.
И это и занятно: смотреть кто из экзаменаторов чем заморачивался и по этому критерию делать какие-то соображения относительно самой компании и её народонаселения. Да и себе горизонты расширять новыми словами, ведь и сам тоже знаешь лишь то, чем заморачивался по какой-то случайной причине.
При этом я ни в коем случае не умаляю ни знаний ЮЗ, ни качество самого вопроса, разумеется.
-
> Rouse_ © (14.06.16 16:49) [70]
Спасибо за ссылку
-
с другой стороны, ответ на них знает только тот, кто ровно этим вопросом случайно заморачивался по какой-либо причине.
это если собеседуют кого-то потому, что просто есть вакансия.
но представьте случай, когда команда в ходе реализации проекта внезапно уперлась в проблему, которую никто из членов не смог решить.
после чего приглашают того, кто решить ее может, а не просто потому что есть вакансия.
-
> Юрий Зотов © (14.06.16 21:34) [74]
> Совершенно согласен и скажу даже сильнее: любой технический
> вопрос на собеседовании - из этой серии. Поскольку ответ
> спрашивающий всегда знает заведомо.
Не любой :)
Я потому и ополчился на вопрос про OnCreate, а не на вопрос про конвертацию. Потому что первый вопрос - это вопрос телевикторины на знание фактов, а ответ на второй можно исполнить по-разному и ответ покажет как вообще у человека мысль в голове движется. А это ведь главное, а не сам ответ.
Из хороших на мой взгляд вопросов, с которыми сталкивался: "Нарисуйте архитектуру игры Супермарио". Какая там на самом деле архитектура? Да кто знает. Но неужто не интересно посмотреть кто чего нарисует? :)
-
Иногда бывает другая ситуация, к примеру: я знаю ответ на вопрос Зотыча, но знаю и альтернативный - расширенный вариант. Что считать верным? ;)
-
> Rouse_ © (14.06.16 23:19) [80]
>
А иногда бывает так:
"В чем основное отличие Java и JavaScript?"
Ну и как на это отвечать?
-
Обьекты
-
> Kerk © (14.06.16 22:44) [79]
>
>
> > Юрий Зотов © (14.06.16 21:34) [74]
>
>
> > Совершенно согласен и скажу даже сильнее: любой технический
> > вопрос на собеседовании - из этой серии. Поскольку ответ
> > спрашивающий всегда знает заведомо.
>
> Не любой :)
>
> Я потому и ополчился на вопрос про OnCreate, а не на вопрос
> про конвертацию. Потому что первый вопрос - это вопрос телевикторины
> на знание фактов
Не совсем так. Это вопрос на знание основ Дельфи для разработчика классов. Вопрос про конвертацию вообще имеет очень слабое отношение именно к Дельфи. Там только вопрос алгоритмов и грамотного их применения.
P.S. Вот тут хочется ещё раз спросить с какой целью ТС задал свой вопрос "Хочу узнать свой скилл"?
Для оценки "кодера" вопрос про OnCreate явно не подходит.
-
> Rouse_ © (15.06.16 00:20) [82]
> Обьекты
Вопрос оказался провокацией.
-
> Германн © (15.06.16 01:02) [83]
> Не совсем так. Это вопрос на знание основ Дельфи для разработчика
> классов. Вопрос про конвертацию вообще имеет очень слабое
> отношение именно к Дельфи. Там только вопрос алгоритмов
> и грамотного их применения.
> P.S. Вот тут хочется ещё раз спросить с какой целью ТС задал
> свой вопрос "Хочу узнать свой скилл"?
> Для оценки "кодера" вопрос про OnCreate явно не подходит.
>
на мой взгляд как у конкретного вопроса в конкретном месте было неудачное ограничение: "никуда не подглядывая". В таком варианте - именно телевикторина.
А вот если убрать это ограничение - это уже отличный вопрос по всем параметрам. Один фик ответ на ту часть, где уточняется "почему" и "чем заменить" напрямую нигде не содержится и тут-то и можно выбирать по ответам.
Я бы не догадался даже с подглядыванием. В отличии.
> Германн © (15.06.16 01:02) [83]
> P.S. Вот тут хочется ещё раз спросить с какой целью ТС задал свой вопрос "Хочу узнать свой скилл"?
> Для оценки "кодера" вопрос про OnCreate явно не подходит.
Мне вопрос зададут - а я на него отвечу. Мне будет приятно.
На что не отвечу - буду знать куда рыть.
По-моему, вполне нормальное желание.
-
> Kerk © (14.06.16 22:44) [79]
> первый вопрос - это вопрос телевикторины на знание фактов,
Не согласен.
Первый вопрос (про OnCreate) состоит из трех взаимосвязанных частей. Можно сказать, что первая часть - действительно на знание фактов. Для ответа достаточно назвать TForm и TDataModule. И если человек отвечает именно так, то он показывает свои знания, но не более того. Но если он отвечает так:
"Событие OnCreate имеют компоненты, которые:"
- являются контейнерами других компонентов;
- при создании грузят себя и свое содержимое из DFM или иного ресурса;
- после полной загрузки генерируют событие OnCreate.
На сегодня это TForm и TDataModule. Но завтра могут появиться и другие.
И если человек отвечает именно так, то он показывает не только свои знания, но и понимание того, что до полного окончания загрузки обращаться к другим компонентам и генерить события нельзя.
Хорошо, допустим, что человек все это понимает, но не придал этой части вопроса особого значения, поэтому просто назвал TForm и TDataModule. Для того, чтобы уточнить, служит вторая часть вопроса - почему так сделано? Вот тут уже надо думать, голым знанием фактов тут не обойдешься.
Ну и третья часть - практическая. Тоже говорит о понимании. Потому что надо не только знать о существовании метода Loaded, но и понимать, зачем он нужен и как работает. Кроме того, третья часть в какой-то степени проявляет практический уровень человека. Дело в том, что перекрытие Loaded прикладниками почти не используется, поэтому прикладник подумает. А для компонентщика со стажем перекрытие Loaded - обычное дело, ему и думать не надо.
-
Я тоже знаю вопрос, на который без 100 грамм не ответить.
Другое дело, что знание ответа на него применять, также, как и OnCreate у иных компонентов делать, дело настолько не распространенное, что польза от ответа на подобный вопрос без интернета чуть менее, чем никакая. Да, понимание VCL, но нахрен оно нужно - это понимание до таких глубин, чтобы сходу ответить на нетривиальные вопросы - я тоже не знаю.
Занимательно, что про Firemonkey никто не спрашивает. К чему бы это ?
-
> KSergey ©
> All
Вопрос, ответа на который я не знаю.
Пишем базовую форму, от которой потом будем наследовать рабочие формы.
1. На базовой форме лежат компоненты, которые должны автоматически появляться и у рабочих форм-потомков. С этой целью базовая форма помещена в репозиторий.
2. У базовой формы есть добавленные нами новые published-свойства. Чтобы эти свойства были доступны в design-time, базовая форма зарегистрирована в IDE через RegisterCustomModule.
3. Базовая форма лежит в run-time пакете. Еще есть design-time пакет, который в required ссылается на run-time пакет и инсталлирован в IDE. Design-time пакет содержит процедуру register и все остальное, что нужно только в design-time. Это эксперт, помещающий базовую форму в репозиторий, а также (если надо) редакторы свойств и компонентов.
4. Что ожидаем. Жмем New-Other, в репозитории выбираем базовую форму и получаем ее наследника (рабочую форму) со всеми компонентами и добавленными нами свойствами - причем эти свойства доступны для правки в design-time.
5. Что имеем на самом деле. Жмем New-Other, в репозитории выбираем базовую форму и получаем ее наследника (рабочую форму) БЕЗ ВСЯКИХ КОМПОНЕНТОВ, АБСОЛЮТНО ПУСТУЮ. Но добавленные нами свойства есть и они действительно доступны для правки в design-time.
6. Убираем RegisterCusomModule. Жмем New-Other, в репозитории выбираем базовую форму и, само собой, получаем ее наследника (рабочую форму) со всеми компонентами. Но добавленных нами свойств в инспекторе объектов мы, естественно, не видим.
7. Получили противоречие. Если RegisterCustomModule есть, то у рабочей формы есть новые свойства, но нет унаследованных компонентов. Если же RegisterCustomModule нет, то унаследованные компоненты имеются, но нет новых свойств.
Вопрос: как добиться желаемого? Чтобы у рабочей формы были и новые свойства, и унаследованные компоненты.
Ответ: я не знаю ответа.
-
> Игорь Шевченко © (15.06.16 10:34) [87]
> Да, понимание VCL, но нахрен оно нужно - это понимание до
> таких глубин, чтобы сходу ответить на нетривиальные вопросы
Все зависит от характера работы. Чистому прикладнику эти глубины действительно вряд ли нужны. Но работал я в одной конторе, в системной группе - так в этой группе без знания и понимания подобных глубин ну никак.
-
> понимание того, что до полного окончания загрузки обращаться
> к другим компонентам и генерить события нельзя
глубоко, да, очень глубоко
-
Вопрос: как добиться желаемого? Чтобы у рабочей формы были и новые свойства, и унаследованные компоненты.
создать проджект груп в которую входит проджект с дизайном предка и текущий проджект использующий предка.
перед созданием наследника убедится что открыта форма с предком
-
-
> KSergey © (15.06.16 07:45) [85]
>
> > Германн © (15.06.16 01:02) [83]
> > Не совсем так. Это вопрос на знание основ Дельфи для разработчика
> > классов. Вопрос про конвертацию вообще имеет очень слабое
> > отношение именно к Дельфи. Там только вопрос алгоритмов
> > и грамотного их применения.
> > P.S. Вот тут хочется ещё раз спросить с какой целью ТС
> задал
> > свой вопрос "Хочу узнать свой скилл"?
> > Для оценки "кодера" вопрос про OnCreate явно не подходит.
>
> >
>
> на мой взгляд как у конкретного вопроса в конкретном месте
> было неудачное ограничение: "никуда не подглядывая". В таком
> варианте - именно телевикторина.
Неудачное сравнение. Тут более подходит анекдот о том как кто-то отвечает на вопрос "чему равно дважды два/ сколько будет два умножить на два". Кто-то сразу отвечает - четыре. Кто-то хватается за логарифмическую линейку (уст.)/калькулятор. Кто-то сразу отвечает что он не обязан помнить все формулы. :)
-
> Игорь Шевченко © (15.06.16 10:34) [87]
>
> Занимательно, что про Firemonkey никто не спрашивает. К
> чему бы это ?
Что тут занимательного? Кто тут хоть что-то знает о Firemonkey? Не говоря уже о специалистах в этой области, которые сюда заходить не желают.
-
> iop © (15.06.16 22:05) [91]
Надо же, как все просто, оказывается. Но вот Erik Berry (это разработчик GExperts) почему-то так не считает. Вот что он говорит по этому поводу:
"Note that the IDE will not allow you to add both published properties and components to a custom module at the same time".
Значит, либо он неправ, либо Вы не в теме.
-
Есть, правда, обходной путь, но он именно обходной.
-
> Германн © (16.06.16 01:59) [94]
> Что тут занимательного? Кто тут хоть что-то знает о Firemonkey?
> Не говоря уже о специалистах в этой области, которые сюда заходить не желают.
Вот это, кстати, в самом деле удивительно мне лично.
С одной стороны, Борланд в своей реинкарнации выпускает всё новые версии, куда включает как изменения в языке, так и переписанные библиотеки.
При этом изменения языка явно используются и изучаются (это видно по ответам на форуме), то изменения в стандартных библиотеках (опять же судя лишь по форуму) игнорируются чуть более, чем полностью (на мой личный взгляд). Фактически все познания - на уровне Дельфи 5/7 плюс те грабли, на которые наступали при использовании этих познаний в более новых версиях. Как так?
Или я ошибаюсь?
-
KSergey © (16.06.16 14:06) [97]
> Или я ошибаюсь?
Нисколько. Другое дело, что этих познаний обычно хватает для текущих задач. Любую программу можно написать на Фортране.
-
> Игорь Шевченко © (16.06.16 18:04) [98]
> Любую программу можно написать на Фортране.
Не любую :)
-
>Обьекты
ооп как раз в javascript покруче любого дельфового. Только основано на прототипировании, а не на классическом наследовании классов. Возможностей больше, но понимать сложнее )
-
А ты и TUser, который тут был - это разные люди?
-
разные
-
> KSergey © (16.06.16 14:06) [97]
>
> > Германн © (16.06.16 01:59) [94]
> > Что тут занимательного? Кто тут хоть что-то знает о Firemonkey?
>
> > Не говоря уже о специалистах в этой области, которые
> сюда заходить не желают.
>
> Вот это, кстати, в самом деле удивительно мне лично.
> С одной стороны, Борланд в своей реинкарнации выпускает
> всё новые версии, куда включает как изменения в языке, так
> и переписанные библиотеки.
> При этом изменения языка явно используются и изучаются (это
> видно по ответам на форуме), то изменения в стандартных
> библиотеках (опять же судя лишь по форуму) игнорируются
> чуть более, чем полностью (на мой личный взгляд). Фактически
> все познания - на уровне Дельфи 5/7 плюс те грабли, на которые
> наступали при использовании этих познаний в более новых
> версиях. Как так?
> Или я ошибаюсь?
Да просто мало кто пишет программы на FMX.
-
> Kerk © (16.06.16 21:50) [101]
> А ты и TUser, который тут был - это разные люди?
> ttUser © (16.06.16 23:19) [102]
>разные
Ну очевидно же:
TUser - это class(...)
ttUser - это class of TUser
:o)