標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 爬蟲 (1) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) Fedora (1) FI (57) File Transfer (1) Firefox (3) FM (2) fourjs (1) Genero (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (4) JavaScript (22) jQuery (6) JSON (1) K3b (1) ldd (1) LED (3) Linux (119) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) OpenSSL (1) Oracle (127) Outlook (3) PDF (6) Perl (60) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (5) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium (3) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) sqlplus (1) SQuirreL SQL Client (1) SSH (3) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (24) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (37) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) VirtualBox (1) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) Xvfb (2) youtube (1) yum (2)

2012年6月12日 星期二

grep OR AND NOT 用法

Question: Can you explain how to use OR, AND and NOT operators in Unix grep command with some examples?
Answer: In grep, we have options equivalent to OR and NOT operators. There is no grep AND opearator. But, you can simulate AND using patterns. The examples mentioned below will help you to understand how to use OR, AND and NOT in Linux grep command.

The following employee.txt file is used in the following examples.
$ cat employee.txt
100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Raj     Sysadmin   Technology  $7,000
400  Nisha   Manager    Marketing   $9,500
500  Randy   Manager    Sales       $6,000
You already knew that grep is extremely powerful based on these grep command examples.

Grep OR Operator

Use any one of the following 4 methods for grep OR. I prefer method number 3 mentioned below for grep OR operator.

1. Grep OR Using \|

If you use the grep command without any option, you need to use \| to separate multiple patterns for the or condition.
grep 'pattern1\|pattern2' filename
For example, grep either Tech or Sales from the employee.txt file. Without the back slash in front of the pipe, the following will not work.
$ grep 'Tech\|Sales' employee.txt
100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Raj     Sysadmin   Technology  $7,000
500  Randy   Manager    Sales       $6,000

2. Grep OR Using -E

grep -E option is for extended regexp. If you use the grep command with -E option, you just need to use | to separate multiple patterns for the or condition.
grep -E 'pattern1|pattern2' filename
For example, grep either Tech or Sales from the employee.txt file. Just use the | to separate multiple OR patterns.
$ grep -E 'Tech|Sales' employee.txt
100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Raj     Sysadmin   Technology  $7,000
500  Randy   Manager    Sales       $6,000

3. Grep OR Using egrep

egrep is exactly same as ‘grep -E’. So, use egrep (without any option) and separate multiple patterns for the or condition.
egrep 'pattern1|pattern2' filename
For example, grep either Tech or Sales from the employee.txt file. Just use the | to separate multiple OR patterns.
$ egrep 'Tech|Sales' employee.txt
100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Raj     Sysadmin   Technology  $7,000
500  Randy   Manager    Sales       $6,000

4. Grep OR Using grep -e

Using grep -e option you can pass only one parameter. Use multiple -e option in a single command to use multiple patterns for the or condition.
grep -e pattern1 -e pattern2 filename
For example, grep either Tech or Sales from the employee.txt file. Use multiple -e option with grep for the multiple OR patterns.
$ grep -e Tech -e Sales employee.txt
100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Raj     Sysadmin   Technology  $7,000
500  Randy   Manager    Sales       $6,000

Grep AND

5. Grep AND using -E ‘pattern1.*pattern2′

There is no AND operator in grep. But, you can simulate AND using grep -E option.
grep -E 'pattern1.*pattern2' filename
grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename
The following example will grep all the lines that contain both “Dev” and “Tech” in it (in the same order).
$ grep -E 'Dev.*Tech' employee.txt
200  Jason   Developer  Technology  $5,500
The following example will grep all the lines that contain both “Manager” and “Sales” in it (in any order).
$ grep -E 'Manager.*Sales|Sales.*Manager' employee.txt
Note: Using regular expressions in grep is very powerful if you know how to use it effectively.

6. Grep AND using Multiple grep command

You can also use multiple grep command separated by pipe to simulate AND scenario.
grep -E 'pattern1' filename | grep -E 'pattern2'
The following example will grep all the lines that contain both “Manager” and “Sales” in the same line.
$ grep Manager employee.txt | grep Sales
100  Thomas  Manager    Sales       $5,000
500  Randy   Manager    Sales       $6,000

Grep NOT

7. Grep NOT using grep -v

Using grep -v you can simulate the NOT conditions. -v option is for invert match. i.e It matches all the lines except the given pattern.
grep -v 'pattern1' filename
For example, display all the lines except those that contains the keyword “Sales”.
$ grep -v Sales employee.txt
200  Jason   Developer  Technology  $5,500
300  Raj     Sysadmin   Technology  $7,000
400  Nisha   Manager    Marketing   $9,500
You can also combine NOT with other operator to get some powerful combinations.
For example, the following will display either Manager or Developer (bot ignore Sales).
$ egrep 'Manager|Developer' employee.txt | grep -v Sales
200  Jason   Developer  Technology  $5,500
400  Nisha   Manager    Marketing   $9,500
 

2012年6月8日 星期五

Reporting Service : DateAdd

Syntax

          

DATEADD (datepart , number , date ) 
 
Arguments

