test-day-8

更新了 Fastrun Daily Traking,听从James Qian的建议,把一些模糊的错误类型,进一步拆分成了更详细的错误

发现 check health 的问题还是很多

上午例会,对Fastrun究竟是什么有了比较简单的概念

Sync -> Build -> Deploy -> Test

Build test 和 Build Deploy 是并行进行的

下午修改好了 solr 的 image tag pattern,envName 暂时用 local

对于新的 issue,还是需要等待进一步消息

问了问 Yanqin, 有可能是 tar 在解压的时候出错了?

找不到tarfile

那么也有可能是 wget 这一步出错

和tarfile的文件名有关系?

明天再来看看更多细节,还要处理新版本的 cut

test-day-7

今天居然改了一整天的 build.sh

只是为了修改 build image 的 release version pattern 就找了半天

对应的时间戳生成的方式完全不一样

还有 CHG number 一开始压根就没有这个参数

甚至还涉及到了 binary release version

压根找不到对应的生成位置

但是引入了新的参数,可能会影响到 Loadtest,所以明天来需要再重新看看

下午晕乎乎的,大概是中饭GI值太高太高了,明天吃河粉或者 wagas 吧

办公室楼下一楼就有一家吃草的店,明天可以试试看

后来还解决了 code-merge-pipeline 的 token 问题

真的就藏在 /var/lib/jenkins/super_secret 里面

然后正式接到了一个新的 issue

需要 fix 一个名为 fast-liquibase 的 Jenkins job

可能是 wget 的命令出错了,也可能是找不到对应的文件,甚至搞不好还是一个 token 问题

我记得之前说是有个网站处在生死边缘,好像正是 artifactory?还是啥别的

反正后来发邮件问了

实在不行的话就还需要多问问 Yanqin Chen 了

还是挺怀念当时实习的小公司,四个人人均 root

JS 笔记 第 4 章 变量、作用域、内存

TL;DR

  • 原始值大小固定,保存在栈内存上
  • 复制原始值至另一个变量,会创建第二个副本
  • 引用值是对象,保存在堆内存上
  • typeof 确认原始类型,instanceof 确认引用类型
  • 全局上下文只能访问全局上下文中的变量和函数,局部中的数据无法访问

4.1 原始值与引用值

原始值是简单的数据,访问的是值

引用值保存的是多个值的对象,保存的是对象的引用

JS并不能够直接操作内存

字符串是原始值,而不是引用

原始值添加属性并不会报错,但添加完属性还是Undefined

只有引用值可以动态添加属性

把引用值赋给另一个变量的时候,两个变量是对堆内存中同一个对象的指针

传参却只有按值传参

函数的参数是局部变量

1
2
3
4
5
6
7
8
9
10
11
12
13
  TODO:

# 4.2 执行上下文与作用域

作用域链


# 4.3 垃圾回收

标记清理

引用计数

test-day-6

今天忙了一整天 CHG0150416 cut的事情

发现 code-merge-pipeline 依然还是有bug

在 testinfra-master 上找不到 citools 的认证 token

明天来再问问组里的大神们

即便上班工作了,我距离职业的开发者还是远得很

远远不能被称之为 pro 或者 specialist

毕竟也不可能一口气吃成胖子

踏踏实实慢慢学吧

明早过来终于终于终于可以改改代码了

bash脚本,上一次写还是在大三

本来想着,哪天把 hhkb 带去办公室用吧

这份 thock thock 的手感着实令我魂牵梦萦,欲罢不能

从1992年开始继承自 Sun 3 键盘的配列,习惯了之后犹如毒药一般

办公室的ANSI标准配列的键盘已经让我误触频出了……

不得不在软件层面改键,让它适应我的习惯

每天最期待的时候就是回家用自己的键盘写点代码

已经有一种相见恨晚的感觉了

结果发现组里的前端大神用的不过是一块樱桃青轴mx1.0

我相信他们用纸笔写下的代码

都比我的优雅流畅

踏踏实实修炼吧

test-day-5

第二周!

上午更新了Fastrun Daily Tracking,在 19539 发现了Fail to get Jenkins Job

随后类似的错误报了相当多,也许是磁盘写满了的缘故

