Linux, sqlplus, нет такого файла или каталога

После установки не запускается sqlplus /nolog
Ошибка: sqlplus: command not found

  1. Проверяем наличие переменных окружения
    ORACLE_HOME
    LD_LIBRARY_PATH
    PATH
    Что в них писать, вроде, не проблема — куча статей и документации. Например:
ORACLE_HOME=/opt/oracle/19.2/client
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export ORACLE_HOME
export LD_LIBRARY_PATH
export PATH
  1. Следующая возможная ошибка

sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory

Устанавливаем нужную библиотеку. А вот тут практически все статьи умалчивают одну маленькую деталь. Нужная библиотека — libsqlplus.so или libaio или libaio1. Пример установки:

sudo apt-get install libaio1

И нигде не уточняют, что это 64 бита. Но если вы установили 32-битный клиент, то вам это не поможет. А поможет

sudo apt-get install libaio1:i386

Selenium, java, timezone

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

Предлагаю такое решение:

Calendar c = Calendar.getInstance();
c.setTime(new Date());
System.out.println(«Europe zone: » + TimeZone.getTimeZone(«CET»));
System.out.println(«Local zone: » + TimeZone.getDefault());

int europeOffset = TimeZone.getTimeZone(«CET»).getOffset(System.currentTimeMillis());
int localOffset = TimeZone.getDefault().getOffset(System.currentTimeMillis());

System.out.println(«Europe offset: » + amsOffset);
System.out.println(«Local offset: » + localOffset);
int delta = (europeOffset — localOffset) / 60000;
System.out.println(delta + » min»);

c.add(Calendar.MINUTE, delta);

Date currentDate = c.getTime();
System.out.println(«date today = » + currentDate);

Здесь «СЕТ» — часовой пояс на frontend. Его можно передавать как параметр, а можно и правильно хранить в файле property каждого сервера с которым может работать тест.

P.S. Да, летнее /зимнее время тут учтено!

Selenium, Java, E-mail, pop3

Добавляем в зависимости Мавена

<!-- http://repo1.maven.org/maven2/javax/mail/javax.mail-api/1.5.6/javax.mail-api-1.5.6.jar -->
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>
    <version>1.6.2</version>
</dependency>
<!-- http://repo1.maven.org/maven2/javax/mail/mail/1.4.7/mail-1.4.7.jar -->
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>
  1. Setup properties for the mail session.
  2. Creates a javax.mail.Authenticator object.
  3. Creating mail session.
  4. Get the POP3 store provider and connect to the store.
  5. Get folder and open the INBOX folder in the store.
  6. Retrieve the messages from the folder.
  7. Close folder and close store.

Выглядит все просто, но из коробки не завелось. Вылезла странная проблема с кодировкой Subject-a писем.

Selenium, Java, время на Frontend

Проблема:
1. Тест может запускаться из разных часовых поясов — локально, на разных серверах с Jenkins.
2. Тест может проверять разные инстансы фронтенда — Demo, Staging, Production.
Всё это может находиться в разных часовых поясах

Задача: тест должен оперировать/определять время фронтенда с которым он работает.

Calendar c = Calendar.getInstance();
c.setTime(new Date());
System.out.println(«Europe zone: » + TimeZone.getTimeZone(«CET»));
System.out.println(«Local zone: » + TimeZone.getDefault());

int europeOffset = TimeZone.getTimeZone(«CET»).getOffset(System.currentTimeMillis());
int localOffset = TimeZone.getDefault().getOffset(System.currentTimeMillis());

System.out.println(«Europe offset: » + amsOffset);
System.out.println(«Local offset: » + localOffset);
int delta = (europeOffset — localOffset) / 60000;
System.out.println(delta + » min»);

c.add(Calendar.MINUTE, delta);

Date currentDate = c.getTime();
System.out.println(«date today = » + currentDate);

Здесь в коде часовой пояс захардкожен. Правильно брать его из параметров фронденда. Но это уже сами ))).

Selenium и iframe

Хром в панели разработчика находит элемент по xPath, а Selenium не хочет по нему кликать и ругается, что элемент не найден.

Проблема в iframe. Selenium не видит элементы внутри iframe. Надо переключить фокус туда. Ну и не забыть потом вернуться.

