Sunday, July 24, 2016

Notepad++ PLSQL Language Syntax Highlight

Ref: http://dwh-consult.de/wp-content/uploads/2016/02/userDefineLang_xml.txt

<NotepadPlus>
 <UserLang name="PL-SQL" ext="pkb pks">
  <Settings>
  <Global caseIgnored="yes"/>
  <TreatAsSymbol comment="yes" commentLine="yes"/>
  <Prefix words1="no" words2="no" words3="no" words4="no"/>
  </Settings>
  <KeywordLists>
   <Keywords name="Delimiters">'00'00</Keywords>
   <Keywords name="Folder+">BEGIN IF</Keywords>
   <Keywords name="Folder-">END</Keywords>
   <Keywords name="Operators">( ) . ; | + &lt; = &gt; :</Keywords>
   <Keywords name="Comment">1/* 2*/ 0--</Keywords>
   <Keywords name="Words1">ABORT ACCEPT ACCESS ADD ALL ALTER
AND ANY ARRAY ARRAYLEN AS ASC ASSERT ASSIGN AT ATTRIBUTES AUDIT
AUTHORIZATION AVG BASE_TABLE BEGIN BETWEEN BINARY_INTEGER BODY BOOLEAN
BY CASE CAST CHAR CHAR_BASE CHECK CLOSE CLUSTER CLUSTERS COLAUTH
COLUMN COMMENT COMMIT COMPRESS CONNECT CONNECTED CONSTANT CONSTRAINT
CRASH CREATE CURRENT CURRVAL CURSOR DATABASE DATA_BASE DATE DBA
DEALLOCATE DEBUGOFF DEBUGON DECLARE DECIMAL DEFAULT DEFINITION DELAY
DELETE DESC DIGITS DISPOSE DISTINCT DO DROP ELSE ELSIF ENABLE END
ENTRY ESCAPE EXCEPTION EXCEPTION_INIT EXCHANGE EXCLUSIVE EXISTS EXIT
EXTERNAL FAST FETCH FILE FOR FORCE FORM FROM FUNCTION GENERIC GOTO
GRANT GROUP HAVING IDENTIFIED IF IN INCREMENT INDEX INDEXES INDICATOR
INITIAL INITRANS INSERT INTERFACE INTERSECT INTO IMMEDIATE IS KEY
LEVEL LIBRARY LIKE LIMITED LOCAL LOCK LOG LOGGING LONG LOOP MASTER
MAXEXTENTS MAXTRANS MEMBER MINEXTENTS MINUS MISLABEL MODE MODIFY
MULTISET NEW NEXT NO NOAUDIT NOCOMPRESS NOLOGGING NOPARALLEL NOT
NOWAIT NUMBER_BASE OBJECT OF OFF OFFLINE ON ONLINE ONLY OPEN OPTION OR
ORDER OUT PACKAGE PARALLEL PARTITION PCTFREE PCTINCREASE PCTUSED
PLS_INTEGER POSITIVE POSITIVEN PRAGMA PRIMARY PRIOR PRIVATE PRIVILEGES
PROCEDURE PUBLIC RAISE RANGE RAW READ REBUILD RECORD REF REFERENCES
REFRESH RELEASE REMR RENAME REPLACE RESOURCE RESTRICT RETURN RETURNING
REVERSE REVOKE ROLLBACK ROW ROWID ROWLABEL ROWNUM ROWS RUN SAVEPOINT
SCHEMA SEGMENT SELECT SEPARATE SESSION SET SHARE SNAPSHOT SPACE SQL
SOME SPLIT START STATEMENT STORAGE SUBTYPE SUCCESSFUL SYNONYM TABAUTH
TABLE TABLES TABLESPACE TASK TERMINATE THEN TO TRIGGER TRUNCATE TYPE
UNION UNIQUE UNLIMITED UNRECOVERABLE UNUSABLE UPDATE USE USING
VALIDATE VALUE VALUES VARIABLE VIEW VIEWS WHEN WHENEVER WHERE WHILE
WITH WORK</Keywords>
   <Keywords name="Words2">ACOS ABS ADD_MONTHS ASCII ASIN
ATAN ATAN2 AVERAGE BFILENAME CEIL CHR CHARTOROWID CONCAT CONVERT COS
COSH COUNT DECODE DEREF DUAL DUMP DUP_VAL_ON_INDEX EMPTY ERROR EXP
FALSE FLOOR FOUND GLB GREATEST HEXTORAW INITCAP INSTR INSTRB ISOPEN
LAST_DAY LEAST LENGTH LENGHTB LN LOWER LPAD LTRIM LUB MAKE_REF MAX MIN
MOD MONTHS_BETWEEN NEW_TIME NEXT_DAY NEXTVAL NLS_CHARSET_DECL_LEN
NLS_CHARSET_ID NLS_CHARSET_NAME NLS_INITCAP NLS_LOWER NLS_SORT
NLS_UPPER NLSSORT NO_DATA_FOUND NOTFOUND NULL NVL OTHERS POWER
RAWTOHEX REFTOHEX ROUND ROWCOUNT ROWIDTOCHAR RPAD RTRIM SIGN SIN SINH
SQLCODE SQLERRM SQRT SOUNDEX STDDEV SUBSTR SUBSTRB SUM SYSDATE TAN
TANH TO_CHAR TO_DATE TO_LABEL TO_MULTI_BYTE TO_NUMBER TO_SINGLE_BYTE
TRANSLATE TRUE TRUNC UID UPPER USER USERENV VARIANCE VSIZE</Keywords>
   <Keywords name="Words3">BFILE BLOB CHARACTER CLOB DEC
FLOAT INT INTEGER MLSLABEL NATURAL NATURALN NCHAR NCLOB NUMBER NUMERIC
NVARCHAR2 REAL ROWTYPE SIGNTYPE SMALLINT STRING VARCHAR
VARCHAR2</Keywords>
   <Keywords name="Words4"/>
  </KeywordLists>
  <Styles>
   <WordsStyle name="DEFAULT" styleID="11" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
   <WordsStyle name="FOLDEROPEN" styleID="12" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0"/>
   <WordsStyle name="FOLDERCLOSE" styleID="13" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0"/>
   <WordsStyle name="KEYWORD1" styleID="5" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="1"/>
   <WordsStyle name="KEYWORD2" styleID="6" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="1"/>
   <WordsStyle name="KEYWORD3" styleID="7" fgColor="FF8080" bgColor="FFFFFF" fontName="" fontStyle="1"/>
   <WordsStyle name="KEYWORD4" styleID="8" fgColor="800040" bgColor="FFFFFF" fontName="" fontStyle="1"/>
   <WordsStyle name="COMMENT" styleID="1" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
   <WordsStyle name="COMMENT LINE" styleID="2" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
   <WordsStyle name="NUMBER" styleID="4" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
   <WordsStyle name="OPERATOR" styleID="10" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
   <WordsStyle name="DELIMINER1" styleID="14" fgColor="0000A0" bgColor="FFFFFF" fontName="" fontStyle="0"/>
   <WordsStyle name="DELIMINER2" styleID="15" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
   <WordsStyle name="DELIMINER3" styleID="16" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0"/>
  </Styles>
 </UserLang>
</NotepadPlus>

Sunday, July 17, 2016

Oracle PLSQL Array - Build Column Names For Query

CREATE OR REPLACE PROCEDURE DOARRAY AS
    PREFIX VARCHAR2(1) := 'a';
    q_str varchar2(2000) := '';
    total_cols integer ;
    /************  only change this : define a new array *******************/
    type col_array IS VARRAY(5) OF VARCHAR2(100);
    col_nms col_array := col_array('name', 'resrce_id', 'addr', 'home_phn', 'mobile_phn');
 