接着看了看 fastrun.portal 的源码,虽说同样都用了react,但整个项目结构和官网上的井字棋教程完全不一样

后面还是需要多去读一读看看的

比如说异步回调这边我就完全摸不着头脑

中午休息时间做了道使用最小堆的题,还对照着自己常用的键盘用PowerToys修改了下按键布局

这样以后 Backspace 和退出 vim 的 insert 模式就不会因为肌肉记忆按错了

下午依旧在试着让 1-Box Run Full-Cycle

起初又一次遇到了Permission Denied的问题,

在Jenkins master上执行了Jenkins Job Add_Token

大概是 cygwin 下的 ssh-keygen 生成的 id_rsa.pub 地址并不在使用 powershell 生成的地址吧

cygwin 的位于 /home/yunhaoliu/.ssh/

ps 的位于C:\Users\yunhaoliu\.ssh\

然后解决了权限问题之后,发现先前在 ~/.bashrc中加入的各种 <repo>_HOME 并没有被 export,每次在 Windows Terminal中开启一个新的 cygwin 标签页,都需要重新执行 source ~/.bashrc,大概是需要写进win系统设置的path里吧

kanas 和 paragon 都在 nucleus 的 repo 里

随后遇到了 build catalog failed 的问题,

翻了翻log,发现是用 python 3.9 去执行了 2.7 的脚本

才想起来在安装 node 的时候,为了从源代码编译 node, 自动安装了 3.9.6,临时卸掉吧

现在用的是lts,不急着更新

大概从三点半开始在本地 One-Box 里面执行了 Build-Nucleus 和 Build-Catalog

Catalog花了25分钟,Nucleus估计要挂着一晚上了

稍微有点点担心超时,下班前是 build 不完了

check了若干 url-list群组里面的 jenkins job url

明日版本是 CHG0150416-CD-Regression

看看我再可以多做些什么?

audit -> code-merge -> (recut) -> build image(check version!!!!) -> regression(check parameters) -> sign off

code-merge-pipeline 仍然无法创建分支,明日确认

明日确认参数与build情况

Acronym

A

ACL Access Control List

AEM Acquisition, Engagement and Monetization

ATV Average Transaction Value s

AOV Account Owner Verification

API - application program interface

B

BVT build verification test

BYOB Build Your Own Bundle

BAD Bad Actor Detection

C

CAB Change Advisory Board

CC Code Complete

CM Change Management

CR Change Request

CDN Content Distribution Network

CEM Customer Experience Management

CCTA Command & Conquer Tiberium Alliances

CTE Customer Testing Environment

C&I - Commerce & Identity

CTA - call to action (button)

CC - code completion (or for email, carbon copy)

D

DC Design Complete

DAI Dragon Age Inquisition

DCR Design Change Request

DD Digital Download

DLC Downloadable Content

DOB date-of-birth

DRM Digital Right Mgmt

DGI Digital Games Implementation

E

ET Exact Target

EULA End User License Agreement

EADP - EA Digital Platform

EAIT - EA Information Technology

EAX - EA Access

F

F2P free 2 play

FC Feature Complete

FCR feature cut request

FOS FIFA online services

FUT FIFA Ultimate Team

G

GAR game account risk

GGG great game guarantee

GOS Global Online Studio, Global Online Service

H

HRMR High Risk Manual Review

I

ITO Install Through Origin

J

JWT Jason Web Token

K

KPI - key performance indicator

L

LT Load Test

M

MDM Master Data Management

MTX Micro Transactions

MR Manual Review

MIR Major Incident Review

N

NAM Nucleus Account Management

NNG New Next Generation

NDC New Device Check

O

OFB Open for Business, old Catalog

OPS Operation Support

P

P4F play 4 free

PCI Payment Card Industry

PCT pre-checkin test

PHD product handover doc

POC proof of concept

POC point of contact

PSU/PCU Peak Simultaneous / Concurrent Users

PSN playstation network

PIN Player Insight Network

PM - program/product manager

R

RCA Root Cause Analysis

RTB Run The Business

RTW Release To Web

RTP Require To Play

S

SCM Source Control Management

SLA Service Level Agreement

SQA security quesiton/answer

