Oracle

Oracle workaround

Дублирование sequence

Caused by: java.sql.SQLSyntaxErrorException: ORA-00955: name is already used by an existing object

Удаление sequence:

DROP SEQUENCE ids_sequence;

Закончился срок действия пароля

ORA-28001: the password has expired
SELECT * FROM dba_profiles;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
SELECT username, account_status FROM dba_users WHERE ACCOUNT_STATUS LIKE '%EXPIRED%';
ALTER USER "SYSTEM" IDENTIFIED BY "SYSTEM"; 
ALTER USER "SYSTEM" ACCOUNT UNLOCK;
Читать...

Разрешение отображения во фрейме при работе с яндекс-метрикой

  • 2017-02-19

При просмотре firefox'ом данных с вебвизора плагин uBlock может заблокировать отображение сайта во фрейме, с сообщением: Установлен запрет на отображение страницы во фрейме

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

  • mc.yandex.ru
  • webvisor.com
  • metrika.yandex.ru

Находится он по адресу: Add-ons -> uBlock -> Preferences -> Dashboard -> Whitelist

Читать...

Добавление агрегатных функций в postgresql

К сожалению в стандарте SQL нет возможности посчитать медиану. Для добавление агрегатных функций в postgresql есть любопытное расширение quantile. Для установки нужен только pgxn client. У меня его не оказалось, поэтому сначала поставим этот клиент:

sudo aptitude install pgxnclient 
Читать...

Docker

Работа с образами

Установка образа

docker pull <IMAGE_NAME>
docker pull wnameless/oracle-xe-11g #example

Просмотр всех образов:

docker images

Удаление образа:

docker rmi <IMAGE_NAME>

Работа с контенерами

Просмотр всех контейнеров:

docker ps -a

Запуск:

docker run <IMAGE_NAME>
docker run -d --shm-size=2g -p 49160:22 -p 49161:1521 wnameless/oracle-xe-11g #example
  • -d — запуск контейнера в фоновом режиме, поумолчанию false
  • --shm-size — размер /dev/shm/, g -- размер в гигабайтах
  • -p — публикация порта (порт хоста:порт контейнера)
  • название образа

Переименование:

docker rename CONTAINER NEW_NAME

Остановка:

docker stop <UUID>
docker stop <NAME>

Удаление:

docker rm <UUID>
docker rm -f <UUID> # остановка и удаление контейнера
Читать...

Настройка сертификата для nginx

Защищать соединение будем с помощью сертификатов от Let's Encrypt. Проект был создан для широкого распространения https среди веб-сайтов. В отличии от коммерческих центров сертификации, Let's Encrypt не требует оплаты, но существует ряд ограничений:

  • сертификат выдаётся на 90 дней
  • нет wildcard (сертификат дают строга на один домер)
  • ограничение 5-7 сертификатов в неделю

Огромный плюс Let's Encrypt в том, что процедура выдачи и обновления сертификатов полностью автоматизирована.

Оглавление:

  1. Установка Let's Encrypt
  2. Настройка Nginx
  3. Настройка Let's Encrypt
  4. Донастройка Nginx
  5. Настройка автообновления
Читать...

WildFly

Работа с базами

Postgresql

Добавление драйвера:

module add --name=org.postgresql --resources=/path/postgresql-9.4.1208.jar --dependencies=javax.api,javax.transaction.api 

Регистрация драйвера:

/subsystem=datasources/jdbc-driver=postgresql:add(driver-name="postgresql",driver-module-name="org.postgresql",driver-class-name=org.postgresql.Driver)

Работа с пользователями

bin/add-user.sh -a {username} {password}
bin/add-user.sh -a admin admin # example

Полезные команды

Запуск консоли:

bin/jboss-cli.sh --connect

Просмотр зарегистрированных драйверов:

/subsystem=datasources:installed-drivers-list

Просмотр datasources:

/subsystem=datasources:read-resource(recursive=true)

Выход:

quit
Читать...

Установка и настройка postgresql под ubuntu 16.04

Добавление репозитория

Необязательно, но зато будет последняя версия Подробнее: https://www.postgresql.org/download/linux/ubuntu

sudo bash -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' >> /etc/apt/sources.list.d/pgdg.list"
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
  sudo apt-key add -
sudo apt-get update 

Установка

sudo apt-get install -y postgresql postgresql-client libpq-dev pgadmin3
Читать...

Ethernet over USB

Протокол для работы сети через usb -- rndis

Для работы с маками есть вот такая штука: https://github.com/jwise/HoRNDIS

Читать...

Генератор случайных чисел

Линейный конгруэнтный генератор

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

