test-day-268

Today’s Task

  • Fix CI Template Tagging for FistParty-Lib
  • Fix Hadar NavBar
  • Hadar Auto Start

Additional Task

  • CM Support PCI Manual stuff

Thoughts

积累的代码量远远不够

底层的知识也需要恶补

test-day-263

Today’s Task

  • Proctor CI
  • try flatten-mvn-plugin on proctor
  • Fix Deploy STG Script to skip kmblu
  • Hadar Compact Nav

Additional Task

  • Clear Catalog STG DB and restore Offers

java-tips

Day 1

1. 接口与抽象类的区别

接口 抽象类
方法 抽象方法 抽象方法和普通方法
关键字修饰 implement abstract
定义常量变量 静态常量 成员变量
子类方法 所有方法 抽象方法
子类继承 多继承 单继承
构造方法 不可以有 可以有
接口实现 只能继承接口,不能实现 可以实现接口,可以不实现接口方法

2. 继承与 C++ 的区别

Java 类只能单继承,C++ 可以多继承

C++ 子类可以有两个以上父类

3. Java 数据结构,HashMap 底层实现

Array, LinkedList, Stack, Queue, Stack, Tree, Map …

1.7前用的是数组与链表, 1.8 之后用的红黑树

红黑树 … ?

4. Java 用的是值传递还是引用传递

值传递:传递对象的副本,复制一份实参的值给形参

引用传递:传递对象的引用,复制实参的地址给形参

说法1: 对象传递是引用传递,原始数据类型是值传递

说法2: 值传递

对象:Array, Class, Interface

原始数据类型: Integer, Float, String, Boolean

5. final, finally, finalize

final: static final foo = "bar"; 常量必须附初值且不变

finally: try { … } catch { … } finally { … }

finalize: java.lang.Object.finalize(), 允许回收未被使用的内存垃圾

6. 序列化,反序列化

序列化: 对象 -> 字节序列, 用于存储与传输

反序列化: 字节序列 -> 对象

Hadar 连 DB 的时候加上的一通 Jackson 就算是一个例子(虽然实现的很难懂)

7. 不可变类

实例的属性不可修改的类

不可变类的实例对象从创建出来之后,成员变量不可被修改

比如说 String 和基本类型的包装类

更安全一些

8. 为什么 String 是不可变类

  1. String 类的三个属性都是 private 而且没有修改数值的方法

  2. String 类的三个属性都是 final

  3. String Pool , 创建 String 时如果字符串值在 String Pool 里面就会返回已经存在的 String 的引用,如果 String 可变,其它引用这个字符串值的 String 值会变

9. API,SPI

API:实现方定义与实现的接口

SPI:调用方制定的接口

Day 2

Day 3

Day 4

Day 5

Day 6

Day 7

test-day-261

Today’s Task

  • Hadar Navbar SubMenu CSS
  • GitLab CI Pipeline Baseimage

Additional Task

  • Resolve Nucleus Merge Conflict
  • CM Support on STG deployments for James

Thought

寒气逼人

test-day-255

Today’s Task

  • Fix Image jobs’ message channel
  • Fix Image jobs’ common baseimage
  • Fix Image jobs’ tag check
  • Start Hadar Flow on CM Day

Additional Task

Thought

1

想再进一步减少常规 cm 流程的 manual step

在 cm cut 当天的上午 10:30 触发 audit

在 audit job 结束之后拿到准确的 component list

根据 component list 自动触发 code merge

用 jenkins 去起一个定时 job call hadar api,然后 hadar 再去起对应的 jenkins job

为什么不直接用 hadar…

2

hadar 的 groovy script exception 是放在 modal 里展示的 = =

这样其实根本来不及看,需要放到本地的某个文件里

3

hadar fetch job log

4

Nav Bar simplification

CM 太多的时候不方便找

加个搜索框也好

5

如果 toliman 的 acl 搞不定的话

hadar start job 的时候没地方选需要用哪台 Jenkins

另外两台 jenkins 的 job 名称之间需要弄个 map

6

用 hadar 起 fastrun regression

7

Hadar Serialization (Restore status and progress after service restart)

8

Hadar Dark Mode

9

Slack bot token 明文写在 code 里,修

test-day-248