BEGIN
    total_cols := col_nms.count;
    FOR i in 1 .. total_cols LOOP
      case
        when (i=1) then
          q_str := PREFIX || '.' || col_nms(i) || ',';
        when (i=total_cols) then
           q_str := q_str || PREFIX || '.' || col_nms(i);
        else
           q_str := q_str || PREFIX || '.' || col_nms(i) || ',';
      end case;
   END LOOP;
   dbms_output.put_line('Query String: ' || q_str);
END DOARRAY;

Monday, July 4, 2016

Tennis

网球拍拉线(专业电子网球拉线机)

本人是个网球发烧友,打网球十几年了,自己有一台专业电子网球穿线机,6向支撑,10点拍面固定,电子拉线器,提供网球拍拉线服务,方便广大球友。可根据要求横弦竖弦不同拉力分穿,或穿子母组合弦。

穿线费:$10
电  话:647-308-8855(Mark Liang)
地  址:近 Sheppard/kennedy

吸汗带(OverGrip): Dry Feeling(蓝色, 纳米材料干爽舒适) $1

网球弦(含穿线费):

Eagnas Felling 17G(1.25mm 无芯多股高韧纤维缠绕防肠弦,提供近似天然肠弦的超级舒适性、弹性和控球性)$22
Signam Pro Plasma 17L(1.23mm 等离子纳米聚酯弦,提供动态力量和绝佳控球性、耐打性、绝不走弦)$22
Eagnas Nano 17G (1.25mm 纳米材料聚酯弦,手感、 耐打、力量、控球皆好、不走弦)$20

Eagnas Synthetic Gut 16G/17G(1.25/1.30mm 高强度芯和双缠绕高韧度纤维外层防肠弦,手感舒适,控球性,力量和耐久极好)$18
Eagnas Thunder Force 17G(1.25mm 高强度芯和双缠绕高韧度纤维加光纤外层防肠弦, 舒适性,力量, 控球和弹性皆好)$18
Tecnifibre Polyspin 17G(1.25mm 双缠绕高韧度纤维防肠弦,控球和弹性皆好)$18
Prince DuraFlex 17 (1.28mm 双缠绕高韧度纤维防肠弦, 手感舒适控球好)$18


强烈推荐组合弦(Hybride String):

1. 竖弦/横弦:Signam Pro Plasma 17L/Eagnas Synthetic Gut 16G (提供动态力量和绝佳的舒适性、控球性和耐打性、不易走弦)$25
2. 竖弦/横弦:Eagnas Nano 17G/Eagnas Sythetic Gut 16/17G(提供绝佳力量、手感、控球性和耐打、不易走弦)$20
3. 竖弦/横弦:Eagans Tunder Force 17G/Tecnifibre Polyspin 17G(提供绝佳的控球性、力量、手感舒适)$20
城市:Scarborough
联系人:Mark Liang
联系方式:647-308-8855

WebFocus Users

1. SYSTEMTEC Greensboro, NC :
WebFOCUS dashboards, SQL Oracle and DB2,Front end web development and mobile device web development
2. Plantation, Florida
3. Fidelis Care - New York City Regional Office -Agile development environment
4. Dallas, TX - Data Solutions & Technology Incorporated
administrative support:implementations, upgrades, and migrations. 
create user accounts, administration, monitor server tasks
installation, configuration, migration, tuning, and administration.  g command scripts in Windows and shell scripts
5. Princeton, NJ - UNIX, Shell Script, stored procedures, triggers,WF 8.0, Report Assist
6. Plant City, FL
7. Cincinnati, OH
8.Minneapolis, MN
http://www.careerjet.com/webfocus-jobs.html
Apex System,Thomasville, NC
CRG - Winston-Salem, NC
Kelly IT Resources - South Jordan, UT
Genesis10 - Kansas City, MO
U.S. Bank - Richfield, MN
Northrop Grumman - Woodlawn, NY - Maryland
Woodlawn, NY
GDI Infotech - Mason, OH
Enterprise Solution inc - Plantation, FL
Next Level Business Services, Inc. - Plantation, FL
Kelly IT Resources - South Jordan, UT
Apex Systems - Thomasville, NC
CRG - Winston-Salem, NC
ITech US, Inc. - Denver, CO
Dearborn, MI
Dublin, OH
Power I.t., Llc - Kansas City, MO
Econosoft Inc - Detroit, MI
UNICON International, Inc. - Dublin, CA
Hanover, MD
--------------------------
Company : ITech US, Inc.
Website : http://itechus.net
Posted By : Hitesh Rai
Phone : N/A
Lucid Jobs ID : 88Y9RU619X
Type : Contract
-----------------------
https://www.jobisjob.com/webfocus/jobs
Industry : Others

https://www.jobisjob.com/webfocus/jobs
WF JOB

9 Job Density on MAP:
http://www.robertmanduca.com/projects/jobs.html






Sunday, July 3, 2016

Oracle - Using Cursor to Insert Record from Remote Database Link With Hint

/********************Using Procedure**************/

CREATE OR REPLACE PROCEDURE INSERT_BY_FETCH AS
l_num_rows number := 10000;
l_row   yc64.test%ROWTYPE;
CURSOR test_cur
  is
  select Name, addr
  from yc64.test
  where rownum< 20;
BEGIN
  open test_cur;
  LOOP
      FETCH test_cur INTO l_row;
      EXIT WHEN test_cur%NOTFOUND;
      DBMS_OUTPUT.put_line(l_row.name );  
      insert into T_INSERT values l_row;
   END LOOP;
  CLOSE test_cur;
END INSERT_BY_FETCH;

/********************Using View**************/
--create view
CREATE VIEW yc64.v_test AS
SELECT a.* FROM yc64.test a WHERE rownum < 2000;
COMMIT; 

--create a table
create table yc64.t_insert as
SELECT a.* FROM yc64.test a WHERE rownum < 2000;
commit;

insert into yc64.t_insert 
select * from yc64.v_test;

select count(*) from yc64.t_insert ;




Monday, May 30, 2016

Using Windows PowerShell to Start Service Which Stopped

#Start all non-running Auto services
#C:\Users\duke\Documents
#taskschd.msc

#Step 1: Run One Time
#Set-ExecutionPolicy -Scope LocalMachine Unrestricted

#Step 2: Create a batch file like:  PowerShell -noexit -file "C:\Users\duke\Documents\rstart.ps1", add to windows Scheduler
$Computer = “WIN-36TFBPF3FHK”
$ServiceName = 'webclient'
#stop-service $ServiceName
#get-service -name $ServiceName
Get-WmiObject win32_service -ComputerName $computer -Filter " state != 'running' AND name = '$ServiceName'" | Invoke-WmiMethod -Name StartService
#get-service -name $ServiceName

Friday, May 27, 2016

业务技术专家-业务管理

多与人相处,寻找团队合作的机会,因为这是管理者必需的基础能力


任何团队协作都涉及到任务分工
任何技术团队都涉及到代码规范、合并和管理

一个技术人员的职业发展过程大致是这样的:

实习期
还在学校学习,之前从未涉及过真实工程或项目,实习期间通过阅读项目代码,修复bug等开始积累经验,每天都会觉得自己收获很大,时间不够;


应届毕业
经验不多,参考项目其他模块代码后,能独立完成小功能需求,能胜任小模块开发,也能维护项目代;


工作2-5年
能胜任任何功能模块开发,并开始做模块设计和系统设计,设计的东西自己能用,做得好也许还能给别人;


工作5年以上
负责整个项目的架构设计,实现项目的基础和核心模块。