datepart
Is the part of date to which an integer number is added. The following table lists all valid datepart arguments. User-defined variable equivalents are not valid.
datepart
Abbreviations
year
yy , yyyy
quarter
qq , q
month
mm , m
dayofyear
dy , y
day
dd , d
week
wk , ww
weekday
dw , w
hour
hh
minute
mi , n
second
ss , s
millisecond
ms
microsecond
mcs
nanosecond
ns
number
Is an expression that can be resolved to an int that is added to a datepart of date. User-defined variables are valid.
If you specify a value with a decimal fraction, the fraction is truncated and not rounded.
date
Is an expression that can be resolved to a time, date, smalldatetime, datetime, datetime2, or datetimeoffset value. date can be an expression, column expression, user-defined variable, or string literal. If the expression is a string literal, it must resolve to a datetime. To avoid ambiguity, use four-digit years. For information about two-digit years, see Configure the two digit year cutoff Server Configuration Option.
 

2012年6月1日 星期五

二战的名句

http://www.uplei.cn/post/49.html
德国神父马丁在二战犹太人蒙难纪念碑上留下一段名句:

  “起初,他们追杀共产主义者,我不是共产主义者,我不说话;

  接着,他们追杀犹太人,我不是犹太人,我不说话;

  后来,他们追杀工会成员,我不是工会成员,我不说话;

  此后,他们追杀天主教徒,我是新教徒,我不说话;

  最后,他们奔我而来,再也没有人站出来为我说话了。” 

我们是伞兵,理所当然要被包围

 

“告诉元首,我已尽力。告诉我父亲,我依然爱他!”

一位受重伤即将阵亡的德军士兵对他的战友说的遗言!

 

2012年5月16日 星期三

Row Data Multiplication in Oracle

Row Data Multiplication in Oracle

Aggregate functions return a single result row based on a group of rows. This differentiates them from Single-Row functions which act on each row. These functions are extensively used with the GROUP BY clause in SQL statements. AVG (), COUNT (), SUM () … are few aggregate functions which are quite commonly used. Today, one of my colleague asked me if there is some aggregation function for Multiplication. I thought about it for a while and found myself surprised that I have never thought about doing such a thing :)
So, How do we do the multiplication then? I tried it but just couldn’t do it in SQL. So, I asked this question on our internal self help channel and I got a pretty impressive reply:
“Using a mathematical approach…”
After understanding the solution, I was surprisingly happy with the simplicity of the approach and found it worth sharing. Let’s assume that we have a table “tbl” with one column “num”. This table has three rows having values 2, 3 & 4 for column “num”.
WITH tbl AS
     (SELECT 2 num
        FROM DUAL
      UNION
      SELECT 3 num
        FROM DUAL
      UNION
      SELECT 4 num
        FROM DUAL)
SELECT num
  FROM tbl;
We need the multiplication of row’s data for this column. So essentially, we are looking for an aggregate function MUL (num).
There is no such function as MUL () in Oracle (I actually tried using it). Here comes the computational part of the puzzle. A multiplication operation can be mathematically expressed as:
MUL (num) = EXP (SUM (LN (num)))
Not very clear at first, I agree. Lets review the maths behind it:

x = (2 * 3 * 4)
ln(x) = ln(2 * 3 * 4)
ln(x) = ln(2) + ln(3) + ln(4) => SUM(LN(num))
ln(x) = .693 + 1.098 + 1.386
ln(x) = 3.178
x = e (3.178) => EXP(SUM(LN(num)))
x = 24

And that’s it. We just created our own multiplication function and now the result can be calculated as:
  WITH tbl AS
     (SELECT 2 num
        FROM DUAL
      UNION
      SELECT 3 num
        FROM DUAL
      UNION
      SELECT 4 num
        FROM DUAL)
SELECT EXP (SUM (LN (num))) MUL
  FROM tbl;
Result: 24
Everything looks perfect. But hey, I have got negative values. The moment you put a negative value in the dataset, you are bound to get the following Oracle error:
“ORA-01428: argument ‘x’ is out of range”
This is because the range for LN () argument is > 0. But this is now easy to handle, here is how:
WITH tbl AS
     (SELECT -2 num
        FROM DUAL
      UNION
      SELECT -3 num
        FROM DUAL
      UNION
      SELECT -4 num
        FROM DUAL),
     sign_val AS
     (SELECT CASE MOD (COUNT (*), 2)
                WHEN 0 THEN 1
                ELSE -1
             END val
        FROM tbl
       WHERE num < 0)
SELECT   EXP (SUM (LN (ABS (num)))) * val
    FROM tbl, sign_val
GROUP BY val
Result: -24
So, we first counted the negative records in the table. If the count is odd, the final result should be negative and vice versa. We then multiplied this signed value with the multiplication of the absolute values. A subquery can also be used instead of GROUP BY but that’s trivial. Now the solution is complete and we are able to handle the negative values too.
I was so impressed by this approach that I haven’t given a thought about any other solution. But I am sure there would be. If you find a different approach, please share.

2012年5月12日 星期六