$$X_{n+1} = (a X_n + c)~~\%~~m,$$ где $m$ — количество значений из которых формируется последовательность $(2 \leqslant m)$, $\%$ — остаток от деления, $a$ — множитель $(0 \leqslant a < m)$, $c$ — приращение $(0 \leqslant c < m)$, $X_{0}$ — начальное значение $(0 \leqslant X_{0} < m)$.

Пример использования

long seed = 1L;
long a = 25214903917L;
long c = 11L;
long m = (long) Math.pow(2, 48);
Stream<Long> stream = Stream.iterate(seed, x -> (a*x + c) % m);
stream.limit(11).skip(1).forEach(System.out::println);

Первые 10 чисел:

25214903928
206026503483683
245470556921330
105707381795861
-57898044054788
102497929776471
-194212777388010
266094224901481
-237412980546624
-133636318119733
Читать...

Полезные приёмы работы с Postgresql

Группировка по месяцам

SELECT extract(month from t.created_at) as m, extract(year from t.created_at) as y, ...
FROM sometable t
group by y, m
order by y, m

Данные за последний год, не учитывая день

select * 
from sometable
where created_at >= (date_trunc('month', CURRENT_DATE) - INTERVAL '1 year')

Активация hstore

Активировать расширение можно только через супер пользователя

sudo -u postgres psql -d template1 # Заходим в консоль
CREATE EXTENSION IF NOT EXISTS "hstore";
\q
Просмотр открытых коннектов
SELECT * FROM pg_stat_activity
Читать...

Комбинаторика

Основые формулы и обозначения

$K$-сочетания без повторений

$ C^k_n = \frac{A^k_n}{k!} = \frac{n!}{k!(n-k)!} $

Произносится как "$C$ из $ n $ по $k$", иностранное обозначение как $\begin{pmatrix} n \\ k \end{pmatrix}$ "n choose k"

$K$-размещения без повторений

$ A^k_n=n(n-1)\cdots(n-k+1)=\frac{n!}{(n-k)!} $

"$A$ из $ n $ по $k$"

$K$-сочетания с повторениями

$ \overline{C^k_n} = C^k_{n+k-1} $

"$C$ из $ n $ по $k$ с чертой"

$K$-размещения с повторениями

$ \overline{A^k_n}=n^k $

"$A$ из $ n $ по $k$ с чертой"

Бином Ньютона

$(x+y)^n = C^0_n x^n y^0 + C^1_{n-1} x^{n-1} y^1 + \dots + C^n_n x^0 y^n $

Тождества с участием биномиальных коэффициентов

  1. $ C^k_n = C^{n-k}_n $
  2. $ C^k_n = C^k_{n-1} + C^{k+1}_{n-1} $
  3. $ C^0_n + C^1_n + \dots + C^n_n = 2^n $
  4. $ (C^0_n)^2 + (C^1_n)^2 + \dots + (C^n_n)^2 = C^n_{2n} $
  5. $ C^{n-1}_{n+m-1} + C^{n-1}_{n+m-2} + \dots + C^{n-1}_{n-1} = C^{n-1}_{n+m} $
  6. $ C^0_n - C^1_n + C^2_n + \dots + (-1)^n(C^n_n) = \begin{cases} 1, & если & n=0 \
    0, & если & n \ge 0 \end{cases} $

Перестановки

$ P(n_1, ..., n_k) = \frac{n!}{n_1! \cdot ... \cdot n_k!} $

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

Полиномиальная формула в общем виде

$$ (x_1 + x_2 + ... + x_k)^n = \sum_{(n_1,...,n_k): n_i \ge 0, n_1+...n_k=n} P(n_1, ... , n_k) x_1^{n_1} , ... , x_k^{n_k} $$

Формула включений и исключений

$$ N(\alpha_{1}^{'},...,\alpha_{n}^{'}) = N - N(\alpha_{1}) - ... - N(\alpha_{n}) + N(\alpha_{1},\alpha_{2}) + ... + N(\alpha_{n-1},\alpha_{n}) + ... + (-1)^n N(\alpha_{1},...,\alpha_{n}) $$

