Oracle Cloud Day 2017 Moscow

В Москве 26 октября прошла конференция Oracle Cloud Day 2017.

В залах Raddison-славянская в этот день много говорилось о новейших, прежде всего облачных, технологиях в области хранения, обработки и анализа данных. Можно было послушать выступления как консультантов Oracle относительно новых продуктов компании, так и представителей компаний-клиентов.

Наиболее интересными мне показались примеры внедрения, осуществленных компаниями Ашан и Мегафон. Кирилл Бойко, представитель Ашана, рассказал об использовании on-premis решения exadata, и отметил чрезвычайно высокую скорость работы этого решения. Мария Трофимова из Мегафона поделилась опытом интеграции ЦОД из восьми филиалов в одном месте. Также она отметила потенциал использования технологии Oracle Big Data SQL, когда к традиционной реляционной БД добавляется Hadoop кластер, к которому также идет обращение при отправке SQL-запросов на сервер.

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

Второе – Stored Procedure Multilingual Engine. Новый движок для разных языков программирования, на основе GraalVM. Поддерживается JavaScript, ожидается поддержка Python, Ruby, R. На слайдах показали пример компиляции процедуры на JS, которая печатает ‘Hello’ и Trace. Впоследствии эту процедуру можно вызывать уже непосредственно из SQL-Plus. Так что, принимая во внимание стабильно растущую популярность JavaScript, этой технологии определенно стоит уделить внимание. Хотя хоронить PL-SQL, конечно, не стоит.

И еще один очень хороший анонс был сделан в конце конференции. Бесплатная версия базы данных Oracle XE также получит обновление, но не до предыдущей версии 12c, как оно обычно происходило, а сразу до актуальной версии 18с. Релиз обещают чуть позже в течение 2018 года, и в дистрибутив будет включено множество раньше недоступного для бесплатной версии функционала. В частности упомянули о партиционировании (хотя при ограничении размера табличного пространства в 12 Gb говорить о значительной пользе партиционирования не приходится).

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

Allumer le feu

Johnny Hallyday — Allumer le feu (Разжечь пламя)

Tourner le temps à l’orage
Revenir à l’état sauvage
Forcer les portes, les barrages
Sortir le loup de sa cage
Sentir le vent qui se déchaîne
Battre le sang dans nos veines
Monter le son des guitares
Et le bruit des motos qui démarrent.

Il suffira d’une étincelle
D’un rien, d’un geste
Il suffira d’une étincelle,
Et d’un mot d’amour

Pour

Allumer le feu
Allumer le feu
Et faire danser les diables et les dieux
Allumer le feu
Allumer le feu
Et voir grandir la flamme dans vos yeux

Stanford Algorithms

Блуждая по просторам сети наткнулся на замечательный блог http://larrr.com/

Автор написала множество статей о том, как проходить собеседования в топ IT компании. Больше всего мне понравился собранный в одном файле InterviewPreparationGuide http://larrr.com/hochu-rabotat-v-google-manual-gotov/
Это действительно тот роудмап для программиста мечтающего устроится на работу в топ компанию. Взял его на вооружение и буду применять в своем обучении.

Поэтому, будем основательно осваивать новую профессию (насколько это вообще с программированием возможно). Начал я с алгоритмов, конкретно со стэнфордских курсов на coursera.org. С тех пор как я тут был последний раз, этот крупнейший MOOC портал значительно преобразился. Большинство курсов теперь платные (раньше учеба была бесплатной, купить можно было только подтверждающий сертификат), отдельных курсов практически не осталось – теперь все входит в состав специализаций. Еще одно значительное изменение – изменилась периодичность. Если 4-5 лет назад каждый курс был как праздник, сессии стартовали 1-2 раза в год, то сейчас все на рельсах, присоединиться можно в любой момент, форум де-факто мертвый. Представьте, если бы в ВУЗ можно было бы поступить в любой момент года? Скучно же было бы. Ну и тут что-то похожее.