人们在强大的力量面前,总是选择服从

人们在强大的力量面前,总是选择服从。如果今天你放弃一张矿泉水的发票,明天就有可能被迫放弃土地权、财产权和生命安全。权利如果不用来争取的话,权利就只是一张纸。

2012年5月4日 星期五

「絕對利益」&「比較利益」

http://ys0225.pixnet.net/blog/post/3968188-%E3%80%90%E5%90%8D%E8%A9%9E%E8%A7%A3%E9%87%8B%E3%80%91%E3%80%8C%E7%B5%95%E5%B0%8D%E5%88%A9%E7%9B%8A%E3%80%8D%EF%BC%86%E3%80%8C%E6%AF%94%E8%BC%83%E5%88%A9%E7%9B%8A%E3%80%8D%EF%BC%88

「比較利益」和「絕對利益」如何分辨?


首先要知道,這兩個概念被提出的時間是不同的。後提出者總是試圖去找到更完善的解釋以補先提出者之不足。

兩個概念都是試圖去解釋貿易(交易)產生的基礎。



@絕對利益
經濟學之父亞當史密斯Adam Smith,1723~1790,也就是說,這位大叔已經做古很久了。)在1776年其著作《國富論》中主張自由貿易,認為透過國際分工,使得每一個國家專業生產其技術較高或具絕對優勢的產品,然後進行國際交換,可使彼此都能滿足比自給自足時期更多的消費需求,又能降低成本,達到雙贏。例:下表是英國和法國在生產酒及布上每人每天的產量--

英國法國
酒(桶)30160
布(匹)18020

依表可直接判斷,在生產酒上,法國比英國具有絕對優勢(絕對利益);而在生產布上,英國比法國具有絕對優勢,故法國應該專業化生產酒,英國則專業化生產布,彼此交換而產生更大的利益(酒和布的產量都增加)。

@絕對利益的盲點
絕對利益的概念可以用來解釋許多國家之間的貿易型態,比如:台灣的汽車生產技術不如歐美或日本,所以自歐美、日本大量進口汽車;台灣的電子產品生產技術優於東南亞,所以對東南亞出口電子產品。不過1970年代時,台灣各種產品生產技術都不如美國,但為何能對美國大量出口?這一點是絕對利益原理無法解釋的,否則豈不是強者做盡每一件事,弱者則成無用之人。

@比較利益
李嘉圖(David RicarDo,1772~1823,也做古了。)研讀了亞當史密斯的《國富論》後,對經濟學產生興趣,之後開始自修經濟學。他認為各國生產自己比較他國具有相對優勢(機會成本較低)的財貨,再透過國與國間的自由交易,而使彼此皆獲利(比較利益)。例:下表是美國和台灣在生產飛機和腳踏車的生產量--

美國台灣
飛機(架)102
腳踏車(輛)84

美國生產飛機的機會成本是4/5輛腳踏車,台灣則是2輛;美國生產腳踏車的機會成本是5/4架飛機,台灣則為1/2架,故比較其機會成本,美國應專門生產飛機,台灣則專門生產腳踏車,再透過貿易,彼此獲利。

把比較利益的概念應用到人力資源的分配上,也是同樣的道理。對郭台銘來講,他的時間花在經營事業絕對比花在日常生活的吃、喝、穿具有相對高的利益,但反過來說,他能專注於事業經營,不也得依賴其他專業人士負責他的食、衣、住、行!?螺絲釘再小,也是有它的用處的。




--個人心得:因為機會成本較低,所以有比較利益


@附贈「邊際效益」(完全是因為個人對某台媒體的某些做法不爽而增加的)

簡 單的講,就是每增加一單位所增加的效益。直接舉例說明:許瑋倫意外過逝後,第一次看到她生前演出的剪輯時覺得很感傷且看得很仔細,第二次再看到還是會有些 難過和懷念,第三次看到已經沒感覺了,第四次看到開始覺得厭煩,第五次看到已經想尖叫:「夠了喔!」。每多看一次和上一次比較我所增加的感覺就是邊際效 益。也就是說,人的心理的滿足的程度,會因為使用某種物品的次數增多而開始減少,而後當你完全滿足後,就會有負(不好)的感覺。所以,老人家不是說要「見 好就收」嗎?免得搞得自己難看、別人難受!


SAP/MM : contract

Our process has the following steps - The total amount in the order to the vendor is fixed. Indivdual services have rates fixed, but quantities are not fixed ie, the quantity can vary from 0 to any upper number subject to the overall value of the order. I tried the following:
Created a contract (ME31K) with the services and rates entered (quantity kept as 1). Overall value entered as the contract limit. PO created (ME21N) and Contract details and overall limits entered. Service items adopted from the contract and the 'No Limit' box checked for individual services. All service quantities maintained as 1 no, rates copied from contract.
With this my expectation was that the system will allow multuiple service entry sheets for each of the services upto the limit specified by the contract. However the system allowed Service Entry for value exceeding the overall limit of the contract.
What other configuration needs to be done to make sure that beyond the overall value limit, system does not allow service entry.