У меня есть требование для создания кросс-платформенного приложения, которое запускает ссылку на сайт к форме обратной связи когда его удаленный.
Это - очевидно нормальный вид поведения на окнах..., но на Mac, оказывается более сложным, поскольку приложения технически не установлены и удалены в смысле окон, иначе Вы просто копируете .app файл в Приложения и удаляете его, когда Вы закончены.
Как я могу достигнуть этого требования запуска веб-сайта? (Я должен даже пробовать, действительно ли этот процесс слишком чужд пользователям Mac?)
Я усталая упаковка приложения со сценарием оболочки удаления, который удаляет приложение и кормит сайт обедом, но очевидно сценарий не может удалить себя.
Сказка из личного опыта. Извинения за продолжительность.
Несколько лет назад наша группа разработчиков пыталась установить «правильные» измеримые цели для отдельных людей и руководителей команд. Эксперимент длился всего один год, потому что жесткие показатели не очень хорошо работали для отдельных целей (некоторые ссылки и дальнейшие обсуждения см. в моем вопросе по теме ).
Обратите внимание, что я был руководителем команды и участвовал в планировании всего этого с моим техническим начальником и другими руководителями команды, поэтому цели не были чем-то продиктованы с самого начала бесхитростным высшим руководством - в то время, когда мы действительно хотели, чтобы они работали. Стоит также отметить, что бонусная структура непреднамеренно поощряла конкуренцию между застройщиками. Вот мои наблюдения о том, что мы пытались.
Проблемы, с которыми сталкиваются клиенты
В нашем случае мы рассчитывали перебои в предоставлении услуг клиентам. В изделии, обернутом сжатием, это может быть количество ошибок, о которых сообщают клиенты.
Преимущества: Это была единственная реальная мера, которая была видна высшему руководству. Он также является наиболее объективным, поскольку он измеряется вне группы по вопросам развития.
Недостатки: Было не так много отключений - всего около одного на разработчика в течение всего года, - что означало, что невыполнение или превышение цели было вопросом «возлагать вину» за несколько отключений, которые действительно произошли в каждой команде. Это привело к плохому чувству и потере морального духа.
Объем выполненной работы
Преимущества: Это была единственная положительная мера. Все остальное было «мы замечаем, когда случаются плохие вещи», что деморализовало. Его включение также было необходимо, потому что без него застройщик, который не делал ничего весь год, превысил бы все остальные цели, что явно не отвечало бы интересам компании. Измерение объёма проделанной работы проверяло естественный оптимизм разработчиков при оценке размера задания, что было полезно.
Недостатки: Показатель «выполненной работы» был основан на оценках, предоставленных самими разработчиками (как правило, хорошая вещь), но превращение его в часть их целей стимулировало игры системы завышать оценки. У нас не было другой жизнеспособной меры работы: я думаю, что единственный возможный ценный способ измерения производительности - «влияние на результат компании», но большинство разработчиков настолько отстранены от прямых продаж, что это редко практично на индивидуальном уровне.
Дефекты, обнаруженные в новом производственном коде
Мы измерили дефекты , внедренные в новый производственный код в течение года, поскольку было сочтено, что ошибки предыдущих лет не должны учитываться в целях этого года. Дефекты, выявленные внутренними группами по качеству, были включены в подсчет, даже если они не влияли на клиентов.
Преимущества: Удивительно мало.Временной промежуток между введением дефекта и его обнаружением означал, что на самом деле не было механизма немедленной обратной связи для улучшения качества кода. Макротренды на уровне команды оказались более полезными.
Недостатки: Был усилен акцент на негативе, поскольку эта цель приводилась только тогда, когда обнаруживался дефект, и нам требовался кто-то, кто виноват в этом. Разработчики неохотно фиксировали обнаруженные ими дефекты, а простой подсчет означал, что мелкие ошибки были так же плохи, как и серьёзные проблемы. Поскольку количество дефектов на одного человека все еще было довольно низким, количество мелких и серьезных дефектов не было ровным, как это могло бы быть в случае с более крупной выборкой. Старые дефекты не были включены, поэтому репутация группы по качеству кода (на основе всех обнаруженных ошибок) не всегда соответствовала измеримому введенному количеству в этом году.
Своевременность реализации проекта
Мы измерили своевременность как процент работ, поставленных внутренним группам по обеспечению качества к указанному сроку.
Преимущества: В отличие от подсчета дефектов, это была мера, которая находилась под непосредственным непосредственным контролем разработчиков, так как они эффективно решали, когда работа была завершена. Наличие цели сосредоточило ум на выполнении задач. Это помогло команде выполнить реалистичный объем работы и улучшить восприятие внутренними клиентами способности группы разработчиков выполнять обещания.
Недостатки: В качестве единственной цели, находящейся непосредственно под контролем разработчиков, она была максимизирована за счет качества кода: в день крайнего срока, учитывая выбор между тем, что задача завершена, или дальнейшим тестированием, чтобы повысить уверенность в ее качестве, разработчик решил бы отметить ее полной и надеяться, что любые возникающие ошибки никогда не выйдут на поверхность.
Жалобы от внутренних клиентов
Чтобы определить, насколько хорошо разработчики общались с внутренними клиентами во время разработки и последующей поддержки их программного обеспечения, мы решили, что количество жалоб, полученных на каждого человека, будет зафиксировано. Жалобы будут подтверждены руководителем во избежание возможной мстительности.
Преимущества: Я ничего не помню. Измеренный на достаточно большом групповом уровне, он становится более полезным показателем удовлетворенности клиентов.
Недостатки: Не только крайне негативная, но и субъективная мера. Как и в случае с другими целями, числа для каждого отдельного человека были около нулевой отметки, что означало, что один комментарий о ком-либо может означать разницу между "бесконечно превышенным" и "не выполненным".
Общие замечания
Бюрократия: Несмотря на то, что наши инструменты управления задачами содержали большую часть данных для этих показателей, все еще было достаточно много ручных усилий, чтобы сопоставить все это. Время, потраченное на получение всех цифр, не было приятным, как правило, было сосредоточено на негативных аспектах нашей работы и, возможно, даже не было восстановлено за счет повышения производительности.
Моральный дух: В отношении мер, в которых людей обвиняли в проблемах, не только те, у кого были «плохие» баллы, чувствовали себя демотивированными, но и те, у кого были «хорошие» баллы, поскольку им не нравились потери в командном моральном состоянии, и иногда они чувствовали, что их ранжируют выше не потому, что они были лучше, а потому, что им повезло.
Резюме
Что мы узнали из эпизода? В более поздние годы мы пытались повторно использовать некоторые идеи, но в «более мягком» пути, где было меньше акцента на индивидуальную вину и больше на улучшение команды.
Все это не помогает, когда требуется установить измеримые цели для отдельных разработчиков, но, надеюсь, идеи будут более полезны для улучшения команды.
-121--1319458- Я не думаю, что это лучшая идея, так как процесс был бы немного необычным для пользователей OS X. Как вы отметили, большинство приложений устанавливаются просто путем перетаскивания файла .app в /Applications
(или в другое место). Некоторые приложения действительно имеют установщик, но даже приложения с установщиком только иногда имеют uninstaller ; и, кроме того, как пользователь Mac, я бы сразу с подозрением отнесся к приложению, которое само себя установило, и к какому-то неизвестному сценарию оболочки.
Неинсталлятор на MAC не имеет смысла и будет неловко реализовать, если вы даже можете вообще реализовать его таким образом, чтобы люди использовали его.
Подумайте о попытке получить отзывы пользователя с использованием альтернативных методов, таких как:
Пример кода, в котором это могло бы помочь:
public class SpecialDataRow<T> : T where T : DataRow
{
public int SpecialFactor { get; set; }
}
Это позволило бы создавать «специальные» строки из DataRow, а также из любых производных строк DataRows (таких как сгенерированные типизированные наборы данных)
Я не вижу другого способа кодирования такого класса
-121--1154939-История из личного опыта. Извинения за продолжительность.
Несколько лет назад наша группа разработчиков пыталась установить «правильные» измеримые цели для отдельных лиц и руководителей команд. Эксперимент длился всего один год, потому что жесткие показатели не очень хорошо работали для отдельных целей (некоторые ссылки и дальнейшее обсуждение см. в моем вопросе по теме ).
Обратите внимание, что я был руководителем команды и участвовал в планировании всего этого с моим техническим начальником и другими руководителями команды, поэтому цели не были чем-то продиктованы с самого начала бесхитростным высшим руководством - в то время, когда мы действительно хотели, чтобы они работали. Стоит также отметить, что бонусная структура непреднамеренно поощряла конкуренцию между застройщиками. Вот мои наблюдения о том, что мы пытались.
Проблемы, с которыми сталкиваются клиенты
В нашем случае мы рассчитывали перебои в предоставлении услуг клиентам. В изделии, обернутом сжатием, это может быть количество ошибок, о которых сообщают клиенты.
Преимущества: Это была единственная реальная мера, которая была видна высшему руководству. Он также является наиболее объективным, поскольку он измеряется вне группы по вопросам развития.
Недостатки: Было не так много отключений - всего около одного на разработчика в течение всего года, - что означало, что невыполнение или превышение цели было вопросом «возлагать вину» за несколько отключений, которые действительно произошли в каждой команде. Это привело к плохому чувству и потере морального духа.
Объем выполненной работы
Преимущества: Это была единственная положительная мера. Все остальное было «мы замечаем, когда случаются плохие вещи», что деморализовало. Его включение также было необходимо, потому что без него застройщик, который не делал ничего весь год, превысил бы все остальные цели, что явно не отвечало бы интересам компании. Измерение объёма проделанной работы проверяло естественный оптимизм разработчиков при оценке размера задания, что было полезно.
Недостатки: Показатель «выполненной работы» был основан на оценках, предоставленных самими разработчиками (как правило, хорошая вещь), но превращение его в часть их целей стимулировало игры системы завышать оценки. У нас не было другой жизнеспособной меры работы: я думаю, что единственный возможный ценный способ измерения производительности - «влияние на результат компании», но большинство разработчиков настолько отстранены от прямых продаж, что это редко практично на индивидуальном уровне.
Дефекты, обнаруженные в новом производственном коде
Мы измерили дефекты , внедренные в новый производственный код в течение года, поскольку было сочтено, что ошибки предыдущих лет не должны учитываться в целях этого года.Дефекты, выявленные внутренними группами по качеству, были включены в подсчет, даже если они не влияли на клиентов.
Преимущества: Удивительно мало. Временной промежуток между введением дефекта и его обнаружением означал, что на самом деле не было механизма немедленной обратной связи для улучшения качества кода. Макротренды на уровне команды оказались более полезными.
Недостатки: Был усилен акцент на негативе, поскольку эта цель приводилась только тогда, когда обнаруживался дефект, и нам требовался кто-то, кто виноват в этом. Разработчики неохотно фиксировали обнаруженные ими дефекты, а простой подсчет означал, что мелкие ошибки были так же плохи, как и серьёзные проблемы. Поскольку количество дефектов на одного человека все еще было довольно низким, количество мелких и серьезных дефектов не было ровным, как это могло бы быть в случае с более крупной выборкой. Старые дефекты не были включены, поэтому репутация группы по качеству кода (на основе всех обнаруженных ошибок) не всегда соответствовала измеримому введенному количеству в этом году.
Своевременность реализации проекта
Мы измерили своевременность как процент работ, поставленных внутренним группам по обеспечению качества к указанному сроку.
Преимущества: В отличие от подсчета дефектов, это была мера, которая находилась под непосредственным непосредственным контролем разработчиков, так как они эффективно решали, когда работа была завершена. Наличие цели сосредоточило ум на выполнении задач. Это помогло команде выполнить реалистичный объем работы и улучшить восприятие внутренними клиентами способности группы разработчиков выполнять обещания.
Недостатки: В качестве единственной цели, находящейся непосредственно под контролем разработчиков, она была максимизирована за счет качества кода: в день крайнего срока, учитывая выбор между тем, что задача завершена, или дальнейшим тестированием, чтобы повысить уверенность в ее качестве, разработчик решил бы отметить ее полной и надеяться, что любые возникающие ошибки никогда не выйдут на поверхность.
Жалобы от внутренних клиентов
Чтобы определить, насколько хорошо разработчики общались с внутренними клиентами во время разработки и последующей поддержки их программного обеспечения, мы решили, что количество жалоб, полученных на каждого человека, будет зафиксировано. Жалобы будут подтверждены руководителем во избежание возможной мстительности.
Преимущества: Я ничего не помню. Измеренный на достаточно большом групповом уровне, он становится более полезным показателем удовлетворенности клиентов.
Недостатки: Не только крайне негативная, но и субъективная мера. Как и в случае с другими целями, числа для каждого отдельного человека были около нулевой отметки, что означало, что один комментарий о ком-либо может означать разницу между «бесконечно превышенным» и «не выполненным».
Общие замечания
Бюрократия: Несмотря на то, что наши инструменты управления задачами содержали большую часть данных для этих показателей, все еще было достаточно много ручных усилий, чтобы сопоставить все это.Время, потраченное на получение всех цифр, не было приятным, как правило, было сосредоточено на негативных аспектах нашей работы и, возможно, даже не было восстановлено за счет повышения производительности.
Моральный дух: За меры, в которых людей обвиняли в проблемах, не только те, у кого были «плохие» баллы, чувствовали себя демотивированными, но и те, у кого были «хорошие» баллы, так как им не нравились потери в командном моральном состоянии, и иногда они чувствовали, что они были выше не потому, что они были лучше, а потому, что им повезло.
Резюме
Что мы узнали из эпизода? В более поздние годы мы пытались повторно использовать некоторые идеи, но в «более мягком» пути, где было меньше акцента на индивидуальную вину и больше на улучшение команды.
Все это не помогает, когда требуется установить измеримые цели для отдельных разработчиков, но, надеюсь, идеи будут более полезны для улучшения команды.
-121--1319458-Приложения Mac OS не должны удаляться каким-либо образом, кроме того, что пользователь перетаскивает их в корзину.
Кроме того, я бы очень тщательно переосмыслил ваш план создания кроссплатформенных приложений. Кроссплатформенные приложения, которые рассматривают Mac OS как последующее мышление и пытаются вытеснить иностранные парадигмы на Mac OS, действительно вызывают раздражение. Если вам нужен клиент Mac, храните свой бэкэнд-код,но переписать фронтэнд с нуля. Не используйте что-то вроде Qt, независимо от того, насколько заманчива переносимость.
Короче говоря, ты прав. Процесс чуждый пользователям Mac (за исключением таких вещей, как плагины). Поэтому я предлагаю использовать обычное поведение Mac OS (перетаскивание в мусор). Всего наилучшего!
Сказка из личного опыта. Извинения за продолжительность.
Несколько лет назад наша группа разработчиков пыталась установить «правильные» измеримые цели для отдельных людей и руководителей команд. Эксперимент длился всего один год, потому что жесткие показатели не очень хорошо работали для отдельных целей (некоторые ссылки и дальнейшее обсуждение см. в моем вопросе по теме ).
Обратите внимание, что я был руководителем команды и участвовал в планировании всего этого с моим техническим начальником и другими руководителями команды, поэтому цели не были чем-то продиктованы с самого начала бесхитростным высшим руководством - в то время, когда мы действительно хотели, чтобы они работали. Стоит также отметить, что бонусная структура непреднамеренно поощряла конкуренцию между застройщиками. Вот мои наблюдения о том, что мы пытались.
Проблемы, с которыми сталкиваются клиенты
В нашем случае мы рассчитывали перебои в предоставлении услуг клиентам. В изделии, обернутом сжатием, это может быть количество ошибок, о которых сообщают клиенты.
Преимущества: Это была единственная реальная мера, которая была видна высшему руководству. Он также является наиболее объективным, поскольку он измеряется вне группы по вопросам развития.
Недостатки: Было не так много отключений - всего около одного на разработчика в течение всего года, - что означало, что невыполнение или превышение цели было вопросом «возлагать вину» за несколько отключений, которые действительно произошли в каждой команде. Это привело к плохому чувству и потере морального духа.
Объем выполненной работы
Преимущества: Это была единственная положительная мера. Все остальное было «мы замечаем, когда случаются плохие вещи», что деморализовало. Его включение также было необходимо, потому что без него застройщик, который не делал ничего весь год, превысил бы все остальные цели, что явно не отвечало бы интересам компании. Измерение объёма проделанной работы проверяло естественный оптимизм разработчиков при оценке размера задания, что было полезно.
Недостатки: Показатель «выполненной работы» был основан на оценках, предоставленных самими разработчиками (как правило, хорошая вещь), но превращение его в часть их целей стимулировало игры системы завышать оценки. У нас не было другой жизнеспособной меры работы: я думаю, что единственный возможный ценный способ измерения производительности - «влияние на результат компании», но большинство разработчиков настолько отстранены от прямых продаж, что это редко практично на индивидуальном уровне.
Дефекты, обнаруженные в новом производственном коде
Мы измерили дефекты , внедренные в новый производственный код в течение года, поскольку было сочтено, что ошибки предыдущих лет не должны учитываться в целях этого года. Дефекты, выявленные внутренними группами по качеству, были включены в подсчет, даже если они не влияли на клиентов.
Преимущества: Удивительно мало.Временной промежуток между введением дефекта и его обнаружением означал, что на самом деле не было механизма немедленной обратной связи для улучшения качества кода. Макротренды на уровне команды оказались более полезными.
Недостатки: Был усилен акцент на негативе, поскольку эта цель приводилась только тогда, когда обнаруживался дефект, и нам требовался кто-то, кто виноват в этом. Разработчики неохотно фиксировали обнаруженные ими дефекты, а простой подсчет означал, что мелкие ошибки были так же плохи, как и серьёзные проблемы. Поскольку количество дефектов на одного человека все еще было довольно низким, количество мелких и серьезных дефектов не было ровным, как это могло бы быть в случае с более крупной выборкой. Старые дефекты не были включены, поэтому репутация группы по качеству кода (на основе всех обнаруженных ошибок) не всегда соответствовала измеримому введенному количеству в этом году.
Своевременность реализации проекта
Мы измерили своевременность как процент работ, поставленных внутренним группам по обеспечению качества к указанному сроку.
Преимущества: В отличие от подсчета дефектов, это была мера, которая находилась под непосредственным непосредственным контролем разработчиков, так как они эффективно решали, когда работа была завершена. Наличие цели сосредоточило ум на выполнении задач. Это помогло команде выполнить реалистичный объем работы и улучшить восприятие внутренними клиентами способности группы разработчиков выполнять обещания.
Недостатки: В качестве единственной цели, находящейся непосредственно под контролем разработчиков, она была максимизирована за счет качества кода: в день крайнего срока, учитывая выбор между тем, что задача завершена, или дальнейшим тестированием, чтобы повысить уверенность в ее качестве, разработчик решил бы отметить ее полной и надеяться, что любые возникающие ошибки никогда не выйдут на поверхность.
Жалобы от внутренних клиентов
Чтобы определить, насколько хорошо разработчики общались с внутренними клиентами во время разработки и последующей поддержки их программного обеспечения, мы решили, что количество жалоб, полученных на каждого человека, будет зафиксировано. Жалобы будут подтверждены руководителем во избежание возможной мстительности.
Преимущества: Я ничего не помню. Измеренный на достаточно большом групповом уровне, он становится более полезным показателем удовлетворенности клиентов.
Недостатки: Не только крайне негативная, но и субъективная мера. Как и в случае с другими целями, числа для каждого отдельного человека были около нулевой отметки, что означало, что один комментарий о ком-либо может означать разницу между «бесконечно превышенным» и «не выполненным».
Общие замечания
Бюрократия: Несмотря на то, что наши инструменты управления задачами содержали большую часть данных для этих показателей, все еще было достаточно много ручных усилий, чтобы сопоставить все это. Время, потраченное на получение всех цифр, не было приятным, как правило, было сосредоточено на негативных аспектах нашей работы и, возможно, даже не было восстановлено за счет повышения производительности.
Моральный дух: Что касается мер, в которых людей обвиняли в проблемах, не только те, у кого были «плохие» баллы, чувствовали себя демотивированными, но и те, у кого были «хорошие» баллы, поскольку им не нравились потери в командном моральном состоянии, и иногда они чувствовали, что их ранжируют выше не потому, что они были лучше, а потому, что им повезло.
Резюме
Что мы узнали из эпизода? В более поздние годы мы пытались повторно использовать некоторые идеи, но в «более мягком» пути, где было меньше акцента на индивидуальную вину и больше на улучшение команды.
Все это не помогает, когда требуется установить измеримые цели для отдельных разработчиков, но, надеюсь, идеи будут более полезны для улучшения команды.
-121--1319458-Я бы рекомендовал не использовать его. Вы можете создать программу удаления, но ничто не помешает пользователю просто удалить ее из папки приложения или использовать что-то вроде AppZapper. Большинство людей даже не ищут приложение для удаления, они просто мусорят приложение, так что даже если вы написали одно, не будет никакой гарантии, что оно будет использовано.
Я бы, конечно же, избегал сценария оболочки удаления, ни за что в мире я бы лично его не запустил.