SWTOR Star Wars The Old Republic

SSO Single Sign On

SPA Origin Single Page Web Application

T

TC Test Complete

TFA 2 phase auth

TPM Transaction Per Minute

TTD trust this device

TSTO The Simpsons Tapped Out

U

UL Unlock (i.e. MicrocontentUL Microcontent Unlock)

UPS User Personalization Service

W

WIP work in progress

WWCE World Wide Customer Experience

WSR Weekly Status Report

X

XSTS Xbox Secure Token Service

Z

ZBB Zero Bug Bounce

ZBR Zero Bug Release

Others

Dev - short for developer, or software engineer

SRM - Security& Risk Management

DCR - design change request

BIN - bank identification number

PIN - personal identification number

TFA - two factor authentication

QA - Quality Assurance (testers)

MUT - Madden Ultimate Team

SSO - single sign on

VPN - virtual private network

PMML - predictive modeling markup language

PCI - payment credential info

Ops - short for operations

RTB - run to business

Spec - short for specification document

ACL - access control list

FTP - file transfer protocol, and SFTP is a secure file transfer protocol

POC - point of contact or proof of concept (context!!!)

TD - technical director

DD - development director

M.R. - in regard to RESON, this is “manual review”

M.R. D. F. - also in regard to RESON, this is “manual review, delay fulfillment”

UAT - User Acceptance Testing

EOD - end of day

COB - close of business

ATO - account takeover

SLA - service level agreement

ETA - estimated time of arrival

GL - greenlight

DCR - design change request

test-general-procedures

Useful Links

Process of Release and Regression

CHGxxxxxxx-CD-Regression

cd develop spreadsheel

Fastrun-CN

Release Runbook

Staging deployment jenkins job

General Procedures

  1. find intersections with my jobs from the process and CHGxxxxxx-CD-Regresssion

    1.1 get table info from both 2 pages

    1.2 calculate which repo is for whom

  2. merge those repos using jenkins tools

    is there any way to run build with parameters from console?

    is there any way to check build info without frequently cheking page manually?

  3. check parameters: keymaster’s release is rel550, and access is 542, others 551.

  4. build image of those repos (still using jenkins tools)

  5. send merge links & bulid links to slack cm-url-list channel

    check slack apis for auto sending messages

  6. deploy staging after image was built

  7. update build numbers to chgxxx-cd-regression. lockbox-v2’s is in jenkins console log, search tagged for it.

  8. initialize regression test with Fastrun

JS 笔记 第 3 章 语言基础

3.1 语法

区分大小写,标识符的开头必须是字母、_$,使用驼峰大小写,首字母小写

关键字、保留字、null、true、false不能作为标识符

严格模式可以不破坏ECMAScript 3语法

语句结尾的分号,省略则意味着由解析器确定语句结尾,推荐使用

始终在控制语句中使用代码块,可以让内容更清晰,也可以减少出错的可能性

3.2 关键字与保留字

不能用作标识符或者属性名,未来的保留字也不要用

3.3 变量

松散类型,变量可以用来保存各种类型的数据,每个变量名都只是命名占位符

3.3.1 var

声明范围是函数作用域,会成为包含它的函数的局部变量,在函数退出时销毁

不推荐改变变量值的类型

声明提升:把所有变量声明都拉到函数作用域的顶部

允许冗余声明,反复var同一个变量是可行的

3.3.2 let

声明范围是块作用域

在作用域中,不会被声明提升

不允许同一个块作用域中出现冗余声明

不能依赖条件声明,因为let作用域时块,不可能检查前面是否已经let过同名变量,也不可能在没有声明的时候就用。

for循环的迭代变量若是var,会渗透到循环体外部

用let声明迭代变量,js引擎会在后台为每个迭代声明一个新的迭代变量

3.3.3 const

声明时必须初始化变量,而且修改变量会导致运行时错误

可以保证变量值不被修改,在每次迭代中只创建一个新变量,因此在for-of或for-in中有特别意义

其余同let

3.3.4 声明风格与最佳实践

不用var,优先const

只在提前知道值可能会变的前提下,用let

3.4 数据类型

