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 ?

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

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