Оператор case без begin/end в Delphi

Перевод поста The case of a missing begin/end.

Delphi никогда не перестаёт удивлять меня... Вы знали что это правильный синтаксис?

Этот код компилируется и работает точно как следующий фрагмент.

Я лично никогда бы не убрал begin/end внутри оператора case/else, но не все согласяться с этим. Я нашёл такой пример в очень (ОЧЕНЬ!) старом кода (он был написан на Delphi 2) и я был довольно удивлён, что он компилируется.

Anton Alisov предложил форматировать первый пример так:

Я думаю так код выглядит более понятно.

PL/SQL Developer. 7. Изменение таблиц

Рассмотрим как отредактировать таблицу Oracle через PL/SQL Developer и получить SQL-скрипт изменений.

В SQL-window после ввода схемы и нажатии точки появляется автодополнение со всеми объектами в схеме.

Автодополнение PL/SQL Developer

При клике на полном имени таблицы ПКМ появляется меню с пунктами View и Edit. Первый пункт позволяет только просматривать, а второй ещё и редактировать таблицу.

Читать далее PL/SQL Developer. 7. Изменение таблиц

VerseQ − клавиатурный тренажёр

Скриншот клавиатурного тренажера VerseQ

В VerseQ нет отдельных упражнений — нужно просто вводить текст который показывает программа. Сложность текста автоматически адаптируется на основе темпа ввода и ошибок. Отдельные модули предназначены для тренировки ввода конструкций из языков программирования.

Платная, стоит 199 рублей.

Карьерная страшилка

На сайте City Business School находится несколько образовательных курсов на тему менеджмента, карьеры, эффективности и успеха. Отличительная особенность этих курсов которая сразу бросается в глаза — неприкрытая, доходящая до абсурда, пропаганда буржуазного образа мышления.

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

В начале идёт пояснение

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

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

А вот теперь скажите, имеет ли значение внутренний мир доктора, если в данной конкретной ситуации вам от него нужна лишь компетенция медика?

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

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

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

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


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

vocabulary.com — изучение новых английских слов

Описание слова true из vocabulary.com

vocabulary.com — сайт для пополнения словарного запаса английского языка. Особенности:

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

Сайт можно использовать как словарь.

Фундаментальные принципы объектно ориентированного проектирования (Часть 3): Полиморфизм

Вольный перевод статьи Fundamental Object Oriented Design principles (Part 3): Polymorphism.

Рассмотрим Полиморфизм предоставляемый объектно ориентированными языками программирования.

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

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

Что такое Полиморфизм?

Когда мы ссылаемся на объект мы хотим чтобы его поведение определялось типом объекта, а не типом ссылки которую мы используем. Обращение может идти даже через абстрактный тип (например, class abstract в Delphi), всё равно должны вызываться методы типа конкретного экземпляра объекта на который указывает ссылка. Это суть полиморфизма. Как вы видели в разделе про абстракцию мы можем взаимодействовать с объектами через переменную с типом класса-предка, хотя объект, на который ссылается переменная, на самом деле является экземпляром класса-потомка.

Наиболее общее понимание полиморфизма в том что метод может быть виртуальным. Это означает что класс-потомок может переопределить метод и заменить реализацию предка на свою собственную.

Читать далее Фундаментальные принципы объектно ориентированного проектирования (Часть 3): Полиморфизм

PL/SQL Developer. 6. Переключение баз данных

В PL/SQL Developer позволяет одновременно работать с несколькими базами данных. БД к которой Developer подключается после запуска программы становится активной. Название активной БД написано в заголовке программы.

Заголовок окна PL/SQL Developer

При работе с объектами, или например при создании SQL окна, окно привязывается к активной БД. К какой БД привязано окно видно в статус-баре окна.

Читать далее PL/SQL Developer. 6. Переключение баз данных

Горячие клавиши Telegram

Таблица взята из документации. У меня, в версии для Windows, сработали не все клавиши из списка.

КатегорияКомандаСочетание клавиш
ЧатыНавигация в чате↑ 
↓ 
PageUp 
PageDown
Навигация по
предложенным
стикерам*
↑ 
← 
→ 
Навигация по
предложенным
смайлам**
← 
Перейти к чату
ниже
Ctrl + Tab 
Ctrl + PageDown 
Alt + ↓
Перейти к чату
выше
Ctrl + Shift + Tab 
Ctrl + PageUp 
Alt + ↑
* Выйти
* Вернуться назад
* Отменить текущее
действие
Esc
Отправить файлCtrl + O
СообщенияОтветить (Reply)
на сообщение
Ctrl + ↑ 
Ctrl + ↓
Отменить ответ
(Reply)
Ctrl + ↓
Редактировать
последнее
отправленное
сообщение
Удалить
выделенное
сообщение
Delete
Edit Media ?Ctrl + E
Send GIF Directly ?Ctrl + Mouse Click
ПоискПоиск в выбранном чатеCtrl + F
Выход из поискаEsc
Панель со
списком чатов
Навигация↑ 
Выбрать чатEnter
Удалить чатBackspace
Delete
Отправить
сообщение***
Ctrl + Enter
Прыжок к* Вниз чата
* Прокрутка списка
чатов вверх
Alt + Enter
Saved Messages
(избранное)
Ctrl + 0
Закрепленные чатыCtrl + 1 
Ctrl + 2 
Ctrl + 3 
Ctrl + 4 
Ctrl + 5
Окно
программы
Свернуть в трейCtrl + W 
Alt + F4
Выйти из TelegramCtrl + Q
Заблокировать
Telegram
(у меня не работает)
Ctrl + L
Свернуть TelegramCtrl + M
Выделенный
текст
ЖирныйCtrl + B
КурсивCtrl + I
Создать ссылкуCtrl + K
ПодчеркнутыйCtrl + U
Моноширинный
шрифт
Ctrl + Shift + M
Простой текст
(снимает другие
эффекты)
Ctrl + Shift + N
ЗачёркнутыйCtrl + Shift + X
МышьОтветитьДвойной клик
по сообщению
Выделить
сообщение
Перетащить вне
сообщения
Информация
о сообщении
Наведите на
метку времени
Количество ответов
в опросе
Наведите на
проценты
Переслать
сообщение в чат
Перетащите
сообщение
в чат в списке
Exit Archived Chats (не знаю
как туда зайти)
Back

Комментарии

* Панель с предложенными стикерами появляется при вводе смайлов.

** Панель с предложенными смайлами появляется при вводе некоторых последовательностей символов.

*** Непонятно чем это отличается от просто выбора чата.

Аудит данных в Oracle на основе пакетных переменных и триггеров

В пакеты Oracle можно добавлять переменные. Эти переменные имеют свои значения для каждой сессии. Такое свойство позволяет организовать аудит — лог записей о том кто и когда менял данные в таблицах. Общий алгоритм такой:

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

Почти все описанные изменения производятся в БД. В клиенте добавляется только код регистрации переменных после коннекта. За счёт этого, такой подход может использоваться даже в наборе старых приложений в которых затруднительно найти и изменить все обращения к таблице в клиентах.

Читать далее Аудит данных в Oracle на основе пакетных переменных и триггеров

PL/SQL developer. 5. Горячие клавиши

Настройка горячих клавиш PL/SQL developer производится в меню Tools->Preference->Key Configuration.

Форма настройки горячих клавиш PL/SQL Developer

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

Удобно когда заданы горячие клавиши для нового SQL окна (File / New / SQL Window).