Наконец-то
Feb. 1st, 2013 06:24 pmШесть лет работаю с ораклами, но первый раз встречаю в литературе явное упоминание разделения понятий "пользователь БД" и "пользователь системы".
In some applications, each user has their own database user account. This means that the database is fully aware of who is the real owner of each session. This security model works well for small applications but is often impractical for larger systems with many hundreds or thousands of users. For large systems, many users will connect to the same account. This model relies on the application to map the real end user to a database user account, and it can make session-level security and auditing more complex. This chapter assumes that every user is known to the database: they each have their own user account.
In some applications, each user has their own database user account. This means that the database is fully aware of who is the real owner of each session. This security model works well for small applications but is often impractical for larger systems with many hundreds or thousands of users. For large systems, many users will connect to the same account. This model relies on the application to map the real end user to a database user account, and it can make session-level security and auditing more complex. This chapter assumes that every user is known to the database: they each have their own user account.
(no subject)
Nov. 28th, 2012 12:22 amХотя, по идее, синтетические задачки для начинающих кодеров есть зло и бесполезно, среди них попадаются совершенно фееричные. И плевать, что всего лишь на тренировку циклов while, популяция вумпусов же гибнет! :)
We can use loops to simulate natural processes over time. Write a program that calculates the populations of two kinds of “wumpuses” over time. At the beginning of year 1, there are 1000 slow wumpuses and 1 fast wumpus. This one fast wumpus is a new mutation. Not surprisingly, being fast gives it an advantage, as it can better escape from predators. Each year, each wumpus has one offspring. (We'll ignore the more realistic niceties of sexual reproduction, like distinguishing males and females.). There are no further mutations, so slow wumpuses beget slow wumpuses, and fast wumpuses beget fast wumpuses. Also, each year 40% of all slow wumpuses die each year, while only 30% of the fast wumpuses do.
So, at the beginning of year one there are 1000 slow wumpuses. Another 1000 slow wumpuses are born. But, 40% of these 2000 slow wumpuses die, leaving a total of 1200 at the end of year one. Meanwhile, in the same year, we begin with 1 fast wumpus, 1 more is born, and 30% of these die, leaving 1.4. (We'll also allow fractional populations, for simplicity.)
We can use loops to simulate natural processes over time. Write a program that calculates the populations of two kinds of “wumpuses” over time. At the beginning of year 1, there are 1000 slow wumpuses and 1 fast wumpus. This one fast wumpus is a new mutation. Not surprisingly, being fast gives it an advantage, as it can better escape from predators. Each year, each wumpus has one offspring. (We'll ignore the more realistic niceties of sexual reproduction, like distinguishing males and females.). There are no further mutations, so slow wumpuses beget slow wumpuses, and fast wumpuses beget fast wumpuses. Also, each year 40% of all slow wumpuses die each year, while only 30% of the fast wumpuses do.
So, at the beginning of year one there are 1000 slow wumpuses. Another 1000 slow wumpuses are born. But, 40% of these 2000 slow wumpuses die, leaving a total of 1200 at the end of year one. Meanwhile, in the same year, we begin with 1 fast wumpus, 1 more is born, and 30% of these die, leaving 1.4. (We'll also allow fractional populations, for simplicity.)
(no subject)
Oct. 21st, 2012 12:15 amНаверное, существует критическая масса театра для среднестатистического человека, для которого театр не является профессией.
Проще говоря, после того, как я рассталась с театральной школой, внезапно появились время и силы на посещения театров обычных профессиональных. Не часто. Раз в месяц где-то.
Сегодня была очередь "Театра дождей" и "Поминальной молитвы". Кратко: если бы я за эти билеты заплатила, то сильно пожалела бы о потраченных полутора тысячах. Но поскольку билеты были мне подарены на день рождения, сокрушаюсь лишь о том, что не повезло. Потому что от "Театра дождей" ожидала большего. Потому что нежно люблю "Поминальную молитву", и за неё искренне обидно. Потому что это, чёрт меня возьми, профессиональный театр, в котором такие выкрутасы, которые я сегодня наблюдала, - позор и печалька.
Проще говоря, вместо трагикомедии мне показали бытовую драму. А поскольку Горин написал всё-таки трагикомедию, то авторские реплики в стиле еврейских анекдотов категорически не монтировались с актёрскими заламываниями рук и жЫзненными страданиями. Кроме того, получилось, что часть персонажей всё-таки была решена в стиле "еврейский анекдот" (и вот они-то как раз были удивительно хороши и органичны), а потому, несмотря на всю органичность, совершенно не монтировались с остальным миром. Помимо, упомянутые трое были прекрасны. Ещё трое были отвратительны. Ещё парочка - просто никакими. Остальные - серединка на половинку. Плюс, неудачные попытки внедрить украинский прононс. Или еврейский. В результате не было евреев и хохлов, были русские, играющие хохлов и евреев.
В общем, я обиделась. Они могут лучше, намного. Почему же в этот раз так плохо?
Проще говоря, после того, как я рассталась с театральной школой, внезапно появились время и силы на посещения театров обычных профессиональных. Не часто. Раз в месяц где-то.
Сегодня была очередь "Театра дождей" и "Поминальной молитвы". Кратко: если бы я за эти билеты заплатила, то сильно пожалела бы о потраченных полутора тысячах. Но поскольку билеты были мне подарены на день рождения, сокрушаюсь лишь о том, что не повезло. Потому что от "Театра дождей" ожидала большего. Потому что нежно люблю "Поминальную молитву", и за неё искренне обидно. Потому что это, чёрт меня возьми, профессиональный театр, в котором такие выкрутасы, которые я сегодня наблюдала, - позор и печалька.
Проще говоря, вместо трагикомедии мне показали бытовую драму. А поскольку Горин написал всё-таки трагикомедию, то авторские реплики в стиле еврейских анекдотов категорически не монтировались с актёрскими заламываниями рук и жЫзненными страданиями. Кроме того, получилось, что часть персонажей всё-таки была решена в стиле "еврейский анекдот" (и вот они-то как раз были удивительно хороши и органичны), а потому, несмотря на всю органичность, совершенно не монтировались с остальным миром. Помимо, упомянутые трое были прекрасны. Ещё трое были отвратительны. Ещё парочка - просто никакими. Остальные - серединка на половинку. Плюс, неудачные попытки внедрить украинский прононс. Или еврейский. В результате не было евреев и хохлов, были русские, играющие хохлов и евреев.
В общем, я обиделась. Они могут лучше, намного. Почему же в этот раз так плохо?
(no subject)
Sep. 5th, 2012 04:11 pmPeople are idiots. They made a lot of stupid things: costumes for dogs, marketing managers and stuff like the iPhone, getting nothing but a sour aftertaste. If we'd worked to develop science, explore the Moon, Mars and Venus... who knows what the world would have been like? Humanity would be able to travel through space, but it chose consuming instead - drinking beer and watching soap operas.
Ray Bradbury.
Ray Bradbury.
Докучная сказочка
Aug. 24th, 2012 04:29 pmКак у Ванюшки были варежки, а у варежки была дырочка, а сквозь дырочку было видно все, а как видно все, то и слышно все. А как слышно все — слыхать песенку, а у песенки слово катится, слово катится, как по лесенке. А по лесенке можно в гору лезть, а с горы можно кувырком лететь, а под горкой есть малина-ягода, а малину любит зверь - медведь. А медведя в лесу охотник убил, а охотника била злая жена, а у злой жены болел зуб коренной, а она от болезни горький корень пила. Горький корень рос во сырой земле, из земли росли цветочки-лютики, собирала их весной девица красная, помогал ей собирать цветы добрый молодец. Добрый молодец очень добрым был, подарил он красной девице ребеночка. Так родился на свет малыш Ванечка, а у Ванечки была варежка, а у варежки была дырочка, а сквозь дырочку было видно все...
Ролан Быков
Ролан Быков
ora-01502 + ora-00054
Aug. 16th, 2012 07:27 pmА было так.
Начала падать ошибка
Незатейливый запросик
Вообще-то стандартное решение в этом случае - перестроить индекс. Но на попытки сделать
И тут на помощь нам приходит магический пакет
Честно говоря, я, не мудрствуя лукаво, просто запустила процедуру
Увы, хотя проблема-то решена, как оно работает, я понять не успела. Но знаю хотя бы, что оно существует - и то хлеб.
Начала падать ошибка
ORA-01502: index 'MYTAB.MYTAB_PK' or partition of such index is in unusable state.Незатейливый запросик
select owner, index_name from dba_indexes where status = 'UNUSABLE' утверждал, что сломалось штук шесть индексов на одной и той же таблице. Оставим в стороне вопрос, почему они вдруг сломались, но чинить-то надо.Вообще-то стандартное решение в этом случае - перестроить индекс. Но на попытки сделать
alter index MYTAB.MYTAB_PK rebuild база грязно ругалась: ora-00054: resource busy and acquire with nowait specified or timeout expired, причём никто там никакие объекты не лочил, а то бы, конечно, я не менее грязно прибила сессию вручную. Однако, как уже было сказано, объект был совершенно свободен, но перестраиваться не желал.И тут на помощь нам приходит магический пакет
dbms_repare.Честно говоря, я, не мудрствуя лукаво, просто запустила процедуру
DBMS_REPAIR.ONLINE_INDEX_CLEAN с дефолтными параметрами, после чего снова попробовала перестроить сломанные индексы. Один перестроился. Далее некрасивым методом антинаучного тыка таким же образом были перестроены и остальные пять.Увы, хотя проблема-то решена, как оно работает, я понять не успела. Но знаю хотя бы, что оно существует - и то хлеб.
with sbq as (update)
Jul. 5th, 2012 12:58 pmPostgreSQL умеет забавную штуку: одним запросом изменять данные сразу двух таблиц. Помимо побочных эффектов, это сильно нагляднее, чем триггер, про который легко забыть.
Официальная документация на этот счёт даёт более чем исчерпывающие пояснения, поэтому подробно расписывать смысла нет. Но пример оттуда приведу, ибо выглядит весьма странно и с непривычки выносит мозг.
Работает для insert, update и delete в блоке with и то же самое плюс select во внешнем блоке. Ограничение, как обычно, есть: изменять одну и ту же строку технически возможно, но, по факту, приводит к непредсказуемым последствиям.
Официальная документация на этот счёт даёт более чем исчерпывающие пояснения, поэтому подробно расписывать смысла нет. Но пример оттуда приведу, ибо выглядит весьма странно и с непривычки выносит мозг.
WITH moved_rows AS (
DELETE FROM products
WHERE
"date" >= '2010-10-01' AND
"date" < '2010-11-01'
RETURNING *
)
INSERT INTO products_log
SELECT * FROM moved_rows;Работает для insert, update и delete в блоке with и то же самое плюс select во внешнем блоке. Ограничение, как обычно, есть: изменять одну и ту же строку технически возможно, но, по факту, приводит к непредсказуемым последствиям.
Дерево связанных таблиц
Jun. 21st, 2012 01:11 pmДавно собиралась нарисовать запросик. Основная цель - организация каскадного удаления (или свойством on delete cascade внешнего ключа, или последовательностью опрераторов delete, - по желанию).
with refs as (
select uc.constraint_name
, ucc1.table_name
, ucc1.column_name
, ucc2.table_name ref_tab
, ucc2.column_name ref_col
, uc.delete_rule
from user_constraints uc
join user_cons_columns ucc1 on uc.constraint_name = ucc1.constraint_name
join user_cons_columns ucc2 on uc.r_constraint_name = ucc2.constraint_name and ucc1.position = ucc2.position
where uc.constraint_type = 'R'
order by ucc1.table_name
, uc.constraint_name
)
select lpad (constraint_name, length(constraint_name) + (level-1)*4, ' '), table_name, column_name, ref_tab, ref_col, level, delete_rule
from refs
start with table_name = 'SOME_TBL'
connect by nocycle ref_tab = prior table_name;(no subject)
May. 10th, 2012 09:48 pmБоюсь предположить, сколько поколений должно смениться, чтобы Вторая мировая война стала историей, а не средством пропаганды. А главное, чем дальше, тем эта пропаганда тошнотворнее. Может, уже пора ту войну изучать, а не мериться, кто какую абстрактную родину больше любит и готов до последнего пикселя её защищать в интернете?