driver.switchTo().frame(driver.findElement(By.xpath(«//iframe[@id=’iframeM’]»)));
driver.findElement(By.xpath(«//*[@id=’12345′]»)).click(); driverWrapper.switchTo().defaultContent();

Не успевает отработать Click

Исходные данные: автотест на java selenium. Столкнулся с ситуацией что после клика происходит долгая обработка данных и Selenium падает по таймауту. Перелопатил интернет, перепробовал все ожидания — явные, не явные и все другие включая банальную паузу:

            driver.manage().timeouts().setScriptTimeout(180, TimeUnit.SECONDS);
            driver.manage().timeouts().implicitlyWait(180, TimeUnit.SECONDS);
            driver.manage().timeouts().pageLoadTimeout(180, TimeUnit.SECONDS);

Ничего из этого не помогает. Автотест висит на клике, не переходит к следующей команде, а по истечению времени ожидания — падает.

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

try {
                    driver.findElement(By.xpath("//*[@id='a_do_import']")).click();
                } catch (Exception exception) {
                    logger.info("Exception was catch, is waiting 2 min.");
                    new Pause("120000").act(driver, context, reporter);
                    logger.info("Reload page.");
                    ...
}

Ловим и обрабатываем ошибку сами.

Цитата в Teams

Весьма странно, но как процитировать сообщение в тимс совсем не очевидно. Почему в Microsoft Teams нет такого же функционала, как в Skype? Вопрос, конечно, риторический ))).

Самый простой способ на сегодня такой:
Копируем нужное сообщение или его часть в буфер.
Начинаем новое сообщение с символа >, мы в цитате.
Вставляем из буфера цитату.
Жмем Enter 2 раза, чтобы выйти из цитаты и написать свое.

Определяем точное время с учетом часового пояса и летнего/зимнего времени

Ниже пример для средне европейского времени.

Calendar c = Calendar.getInstance();
boolean isSummer = TimeZone.getTimeZone(«ECT»).inDaylightTime(c.getTime());
if (isSummer) {
//Summer time
c.add(Calendar.MINUTE, -60);
} else {
//Winter time
c.add(Calendar.MINUTE, -120);
}

Обратите внимание, здесь не используется устаревший класс Date().

Полезные программы

Список программ из обсуждения в интернете. Без привязки к платформе (ОС), хотя кое где это может быть указано. Короче просто список программ, которыми пользуется народ. Каждый абзац — это предпочтения отдельного пользователя.

7-Zip
Anki
Audacity
Calibre
LibreOffice
Notepad++
qBittorrent
SMPlayer
WinDJView
youtube-dl

TechStudio, WinShell. STDU Viewer, Foxit Reader, PicPick, VLC MEdia player, Gaaiho Reader, Adobe Digital Edition, Semagic, TeamViewer.

Sequoia View
Advanced Jpeg Compressor
LightShot
MouseImp
PuntoSwitcher

mp3DirectCut, IrfanView, WinSCP, Renamer, freac, FAR (Find And Replace), 1by1.

Stereophotomaker
FastStone
FreeFileSync
VLC player
Advanced File Renamer
Double Killer
Remove Empty Directories
Hugin Panorama Stitcher
Foxit PDF reader
Revo Uninstaller

Belarc Advisor
Camera utilities (RAW converters according to camera maker) — они, как правило, бесплатны
Comodo Internet Security
Dropbox
FBReader
Chrome
Firefox 55.0.2 (последняя версия, которая ещё работает с DownThemAll plugin)
MP3Tag
Opera
Quick Time
Skype

mobaxterm (это сильно болше чем одна программа, конечно)

7-zip
Calibre
Libre office
WinDJView
WinSCP
PuTTY
PDFsam
MiKTeX (это много программ:)
Ghostscript
VLC media player

Ну и очевидное: Acroread плюс парочка браузеров.

iSpring 8 Free Cam — экранная камера, мышка с маркером.
IrfanView — просмотр графики, аудио, видео.
OpenOffice — бесплатный аналог Ворда, на общей основе из огромной библиотеки плагинов собирается твоя личная удобная конфигурация.
Advego Plagiatus — поиск текста в инете, с любой степенью повторяемости.
WavePad Sound Editor.
Reg Organizer

Кроме многих уже упомянутых:
AnyDesk
CuneiForm Open OCR
Daum Potplayer
Stellarium

Рекомендую MediaHuman для скачивания mp3 с youtube.
VLC media player, конечно, а как же без него.
Foxit Reader для pdf
FormatFactory резать большие видео на куски
Evernote — записная книжка, которую можно share between comp and phone

Ditto clipboard manager

7-Zip
Audacity
CppCheck
ZCPUID
DjVuLibre DjView
ECW Calculator
FAR
Foxit Reader
Git
Chrome
FireFox
MuseScore
MinGW
Notepad++
VirtualBox
Python
DiffMerge
TeraTerm
VLC
WinAmp
WinDirStat
XnView

Chrome
Far
Vim
Git
WinDirStat
TaskSwitchXp
Notepad++
StduViewer
TotalCommander
autoruns.exe
autorunsc.exe
ColorTool.exe
ctags.exe
curl.exe
EditPadLite7.exe
egrep.exe
fgrep.exe
hiew32demo.exe
HxD.exe
iconv.exe
jq.exe
md5sums.exe
nmake.exe
PathEd.exe
procexp.exe
procexp64.exe
putty.exe
sed.exe
tidy.exe
wgrep.exe
youtube-dl.exe

chocolatey
windows terminal
powershell-core
cmake
ninja
GCC (tdm-gcc)
git
rclone
rsync
vim
miktex
lyx
lilypond
musescore
tightvnc
python
autohotkey
everything
launchy

Double Commander, Captura, CPUID HWMonitor, Daemon Tools Lite, Filezilla, uTorrent, Viber, OpenServer, DB Browser, StarUML, Android Studio, DesignSpark PCB, Segger Embedded Studio for ARM, STM32Cube, Lazarus, CoDeSys, DipTrace, Firebird, IAR EW for ARM, MPLAB X IDE, Maria DB, TightVNC

Macrium Reflect
Classic Shell
CloneSpy
WinDirTree
Allways Sync
ShotCut
VLC
Picasa
GIMP
Tor
Foxit
VeraCrypt

под Линуксом список схож, исключая системные вещи и мелкие утилиты
Libreoffice
Wireshark
Vlc
Ffmpeg
Youtube-dl
Gimp
Smplayer
Audacity
Texlive
zoom
Skype
Virtualbox
Backuppc
masterpdfeditor

Chocolatey
Conemu+far
Irfanview
Handbrake
Windirstat
VLC
Transmissionremotegui
Cpuz
Wget
Linqpad
Deluge
Putty
Curl
Greenshot
Fiddler
Lockhunter
Rufus

Команды терминала по Английски

Как нейтивы произносят wget, curl, su, sudo, mkdir, apt-get, yum?

wget -> дабл–ю–гет
su -> зависит, и эс–ю и су
sudo -> судоу (приблизительно, русскими буквами звук не совсем передается)
mkdir -> обычно мейк дир
apt-get -> сам не пользуюсь, но в принципе эпт–гет
yum -> ям
curl точно произносят как кё[р]л