$ \alpha $ свойство $ \alpha^{'} $ исключающее свойство $ N(\alpha_{n-1},\alpha_{n}) = C_n^2 $

$$ \sum_{k=0}^{n} (-1)^k C_n^k (n-k)^m = 0 $$

Читать...

При невозможности запуска виртуальной машины

sudo /usr/lib/virtualbox/vboxdrv.sh setup
Читать...

Установка rails приложения с нуля на ubuntu

В этой заметке я рассмотрю полный цикл развертывания rails приложения на ubuntu-server. Использованный стэк технологий:

  • Ubuntu server
  • Postgresql
  • Nginx
  • RVM
  • Puma
  • Ruby
  • Git
  • Sidekiq
  • Redis
  • Rails
  • Capistrano
Читать...

Переход с Posgresql 9.4 на 9.5

Правим конфиги в соответствии с предыдущей версией:

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

sudo nano --syntax=sh /etc/postgresql/9.5/main/pg_hba.conf
sudo nano --syntax=sh /etc/postgresql/9.5/main/postgresql.conf

 

Останавливаем сервисы:

sudo service postgresql stop

 

Дропаем новый кластер:

sudo pg_dropcluster 9.5 main

 

Обновляем предыдущий:

sudo pg_upgradecluster 9.4 main

 

Дропаем предыдущий:

sudo pg_dropcluster 9.4 main

 

Проверяем:

pg_lsclusters

 

Теперь удалим ненужные пакеты:

dpkg --get-selections | grep postgres

 

Удаляем пакеты с предыдущей версией:

sudo aptitude purge postgresql-9.4 postgresql-client-9.4 postgresql-contrib-9.4 postgresql-server-dev-9.4
Читать...

Полезные команды Linux

Управление сервисами

service postgresql stop 9.5 — управление ПО с указанием версии

Скачивание файлов

wget "http://domain.com" — скачивание файла в текущую директорию wget -O /home/user/ "http://domain.com" — скачивание файла в определенную директорию

Установка пакетов

sudo dpkg -i DEB_PACKAGE — установка пакета

Поиск строки в файлах

grep -rnw '/path/to/somewhere/' -e "pattern"

Мини-скрипты

Поиск ид

kill -9 "$(jps | grep -i jboss | egrep -o '[0-9]+')"
Читать...

Unknown-property JavaFX css в Eclipse

При редактировании css в Eclipse для JavaFX проекта у меня возникали предупреждения такого типа:

Unknown-property "-fx-background-color"
...

Для исправления нужно подключить JavaFX SDK: Идём в своство проекта, затем Java Build Path -> Libraries -> Add Library... -> JavaFX SDK. После пересборки проекта все предупреждания должны пропасть.

Читать...

Обновление postgesql и ошибка в рельсах

При обновление postgresql с 9.3 до 9.5 получил вот такую ошибку при старте рельс-приложений:

PG::ConnectionBad (could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
):

Как оказалось, при установки gem'a pg, происходит запоминание сокета, по которому идёт коннект. Поэтому что поправить, можно либо переустановить gem:

$ gem uninstall pg
$ cd my-rails-app/
$ bundle install

Либо, поправить номер порта на требуемый в /etc/postgresql/9.5/main/postgresql.conf.

Читать...

Проблема с сохранением новой модели в rails

Столкнулся на ровном месте с очередной магией рельсов, модель упорно отказывалась сохраняться с ошибкой ActiveModel::ForbiddenAttributesError.

Читать...

Разделение выполнения Javascript по контроллерам

По идеалогии rails грузит весь код javascript один раз при первом обращении к сайту и потом лишь обновляет содержимое <body>. Вот один из самых удачных способов на мой взляд разделить выполнение javascript по котроллерам и даже экшенам.

Читать...

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

Комбинация | Описание --- | --- Ctrl + Alt + T | Открытие терминала

Читать...

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

Комбинация | Описание --- | --- Ctrl + Left mouse | Открытие вкладки в новом окне Shift + Del | Удаление адреса из истории Ctrl + PageUp | Предыдущая вкладка Ctrl + PageDown | Следующая вкладка

Читать...

Установка gradle под ubuntu

Загрузка

mkdir -p ~/opt/packages/gradle && cd $_
wget https://services.gradle.org/distributions/gradle-2.3-bin.zip
unzip gradle-2.3-bin.zip

Установка

Создаём ссылку для возможности безболезненного обновления в будущем.

ln -s ~/opt/packages/gradle/gradle-2.3/ ~/opt/gradle

Открываем профайл для редактирования

gedit ~/.profile

И записываем переменную окружения

# Gradle
if [ -d "$HOME/opt/gradle" ]; then
    export GRADLE_HOME="$HOME/opt/gradle"
    PATH="$PATH:$GRADLE_HOME/bin"
fi

Проверяем

source ~/.profile
which gradle
gradle -version
Читать...

Полезные команды для работы с Git

Переход в другую ветку

git checkout branch

Переход в новую ветку

git checkout -b new_branch

Удаление существующей ветки

git branch -d the_local_branch git push origin :the_remote_branch

Читать...

Всего: 29