原始类型,简单数据类型

  • Undefined, 声明了变量,但没有初始值
  • Null, 空对象指针,Object
  • Boolean, true or false
  • Number, 采用IEEE754保存整数和浮点数
  • String,16位Unicode字符序列
  • Symbol,唯一且不可变,确保对象属性使用唯一标识符

复杂数据类型,Object,无序名值对集合,派生其他对象的基类

可以用typeof操作符确定类型

Undefined == Null, Undefined !== Null

如果变量要保存对象,当时又没有这个对象可以保存,初始值就要用null

false: “”, 0, NaN, null, undefined

0.1 + 0.2 != 0.3,永远不要测试特定的浮点值,因为采用了IEEE754格式的双精度浮点值

NaN != NaN

TL,DR 小结

  • 六种基本数据类型
  • 没有浮点数和整数的区别,全是Number
  • Object是所有对象的基类
  • ECMAScript提供了类似 C 语言中常见的基本操作符
  • 流控制语句也差不多都是从其他语言那里借鉴过来的
  • 任何函数都可以在任何时候返回任何值
  • 不指定返回值的函数,返回Undefined

JS 笔记 第 2 章 HTML中的JavaScript

<script>元素

在行内使用JavaScript的时候,字符串 </script> 不被允许出现,会被浏览器当成script结束,需要使用转义字符

包括我在用md写这篇文章的时候,如果不加转义字符,前文内容也会被浏览器当成script结束

使用了src属性的<script>元素不应该再在里面包含其他JavaScript代码。

浏览器只会下载执行外部的脚本文件,忽略行内代码

src属性可以是一个来自外部域的完整url,浏览器会发get请求到目标地址

所有script元素会依照在网页中出现的次序被解释,不用defer或async的时候,会严格按照出现次序

现代通常把<script>放在<body>元素中的页面内容后面,这样就会先渲染完所有页面内容以后再处理js代码

异步脚本可以不必等待其他脚本,也不阻塞文档渲染,并不能保证执行次序

异步脚本不应该在加载期间修改DOM,只适用于外部脚本

动态加载脚本

1
2
3
4
5
6

let script = document.createElement('script');
script.src = 'xxx.js';
script.async = false; // 默认是异步,手动设置为同步加载即可统一加载行为
document.head.appendChild(script);

显式声明以让预加载器知悉动态请求文件存在

1
2
3

<link rel="preload" href="xxx.js">

通过 <nonscript> 可以指定浏览器在不支持脚本的时候显示的内容

JS 笔记 第 1 章 什么是JavaScript

第四版一周目

不要在浮尘上构筑高楼

1.1 简短历史回顾

对简单表单的输入数据验证脚本 -> 通用、跨平台、厂商中立的脚本语言

ECMA-262, ECMAScript 脚本语言标准

1.2 JavaScipt 实现

JavaScript

  • ECMAScript
  • DOM, Document Object Model
  • BOM, Browser Object Model

1.2.1 ECMAScript

并无标准输入输出方法

宿主环境为其提供基准实现和与环境交互所需要的扩展

Web浏览器,Node.js,甚至Adobe Flash都是宿主环境

ECMAScript描述了语法、类型、语句、关键字、保留字、操作符、全局对象

ES6开始正式支持了类,模块、迭代器、生成器、箭头函数、期约(Promise)、反射、代理以及新的一些数据类型

ES8主要增加了异步函数和Atomics API

ES9修订了异步迭代、剩余和扩展属性

ECMAScript符合性,必须满足ECMA-262中描述的所有“类型、值、对象、属性、函数、程序语法与语义”,并支持Unicode字符标准

对于ECMA-262中并未提到的新对象和新属性,增加也可满足

也允许修改和扩展内置的正则表达式特性

1.2.2 DOM

文档对象模型,API,用来在HTML中使用扩展的XML,创建了表示文档的树

DOM level 1

  • DOM Core
  • DOM HTML

DOM level 2

  • DOM 视图
  • DOM 事件
  • DOM 样式
  • DOM 遍历和范围

DOM level 3

  • Load and save
  • DOM Validation

DOM4, Living Standard

1.2.3 BOM

浏览器对象模型,API,支持访问和操作浏览器的窗口

HTML5之前没有相关标准