14827 items (1495 unread) in 26 feeds
Database
(1495 unread)
I thought I should mention how I got on with Link Auditor, since I mentioned it in an earlier post but hadn't quite got all the dependencies resolved to actually test it yet.
Well, I don't wish to denigrate what is probably a fine product, but the short story is: I never got to test it. Why? Because not only is it a Windows-only program (time to build a new Windows Virtual Machine), but it requires Microsoft's .NET Framework version 2 (time to perform a big software download). Not only that, but it requires SQL Server 2000 (better make that a new Windows Server virtual machine). And not only that, but it also requires Microsoft's Report Services for SQL Server (time to download 135MB of more software for the evaluation version, then). And all that just to check about 1000 hyperlinks on this hugely modest site. Well, I got the Server virtual machine running; I installed SQL Server; I downloaded .NET Framework 2; I even downloaded 130MB of the 135MB Report Server download... but then my dial-up connection died, and I was stuffed if I was going to go through the pain yet again. So, for want of a nail the shoe was dropped... or something.
I was thinking the other day that I have written so many little utilities that I imagine many PL/SQL developers would appreciate. So I am going to post them occasionally on this blog, in the hopes that that code I wrote will be more widely used.
The exec_ddl_from_file program will execute the contents of your file as a DDL statement. This means that you may not use any bind variables, nor may you return information from the statement that is executed dynamically. But you can use this program to read in a file (using UTL_FILE) that contains, say, the CREATE OR REPLACE PACKAGE definition of a package, and create that package. Hopefully you will find such a utility handy, but I wrote it mostly to demonstrate how you can use DBMS_SQL.PARSE to execute arbitrarily large dynamic SQL strings. EXECUTE IMMEDIATE of Native Dynamic SQL fame is limited to 32K characters. Not so with DBMS_SQL. So here are the files in the download:
exec_ddl_from_file.sql - creates a procedure that executes the contents of a file. You will need to have UTL_FILE configured to get this program to run properly.
exec_ddl_from_file2.sql - creates a procedure that executes the contents of a file and includes the logic required to verify that you are indeed running under invoker rights.You will need to have UTL_FILE configured to get this program to run properly.
invdefinv.sql - a script that demonstrates how when a definer rights program calls an invoker rights program, the current user for that invoker rights program is set to the owner of the definer rights program. It also shows the usefulness of the DBMS_UTILITY.FORMAT_CALL_STACK, which reveals the PL/SQL call stack.
12/13/98 - I played Pitch, a very interesting card game with numerous levels of strategy, several times today with Eli (my youngest son, 13 yrs old at this time). He has a sharp mind. I sat there looking at him, his long, hairy legs, his ever-lengthening feet, his expanding chin, and I saw:
Eli in motion -- even as he just sat there: growing, growing, growing.
It was such a wonderful feeling and then I thought to myself: "How awful it would be to have the death of a child on one's hands."
So many men in this world (sure, and some women , too) have directly caused the death of a child; hell, some men have caused the deaths of thousands of children. Try to imagine it yourself (no, Henry Kissinger, you have to skip this step): because of something you did, or a decision you made from a position of authority, a little boy or girl stopped breathing.
Maybe you ordered a bomb to be dropped on a village. You didn't want to, but the General made it clear that this entire sector had to be clear of enemy forces within two weeks, and you just didn't have the time or the men to check every population center individually.
Maybe you dropped the bomb on that village. You didn't want to, but the alternative was court-martial, and maybe there were Viet Cong down there, just like the Lieutenant said.
Maybe you ran over a little girl crossing the street because you were drunk - or just picking your nose (after all, anything can happen).
Maybe you're the CEO of an extremely profitable corporation that laid off 3,000 workers just before Christmas to increase the value of the stock. Joe, a seriously depressed, 27-year employee, shoots his wife and two kids, and then himself.
Kids die all the time; some times it's the result of an "honest" accident. You still have to figure out how to live with the results of your action, but at least it wasn't your intention. So many children are killed each year, however, by people who went ahead with their action or decision, even though they knew that children would, as a result, die.
So here is my idea: create a website, called www.deathofachild.com, which would be used to propose individuals who are responsible for the death of a child. We would then have an open debate on the Internet about whether or not that individual is responsible or if the charge was unwarranted (the death was, for example, "justifiable" - whatever that might mean - or truly an accident).
Visitors would submit a name and history; those names would be researched by an independent group. If they recommended that there is sufficient evidence, the name and situation would be posted on the website, and let the debate commence. What do you think?
GTD(Get things done) 的工具可以说是数不盛数,在了解 Tracks 之前我曾经用过一段时间的 Next Action。
Next Action 是一个SPADE(Single [Page] Application and Development Environment) 程序,也就是说整个程序只有一个页面。 挺有趣的。
Next Action 的使用非常简单,只需要把这一个页面另存为到本地即可(注意: 必须用 Firefox 方可正确浏览,这是我针对中文显示修改过的,你可以到作者主页去找最新版。)。每次使用的时候用 Firefox 打开,修改完毕之后一定要记得重新保存该页面,保存类型选择'Web page, Complete'(这一点稍稍有点不方便)。
Firefox 用户可以查看我站点上的联机页面效果.
Get things done!
-EOF-