Какая функциональность должна всегда быть третьим лицом?

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

Первый вариант - просто очистить экран. Технически это «не удаляет» то, что они ввели, потому что они все еще могут прокручивать вверх и видеть текст, но, по крайней мере, он больше не будет сразу виден на экране.

import os
os.system('cls')
os.system('clear')

Второй вариант будет рассматривать это как поле пароля. Это исключит возможность повторного отображения текста, поэтому, когда человек начинает печатать, на экране ничего не появляется, но вы по-прежнему получаете ввод.

import getpass
mystring = getpass.getpass()

Вы можете использовать getpass.getpass(prompt="Input: ") для изменения приглашения по умолчанию (Password:).

Наконец, если ни один из этих двух методов не работает для вас, я бы рекомендовал использовать модуль curses. Это более сложный процесс, но он достигнет именно того, что вы хотите сделать. Приведенный ниже код просто отображает строку, затем, когда пользователь нажимает клавишу ввода, она удаляется, а затем, когда вы снова нажимаете клавишу ввода, программа завершается. Пожалуйста, проверьте curses Python справочную страницу для более подробной информации о том, как использовать curses.

import curses

# initialize a curses window
stdscr = curses.initscr()
curses.noecho()
stdscr.keypad(True)

win = curses.newwin(5, 40, 0, 0) # create window at top-left of terminal with height 5 and width 40
win.refresh()
mystring = "hello, world"
win.addstr(mystring) # print a string to the window
win.refresh()
win.getkey() # wait for user input
curpos = curses.getsyx() # get current cursor position
win.move(curpos[0], curpos[1]-len(mystring)) # move the cursor to the beginning of the string
win.refresh()
win.clrtoeol() # erase text from cursor to end of line
win.refresh()
win.getkey() # wait for user input

# close the curses window and return terminal to normal functionality
stdscr.keypad(False)
curses.echo()
curses.endwin()

6
задан skaffman 31 October 2011 в 21:44
поделиться

15 ответов

Шифрование должно быть третьим лицом большинство времен... если Вы не находитесь в бизнесе продажи систем шифрования.

Который является в значительной степени г-ном Atwood его точка, поскольку я понял это, Ваш базовый бизнес не должен быть третьим лицом, таким образом, нет, вероятно, ничего, что должно всегда быть третьим лицом...

15
ответ дан 8 December 2019 в 02:27
поделиться

Мое эмпирическое правило состоит в том, чтобы использовать (или по крайней мере рассмотреть), третье лицо для чего-либо, что это вне базовой цели Вашего бизнеса.

Шифрование, всегда формирующий прототип пример этого. Но это расширяется на другие области также.

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

Это - все о выборе, какие области разработки на самом деле увеличивают стоимость Вашего проекта. Используя сторонний материал удаляет риск, что тот компонент является неполным/ошибочным/и т.д. но идет с риском, что это не может быть столь же гибко как в чем Вы нуждаетесь.

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

4
ответ дан 8 December 2019 в 02:27
поделиться

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

3
ответ дан 8 December 2019 в 02:27
поделиться

"Какая функциональность должна всегда быть третьим лицом?"

Ничего. всегда существует исключение или особый случай для отвержения вопиющего использования "всегда" при обсуждении чрезвычайно технического решения.

Далее, решение пойти третье лицо почти никогда не должно приниматься на основе данной "функциональности". Нет такой вещи как таковой идеальной библиотеки, что Вы никогда не должны пойти куда-либо еще для того типа функциональности.

Идущее третье лицо является решением, которое должно быть принято на основе

  • Стоимость идущего третьего лица по сравнению со стоимостью выполнения его в доме
  • Время разработки потребовало помещенный до крайних сроков (т.е., это могло бы быть более дешево внутренний, но Ваша временная шкала разработки не могла бы позволить его независимо),
  • Простота интеграции, отладки, обслуживания, процедур обновления - может случиться так, что можно разработать что-то, что "сделает задание, но едва" внутренний по сравнению с не намного больше денег для чего-то, что будет заботиться о Вас в течение последующих лет
  • Простоту/стоимость тестирования и доказательства - пакеты защиты известно трудно протестировать хорошо

Как бы то ни было. Существуют некоторые вещи, где действительно трудно полагать, что вход в дом лучше. Например, можно записать конкуренту OpenGL и DirectX, и в определенных приложениях (научные вычисления, и т.д.) существуют серьезные основания для рассмотрения такого пути. Но в целом Вы не мечтали бы о нем. Даже при том, что это "свободно", это - все еще сторонняя зависимость, и Вы могли закончить на блоках из-за ошибки, которая только влияет, как Вы используете эти графические языки.

Другими словами, некоторые невероятно комплекс или трудно доказывать/тестировать вещи существует, который должен почти всегда переходить к третьему лицу. Безопасность - другой. Не пишите свой собственный алгоритм хеширования, если Вам не 1 год), могущим образом быть удостоверенным сумасшедший, и 2) имейте по крайней мере 3 превосходных бизнес-причины сделать так.

Но, "Какая функциональность должна всегда быть третьим лицом?" Ни один. Всегда существует исключение.

- Adam

4
ответ дан 8 December 2019 в 02:27
поделиться

Я предполагаю, что ответ зависит от использования. Если бы Вы разрабатываете для прибыли, Вы, вероятно, купили бы в компонентах, если стоимость использования компонента по сравнению со стоимостью разработки ее приводит к большему количеству прибыли. Это особенно имеет место с большими компонентами, когда у Вас нет внутренних экспертных знаний для создания их.