Today’s Task

  • Release Support
  • Release LB-Tools image
  • Fix Firstparty-lib & ESS-Utils gitlab ci
  • Fix Sox-Audit Kotlin Exceptions
  • Fix Data Consistency Tool message ticket url
  • Fix wrong Nucleus image tag version in description
  • Fix Keymaster image push to AWS script

Additional Task

  • Deployed billing & qahandler to AWS for several times

Thought

一边是没做完的历史基础项目

一边是新的技术需要去探索

好想找到一个能下班到家也充满活力的办法…

better-sleep

6 tips for better sleep

Improves Quality & Quantity of sleep

  1. Regularity

Go to bed at same time every day to maintain internal sleep schedule in my body.

Set TO-BED Alarms

Avoid this weekend.

  1. Temperature

Keep it cool.

Brain & Body needs to cool down 1 degrees Celsius to initiate sleep.

18 degrees Celsius is

  1. Darkness

Melatonin helps to regulate the healthy timing of our sleep.

Stay AWAY from any screens at least an hour before sleep.

Dim down lights to feel sleep.

  1. Walk it out

Don’t stay in bed

Get out of bed after 25 mins’ failure to sleep.

Break assosiation of bed and awakeness

  1. Monitor Alcohol and Caffeine

avoid intake after 15:00

  1. Wind down routine

sleep is like landing a plane, it’s a process.

try to do sth. relaxing

test-day-245

Today’s Task

  • PCT message format change
  • Add exception and retry for PCT when FR down
  • Fix Sox Audit Message

Additional Task

Thought

在 Java 8 的历史项目里接了个 slack-api-client 去发消息

得到了某个 Kotlin 的 Exception …

手动在 pom 里面指定了 kotlin-stdlib 和 okhttp 的版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<dependency>
<groupId>com.slack.api</groupId>
<artifactId>slack-api-client</artifactId>
<version>1.27.0</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>1.3.70</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.10.0</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.lang.NoSuchMethodError: kotlin.collections.ArraysKt.copyInto([B[BIII)[B
at okio.Segment.writeTo(Segment.kt:169)
at okio.Segment.compact(Segment.kt:152)
at okio.Buffer.write(Buffer.kt:1491)
at okio.Buffer.read(Buffer.kt:1503)
at okio.Buffer.writeAll(Buffer.kt:1290)
at okio.Options$Companion.buildTrieRecursive(Options.kt:189)
at okio.Options$Companion.buildTrieRecursive(Options.kt:175)
at okio.Options$Companion.buildTrieRecursive$default(Options.kt:107)
at okio.Options$Companion.of(Options.kt:72)
at okhttp3.internal.Util.<clinit>(Util.kt:70)
at okhttp3.internal.concurrent.TaskRunner.<clinit>(TaskRunner.kt:309)
at okhttp3.ConnectionPool.<init>(ConnectionPool.kt:41)
at okhttp3.ConnectionPool.<init>(ConnectionPool.kt:47)
at okhttp3.OkHttpClient$Builder.<init>(OkHttpClient.kt:471)
at com.slack.api.util.http.SlackHttpClient.buildOkHttpClient(SlackHttpClient.java:45)
at com.slack.api.util.http.SlackHttpClient.<init>(SlackHttpClient.java:94)
at com.slack.api.util.http.SlackHttpClient.<init>(SlackHttpClient.java:90)
at com.slack.api.util.http.SlackHttpClient.<init>(SlackHttpClient.java:86)
at com.slack.api.Slack.<clinit>(Slack.java:68)
at com.soxaudit.helper.slack.SlackMessageHelper.sendFileMessage(SlackMessageHelper.java:42)
at com.soxaudit.App.sendReport(App.java:108)
at com.soxaudit.App.start(App.java:93)
at com.soxaudit.App.auditBranch(App.java:62)
at com.soxaudit.App.app(App.java:44)
at com.soxaudit.SoxauditApplication.main(SoxauditApplication.java:18)
... 8 more

test-day-244

Today’s Task

  • Finish release job slack messages
  • LB PCT job slack messages
  • Sox Audit Slack Message

Additional Task

Thought

一旦睡精神了就会开始思考意义

从这个角度而言这份工作的内容适合我用昏昏沉沉的状态去面对

这样就不会怀疑我每天到底都在干些什么了

卷过头了就会想躺

安逸久了就会想卷

叔本华的钟摆

欲望得到了满足就会空虚

欲望得不到满足就会痛苦

在空虚和痛苦之间反复横跳