Эффективные стратегии изучения платформ / библиотеки, частично [закрытые]

Прежде всего я обычно предостерегал бы, что, собирая статистику таблицы, чтобы сделать, анализ пространства является потенциально опасной вещью сделать. Сбор статистики может изменить планы запросов, особенно если DBA настроил сборочное задание статистики, которое использует параметры не по умолчанию, которые Ваш вызов не использует и заставит Oracle повторно анализировать запросы, которые используют рассматриваемую таблицу, которая может быть хитом производительности. Если DBA намеренно встал из-за некоторых столов без статистики (распространенный, если Ваш OPTIMIZER_MODE, ВЫБИРАЮТ), заключая, что статистика может заставить Oracle прекращать использовать основанный на правилах оптимизатор и начинать использовать оптимизатор на основе издержек для ряда запросов, которые могут быть сильной головной болью производительности, если это неожиданно сделано в производстве. Если Ваши статистические данные точны, можно запросить USER_TABLES (или ALL_TABLES или DBA_TABLES) непосредственно, не звоня GATHER_TABLE_STATS. Если Ваши статистические данные не точны, существует, вероятно, причина этого, и Вы не хотите нарушать статус-кво.

1111-секундный, самым близким эквивалентом процедуре SQL Server sp_spaceused является вероятная Oracle DBMS_SPACE пакет. У Tom Kyte есть хорошее show_space процедура , которая предоставляет простой интерфейс этому пакету и распечатывает информацию, подобную тому, что sp_spaceused распечатывает.

6
задан casperOne 20 September 2012 в 19:18
поделиться

9 ответов

Я использую трехэтапную технику для оценки API.

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

2) Фильтр / сортировка - Для каждого предмета, который я нашел на этапе сбора, я пытаюсь выяснить, подходит ли он моим потребностям. Для этого я сразу перехожу к документации API и убеждаюсь, что в ней есть все необходимые мне функции. Результаты этого заносятся в взвешенный список с лучшими решениями вверху и отфильтрованным мусором.

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

Конечно, огромное количество факторов влияет на выбор лучшего API для проекта. Некоторые важные из них:

  1. Насколько это увеличит размер моего дистрибутива?
  2. Насколько хорошо API соответствует стилю моего существующего кода?
  3. Имеется ли качественная / какая-либо документация?
  4. Многие ли ею пользуются?
  5. Насколько активно сообщество?
  6. Насколько активна группа разработчиков?
  7. Насколько быстро команда разработчиков реагирует на запросы исправлений ошибок?
  8. Примет ли группа разработчиков мои исправления?
  9. Могу ли я продлить оно соответствует моим потребностям?
  10. Сколько будет стоить реализация в целом?

... И, конечно же, многое другое. Все это очень зависит от проекта.

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

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

1) Найдите в Google мою задачу

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

3) Посмотрите дату последнего обновления на главной странице, , если оно не было обновлено за 6 месяцев отпуска (за некоторыми исключениями)

4) Найдите образец задачи с библиотекой (пока не читайте учебники)

5) Могу ли я понять, что происходит без учебника? Если да, продолжайте, если нет, начните с 1

6) Попытайтесь реализовать задачу

7) Наблюдайте, как я терплю неудачу

8) Прочтите руководство

9) Попытайтесь реализовать задачу

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

11) Если бы я мог выполнить задачу,Я считаю структуру достойной изучения и прочитаю основное руководство в течение 2 часов (если оно не умещается в течение 2 часов, я просто игнорирую то, что осталось, пока оно мне не понадобится)

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

У меня нет рецепта, в смысле набора шагов, которым я всегда следую, в основном потому, что все, чему я учусь, отличается. Некоторые вещи для меня в корне новы (например, Dojo, у меня нет свободного владения Java-скриптом, поэтому это большая задача), некоторые - просто усовершенствования предыдущих знаний (я хорошо знаю EJB 2, поэтому изучение EJB 3, находясь на поверхности, является новым для всех. его аннотации, его построение на концепциях.)

Моя общая стратегия, однако, я бы описала как «Спираль и парк». Я пытаюсь сначала обвести пейзаж, понять общую форму, я Парк понятия, которые я пока не понимаю , пусть это меня не беспокоит. Затем я немного углубляюсь в некоторые области, но снова пытаюсь не зацикливаться на одной, Спирали в предмет. Надеюсь, я начну отпускать машину и понимать, но мне также нужно припарковать больше вещей.

Сначала мне нужны ответы на такие вопросы, как:

  • Для чего это?
  • Почему я должен использовать это, а не то, что я уже знаю
  • Что возможно? Никаких интересных сладких мест. «Например, ооо, посмотрите на это красивое обновление, управляемое AJAX»

Я много бегаю бегло читаю.

Затем я хочу подробнее изучить, как это сделать. Я начинаю искать подводные камни и дельные советы. (Например, в java: почему "wibble" .equals (var) - полезная конструкция?)

Конкретные методы и источники информации:

  • Самое важное: выполнение! Как можно раньше я хочу поработать пару учебных пособий. Мне, наверное, нужно сделать первый круг спирали, но потом я хочу потрогать и поэкспериментировать.
  • Обзорные документы
  • Документы по продукту
  • Форумы и дискуссионные группы, обучение через ответы на вопросы - мой любимый метод.
  • Если возможно, я стараюсь найти гуру. Мне повезло, что у моих ближайших коллег есть богатые знания и опыт.
1
ответ дан 10 December 2019 в 02:53
поделиться
  1. Руководства по быстрому запуску.
  2. Быстрый просмотр документации по API, если таковая имеется.
  3. Чтение примеров кодов.
  4. Беспорядки ВЫ ДОЛЖНЫ ОБЩАТЬСЯ (извините для шапки).

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

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

Я бы никогда не читал javadoc. Как часто нет. А если есть, скорее всего, не в актуальном состоянии. Так что в лучшем случае можно запутаться.

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

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

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

Ну, я ищу. Я вообще никогда не задаю вопросов, предпочитаю исследовать себя. Если будет хуже, я прочту документацию. В некоторых случаях (скажем, когда я работал с SharpSVN) мне приходилось смотреть на источник, в частности на тестовые примеры, чтобы получить некоторую информацию о том, как работает API.

В общем, я должен быть честным, большинство из моих «учебы» и «обучения» случайно.

Например, всего несколько секунд назад я обнаружил, как получить папку «Недавние» в C #. Я понятия не имел, как это сделать, пока не увидел вопрос, не посчитал его интересным, а затем начал поиск.

Так что для меня настоящая «уловка» в том, что я болтаюсь на форумах, отвечаю на вопросы и случайно получаю знания. Затем, когда приходит время для меня что-то исследовать; Скорее всего, я немного знаю об этом, и поиск проще, и я могу сосредоточиться на реализации [обычно сначала реализуя тестовую программу] и дальнейшем продвижении.

-1
ответ дан 10 December 2019 в 02:53
поделиться

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

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

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

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

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

Список рассылки архивы неоценимы для большинства моих вопросов по материалам, связанным с CoreAudio.

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

Это действительно зависит от темы и количества информации по ней. Обучение на примере - это хороший способ начать новую для вас тему, особенно если вы знакомы с другими подобными библиотеками или языками. Вы можете взять тему, с которой вы знакомы, и сказать: «Я понимаю, как реализовать с помощью X, давайте посмотрим, как это делается с помощью Y».

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

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