Oracle. not in и null

Если в колонке внутри подзапроса not in возможно появление null то это может привести к неверному поведению.

Рассмотрим пример, сделаем две таблицы:

Запрос с in возвращает то что ожидается

1
3

А вот запрос с not in не возвращает вообще ничего

И так будет всегда если в результате подзапроса присутствует null. Таким образом, если делается запрос с not in, всегда нужно проверить что колонка в подзапросе является not null. Или заменить условие, например на not exists.

Подробная статья про поведение null в Oracle, в том числе разобрана ситуация с not in.

PL/SQL developer. 4. Отладка

Простой пример использования отладки в Pl/Sql developer. Предположим, нам нужно отладить функцию test.sya_hello.

Открываем TestWindow и заполняем в нём код для проверки функции.

Читать далее PL/SQL developer. 4. Отладка

PL/SQL Developer. 3. Просмотр сессий, компиляция инвалидных объектов

Просмотр и закрытие сессий

Чтобы просмотреть список открытых сессий в базе данных Oracle нужно подключится под пользователем который имеет доступ на просмотр системных представлений и выбрать пункт меню Tools -> Sessions...

После этого появится форма со списком сессий.

Читать далее PL/SQL Developer. 3. Просмотр сессий, компиляция инвалидных объектов

Копирование c помощью Ctrl+C текстов из сообщений

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

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

копируется такой текст

---------------------------
Восстановление сетевых подключений
---------------------------
Ошибка при восстановлении подключения Z: к
xxx
Microsoft Windows Network: Множественное подключение к серверу или к общим ресурсам одним пользователем с использованием более одного имени пользователя не разрешено. Отключите все предыдущие подключения к серверу или общим ресурсам и повторите попытку.

Подключение не восстановлено.
---------------------------
ОК
---------------------------

Читать далее Копирование c помощью Ctrl+C текстов из сообщений

Delphi IDE. CnPack. Поиск компонента на форме по названию или заголовку

На большой форме, где много компонентов сложно найти отдельный компонент. Особенно если есть только название компонента или только текстовое описание, что-то вроде "Кнопка Выписка".

CnPack добавляет в редактор формы несколько кнопок, одна из которых предназначена для поиска компонентов на форме. После нажатия кнопки появляется форма с таблицей компонентов на форме и строкой поиска. Поиск можно делать как по названию компонента (TComponent.Name) так и по заголовку (Caption).

GExpert. Удобный поиск по dfm в Delphi IDE

Часто бывает нужен поиск по всем файлам включая dmf. Например

  • Поиск компонента по названию
  • Поиск запросов в которых используется таблица

Есть разные способы сделать такой поиск, но удобнее всего сделать это через Grep Search из набора GExpert. Диалог поиска похож на стандартный, но включает в себя дополнительные возможности.

Читать далее GExpert. Удобный поиск по dfm в Delphi IDE

Как читать книги (С. И. Поварнин, 1924)

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

Чтение это навык и чтобы читать эффективно ему нужно целенаправленно учится.

Что читать? Самое лучшее из того что получается найти.

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

Полное чтение, в отличии от выборочного означает прочтение книги без пропусков.

Активное, в отличии от пассивного, означает критику и оценку мыслей и позиции автора.

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

Читать далее Как читать книги (С. И. Поварнин, 1924)

CodeFest 2019. Три таракана

На CodeFest было интересное выступление Максима Дорофеева под названием Три маленьких таракана на пути к большому будущему. Тема выступления связана с его темой его книги Джедайские Техники: эффективность работы, управление расписанием.

Одна из основных мыслей выступления:

Не существует гарантированных способов преуспеть, гарантированные способы есть только облажаться.

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

А вдруг там что-то срочное?

Задачи которые поступают прямо сейчас кажутся более важными чем те что поступили раньше. То что кажется важным не всегда является важным.

Читать далее CodeFest 2019. Три таракана

CodeFest 2019. Рефакторинг

Мой конспект доклада с CodeFest 2019 Алексея Катаева Рефакторинг: договариваемся, планируем, внедряем! Доклад был одним из самых полезных среди тех которые я слушал.

Постоянный рефакторинг

Продукт никогда не следует переписывать с нуля:

  • это слишком рискованно и затратно;
  • происходит потеря опыта зафиксированного в коде.

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

Нельзя делать рефакторинг тайно. Нужно договорится о том чтобы его делать с руководством или владельцем продукта. Доводы за рефакторинг:

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

Читать далее CodeFest 2019. Рефакторинг

Typora — markdown редактор

Typora - удобный markdown-редактор. Возможности которыми я пользуюсь:

  • Собственно, само редактирование и просмотр markdown. Как исходника так и WYSIWYG. Удобно, быстро, красиво. Стандартные возможности: выделение и форматирование текста, изображения, ссылки, цитаты, блоки кода с подсветкой.
  • Визуальный редактор таблиц. Всегда пользуюсь им для таблиц, вместо разметки вручную.
  • Экспорт в html, docx. Есть недостаток - проблемы с экспортом через консоль. Можно использовать Pandoc, но есть свои недостатки.
  • Формулы в LaTex. Встроенные и отдельными блоками.
  • Проверка орфографии.

До Typora я использовал MarkdownPad, Typora намного более удобен и функционален.