误区:大甩手就失去控制能力,要插入进去,要控制核心,不失去核心
前三个阶段的思维方式都是考虑自己怎么做,怎么实现功能,怎么完成任务。到第四个阶段,就会开始涉及到管理相关的工作,因为,首先,你的东西再也不是你一个人用的,你需要跟别人讲解和沟通;其次,你的架构和核心模块出来以后,你需要把剩下的任务合理分配给合适的成员来开发。



重心:架构模式设计只做不讲,只分配任务,只做核心

我认为,从技术岗位转型为管理岗位,更多的不是能力的变化,而是思维方式和心态的改变。


作者:李攀
链接:https://www.zhihu.com/question/26830960/answer/64604579
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

管理者三大核心职责如下:

确立团队的目标。
不论项目大小,一定要有目标,有目标才能让所有人明确方向,知道每天工作的意义在哪儿,工作是不是朝着团队的目标在一步步靠近。 纯技术人员的执行者思维应该切换为宏观思维,因为现在个人的成功已经不叫成功,团队成功才是成功,如何让团队产出高的绩效才是你应该思考的问题。

离达成这个目标我们还缺哪些资源。
这点主要涉及到统筹规划能力。在项目初期,你就需要非常清楚明确地知道目前团队的能力以及你能调配的资源,这样才能保证后期不会因为资源不足导致目标无法达成。

我们如何朝着目标迈进。
这一点穿插在整个过程中,是最重要,也是我这两年在聚会玩的团队管理中看到和亲身体会最深的,它囊括了技术管理的方方面面。

如果某件事一个人做需要m个工时来完成,那么n(n>1)个人来做,理论所需工时是m/n,但是实际的时间一定比这个多,结果是(m/n)*α(α>1),α就是协作成本。技术管理者要做的,就是尽量降低协作成本,包括以下方面:

任务分配
之前你一个人能把事情做得很好,现在怎么保证团队一群人把它做好?任务分配包括如何把任务合理地分配给适合的人,能达到最好的结果,即人的价值得以体现,产出质量也高。这就要求管理者对任务的了解要全面深入,对团队每个人的能力了解也要准确。
全局观
技术人员工作时都需要专注,反过来,作为技术管理人员,要防止过度专注。多去了解项目各方面的进展和存在的问题, 对项目和团队的任何细节了如指掌,出现任何大大小小的问题都能迅速定位和分析解决,不会因为专注于技术细节而失去对全局控制。
沟通能力
以前每天和机器沟通,现在切换为和人沟通。以前的桀骜不驯和不屑是因为技术能力强,现在应该切换为更耐心,更注意语气和用词的沟通。另外,更多的去主动发现问题,然后通过沟通技巧来解决问题。
协调调度能力
项目过程中一定会遇到一些无法预期的技术问题导致项目被block,如果问题已经持续未被解决,这时需要及时调度有能力的人来参与解决,防止项目一直处于不确定状态。当多个功能或者项目并行进行时,由于人力资源有限,可能需要不断地根据项目进展来动态调整各项目优先级来保证整体的进度。优先级调度和调整是一个很复杂的过程,但记住一点,我们永远只做优先级最高的事情,最高优先级事情完成以后,优先级第二的事情自然会升级为优先级最高的事情,在这个升级的过程中,我们也许还需要和产品等相关部门进行一次优先级动态调整或者评估。这也涉及到项目管理的负反馈,让每一个阶段的结果反馈给新的阶段,保证最后的结果更接近我们的目标。
时间管理能力
时间管理是每个团队都头疼的事情,直接体现在项目进度上。时间管理看起来很难,实际很简单。每个任务拆分一定要足够细可量化,2天以上的任务都是不合理的。而且过程中需要严格控制好每一个量化好的时间节点或里程碑,保证每个节点的质量和时间点无误是保证最终结果的最好方式,出现任何一处delay都需要强制想办法及时补救,避免积少成多,这样才能防止项目最后出现不可能预期的延期。
放权和培养
亲自去解决具体的技术问题,做代码审核看代码哪些地方存在不规范,和测试人员讨论具体的测试用例是否合理,这些工作现在需要做,但是,它们已经不再是你关注的重点,你应该更多的放权让其他人去做,在这个过程中一定不需事事亲为,在这基础上,你应该更加注重对成员的培养,培养他们的学习能力,思考能力和解决问题的能力(这三个能力是我对技术人员的基本要求),让成员快速进步和成长,独当一面。
倾听
不管以前技术多牛,多恃才放旷和桀骜不驯,作为管理者,需要背负团队的使命和绩效,所以应该在任何时候主动听取团队核心成员的意见,做一个好的倾听者。倾听一定要做到多维度听取,然后再分析和做决定。
学习能力,思考能力和解决问题的能力(这三个能力是我对技术人员的基本要求),让成员快速进步和成长,独当一面。

带领团队来看最为重要的方法是以身作则

开复:做管理的工作最重要的是要有服务的意识,好的管理不在于驾驭他人,而在于有足够的管理智慧。
      S :那么,我该如何得到这种智慧呢?
      开复:首先要得到下属的尊敬和信任。
      S :那我又该如何得到他们的信任呢?
      开复:学会团体合作,学会为下属着想,只有将心比心,才能赢得信任。
      S :该如何得到他们的尊敬呢?
      开复:你要做一个优秀的人,一个有理想、有抱负、有能力的人。这样才能够得到他人的发自内心的尊敬。
      S :那么,我又该如何找到理想、获取抱负、得到能力呢?
      开复:要有良好的素质、习惯和态度。但最重要的是,你必须是一个好人,一个讲诚信的人。惟此,你才有可能成为一个成功的人。


强调责任还应在团队成员身上加以落实,不断倡导对于所承诺的事应努力达成,形成一种务实的团队作风。请记住,责任重于“面子”,不重视责任就是牺牲团队每一个人的利益,无人能逃

高效开会。我发现不少技术管理者有开长会的毛病,有的将开会当作是“team building”,或者同样的问题一遍又一遍地“炒”。开长会通常是团队责任缺失的一种表现、是集体无能的反映、是一种“合理”与奢侈的浪费。


我们团队在开发上做到了每周一次迭代,两周一次版本发布

适合一对一沟通的内容有很多,包括:
不成熟的看法
迫在眉睫的问题
精彩的想法
倾诉焦虑
抱怨

也介绍了一些适合用来引导的问题:
当前产品还有哪些可以提高的地方?
我们部门的最大问题是什么,为什么?
如果有,你觉得工作中有哪一点令你感觉不舒服?
你觉得谁的工作最优秀,为什么?
我们的产品哪方面不尽如人意?
我们错失的最大机遇是什么?
哪些是我们应该做而没有做的?
你自己希望未来在哪些方面能有提高?
有什么我能为你做的事情?

尽量招靠谱的人,那么在管理技术上的工作就只需要遵守「尽量授权」的原则来就可以了


做技术主要有几个方向:
http://chuansong.me/n/306570051751
1. 技术专家

2. 架构师

3. 业务专家


技术专家路线:

技术专家就是通常称为某个领域或者某项特殊技术的专家,举个例子说,你是一个Java专家,那么从Java基本的语言特性到内部机制,JVM虚拟机等等,你无所不知无所不晓,或者是Oracle专家、MySQL专家,就是你所精通的这个子领域你是非常非常专业的,而且这个子领域学习门槛非常高,不是轻易简单可以弄通的,那么你就成为了这个领域专家,自然,你从学习技术中获得乐趣,也从别人膜拜和处理别人没法处理的问题获得快乐,当然,只要这个你擅长的技术领域一直存在,你的职业就会高枕无忧!当然,需要时刻更新自己的知识。技术专家的核心就是:深入而精通!


架构师路线:

架构师就是对某一个技术领域的各个知识点,各种工具都很了解,能够依赖掌握的知识和经验,在做新技术或者是搭建某些业务的时候给出最有效的架构指导,或者在比如性能出现瓶颈的时候迅速可以给出良好的解决方案。架构师的概念很宽泛,软件架构师和互联网体系架构师所需要掌握的技术是完全不同的。举个例子说,你是一个LAMP架构师,那么你会了解Linux、Apache、MySQL、PHP的整套工具组合,你也了解相关网站知识,知道各种开源技术,了解各种碰到问题的解决方案,并且你不局限这些,你还能够通过目前掌握的知识,能够延伸解决更复杂的问题,或者在遇见复杂问题的时候给出最有效的建议和方案。架构师的核心就是:技术能力广、经验丰富、解决问题能力强、思路视野比较宽广。


业务专家路线:

业务专家更多在软件行业,比如说各种ERP系统,或者是某些信息管理类系统,都会存在不同行业的业务差别巨大。比如烟草行业和电信行业就不是一个业务模型,而且这些模型不是随便一个人就可以了解的,别人可能需要花费1年或者好几年才能去深入了解各种业务差别和细节,所以你就是整个了解技术和业务的专家,随便不能被取代,实际表现的职位可能是需求工程师或者是架构师的角色出现,实际掌握的技能是偏业务的,但是整个角色跟一般的市场、产品经理角色不同,而是了解技术的业务专家!只要行业不挂,该类软件需求存在,自然饭碗可保!
从上面来看,其实架构师是很多人追求的,技术专家就需要个人性格和对计算机技术的非常热爱才行,业务专家一般在软件行业,各个业务不同,需求和差别也是很大的。

管理路线:

管理路线跟技术路线要求的技能是完全不同的,一般我们说的管理会偏向于技术管理,但是如果越往上走,可能针对某个领域的管理能力就会越弱化,比如你之前是技术总监需要关注一些大方面的技术方向,等你变成副总裁以后,可能对技术方面的要求就会完全弱化了,更多只是管理能力了。
我们从技术管理角度来看,至少要求懂技术、会管理,这都是宽泛的概念,不同公司对管理的定义不一样,比如有些公司的技术管理角色可能只是一个架构师的角色,或者是一个项目分配的角色,这些都是偏颇。

一般的技术管理来说是能够懂技术,在某些重大技术决策上面会有一些个人的见解,另外就是懂管理,比如很多软素质,沟通能力、向上汇报向下传达能力、团队管理能力、人员培养能力、上下游部门合作把控能力、业务需求沟通能力、在重大问题的决断能力、长远目标和规划能力、执行力等等。我觉得最基础的能力是沟通能力、判断力、执行力、推动能力等,沟通能力渗透到每一个地方,不论是上下游合作,业务和需求讨论,还是团队成员思想教育,都需要沟通能力,管理非常重要的就是沟通能力。另外一个就是判断力,比如你需要能够判断某个业务的重要程度、某个成员的个人能力情况、某个业务需求的合理和实现成本等等,这些是建立在经验或思考后进行准确判断的基础上面。执行力是我们对业务的支持,或者是对上级老板下达工作要求的快速行动,都是执行力的范畴。

综合来看,管理能力跟技术能力的要求差别还是比较大,所以对岗位要求也是不同,实际对人的性格等要求也是不同的

Sunday, May 8, 2016

Toad Oracle Package

Introduction to Toad for Oracle for Developers - in-depth tutorial
https://www.youtube.com/watch?v=sOcg4s93Fqo

1. ER diagram
2. code road map
3. Create Test Case - Code Tester Quest Code Tester for Oracle ; Run Test
4. Debug a Program, break point, time debug
5. Version Control System
6. SQL Optimizer
7. SQL Recall
7.1 Break Point
8. Excution Plan - ReWrite
9. Code Analysis - ANSI Standard, Oracle Standard
10. Code Analysis Dashboard
11. Benchmark Factory - Test Performance
Base, Professional, Xpert


Introduction to Toad for Oracle for DBAs - in-depth tutorial
https://www.youtube.com/watch?v=zMEwY00yBoU
1. Database Browser - Overview, Space Usage
2. Database Health Check


https://www.youtube.com/watch?v=tHi0Xifws_4


Toad for Oracle DBAs
https://www.youtube.com/watch?v=0OpUMVNO2uw

understand power
Jeffrey Pfeffer:
Cultivating Power
https://www.youtube.com/playlist?list=PLF1064CD7B0A98261


Saturday, April 23, 2016

Create Click Excel Chart

Step 1: Add WorkBook_Open()

Dim ChartObjectClass As New Class1
Dim ChartObjectClass2 As New Class2

Private Sub Workbook_open()
 
    Set ChartObjectClass.ChartObject = Worksheets(1).ChartObjects(1).Chart
    Set ChartObjectClass2.ChartObject = Worksheets(1).ChartObjects(2).Chart
End Sub

Step 2:
Add Class1, Class2

Code for Class1 & Class 2:
-------------------------------------------------
Option Explicit
Public WithEvents ChartObject As Chart
Private Sub chartObject_mouseUp(ByVal button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
    Dim elementID As Long, arg1 As Long, arg2 As Long
    Dim myX As Variant, myY As Double
    Dim rng As Range
    Set rng = Worksheets(1).Range("Q19")
 
 
    With ActiveChart
        ' pass x & y , return elementID and args
     
        .GetChartElement x, y, elementID, arg1, arg2
        ' did we click over a point or a data label ?
        If elementID = xlSeries Or elementID = xlDataLabel Then
            If arg2 > 0 Then
                ' extract x value from array of x values
                myX = WorksheetFunction.Index(.SeriesCollection(arg1).XValues, arg2)
                ' extract y value from array of y values
                myY = WorksheetFunction.Index(.SeriesCollection(arg1).Values, arg2)
                ' display message with point information
                'MsgBox "Series" & arg1 & arg2 & vbCrLf & "X=" & myX & "Y=" & myY
             
             
                On Error Resume Next
                    ' acivate the appropriate chart
                    ' thisworkbook.charts("Chart " & myX).select
                    Sheets("Series " & myX & " Detail").Select
                    ' the myX to refresh the vlookups
                    rng.Select
                    rng.Value = myX
                 
                On Error GoTo 0
            End If
        End If
    End With
End Sub
----------------------------------------------------------



Sunday, March 27, 2016

SAS Dataset - Simple

libname sasfile "Folder";
data sasfile.test;
input a b c d;
datalines;
1 26 31 1
1 28 28 2
1 30 31 3
2 32 31 4
2 34 29 5
;
run;

Thursday, March 17, 2016

控制美国经济的主要金融机构(部分) - May 11th, 2005


1.Fidelity Management & Research Corp (美国富达管理研究公司[音译的”富达”有时也意译作”忠诚”],波士顿,管理资产约1.3万亿美元)
2.Barclays Bank Plc (英国巴克莱银行,是英国最大的金融机构之一,仅其旗下的全球投资业务部[Barclays Global Investors]管理的资产就达7000亿英镑)
3.State Street Corporation (美国道富公司,美国乃至全球最大的基金,总部位于美国波士顿,保管的资产达9.5万亿美元,管理的资产约1.4万亿美元)
4.Capital Research and Management Company (资产研究与管理公司,美国加州洛杉矶,管理资产约5000亿美元)
5.U.S. Bancorp (美国银行公司,美国明尼苏达州明尼阿波利斯,资产1980亿美元)
6.Citigroup Inc. (花旗集团公司,美国纽约派克大街,总资产1.484万亿美元)
7.Morgan Stanley (摩根斯坦利,美国纽约百老汇大街,管理资产约5760亿美元)
8.Deutsche Bank  (德意志银行,德国法兰克福,总资产8400亿欧元)
9.JP Morgan Chase & Company (JP摩根大通公司,美国纽约派克大街,资产约1.15万亿美元)
10.Vanguard Group, Inc. (先锋集团公司, 管理资产约8000亿美元,曾经的基金两巨头之一,另一个是”富达”)
11.Northern Trust Corporation (北方信托公司,投资管理资产约6000亿美元)
12.AXA (法国安盛保险集团,法国巴黎,管理资产达8690亿欧元)
13.Putnam Investment Management (普南投资管理公司,美国,管理资产1940亿美元)
14.Mellon Financial Corporation (梅隆金融公司,美国宾夕法尼亚州匹兹堡[ Pittsburgh, Pennsylvania] 托管理及管理的总资产达4万亿美元,其中管理的资产为7290亿美元)
15.Wellington Management Company (惠灵顿管理公司,管理资产约5000亿美元)
16.TIAA-CREF (Teachers Insurance and Annuity Association - College Retirement Equities Fund,全美教师保险及年金协会-大学退休职工平衡基金,管理的资金也达数千亿美元)
17.Bank of America Corporation (美洲银行公司,美国北卡罗莱纳州夏洛特,总资产约1.1万亿美元,是一个一直以来在美国能与”一哥”花旗抗衡的大金融集团)
18.Brandes Investment Partners, LP (布朗德斯投资合伙公司, or 布兰帝投资伙伴基金,美国加州圣迭戈,管理资产大约为1000亿美元)
19.Southeastern Asset Management Inc. (该公司为长叶松基金[Longleaf Partners Funds,也称长叶基金,美国罗得岛州首府普罗维登斯]的投资顾问公司,这个基金管理的资产约300亿美元)
20.Merrill Lynch (美林公司,美国纽约维西大街[Vesey Street, New York, NY],总客户资产约1.6万亿美元,其中管理的资产达5010亿美元)
21.Fayez Sarofim & Co. (法耶兹-沙罗菲公司,管理资产哟420亿美元)
22.Berkshire Hathaway, Inc (伯克希尔-哈撒威公司[“股神”巴菲特管理的公司],美国内布拉斯加州奥马哈市基维特广场[Kiewit Plaza ,Omaha, NE]总资产约1900亿美元)
23.Lord Abbett & Co. (罗艾公司)
24.Marsico Capital Management (马尔西科资产管理公司,已被美洲银行[Bank of America]收购)
25.Janus Capital Group (骏利资产管理集团, 也称杰能士资本公司)
26.SunTrust Banks (美国太阳信用银行)
27.T.Rowe Price Associates (罗普合伙公司,因创始人Thomas Rowe Price而得名,管理的资产约2500亿美元)
28.Amvescap Plc (景顺集团)
29.Legg Mason Inc. (雷格-梅森投资公司)
30.Dodge & Cox Inc (道奇&考克斯)
31.Montag & Caldwell, Inc. (为ABN AMRO[荷兰银行]旗下投资管理公司)
32.Harris Associates L.P. (哈里斯合伙公司)
33.Goldman Sachs Group Inc (高盛公司

Sunday, March 6, 2016

Javascript OBJ Example


<!DOCTYPE html>

<html>
    <head>
        <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

        <meta http-equiv="X-UA-Compatible" content="IE=edge" />

           <script language="javascript" type="text/javascript">
</script>

function bindBoxes(_selector) {
var data = new dataReader();
var _hspt = new objHospitalInfor();
data.Scr2_Obj_getHsptInfor();
_hspt.HospitalInfor = data.ArrayValue;
_hspt.init();

var _aspInput = new AspInputObj();
_aspInput.input = data.Scr2_Obj_getAspInputArray();
_aspInput.init();
_aspInput.bindEvent();
var aspTag = _aspInput.htmlTag;

var hipDrugTag = new HipDragPgTagObj();
hipDrugTag.init();

var construct = new constructsSoldPgTag();
construct.init();

var purchase = new PurchasePgTag();
purchase.init();

var imp = new ImpactSeqPgTag();
imp.init();

var tag = "";
tag += "<div><div class='ui-grid-b'>";
tag += "<div class='ui-block-a' style='border-right: 1px solid #d3d3d3; border-top: 1px solid #d3d3d3; '>";
tag += _hspt.htmlTag;
tag += "</div>";
tag += "<div class='ui-block-b' style='border-right: 1px solid #d3d3d3; border-top: 1px solid #d3d3d3;'>";
tag += aspTag;
tag += "</div>";
tag += "<div class='ui-block-c' style='border-left: 0px solid #d3d3d3; border-top: 1px solid #d3d3d3; '>";
tag += hipDrugTag.htmlTag;
tag += "</div></div>";

tag += "<div><div class='ui-grid-b'>";
tag += "<div class='ui-block-a' style='border-right: 1px solid #d3d3d3; border-top: 1px solid #d3d3d3; '>";
tag += construct.htmlTag;
tag += "</div>";
tag += "<div class='ui-block-b' style='border-right: 1px solid #d3d3d3; border-top: 1px solid #d3d3d3;'>";
tag += purchase.htmlTag;
tag += "</div>";
tag += "<div class='ui-block-c' style='border-left: 0px solid #d3d3d3; border-top: 1px solid #d3d3d3; '>";
tag += imp.htmlTag;
tag += "</div>";
tag += "</div>"; // end grid


tag += "</div>"; // end container


_selector.html(tag);

}

var HipChartObj = function () {
var _chart = {};
_chart.RenderTo = "hipChart";
_chart.title = "";
_chart.getTitle = function () {
var sub_titile1 = "Hip ASP as a Percentage of"; ///  todo , get
var sub_titile2 = " DRG 470 Reimbursement"; ///  todo , get
_chart.titile = sub_titile1 + sub_titile2;
return _chart.titile;
};
_chart.input = {
xAxis_categories : ["2010", "2011", "2012", "2013"]

};
_chart.getInputData = function () {
var _input = {};
_input.xAxis_categories = ["2010", "2011", "2012", "2013"]; // ["Todo", "Todo", "Todo", "Todo"]; // todo
_chart.input = _input;
return _input;
};
_chart.init = function (_renderTo) {
_chart.title = _chart.getTitle();
_chart.input = _chart.getInputData();
_chart.RenderTo = _renderTo;
};
_chart.Draw = function () {
var chart = new Highcharts.Chart({
chart : {
type : 'line',
renderTo : _chart.RenderTo
},
title : {
text : _chart.title,
x : -20 //center
},
subtitle : {
text : '',
x : -20
},
xAxis : {
categories : _chart.input.xAxis_categories
},
yAxis : [{ // Primary yAxis
labels : {
format : '{value}°C',
style : {
color : '#89A54E'
}
},
title : {
text : 'Reimbursement',
style : {
color : '#89A54E'
}
},
id : 1
}, { // Secondary yAxis
title : {
text : 'Hip ASP as Percent',
style : {
color : '#4572A7'
}
},
labels : {
format : '{value} mm',
style : {
color : '#4572A7'
},
formatter : function () {
return (this.value) * 100 + '%';
}
},
id : 2,
opposite : true
}
],
tooltip : {
valuePrefix : '$',
enabled : true,
formatter : function () {
return '<b>' + this.series.name + '</b><br/>' +
this.x + ': ' + '$' + this.y;
}
},
plotOptions : {
line : {
dataLabels : {
enabled : true
},
enableMouseTracking : true
}
},
legend : {
/* layout: 'Horizontal',*/
align : 'center',
verticalAlign : 'bottom',
borderWidth : 0
},
series : [{
name : 'Reimbursement',
data : [12239, 2520, 12578]
}, {
name : 'New York',
yAxis : 1,
data : [0.69, 0.20, 0.38]
}
]
});
}
return _chart;
}

var objHospitalInfor = function () {
var _ret = {};
_ret.HospitalInfor = null;
_ret.hsptInforTitle = ["HospitalName", "Addres", "City, State", "CustomerId", "ProviderId"];
_ret.setDefaultHospitalInfor = function () {
var _infor = new Array();
_infor["HospitalName"] = "Georgetown Hospital";
_infor["Addres"] = "606 606 Black River Rd Drawer 1718";
_infor["CityState"] = "Georgetown, SC";
_infor["CustomerId"] = "200710";
_infor["ProviderId"] = "420020";
_infor["Beds"] = "131";
_infor["GrossRevenue"] = "$283,921,756";
return _infor;
};
_ret.init = function () {
var _tag = "";
if (_ret.HospitalInfor == null) {
_ret.HospitalInfor = _ret.setDefaultHospitalInfor();
var hsptInfor = _ret.HospitalInfor;
for (var item in hsptInfor) {
_tag += "<p class='" + _ret.paraCss + "'><span class='" + _ret.titleCss + "'>" + item + ": &nbsp;&nbsp; " + "</span>";
_tag += "<span class='" + _ret.contentCss + "'>" + hsptInfor[item] + "</span></p>";
}
} else {
for (var i = 0; i < _ret.HospitalInfor.length; i++) {
_tag += "<p class='" + _ret.paraCss + "'><span class='" + _ret.titleCss + "'>" + _ret.hsptInforTitle[i] + ": &nbsp;&nbsp; " + "</span>";
_tag += "<span class='" + _ret.contentCss + "'>" + _ret.HospitalInfor[i] + "</span></p>";
}

}

_ret.htmlTag = _tag;
return _tag;
}
_ret.titleCss = "text-font-sansserif";
_ret.contentCss = "text-font-serif";
_ret.paraCss = "text-para-small";
_ret.htmlTag = null;
return _ret;
}

var CUST_ID_LIST = [{
id : 1,
custName : "100038, HOSPITAL 001"
}, {
id : 2,
custName : "100095, HOSPITAL 002"
}, {
id : 3,
custName : "100134, HOSPITAL 003"
}, {
id : 4,
custName : "100138, HOSPITAL 004"
}, {
id : 5,
custName : "100155, HOSPITAL 005"
}, {
id : 6,
custName : "100178, HOSPITAL 006"
}, {
id : 7,
custName : "100187, HOSPITAL 007"
}, {
id : 8,
custName : "100189, HOSPITAL 008"
}, {
id : 9,
custName : "100200, HOSPITAL 009"
}, {
id : 10,
custName : "100217, HOSPITAL 010"
}, {
id : 11,
custName : "100232, HOSPITAL 011"
}, {
id : 12,
custName : "100257, HOSPITAL 012"
}
];

var chart = null;

function BindViewDataPage() {
var _container = $("#view_data_container");

var newDiv = "<div id='veiw-Data-Page-Container'> </div>";
_container.prepend(newDiv);

PopulateTags_viewData();

}
function PopulateTags_viewData() {
_selector = $('#veiw-Data-Page-Container');
bindBoxes(_selector);
}

var AspInputObj = function () {
var _ret = {};
_ret.input = ["2010", "2011", "2012", "2013", "2014"];
_ret.inputTitle = ["2010", "2011", "2012", "2013", "2014"];
_ret.init = function () {
var asp = [];
var asp0 = "2010";
asp1 = "2011";
asp2 = "2012";
asp3 = "2013";
asp4 = "2014";
asp[0] = asp0; // todo: get the value from model
asp[1] = asp1;
asp[2] = asp2;
asp[3] = asp3;
asp[4] = asp4; // todo: get the value from model
_ret.input = asp;
_ret.htmlTag = _ret.getHtmlTag();
}; // get the init value
_ret.htmlTag = null;
_ret.getHtmlTag = function () {
var tag = "";
tag += "<div class='text-box-title'> Display Selection and ASP Input </div>";
tag += "<div> &nbsp; </div>";
tag += "<div style='text-aligh: left;' class='text-font-serif'> ASP Input </div>";
tag += "<div>"; // start table
tag += "<table><tr>";
tag += "<td><span class='text-lower text-font-serif'>ASP</span></td>";
for (var i = 0; i < 5; i++) {
tag += "<td><label for='" + "Asp_Input" + i.toString() + "'>" + "<span class='text-font-serif'>" + _ret.inputTitle[i] + "</span></label>";
tag += "<input type='text' class='input-text-box' id='Asp_Input" + i.toString() + "'/></td>";
}
tag += "</tr></table>";
tag += "</div>"; // end table
return tag;

};
_ret.bindEvent = function () {
var _sel = $('#Asp_Input1');
_sel.change(function () {
var val = _sel.val();
alert("changed" + val);
});
}
_ret.updateData = function () {}; // update year data
return _ret;
}

function populateChart() {
var _hipChart = new HipChartObj();
_hipChart.init("hipChart");
_hipChart.Draw();

var _aspChart = new AspChartObj()
_aspChart.init("aspChart");
_aspChart.Draw();
}

var AspChartObj = function () {
var _chart = {};
_chart.RenderTo = "testBarChart";
_chart.title = "Percentage Change of Hip ASP and DRG 470 Reimbursement Over Time";
_chart.getTitle = function () {
var sub_titile1 = "Percentage Change of Hip ASP and DRG 470 Reimbursement Over Time"; ///  todo , get
var sub_titile2 = ""; ///  todo , get
_chart.titile = sub_titile1 + sub_titile2;
return _chart.titile;
};
_chart.input = {
xAxis_categories : ["2010", "2011", "2012", "2013"]

};
_chart.getInputData = function () {
var _input = {};
_input.xAxis_categories = ["2010", "2011", "2012", "2013"]; // ["Todo", "Todo", "Todo", "Todo"]; // todo
_chart.input = _input;
return _input;
};
_chart.init = function (_renderTo) {
_chart.title = _chart.getTitle();
_chart.input = _chart.getInputData();
_chart.RenderTo = _renderTo;

};
_chart.Draw = function () {
var chart = new Highcharts.Chart({
chart : {
renderTo : _chart.RenderTo,
type : 'column'
},
title : {
text : _chart.title
},
xAxis : {
categories : ['2010-10', '2011-11', '2012-12', '2013-03']
},
yAxis : {
title : {
text : ' Percent',
style : {
color : '#4572A7'
}
},
labels : {
format : '{value} mm',
style : {
color : '#4572A7'
},
formatter : function () {
return (this.value) * 100 + '%';
}
},
opposite : false
},
credits : {
enabled : false
},
legend : {
/* layout: 'Horizontal',*/
align : 'center',
verticalAlign : 'bottom',
borderWidth : 0
},
series : [{
name : 'Knee ASP',
data : [0.538, 0.50, -1, 0.2]
}, {
name : 'Drug 470',
data : [3, 4, 4, -2]
}
]
});
}
return _chart;
}

var HipDragPgTagObj = function () {
var _ret = {};
_ret.input = ["-", "-"]; // get ASP and DRG value
_ret.title = "Percentage Change of Hip ASP and DRG 470 Over Time";
_ret.init = function () {
// get input from model
_ret.htmlTag = _ret.getHtmlTag();
};

_ret.htmlTag = "";
_ret.getHtmlTag = function () {
var dd1 = new selectObj();
var dd2 = new selectObj();
dd1.init();
dd2.init();

var tag = "";
tag += "<div class='text-box-title'>" + _ret.title + "</div>";
tag += "<div>"; // start table
tag += "<table class='constuct-table'>";
tag += "<tr><td style='width:70%'>" + dd1.htmlTag + "</td><td style='width:30%'>" + "<span class='text-font-serif'>ASP: </span> " + _ret.input[0] + "</td></tr>";
tag += "<tr><td style='width:70%'>" + dd2.htmlTag + "</td><td style='width:30%'>" + "<span class='text-font-serif'>DRG: </span>" + _ret.input[1] + "</td></tr>";
tag += "</table>";
tag += "</div>"; // end table
//        tag += "</div>"; // end HipDragObj
return tag;
}
return _ret;
}

var selectObj = function () {
var _ret = {};
_ret.title = "Year1";
_ret.divTag = "ddl_Year1";
_ret.input = [2011, 2012, 2013];
_ret.init = function (_divTag, _title, _inputArray) {
// get input
_ret.divTag = (_divTag != "" && _divTag != null) ? _divTag : "id_undefined";
if (_title != null && _inputArray != null) {
_ret.title = _title;
_ret.input = null;
_ret.input = new Array();
for (var i = 0; i < _inputArray.length; i++) {
_ret.input[i] = _inputArray[i];
}
}
_ret.htmlTag = _ret.getHtmlTag();
// get html tag
};
_ret.htmlTag = "";
_ret.getHtmlTag = function () {
var _tag = "";
//        _tag += "<div>";
_tag += "<div data-role='fieldcontain'>";
_tag += "<label for='" + _ret.divTag + "' class='dropdown-text-lower'>" + _ret.title + "</label>";
_tag += "<select  id='" + _ret.divTag + "' data-inline='true' data-mini='true' data-theme='c'>";
for (var i = 0; i < _ret.input.length; i++) {
_tag += "<option value='" + util_forceString(i, "1") + "'>" + _ret.input[i] + "</option>";
}
_tag += "</select>";
_tag += "</div>";
return _tag;
};
return _ret;
}

var constructsSoldPgTag = function () {
var _ret = {};
_ret.title = "Constructs Sold";
_ret.inputData = [157, 306, 414, 0, 0];
_ret.inputType = "Hip";
_ret.inputTitle = ["2010", "2011", "2012", "2013", "2014"];
_ret.init = function () {
_ret.htmlTag = _ret.getHtmlTag();
};
_ret.htmlTag = "";
_ret.getHtmlTag = function () {
var _tag = "<div>";
_tag += "<div class='text-box-title'> <span>" + _ret.title + "</span></div>";
_tag += "<div> &nbsp; </div>";
_tag += "<table class='constuct-table'>";
_tag += "<tr><td>&nbsp;</td>"
for (var i = 0; i < _ret.inputTitle.length; i++) {
_tag += "<td>" + _ret.inputTitle[i] + "</td>";
}
_tag += "</tr>";

_tag += "<tr><td>" + _ret.inputType + "</td>";
for (var i = 0; i < _ret.inputTitle.length; i++) {
_tag += "<td>" + _ret.inputData[i] + "</td>";
}
_tag += "</tr>";
_tag += "</table>";
_tag += "</div>";
return _tag;
}

return _ret;
}

var PurchasePgTag = function () {
var _ret = {};
_ret.title = "Hospital Value-based Purchasing";
_ret.inputData2013 = ["2013", "-", "-", "-"];
_ret.inputData2014 = ["2014", "-", "-", "-"];
_ret.inputType = "Hip";
_ret.inputTitle = ["&nbsp;", "Adjustment", "Rank", "Quartile"];
_ret.init = function () {
// get data;
_ret.htmlTag = _ret.getHtmlTag();
};
_ret.htmlTag = "";
_ret.getHtmlTag = function () {
var _tag = "<div>";
_tag += "<div class='text-box-title'> <span>" + _ret.title + "</span></div>";
_tag += "<table class='constuct-table'>";
_tag += "<tr>";
for (var i = 0; i < _ret.inputTitle.length; i++) {
_tag += "<td>" + _ret.inputTitle[i] + "</td>";
}
_tag += "</tr>";

_tag += "<tr>";
for (var i = 0; i < _ret.inputTitle.length; i++) {
_tag += "<td>" + _ret.inputData2013[i] + "</td>";
}
_tag += "</tr>";

_tag += "<tr>";
for (var i = 0; i < _ret.inputTitle.length; i++) {
_tag += "<td>" + _ret.inputData2014[i] + "</td>";
}
_tag += "</tr>";

_tag += "</table>";
_tag += "</div>";
return _tag;
}

return _ret;
}

var ImpactSeqPgTag = function () {
var _ret = {};
_ret.title = "Impact of Sequester";
_ret.inputClicke = true;

_ret.init = function () {
// get data;
_ret.htmlTag = _ret.getHtmlTag();
};
_ret.htmlTag = "";
_ret.getHtmlTag = function () {
var chkId = "impactSeq";
var chkbox = new objCheckbox(chkId);

var _tag = "<div>";
_tag += "<div class='text-box-title'> <span>" + _ret.title + "</span></div>";
_tag += "<div> &nbsp;</div>";

_tag += "<div class='box-align-center'><table class='Impact-table'>";
_tag += "<tr>";
_tag += "<td>" + chkbox.tagHtml;
_tag += "</td>" + "<td>" + "Click to Apply" + "</td>";
_tag += "</tr>";

_tag += "</table></div>";

_tag += "</div>";
return _tag;
}

return _ret;
}

var objCheckbox = function (_divTag) {
var ret = {};
var tag = "";
tag += "<fieldset data-role='controlgroup'>";
tag += "<input type='checkbox' data-theme='z' name='";
tag += util_forceString(_divTag, "") + "'  id='" + util_forceString(_divTag, "") + "' data-iconpos='notext' />";
tag += "<label for='" + util_forceString(_divTag, "") + "' data='content' style='position:relative;right:-0.9em'></label>";
tag += "</fieldset>";
ret.tagHtml = tag;

ret.addObserver = function (observer) {
ret.Observers.push(observer);
};
ret.removeObserver = function (observer) {
if (ret.Observers.length > 0) {
ret.Observers.pop(observer);
}
};
ret.Observers = new Array();

return ret;

}

Saturday, March 5, 2016

SAS and R - Which One ?

对于数据分析人员来说,他们只是工具的一种。

与其花时间犹豫该学那种软件,不如都修炼一番,以便日后业务处理上能够随心所欲,不受工具之困。

Saturday, February 20, 2016

Unix Shell Script Basics

14 04. Unix Shell Scripting Tutorial - Shell Programming Features (Part 3)
###### the types of shell language #####
Bourne Shell --- sh
Ksh
bash
zsh
csh
#### the script interpreters
csh
sed
tcl
perl
awk
##############################
Step 1: edit shell script
Step 2: chmod +x script
step 3: ./script #######to run
##########################
echo $path
################
echo
read varname var2
echo $varname $var2
echo "abc \c"
#######################
ls > a.txt
ls >> a.txt #append the file
########## Error Message ##############
find -name a.txt >result.txt 2>error.txt
find -name a.txt >result.txt 2>&1 #save to same file
#######################
cat file
######### number of users on system #####
echo passwd > file.txt
## number of logged users ###\
echo who
## number of running processes ##
ps -e
## count numbers of user
cat /etc/passwd | wc -l
###############################
=========
### run in background ##
&
sleep 100 &
backup &
#######################
< stardard input
who | wc > user.txt
#######################
sudo add-apt-repository ppa:notepadqq-team/notepadqq
sudo apt-get update
sudo apt-get install notepadqq

#######################Special Character#######################
& * ? [ ] < > |
( ) ' # $ ^ =
` ' " { } ; \"
#######################
Echo the fee is \$10
echo the comment is "#" character
echo "the comment is # character"
echo the comment is `$` character
####################### Comments #######################
##run a script
1. myscript
2. sh myscript ### the script does not need to be made executable
3. . myscript  ### the script are excuted by current shell
4. sh .profile
5. . . profile
6. exec myscript ## terminates current shell, run script, once done, logged off current user

############ Specify Script Interpreters ##########################
#!/bin/csh  ### in first line of script, specify which interpreter
OR
#!/user/local/bin/perl
######################## Variables #######
month=agust #### case sensitive
sports=basketball ## no space
street="Smith Avenue"  ## add space
###### all shell variables are strings
echo you live on $street
############ Environment Variables #########
$HOME
$PATH
$LOGNAME
$TERM
## change the enviroment variable , then execute
. SCRIPT
SH SCRIPT
## export variable to environment
## 1. script.sh ##
month=Jan
export month
## 2. run it ##
. script.sh
## #########
echo $month
## ############# Quotes ######################
' single quote ##### seperate command parameters, new line characters
" dobule quote #####
` back quote











Sunday, January 3, 2016

SQL Coding Style








SQL编程经典-精妙SQL语句收集

SQL语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL语句操作,方便自己写SQL时方便一点,想贴上来,一起看看,同时希望大家能共同多多提意见,也给我留一些更好的佳句,整理一份《精妙SQL速查手册》,不吝赐教!(文章作者:仰天一笑)

一、基础

1、说明:创建数据库
CREATE DATABASE database-name  
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice ’disk’, ’testBack’, ’c:\mssql7backup\MyNwind_1.dat’
--- 开始 备份
BACKUP DATABASE pubs TO testBack  
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:  
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表
drop table tabname  
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)  
说明:删除主键: Alter table tabname drop primary key(col)  
8、说明:创建索引:create [unique] index idxname on tabname(col….)  
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement  
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、说明:几个高级查询运算词
A: UNION 运算符  
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。  
B: EXCEPT 运算符  
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。  
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。  
注:使用运算词的几个查询结果行必须是一致的。  
12、说明:使用外连接  
A、left outer join:  
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。  
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:  
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。  
C:full outer join:  
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

二、提升

1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a

2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;

3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
例子:..from b in ’"&Server.MapPath(".")&"\data.mdb" &"’ where..

4、说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

5、说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

6、说明:外连接查询(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

7、说明:在线视图查询(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;

8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2

9、说明:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

10、说明:两张关联表,删除主表中已经在副表中没有的信息  
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

11、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

12、说明:日程安排提前五分钟提醒  
SQL: select * from 日程安排 where datediff(’minute’,f开始时间,getdate())>5

13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

14、说明:前10条记录
select top 10 * form table1 where 范围

15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于**每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)

17、说明:随机取出10条数据
select top 10 * from tablename order by newid()

18、说明:随机选择记录
select newid()

19、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

20、说明:列出数据库里所有的表名
select name from sysobjects where type=’U’  

21、说明:列出表里的所有的
select name from syscolumns where id=object_id(’TableName’)

22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
select type,sum(case vender when ’A’ then pcs else 0 end),sum(case vender when ’C’ then pcs else 0 end),sum(case vender when ’B’ then pcs else 0 end) FROM tablename group by type
显示结果:
type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3

23、说明:初始化表table1

TRUNCATE TABLE table1

24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc

三、技巧

1、1=1,1=2的使用,在SQL语句组合时用的较多

“where 1=1” 是表示选择全部   “where 1=2”全部不选,
如:
if @strWhere !=’’  
begin
set @strSQL = ’select count(*) as Total from [’ + @tblName + ’] where ’ + @strWhere  
end
else  
begin
set @strSQL = ’select count(*) as Total from [’ + @tblName + ’]’  
end  

我们可以直接写成
set @strSQL = ’select count(*) as Total from [’ + @tblName + ’] where 1=1 安定 ’+ @strWhere  

2、收缩数据库
--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收缩数据和日志
DBCC SHRINKDB
DBCC SHRINKFILE

3、压缩数据库
dbcc shrinkdatabase(dbname)

4、转移数据库给新用户以已存在用户权限
exec sp_change_users_login ’update_one’,’newname’,’oldname’
go

5、检查备份集
RESTORE VERIFYONLY from disk=’E:\dvbbs.bak’

6、修复数据库
ALTER DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB(’dvbbs’,repair_allow_data_loss) WITH TABLOCK
GO
ALTER DATABASE [dvbbs] SET MULTI_USER
GO

7、日志清除
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
        @MaxMinutes INT,
        @NewSize INT


USE     tablename             -- 要操作的数据库名
SELECT  @LogicalFileName = ’tablename_log’,  -- 日志文件名
@MaxMinutes = 10,               -- Limit on time allowed to wrap log.
        @NewSize = 1                  -- 你想设定的日志文件的大小(M)

-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size  
  FROM sysfiles
  WHERE name = @LogicalFileName
SELECT ’Original Size of ’ + db_name() + ’ LOG is ’ +  
        CONVERT(VARCHAR(30),@OriginalSize) + ’ 8K pages or ’ +  
        CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + ’MB’
  FROM sysfiles
  WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
  (DummyColumn char (8000) not null)


DECLARE @Counter   INT,
        @StartTime DATETIME,
        @TruncLog  VARCHAR(255)
SELECT  @StartTime = GETDATE(),
        @TruncLog = ’BACKUP LOG ’ + db_name() + ’ WITH TRUNCATE_ONLY’

DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE     @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
      AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)  
      AND (@OriginalSize * 8 /1024) > @NewSize  
  BEGIN -- Outer loop.
    SELECT @Counter = 0
    WHILE  ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
      BEGIN -- update
        INSERT DummyTrans VALUES (’Fill Log’)  
        DELETE DummyTrans
        SELECT @Counter = @Counter + 1
      END    
    EXEC (@TruncLog)  
  END    
SELECT ’Final Size of ’ + db_name() + ’ LOG is ’ +
        CONVERT(VARCHAR(30),size) + ’ 8K pages or ’ +  
        CONVERT(VARCHAR(30),(size*8/1024)) + ’MB’
  FROM sysfiles  
  WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF  

8、说明:更改某个表
exec sp_changeobjectowner ’tablename’,’dbo’

9、存储更改全部表

CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
 @OldOwner as NVARCHAR(128),
 @NewOwner as NVARCHAR(128)
AS

DECLARE @Name   as NVARCHAR(128)
DECLARE @Owner  as NVARCHAR(128)
DECLARE @OwnerName  as NVARCHAR(128)

DECLARE curObject CURSOR FOR  
 select ’Name’   = name,
  ’Owner’   = user_name(uid)
 from sysobjects
 where user_name(uid)=@OldOwner
 order by name

OPEN  curObject
FETCH NEXT FROM curObject INTO @Name, @Owner
WHILE(@@FETCH_STATUS=0)
BEGIN      
 if @Owner=@OldOwner  
 begin
  set @OwnerName = @OldOwner + ’.’ + rtrim(@Name)
  exec sp_changeobjectowner @OwnerName, @NewOwner
 end
-- select @name,@NewOwner,@OldOwner

 FETCH NEXT FROM curObject INTO @Name, @Owner
END

close curObject
deallocate curObject
GO


10、SQL SERVER中直接循环写入数据
declare @i int
set @i=1
while @i<30
begin
   insert into test (userid) values(@i)
   set @i=@i+1
end