Итак, специализация Algorithms, состоит из 4-х курсов по 4 недели. Уже прошел два курса из четырех за 5 недель. Изучил асимптотическую сложность, мастер метод, разобрал основные алгоритмы: Merge sort, Quick sort, BFS, DFS. Познакомился со структурами данных Heap, Tree, HashTable, Bloom Filter. Материал достаточно сложный, приходится много читать дополнительно. Не всегда до конца понятны доказательства теорем, по математике я проседаю прилично. Задания в конце каждой недели тоже не простые, но со второй попытки проходятся на 100%. Финальные экзамены оказались совсем простыми, потому что вопросы только по материалам из видео лекций.

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

Поделиться своим решением задач в репозитории – отличный повод завести аккаунт на github, не так ли? Поэтому, если кто-то также проходит курс и столкнулся с проблемой в решении задачек на алгоритмы https://github.com/DKARAGODIN/StanfordAlgorithms

Ну и как не выложить сертификаты? Попотеть ради них таки пришлось.

Установка Oracle XE 11g на Ubuntu 16.04LTS

По работе столкнулся с необходимостью ознакомится с основными командами на Linux. В процессе изучения bash решил на домашней машине переехать с базой данных и с IDE на Ubuntu. С установкой самой операционной системы никаких проблем не возникает, вопросы начали появляться, когда настала очередь базы данных.

На домашних стендах я использую Oracle XE 11g . Установка базы данных на Linux не настолько простой и приятный процесс, как на Windows. Подробную инструкцию для версии Ubuntu 12.04LTS я нашел здесь и выполнил все операции пошагово. Не смотря на то что некоторые параметры не отображались как задумано в инструкции (например fs.file-max), БД установилась. Также у меня не возникло необходимости увеличивать размер swap.

Решил сохранить инструкцию у себя:

Скачать Oracle XE 11g можно по ссылке (требует бесплатного аккаунта)
http://www.oracle.com/technetwork/products/express-edition/downloads/index.html

Распаковываем скачанный файл:

unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip

Производим дополнительную установку:

sudo apt-get install alien libaio1 unixodbc vim

Установщик Oracle XE 11g от Red Hat зависит от файла /sbin/chkconfig, который не используется в Ubuntu. Пакет chkconfig доступный для текущей версии Ubuntu вызывает ошибки и может быть небезопасно использовать. Поэтому нужно будет создать специальный chkconfig скрипт, который поможет обойти эту проблему и позволит установить Oracle XE.

sudo vi /sbin/chkconfig

Вставляем следующий текст в файл:

#!/bin/bash
# Oracle 11gR2 XE installer chkconfig hack for Ubuntu
file=/etc/init.d/oracle-xe
if [[ ! `tail -n1 $file | grep INIT` ]]; then
echo >> $file
echo '### BEGIN INIT INFO' >> $file
echo '# Provides: OracleXE' >> $file
echo '# Required-Start: $remote_fs $syslog' >> $file
echo '# Required-Stop: $remote_fs $syslog' >> $file
echo '# Default-Start: 2 3 4 5' >> $file
echo '# Default-Stop: 0 1 6' >> $file
echo '# Short-Description: Oracle 11g Express Edition' >> $file
echo '### END INIT INFO' >> $file
fi
update-rc.d oracle-xe defaults 80 01
#EOF

Чтобы выйти с сохранением из редактора VI нужно набрать :wq

Добавляем необходимые привилегии на запуск:

chmod 755 /sbin/chkconfig

(у меня сработало только sudo chmod 755 /sbin/chkconfig)

Для установки Oracle XE необходимы следующие параметры ядра:

sudo vi /etc/sysctl.d/60-oracle.conf 

Вставляем следующий текст в файл:

# Oracle 11g XE kernel parameters
fs.file-max=6815744
net.ipv4.ip_local_port_range=9000 65000
kernel.sem=250 32000 100 128
kernel.shmmax=536870912 

Сохраняем.
Загружаем новые параметры ядра:

sudo service procps start 

Проверяем (у меня правильно начало отображаться только после перезагрузки, тем не установка завершилась нормально)

sudo sysctl -q fs.file-max
 -> fs.file-max = 6815744

Некоторые необходимые изменения:

sudo ln -s /usr/bin/awk /bin/awk
sudo mkdir -p /var/lock/subsys
sudo touch /var/lock/subsys/listener 

Конвертируем red-hat ( rpm ) пакет в Ubuntu-пакет (может занять некоторое время) :

sudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm

Дальше распаковываем Ubuntu-пакет:

sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb 

Выполняем следующие команды, чтобы избежать MEMORY TARGET ошибки (ORA-00845: MEMORY_TARGET) :

sudo rm -rf /dev/shm
sudo mkdir /dev/shm
sudo mount -t tmpfs shmfs -o size=2048m /dev/shm

(я оставил 2048, хотя размер оперативной памяти для виртуалки у меня 3GB)

Далее создаем файл с именем S01shm_load в папке /etc/rc2.d :

sudo vi /etc/rc2.d/S01shm_load

Сохраняем в файл следующий текст:

#!/bin/sh
case "$1" in
start) mkdir /var/lock/subsys 2>/dev/null
touch /var/lock/subsys/listener
rm /dev/shm 2>/dev/null
mkdir /dev/shm 2>/dev/null
mount -t tmpfs shmfs -o size=2048m /dev/shm ;;
*) echo error
exit 1 ;;
esac 

Сохраняем файл и даем привилегии

chmod 755 /etc/rc2.d/S01shm_load

Так вы обеспечите себе работающую БД при каждом запуске операционной системы.
Инициализируем Oracle и следуем подсказкам:

 sudo /etc/init.d/oracle-xe configure

Также полезно добавить следующие строки в конец файла /etc/bash.bashrc :

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_SID=XE
export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export ORACLE_BASE=/u01/app/oracle
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

Выполняем чтобы применить эти настройки:

source /etc/bash.bashrc

Запускаем БД:

sudo service oracle-xe start

Все, можно работать.

Un profil pour deux


Il n’y a pas d’âge pour séduire

Новая комедия с Пьером Ришаром, «Мистер Штайн идет в онлайн». Интересный трейлер, который хоть и раскрывает сразу весь сюжет, в тоже время обещает смешную французскую комедию. В реальности, все несколько хуже.

Итак, старик Пьер после смерти своей жены никак не может вернутся к нормальной жизни. Доживает век в своей старой, темной от глухих занавесок, квартире. Пьет.
Менять что-то в своей жизни не планирует, да и не понимает зачем. В один день, дочь Пьера решает как-нибудь развлечь отца, дарит Макбук и просит знакомого помочь деду разобраться в компьютере. Главный герой – учитель — совсем никакой, уже даже забыл, как его зовут. Он бесхарактерный, безработный, неопрятный, абсолютно непонятно как с таким человеком может случится любовное приключение. Тем не менее, Пьер уговаривает своего учителя поехать на свидание в Брюссель вместо него.

Моя главная претензия к фильму – он не смешной. Здесь три четверти действие абсолютно не генерирует никаких эмоций. Да, Пьер отлично играет, он действительно велик и наблюдать, как старик меняется по мере зарождения любви в его сердце, сплошное удовольствие. Но его учитель это катастрофа — ноль эмоций. Все бы ничего, если это было бы смешно, комедия все таки. Но нет, в фильме только одна действительно смешная сцена, в остальном — скукота.

В тоже время, насколько главный герой не был уныл, его история, по крайней мере меня, заставляет задуматься. Его жизнь — сплошные унижения. Люди вокруг его видят как ничтожество. Никто его не поддерживает, он абсолютно один. При этом герой достаточно способен, руки откуда надо растут, но отсутствие одобрения и понимания со стороны близких доводит его до жалкого состояния. Да, любовная история его несколько преобразила, вопрос, надолго ли?

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

This is not the end

Друзья, я знаю вы стали чаще посещать мой сайт, знаю что и количество посетителей прилично выросло. К сожалению (скорее к лучшему), но в последнее время у меня столько поездок, запланированных встреч, собственных дел, что на этот блог совсем ничего не остается. Надеюсь скоро ритм жизни немного успокоится и можно будет снова написать пару постов dans mon coin de toile.

Поэтому, не расходитесь, приглашаю в гости чуть-чуть позже.

Paris pieds nus

«Париж на босу ногу» (дословный перевод с французского) — четвертая картина французской пары Фионы Гордон и Доминика Абеля. Это не типичная комедия, действие скорее смахивает на цирковую клоунаду в декорациях Парижа, чем на полнометражный фильм. Сначала это немного напрягает, но после минуты двадцатой уже привыкаешь и можно начинать получать удовольствие от происходящего на экране.

Канадская библиотекарша Фиона получает письмо с просьбой о помощи от пожилой тети Марты, живущей в Париже. Главная героиня отправляется в путешествие, которое обернется для нее большим и незабываемым приключением. Например, она знакомится с обаятельным бродягой Домиником, от которого очень трудно избавится. Но он здорово помогает Фионе в поисках пропавшей Марты, а как итог она влюбляется в него в процессе совместного покорения Эйфелевой башни.

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

Фильм, действительно похож на клоунаду. Акцент сделан на движениях актеров, взаимодействии с окружающими декорациями, предметами. Это такая французская пантомима на широком экране.

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

Во французской прессе к фильму, в целом, отнеслись тепло, но без восторгов. Средние оценки примерно такие же, как и на Imdb. Я тоже придерживаюсь оценки 3 из 5. Не люблю клоунаду.

Transition curve

В процессе изучения языков, так же как и в любом другом процессе получение новых навыков, можно выделить несколько стадий. Переход от одной стадии к другой называется на английском transition, а графически все это дело изображается в виде transition curve. Если поискать у яндекса картинки на эту тему, то нам наряду с «кривыми сопряжения», покажут кучу различных навороченных и не очень изображений всех стадий процесса transition. Слишком детализированные картинки мне кажутся избыточными, а вот эта в самый раз.

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

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

Первого подъема хватает на месяц занятий. Потом начинается рутина и зубрежка. В языке оказывается очень много нюансов, о которых приходится постоянно помнить. Падежи, лица, род, времена, наклонения, причастия и деепричастия – это небольшой набор страшных грамматических конструкций из которых состоит язык. Ты начинаешь понимать, что для того чтобы иметь возможность говорить на языке все это придется выучить. Это значит, что ты перешел к стадии 2.

Стадия 2 – Обоснованный пессимизм. Магия языка куда-то пропала. Каждое предложение теперь видится не как красивое заклинание, которое хочется изучить, но как набор частей речи, которые связаны по определенному правилу. Да, ты понимаешь, как построить вопросительное предложение, но это требует значительных мозговых усилий. Приходится думать над окончаниями, артиклями, не говоря о том, что словарный запас по-прежнему скуден.

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

Стадия 3 – Кризис. У меня случались кризисы, когда я изучал немецкий, турецкий, французский. Особенно это ярко выражалось с французским. О, как я его ненавидел. Кто мог придумать язык, в котором по 5 букв не читается? А subjunctive? Это такое наклонение, которое в русском вообще не существует.

На этом этапе самое главное – продолжать. Show up. Каждый день ты занимаешься. Каждый день ты заставляешь себя. Это тяжело, именно на этом этапе многие сливаются. Цель уже не кажется такой заманчивой, энтузиазм куда-то делся, а работать еще очень и очень много. Но надо.

Упорным трудом кризис можно преодолеть, и тогда приходит легкость. Наступает стадия 5 – Обоснованный оптимизм. Ты уже знаешь все грамматику, и даже третий тип Conditional не вызывает паники. Речь на общие темы доведена до автоматизма, ты просто не думаешь о том, какое время использовать Present Perfect или Past Simple. Ты говоришь свободно, хотя и подбираешь удобные слова.

На этом этапе интерес просыпается заново, и ты начинаешь видеть красоту языка по-новому. Продолжать занятия на данном этапе одно удовольствие, поскольку доступны абсолютно любые материалы. Ты бродишь по сайтам, знакомишься с иностранцами, а случайно услышанная на улице на языке фраза или песня приводят в восторг. Хотя скорость получения новых знаний уже заметно убавилась, поскольку всю основу уже выучили, каждое новое открытие становится особенным. Как вам, например, такое слово: intrinsèquement (по существу, в своей сущности)?

Многим на этом этапе можно считать свою цель достигнутой. Кто-то скажет, что выучить язык невозможно, а я говорю, что выучил — значит можешь общаться с иностранцем на общие темы. Дальше можно углубляться, если есть желание сдать экзамен, или вывести знания на новый уровень. В любом случае, здесь кризисы уже случаются редко, и самое сложное уже позади.

Those Were the Days

В мире музыки бывают удивительные истории когда хиты переводятся переиздаются и обретают новую жизнь. На страницах своего блога я уже рассказывал о песне «Comme d’habitude» Клода Франсуа или «My way» в исполнении Синатры.

Сегодня предлагаю обратить внимание на песню «Those Were the Days» в исполнении Мэри Хопкин.

Мотив моментально узнается, не так ли? Оригинал называется «Дорогой длинною», русский романс, написанный Борисом Фоминым и Константином Подревским в 1924 году. Он очень скоро получил необыкновенную любовь и стал весьма популярен среди русских эмигрантов. Причинами этого была душевность стихов и мелодии, а также, как казалось эмигрантам, явный антисоветский подтекст слов романса. Вторую жизнь романс получил в 60-ых, тогда его исполняли многие отечественные и зарубежные певцы, также было выпущено множество переводов на различные европейские и азиатские языки.

«Those Were the Days»

Американский музыкант Юджин Раскин, родители которого были выходцами из России, написал новые английские слова на несколько измененную мелодию песни «Дорогой длинною» и записал её в 1962 году под названием «Those Were the Days». В 1964 году выступление Раскина в лондонском клубе «Blue Angel» услышал Пол Маккартни, который четыре года спустя выбрал «Those Were the Days» для дебютного сингла 18-летней валлийской певицы Мэри Хопкин.

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

Idea 2017.2. Дебаггинг: фильтрация коллекций.

Последнее обновление IDE IntelliJ IDEA 2017.2 содержит отличный инструмент, который поможет избавится от багов в ваших приложениях, содержащих коллекции. Сейчас многие программы обрабатывают значительные объемы информации и в текущим релизе сотрудниками JetBrains в их продукт добавлена возможность фильтрации массивов и коллекций.

Инструмент очень удобный, позволяет находить необходимые нам элементы массивов по содержащимся внутри значениям. Раньше это приходилось делать глазами. Для небольших массивов это не составляет большого труда, но когда у нас объем в тысячи элементов, фильтрация может помочь.

Работает эта штука следующим образом. В программе я создал 2 ArrayList со значениями Integer и String. Запустил программу в режиме дебага. Находим нашу коллекцию, жмем правой кнопкой и в меню выбираем «Filter…». В появившемся поле набираем ключевое слово this. и один из доступных методов. Вот, например, я выбрал все элементы ArrayList содержащего “ww”.

Пример сравнения числовых значений. Выборка элементов больше 50 и меньше 100.

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