Несколькими хорошими примерами, которые я использовал, являются средства управления Infragistics и диаграммы Dundas. Хотя мы, возможно, создали их внутренние, затраты с точки зрения времени и упущенной возможности будут огромны по сравнению с покупкой нескольких лицензий.

Конечно, иногда мы делаем этот тип вещи, даже не рассматривая это как покупку компонента. Streching воображение немного, Вы могли включать платформу.NET, SQL Server, Windows API, и т.д.

2
ответ дан 8 December 2019 в 02:27
поделиться

Область, где я последовательно использовал сторонние средства управления, строила диаграмму. Это - довольно типичная проблема должным быть строить диаграмму некоторого пакета данных, и сторонние средства управления являются сформировавшимися и защищенными.

2
ответ дан 8 December 2019 в 02:27
поделиться

Это зависит. Есть ли сторонняя библиотека, доступная, который удовлетворяет Вашим потребностям и самое главное, язык и/или API, с которым Вы работаете. Затем пойдите для него.

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

3
ответ дан 8 December 2019 в 02:27
поделиться

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

2
ответ дан 8 December 2019 в 02:27
поделиться

Нет категорического ответа на этот вопрос, потому что точно так же, как что-либо еще в разработке программного обеспечения он зависит от ситуации. Я сказал бы, что, если следующие 3 объекта верны, чем Вы, не должен думать о выполнении его сами...

  1. Если это не ядро к Вашему бизнесу или экспертным знаниям.
  2. Если кто-то еще записал это для Вас, и это используется в широко распространенных сообществах.
  3. Если это удовлетворяет Ваши потребности и требования, или это может быть расширено для соответствия требованиям довольно легко.
1
ответ дан 8 December 2019 в 02:27
поделиться

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

Который очевидно глуп.

Для обоих нет никакого ответа, он зависит от потребностей Вашего бизнеса. Необходимо ли создать лучшую поисковую систему для всего Интернета? Почти наверняка нет. Но если Вы - Google в конце 90-х, Вы делаете. 3-й по сравнению с 1-й стороной просто вопрос, которого офиса Вы работаете в, каждая третья сторона является 1-й стороной себе.

  • Если все, в чем Вы нуждаетесь, достаточно хорошо: используйте что-то с полки.

Или Вы создадите что-то более низкое качество, или Вы потратите впустую деньги и усилие на чем-то, что не имеет значения так очень, или оба.

  • Если это - основа Вашего бизнеса: создайте его сами.

Если можно создать что-то лучше, и можно создать бизнес из той лучшей вещи, то сделать!

1
ответ дан 8 December 2019 в 02:27
поделиться

Ваша собственная функция шифрования? даже не думайте об этом, но я думаю, что Вы, вероятно, имели в виду некоторую обертку для существующих функций.

Сторонние преимущества компонента: Большая функциональность
Полностью протестированный (надо надеяться!)
Doesnt занимают время для разработки, так может быть более дешевым (но..)

Недостатки
Это достаточно действительно гибко для этого затем akward клиентское требование
Распределение может быть дорогим
Связи Вы в стороннюю компанию, которая может быть болью, когда они делают новый выпуск для исправления ошибок
Вы не учитесь делать задачу сами

Используете ли Вы сторонний компонент, собирается зависеть от Вашего приложения и требований. Что-то как построение графика собирается взять возрасты для разбираний, так был бы хороший сторонний компонент для использования.

0
ответ дан 8 December 2019 в 02:27
поделиться

Не забывайте, что время является большой проблемой для записи всех вещей Вашей рукой, не то, чтобы Вы не можете сделать, это, но проблема прибывает от Ваших клиентов или компании, они всегда хотят найти самый быстрый способ создать их систему. Но если у Вас есть некоммерческий проект, можно попытаться создать вещи собой. Для, например, можно использовать JQuery или Dojo как ajax инструментарий, если Вы запишете веб-приложения, и Вы хотите установить некоторую ajax функциональность, то это займет время для создания тех вещей рукой :)

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

0
ответ дан 8 December 2019 в 02:27
поделиться

Я сказал бы для написания шаблонного кода или избыточного кода, который является копией и вставкой, почти каждый раз должен быть сделан через библиотеку. Для меня код доступа почти всегда имеет меня делающий глупые ошибки, потому что это скучно. Spring.NET удивителен для этого. Я так рад, что мой босс поощрил меня пробовать его.

0
ответ дан 8 December 2019 в 02:27
поделиться

Что-либо, что является вне Вашего основного бизнеса, является хорошим кандидатом на решения других производителей. Вы хотите провести свое время разработки, создавая ту базовую функциональность, которая уникальна (выход) и не может покупаться и использоваться в экономически эффективном поместье.

Например, позволяет взгляду на сеть gridview управление. Можно ли разработать и расширить ли gridview сами? Уверенный, но разработать, можно кодировать и протестировать Вас, представление сетки собирается занять X количества времени и ресурсы, в которых можно перевести в доллары. Теперь у Вас есть фактор в повторяющихся затратах для поддержки, обслуживания и исправлений ошибок.

Теперь позволяет, используют произвольную сумму, которую я не забываю читать в некотором mag о среднем американском разработчике, делающем 40$ в час включая их преимущества. Существуют целые комплекты веб-элемента управления, доступные приблизительно для другого, приблизил лицензию за 800$ на разработчика. Если Ваш разработчик тратит больше, чем говорят, что общее количество 25 часов на этом управлении, Вы, возможно, купили целый комплект и провели 5 часов, интегрируясь и тестируя.

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

0
ответ дан 8 December 2019 в 02:27
поделиться

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

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

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

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

0
ответ дан 8 December 2019 в 02:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: