Pull to refresh
11
0
Goncharov Ivan @vanuch

User

Send message

Oracle 12c. Новые фичи приносят новые подводные камни

Reading time5 min
Views23K
Всем привет.

Разбирая новые возможности Oracle 12c, то тут, то там сталкиваюсь с подводными камнями, когда не всё работает так, как ожидалось, падает или просто не очевидно. Конечно, это стандартная ситуация когда в первом релизе новой версии много сырого… но, как известно, предупреждён — значит вооружен. Вероятно, кому-то пригодится, чтобы не повторять мои грабли.

Пишу грабли в порядке наступления на них.

PS: edited: добавил в конце баг о котором забыл написать сразу (использование в PL/SQL, SQL-конструкций в WITH которых испоьзован PL/SQL).

Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments19

Превращаем Sublime Text 2 в Notepad++

Reading time19 min
Views196K


Сейчас огромную популярность набирает текстовой редактор Sublime Text 2. Я же в давние времена перешел на Notepad++ и много лет им активно пользовался, радуясь и восхищаясь. И когда стали появляться слухи, что Sublime теснит Notepad++, то решил проверить и попробовать на него перейти. Но, к сожалению, обнаружил, что много фишек, которым мне так нравился Notepad++ (не все идут в исходных настройках) я не вижу, несмотря на обилие новых других интересных возможностей. И было решено попробовать настроить Sublime так, чтобы им можно было пользоваться также, как и Notepad++ (с плагинами), имея попутно возможности Sublime Text 2, коих нет в первом редакторе. И да, Sublime Text 2 настраивался в Windows 7.
Читать дальше →
Total votes 197: ↑168 and ↓29+139
Comments269

Книги для тимлидов и руководителей проектов

Reading time2 min
Views171K
Какими свойствами должен обладать хороший тимлид? Он, несомненно, должен быть технарем, иметь разносторонний опыт, уметь налаживать диалог внутри команды и с начальством, вести дискуссии и принимать решения, брать на себя ответственность, понимать бизнес-процессы, думать как заказчик и владелец бизнеса. Ну и быть немного психологом.

В отечественном IT я часто наблюдаю следующую картину: тимлидом часто становился лучший (?) разработчик из команды (aka 23-летний сеньор). А чтобы стать руководителем проекта (project manager) иногда достаточно просто знать английский и «павэрпойнт» на уровне пользователя. Это реалии отечественного аутсорсинга и с этим нужно как-то жить.

В итоге часто получается как-то так:
Потому что на десять сеньоров по статистике девять тупят.
Читать дальше →
Total votes 84: ↑74 and ↓10+64
Comments53

«Уходя, гасите всё». Принцип построения частично отключаемой квартирной электросети — один из этапов подготовки к созданию «умного дома»

Reading time5 min
Views91K
Всё чаще мне на глаза попадаются статьи от «строителей умных домов», которые в уже готовом доме или квартире создают некую автоматизацию, как правило, касающуюся лишь освещения. При этом, поскольку ремонт уже давно сделан, используются всевозможные обходные пути с избыточной сложностью — беспроводные технологии с кучей приёмопередатчиков, извраты по использованию свободных жил проложенной слаботочной проводки и тому подобные костыли. А на антресолях, за шкафами и под диванами образуются пучки из плат и проводов или, в лучшем случае, отдельноваляющиеся распаечные коробки.

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

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

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

Но делать это каждый раз и лень, и можно забыть, особенно если спешишь или голова чем-то сильно занята. Хочется, чтобы это делалось как минимум централизованно и быстро, одним движением, как максимум — автоматически. Далее я опишу, каким образом я решил задачу минимум.
Читать дальше →
Total votes 48: ↑43 and ↓5+38
Comments174

Книги, которые должен прочитать Java программист: от новичка до профессионала

Reading time4 min
Views649K

Книги, которые должен прочитать Java программист: от новичка до профессионала


[Примечание переводчика: термины градации «профессионализма» оставлены англоязычные в связи с трудностью их адекватного перевода на русский и несовпадением с привычными Junior-Middle-Senior-Lead. Перевод достаточно вольный — если знаний языка хватает, то лучше читать оригинал, как и советует автор. Оба языка для меня не родные, так что про ошибки сообщайте в личку — исправим. Здесь и далее в квадратных скобках примечания переводчика]

Я заметил, что в последние месяцы я рекомендую одни и те же книги как новичкам, так и опытным разработчикам. Поэтому я решил составить список этих книг. Они составили мне неплохую компанию в процессе моего роста от новичка до сегодняшнего уровня (какой-бы он не был :) )
Читать дальше →
Total votes 90: ↑77 and ↓13+64
Comments77

Список команд чата Skype

Reading time6 min
Views691K
...Skype — это дьявольски хитрая программа, написанная бесспорно талантливыми людьми...Крис Касперски

Доброго времени суток!

Skype сейчас я встречаю чаще на компьютерах чем другие IM клиенты, мне он практически заменил icq, вся рабочая переписка ведется в skype, но речь пойдет не о том, что лучше или популярней. Часто бывает так, что участвуешь сразу в нескольких чатах где количество участников превышает 10, что собственно и приводит к тому, что на рабочем столе и в трее постоянно обновляется количество новых сообщений, а также уведомления в виде всплывающих сообщений, а теперь представьте что у вас 3 окна чата с друзьями, 1 с вашим боссом, другой с девушкой — все это в сумме начинает запутывать, отвлекать и порой раздражать. Хотелось бы расставить приоритеты…

Раньше я чаще всего настраивал «политику» уведомлений только через глобальные настройки программы
Случилось так, что я узнал, что в каждом окне чата skype возможно использование команд, например /alertsoff отключит уведомления для конкретного окна чата, соответственно /alertson включит их обратно.
Поискав немного я наткнулся на некое how-to, оказывается у skype чата довольно много текстовых команд, подобие IRC команд. Далее я постарался попробовать все возможные из них на двух имеющихся у меня платформах, как оказалось не все и не везде работает… Прошу под кат.

Читать дальше →
Total votes 186: ↑173 and ↓13+160
Comments79

Как сделать рабочий стол, или аутсорсинг решает

Reading time3 min
Views275K
Хабраюзер любит темы про домашние рабочие места, поэтому покажу и я свое, свежеиспеченное.



Топик отношу к DIY – потому как все здесь сделано для меня, благодаря мне и для меня. БОльшая часть «работ» была отдана профессионалам, и это не потому что я «такой уж рукожопый» (хотя и это присутствует), а потому что я хочу пользоваться вещами, удовлетворяющими моим требованиям. А сделать такие самостоятельно – будет очень долго, нервно, муторно => дорого (да и не факт, что получится).

Собственно говоря, руководствуясь этим правилом в последнем ремонте ничего мною лично и не делалось.☺
Читать дальше →
Total votes 202: ↑167 and ↓35+132
Comments305

Git up и все все все

Reading time2 min
Views26K
Комманда git up (аналог svn up) добавляется так:
git config --global alias.up '!(git add . && git stash && git pull --rebase >&2) | grep -v "No local changes to save" && git stash pop'

git up при надобности ныкает все ещё незакоммиченные изменения в stash, обновляет локальную ветку до свежайшей и восстанавливает локальные изменения назад. В том числе переносит ещё неотправленные локальные коммиты в самый конец, делая историю линейной как в Subversion, т.е. избегая лишних веток и merge-коммитов.
Читать дальше →
Total votes 98: ↑88 and ↓10+78
Comments64

Как из болота вытягивать ITшника или об общении в стрессовых ситуациях

Reading time21 min
Views274K

Неприятности случаются… Неожиданно плохой фидбек, проблемы с заказчиком или коллегами, не повысили зарплату, странные баги, внезапный овертайм или закрытие проекта — подобные события запускают цепочку реактивных реакций:

  • Нет, тут есть ошибка -> сами гады -> а может все не так и плохо -> ппц -> ладно, давай выкручиваться

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

  • Как узнать каждое состояние и предугадать следующее?
  • Как помочь выйти себе и собеседнику из цепочки?
  • Что не делать, чтобы не усугубить ситуацию?
Читать дальше →
Total votes 199: ↑186 and ↓13+173
Comments88

Как распознать кракозябры?

Reading time1 min
Views425K
В комментариях к предыдущему посту про иероглифы сказали, что хорошо бы иметь такую же блок-схему для кракозябр.

Итак, вуаля!


За источник информации была взята статья из вики. В блок-схеме «UTF-16 → CP 866» означает, что исходная кодировка была «UTF-16», а распозналась она как «CP 866».

Как всегда — кликабельно. Исходник в .docx: здесь.
Total votes 429: ↑418 and ↓11+407
Comments64

Заблуждения программистов об именах

Reading time3 min
Views86K
Две недели назад на Хабре публиковался перевод «Заблуждения программистов о времени», который по своей структуре и стилю основан на этом классическом тексте Патрика Макензи, опубликованном два года назад. Поскольку заметка о времени была крайне благоприятно воспринята аудиторией, то, очевидно, имеет смысл перевести и исходную статью об именах и фамилиях.

Джон Грэхем-Камминг (John Graham-Cumming) сегодня жаловался в своём блоге, что компьютерная система, с которой он работал, не приняла его фамилию из-за недопустимых символов. Конечно, там нет недопустимых символов, потому что любой способ, как человек представляет себя, — по определению — является подходящим идентификатором. Джон выразил сильную досаду насчёт данной ситуации, и он имеет полное право, потому что имя — суть нашей индивидуальности, практически по определению.
Читать дальше →
Total votes 94: ↑78 and ↓16+62
Comments223

Диаграммы и графики: осмысляя Тафти

Reading time5 min
Views21K
По работе мне периодически приходится визуализировать численные данные — в виде таблиц, диаграмм или графиков. Из последнего прочитанного по теме наиболее интересной показалась известная книга Тафти The Visual Display of Quantitative Information. Я решил сделать из неё краткие выписки по относящимся к моим задачам вопросам. Ключевое слово здесь — краткие. Максимум полезной информации на минимум текста (даже стиль изложения будет подчёркнуто лапидарным). Дополнительные сведения и собственные мысли буду скрывать под спойлер. Надеюсь, мой конспект будет полезен хабрасообществу; предлагаю также поделиться своими наработками и полезными ссылками.
Читать дальше →
Total votes 43: ↑40 and ↓3+37
Comments24

Триггеры — спасители

Reading time5 min
Views102K
Уже много статей в интернете есть про sql триггеры, но добавлю еще одну с адекватными примерами, что бы закрепить материал для тех, кто «в теме» и что бы лучше понять материал тем, кто только начал постигать «дзен sql». Заодно и создам дискуссию по теме.

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

Читать дальше →
Total votes 38: ↑34 and ↓4+30
Comments183

Репликация из OLTP в OLAP базу данных

Reading time3 min
Views6K
Мой друг Роберт Ходжес на днях опубликовал статью про репликацию из OLTP в OLAP базу данных (а именно, из MySQL в Vertica), которую его компания построила на своем продукте Tungsten. Самое интересное, это преобразование данных, которое происходит в процессе репликации. Подход достаточно общий, и может быть использован и для других систем.

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

Этот подход плохо работает с OLAP-специфичными, и особенно, колонко-ориентированными базами данных, которые хранят данные физически не по строкам, а по колонкам. Такие базы данных оптимизированы на запись, чтение и сортировку больших массивов данных, что типично для аналитических задач, но не на маленькие операции на единичных записях, потому что любая операция затрагивает много колонок, которые физически хранятся в разных файлах (а иногда и разных дисках). Хуже всего обстоит дело с изменением данных. Конечно, все базы данных поддерживают стандарт SQL и оператор UPDATE, но на физическом уровне он, как правило, транслируется в то, что обновляемая запись помечается как удаленная, а вместо нее вставляется измененная копия. Потом, когда-нибудь, «сборщик мусора» перетрясет таблицу и удаленные записи удалятся навсегда. Помимо плохой эффективности, отсюда следует, что частые удаления и обновления приводят к «засорению» базы данных, что снижает ее производительность в том числе и на чтение.

Роберт предложил, как мне кажется, новый, хотя и естественный подход к решению проблемы репликации данных для таких случаев. Бинарный лог преобразуется в последовательность частично упорядоченных множеств операций типа DELETE/INSERT для каждой таблицы, причем, так слово «множество» подразумевает, что «одинаковые» в некотором смысле операции достаточно сделать один раз. Поясню чуть подробнее.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments8

+10 к интеллекту

Reading time9 min
Views165K
MM_mindmap_title

Так или иначе, практически каждый из нас использовал в своей жизни технику интеллект–карт или Mind Mapping. Это всего лишь простая радиальная схема, но с правильным подходом ее можно превратить в мощный инструмент аналитики и синтеза информации, который всегда под рукой и достаточно прост в использовании. И что самое интересное, освоение техники настолько естественно для нашего мозга, что занимает всего лишь несколько минут…
Читать дальше →
Total votes 90: ↑75 and ↓15+60
Comments49

Искусство публичных выступлений

Reading time9 min
Views105K
Эта статья открывает серию статей — если окажется, что Хабраколлеги сочтут ее интересной, ибо первое правило публичных выступлений гласит: рассказывай людям о том, что им интересно!

Если вы раньше не выступали на публике или боитесь это делать — вам под кат. Если вы считаете себя опытным докладчиком, для вас будет вторая статья серии.

В сегодняшней статье я пишу о том, как выступать, и очень мало пишу о содержании доклада. Если из комментариев станет понятно, что надо еще рассказать о композиции доклада (постановка задачи -> варианты решений -> процесс выбора -> выбранное решение -> результат) или об основах публичной речи (не «экать», не «мыкать», не говорить через слово «т-скыть» и не заканчивать фразы ненормативными междометиями) — расскажу в следующий раз.

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

Читать дальше →
Total votes 235: ↑223 and ↓12+211
Comments59

Yet another cool story about bash prompt

Reading time10 min
Views37K
Я программист. По крайней мере так написано в трудовой книжке. Почти всё своё рабочее время я провожу в консоли и текстовом редакторе. Мне очень нравится bash. Почти год я жил в zsh, прислушавшись к советам своих многочисленных коллег и знакомых, но в итоге я вернулся в bash и ни капельки об этом не жалею.



Zsh красив, приятен, чертовски функционален, но, признаюсь честно, я не смог совладать со всеми его многочисленными настройками. Я хочу работать, а не бороться со своим рабочим окружением. Простой пример: пару раз из-за автодополнения zsh я удалял все директории и файлы в текущей директории — zsh просто ставил пробел между автодополненной директорией и введённой мною звёзочкой (я хотел удалить всё в выбранной папке). Помните тот эпичный баг с пробелом и удалении директории /usr? У меня было то же самое. Спасибо гиту, выручил в который раз.

Впрочем, дело не в zsh — будь я чуточку умнее, я бы с ним обязательно справился бы, и всё было бы хорошо, но мы, суровые программисты, будем использовать bash и vim, а гламурные zsh и textmate оставим хипстерам и прочим модникам ;)

Я не напишу ничего оригинального и универсального решения я не приведу, но мне всегда нравилось читать конфиги и описания других людей, а если к ним были приложены интересные картинки, так я вообще перечитывал эти статьи несколько раз. Надеюсь, вам тоже будет интересно.
Читать дальше →
Total votes 175: ↑166 and ↓9+157
Comments143

Методология Разработки ПО

Reading time4 min
Views47K
Попросили меня на фирме выступить с докладом и рассказать о методологии по которой мы работаем, разрабатываем наше приложение. Я сразу же сказал — «У нас Scrum», и сел составлять презентацию. Но я остановился на первом же слайде, и вот почему.

Agile содержит в себе множество методологий — XP, Scrum, Lean, Kanban, ScrumBut (СкрамНО). Сев разбирать методики, я понял, что не могу сказать, что моя команда работает по какой-то одной из них. В целом наш рабочий процесс можно изобразить так:

image
Читать дальше →
Total votes 25: ↑21 and ↓4+17
Comments26

Что значат для вас юнит-тесты?

Reading time5 min
Views7.9K
С технической точки зрения юнит-тесты – это очень простой инструмент, основанный на паре несложных концепций: (1) тестируемый класс, (2) набор тестовых методов, завернутых в некоторый класс и (3) набор методов, с помощью которых можно удостовериться в том, что состояние тестового класса соответствует (или не соответствует) некоторому значению.

Это очень простая штуковина, которая может кардинальным образом повлиять на процесс разработки в целом. С одной стороны существует TDD (“test-first approach"), при котором тесты «драйвят» не только процессом кодирования, но и процессом проектирования (т.е. дизайном системы). С другой стороны существуют разработчики с противоположной точкой зрения, которые считают юнит-тесты пустой тратой времени, потому что они не приносят никакой ценности пользователю.

Читать дальше →
Total votes 52: ↑49 and ↓3+46
Comments71

Создаем облако для тестирования ПО

Reading time8 min
Views13K
Пока компании вроде Google и Microsoft активно рассказывают простому пользователю о счастье, которое ожидает их на облачных сервисах, я хочу поделиться другой стороной облаков — счастьем для разработчиков и тестировщиков ПО. За те несколько лет, в течение которых я руковожу группой тестирования Parallels Plesk Panel, была собрана неплохая коллекция лайфхаков по использованию облака для наших целей.

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

С преамбулой вроде всё. Любопытных приглашаю под кат.
Читать дальше →
Total votes 36: ↑28 and ↓8+20
Comments27

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity