Posts

docker run -it -p 9090:9090 -p 1883:1883 -p 5683:5683/udp -v ~/.mytb-data:/data -v ~/.mytb-logs:/var/log/thingsboard --name mytb --restart always thingsboard/tb:2.3.1

default credentials:

Systen Administrator: [email protected] / sysadmin
Tenant Administrator: [email protected] / tenant
Customer User: [email protected] / customer

Manage device credentials

login as tenant

Single File Components single-file components with a .vue extension is build by tools such as Webpack or Browserify A single-file component consists of three parts: - <template> which contains the component’s markup in plain HTML - <script> which exports the component object constructor that consists of all the JS logic within that component - <style> which contains all the component styles CORE Virtual DOM Component-based UI Focus on the view library—separate concerns for routing, state management Official component library for building mobile apps

install winpcap and windump https://www.winpcap.org mv windump tcpdump list all interfaces tcpdump -D dump on interface tcpdump -i 1 -n dst host 172.17.17.6 tcpdump -i 3 tcp port 8100 tcpdump: listening on \Device\NPF_{BE2B782C-98A1-49A3-8F59-25C5A41A4B41} 10:08:11.958366 IP loaclhost.49692 > wu-pc.8100: S 2181860964:2181860964(0) win 64240 <mss 1460,nop,wscale 8,nop,nop,sackOK> 10:08:11.958513 IP wu-pc.8100 > loaclhost.49692: S 2062460989:2062460989(0) ack 2181860965 win 65535 <mss 1460,nop,wscale 8,nop,nop,sackOK> 10:08:11.979568 IP loaclhost.49692 > wu-pc.8100: . ack 1 win 513 10:08:11.

spring-cloud-greenwich-release

To get started with Maven with a BOM (dependency management only):

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Greenwich.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>    
</dependencies>

JVM bind with IPv4 Disable IPv6 address lookups when -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Stack=true Spring构造注入不需要加@Autowired spring在4.x版本后就推荐使用构造器的方式的来注入fileld 官方推荐理由 单一职责: 当使用构造函数注入的时候,你会很容易发现参数是否过多,这个时候需要考虑你这个类的职责是否过大,考虑拆分的问题;而当使用@Autowired注入field的时候,不容易发现问题 依赖不可变: 只有使用构造函数注入才能注入final 依赖隐藏:使用依赖注入容器意味着类不再对依赖对象负责,获取依赖对象的职责就从类抽离出来,IOC容器会帮你自动装备。这意味着它应该使用更明确清晰的公用接口方法或者构造器,这种方式就能很清晰的知道类需要什么和到底是使用setter还是构造器 降低容器耦合度: 依赖注入框架的核心思想之一是托管类不应依赖于所使用的DI容器。换句话说,它应该只是一个普通的POJO,只要您将其传递给所有必需的依赖项,就可以独立地实例化。这样,您可以在单元测试中实例化它,而无需启动IOC容器并单独进行测试(使用一个可以进行集成测试的容器)。如果没有容器耦合,则可以将该类用作托管或非托管类,甚至可以切换到新的DI框架。 Spring Boot Actuator <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> Actuator comes with most endpoints disabled. Thus, the only two available by default are /health and /info. management.endpoints.web.exposure.include=* by default, all Actuator endpoints are now placed under the /actuator path mvn dependency:tree [INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:2.1.4.RELEASE:compile [INFO] | +- org.

Start Dgraph cluster

dgraph zero

start Dgraph server

 dgraph server --memory_mb 2048 --zero localhost:5080 --port_offset 2000

 Note:port_offsetValue added to all listening port numbers. [Internal=7080, HTTP=8080, Grpc=9080]

How do I configure Go to use a proxy

https://stackoverflow.com/questions/10383299/how-do-i-configure-go-to-use-a-proxy

Web based graph visualization with D3 and KeyLines

https://cambridge-intelligence.com/web-graph-visualization-d3-keylines/

SETUP CLIENT

set http_proxy=192.168.0.119:3128
git config --global http.proxy http://192.168.0.119:3128
go get -u github.com/derekparker/delve/cmd/dlv
go get -u -v github.com/dgraph-io/dgo

SNAPSHOT // Snapshot is an internally consistent snapshot of xDS resources. // Consistentcy is important for the convergence as different resource types // from the snapshot may be delivered to the proxy in arbitrary order. type Snapshot struct { // Endpoints are items in the EDS response payload. Endpoints Resources // Clusters are items in the CDS response payload. Clusters Resources // Routes are items in the RDS response payload.

envoy.yaml.tmpl admin: access_log_path: /tmp/admin_access.log address: socket_address: { address: 0.0.0.0, port_value: 9901 } static_resources: listeners: - name: listener_0 address: socket_address: { address: 0.0.0.0, port_value: 80 } filter_chains: - filters: - name: envoy.http_connection_manager config: stat_prefix: ingress_http route_config: name: local_route virtual_hosts: - name: local_service domains: ["*"] routes: - match: { prefix: "/" } route: { host_rewrite: nginx, cluster: nginx_cluster, timeout: 60s } http_filters: - name: envoy.router clusters: - name: nginx_cluster connect_timeout: 0.25s type: STRICT_DNS dns_lookup_family: V4_ONLY lb_policy: ${ENVOY_LB_ALG} hosts: [{ socket_address: { address: ${SERVICE_NAME}, port_value: 80 }}] docker-entrypoint.

To ensure stable network ID , need to define a headless service for stateful applications StatefulSets are valuable for applications that require one or more of the following. Stable, unique network identifiers. Stable, persistent storage. Ordered, graceful deployment and scaling. Ordered, automated rolling updates `headless-nginx.yaml’ apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: selector: matchLabels: app: nginx # has to match .

术语 端点 Envoy discovers the cluster members via EDS Management server: A logical server implementing the v2 Envoy APIs Upstream: An upstream host receives connections and requests from Envoy and returns responses xDS: CDS/EDS/HDS/LDS/RLS/RDS/SDS APIs. Configuration Cache: cache Envoy configurations in memory in an attempt to provide fast response to consumer Envoys The simplest way to use Envoy without providing the control plane in the form of a dynamic API is to add the hardcoded configuration to a static yaml file.

常用命令

常用命令

bandwidth utilization tool

wget -qO- https://github.com/imsnif/bandwhich/releases/download/${WHAT_VERSION}/bandwhich-v${WHAT_VERSION}-x86_64-unknown-linux-musl.tar.gz |  tar xvz -C ~/bin/


bandwhich

TCP

tcpdump-windows

TCP DUMP

禁止启动时候恢复页面提示 Version 73.0.3683.86 (Official Build) (64-bit) 方法1(可靠) 首先关闭chrome,然后修改下面的设置,修改完后重启 .config/google-chrome/Default/Preferences sed -i '/exit_type:Crashed/exit_type:Normal/` windows用户请参考下面的视频 Chrome Didn’t Shut Down Correctly Error Solved Windows 7 方法2(不可靠) Type in address bar (Crtl+L). chrome://flags/#infinite-session-restore Click on the right drop-down menu and change the ‘Default’ value to ‘Disable’. Then restart Chrome to apply that setting enter password to unlock your keyring 方法1(可靠) set password-store to basic dpkg -L google-chrome-stable |grep desktop | xargs cp {1} ~/.

helm install --debug install/kubernetes/helm/istio --name istio --namespace istio-system --set security.enabled=false --set ingress.enabled=false --set gateways.istio-ingressgateway.enabled=false --set gateways.istio-egressgateway.enabled=false --set galley.enabled=false --set mixer.enabled=false --set prometheus.enabled=false --set global.proxy.envoyStatsd.enabled=false --set pilot.sidecar=false --set sidecarInjectorWebhook.enabled=false [debug] Created tunnel using local port: '44471' [debug] SERVER: "127.0.0.1:44471" [debug] Original chart version: "" [debug] CHART PATH: /home/bigo/istio/install/kubernetes/helm/istio NAME: istio REVISION: 1 RELEASED: Sat Mar 30 06:30:03 2019 CHART: istio-1.0.6 USER-SUPPLIED VALUES: galley: enabled: false gateways: istio-egressgateway: enabled: false istio-ingressgateway: enabled: false global: proxy: envoyStatsd: enabled: false ingress: enabled: false mixer: enabled: false pilot: sidecar: false prometheus: enabled: false security: enabled: false sidecarInjectorWebhook: enabled: false COMPUTED VALUES: certmanager: enabled: false hub: quay.

for developers building applications to run in Kubernetes clusters, and for DevOps staff troubleshooting Kubernetes applications. Features include: View your clusters in an explorer tree view, and drill into workloads, services, pods and nodes. Browse Helm repos and install charts into your Kubernetes cluster. Intellisense for Kubernetes resources and Helm charts and templates. Edit Kubernetes resource manifests and apply them to your cluster. Build and run containers in your cluster from Dockerfiles in your project.

go模块代理

https://github.com/goproxy/goproxy.cn

$go version
go version go1.13.12 linux/amd64
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
  • 重置goproxy

    go env -w GOPROXY
    

go doc

https://golang.google.cn

proxy

  • 从 Github 的代码库 clone

    go get -u github.com/golang/text
    mv $GOPATH/src/github.com/golang/text $GOPATH/src/golang.org/x/text
    
    go get -u github.com/golang/crypto
    mv $GOPATH/src/github.com/golang/crypto $GOPATH/src/golang.org/x/crypto
    
  • 设置 GOPROXY 环境变量配置代理

例如:GOPROXY=https://goproxy.io

https://github.com/northbright/Notes/blob/master/Golang/china/get-golang-packages-on-golang-org-in-china.md

https://gocn.vip/article/1678

配置代理

v3.11.0->k8s 1.11 openshift all-in-one curl https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz tar zxf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz cd openshift export PATH="$(pwd)":$PATH sudo ./openshift start master oc setup export KUBECONFIG="$(pwd)"/openshift.local.config/master/admin.kubeconfig export CURL_CA_BUNDLE="$(pwd)"/openshift.local.config/master/ca.crt sudo chmod +r "$(pwd)"/openshift.local.config/master/admin.kubeconfig openshift complition bash > /usr/share/bash-completion/completions/openshift.complition.sh master and node configuration after installation /etc/origin/master/master-config.yaml identityProviders: - name: my_allow_provider challenge: true login: true provider: apiVersion: v1 kind: AllowAllPasswordIdentityProvider corsAllowedOrigins Identity Providers The OpenShift master includes a built-in OAuth server the Deny All identity provider is used by default, which denies access for all user names and passwords.

JDK Version java -version openjdk version "1.8.0_151" OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12) OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode) Verify that the target server is configured to serve SSL https://www.ssllabs.com/ssltest/ Connecting to SSL services https://confluence.atlassian.com/kb/unable-to-connect-to-ssl-services-due-to-pkix-path-building-failed-779355358.html If you are getting an exception due to “Illegal key size” and you are using Sun’s JDK, you need to install the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files. See the following links for more information:

导语:本文最早刊登于《哈佛商业评论》,是其历史最佳文章之一。 作者彼得·德鲁克是现代管理学之父,其著作影响了数代追求创新以及 最佳管理实践的学者和企业家们,各类商业管理课程也都深受彼得·德鲁克思想的影响。 本文后被收录在德鲁克的著作《21 世纪的管理挑战》中。非常值得一读再读。 作者 | 彼得·德鲁克 来源 | 《21世纪的管理挑战》第 6 章 自我管理(节选) 字数 | 7150(阅读约 10 分钟) 我们生活的时代充满着前所未有的机会:如果你有雄心,又不乏智慧,那么不管你从何处起步,你都可以沿着自己所选择的道路登上事业的顶峰。 不过,有了机会,也就有了责任。今天的公司并不怎么管员工的职业发展;实际上,知识工作者必须成为自己的首席执行官。你应该在公司中开辟自己的天地,知道何时改变发展道路,并在可能长达 50 年的职业生涯中不断努力、干出实绩。 要做好这些事情,你首先要对自己有深刻的认识——不仅清楚自己的优点和缺点,也知道自己是怎样学习新知识和与别人共事的,并且还明白自己的价值观是什么、自己又能在哪些方面做出最大贡献。 因为只有当所有工作都从自己的长处着眼,你才能真正做到卓尔不群。 历史上的伟人——拿破仑、达芬奇、莫扎特——都很善于自我管理。这在很大程度上也是他们成为伟人的原因。不过,他们属于不可多得的奇才,不但有着不同于常人的天资,而且天生就会管理自己,因而才取得了不同于常人的成就。 而我们当中的大多数人,甚至包括那些还算有点天赋的人,都不得不通过学习来掌握自我管理的技巧。 我们必须学会自我发展,必须知道把自己放在什么样的位置上,才能做出最大的贡献,而且还必须在长达 50 年的职业生涯中保持着高度的警觉和投入。 我们的长处是什么 多数人都以为他们知道自己擅长什么。其实不然,更多的情况是,人们只知道自己不擅长什么——即便是在这一点上,人们也往往认识不清。 然而,一个人要有所作为,只能靠发挥自己的长处,而如果从事自己不太擅长的工作是无法取得成就的,更不用说那些自己根本干不了的事情了。 我们需要知己所长,才能知己所属。 要发现自己的长处,唯一途径就是回馈分析法(feedback analysis)。每当做出重要决定或采取重要行动时,你都可以事先记录下自己对结果的预期。9 到 12 个月后,再将实际结果与自己的预期比较。 我本人采用这种方法已有 15 到 20 年了,而每次使用都有意外的收获。 我们只要持之以恒地运用这个简单的方法,就能在较短的时间内,发现自己的长处。在采用这种方法之后,你就能知道,自己正在做(或没有做)的哪些事情会让你的长处无法发挥出来。 同时,你也将看到自己在哪些方面能力不是特别强。最后,你还将了解到自己在哪些方面完全不擅长,做不出成绩来。 根据回馈分析的启示,你需要在几方面采取行动。 首先最重要的是,专注于你的长处,把自己放到那些能发挥长处的地方。 其次,加强你的长处。回馈分析会迅速地显示,你在哪些方面需要改善自己的技能或学习新技能。它还将显示你在知识上的差距——这些差距通常都可以弥补。 第三,发现任何由于恃才傲物而造成的偏见和无知,并且加以克服。有太多的人,尤其是那些术业有专攻的人,往往对其他领域的知识不屑一顾,或者认为聪明的头脑就可取代知识。 比如,很多一流的工程师遇上与人相关的事就束手无策,他们还以此为荣——因为他们觉得,对条理清晰的工程师头脑来说,人太混乱无序了。与此形成鲜明对照的是,人力资源方面的专业人员常常以他们连基本的会计知识或数量分析都一无所知而自傲。 不过,人们要是对这样的无知还沾沾自喜的话,那无异于自取灭亡。其实,要让自己的长处得到充分发挥,你就应该努力学习新技能、汲取新知识。 另外一点也同样重要——纠正你的不良习惯。所谓不良习惯,是指那些会影响你的工作成效和工作表现的事情。这样的习惯能很快地在回馈中反映出来。 与此同时,回馈还会反映出哪些问题是由缺乏礼貌造成的。礼貌是一个组织的润滑剂。 礼貌,其实也很简单。无非是说声「请」和「谢谢」,记住别人的名字,或问候对方家人这样的小事。许多聪明人,尤其是聪明的年轻人,没有意识到这一点。 如果回馈分析表明某个人只要一遇到需要别人合作的事就屡屡失败,那么很可能就意味着这个人的举止不大得体——也就是缺乏礼貌。 把预期和实际结果进行比较,也会发现自己不能做什么。我们每个人都有许多一窍不通、毫无天分的领域,在这些领域我们甚至连平庸的水平都达不到。人们,尤其是知识工作者,就不应该试图去完成这些领域的工作和任务。他们应该尽量少把精力浪费在那些不能胜任的领域上,因为从无能到平庸要比从一流到卓越需要人们付出多得多的努力。 我们的工作方式是怎样的 很少有人知道自己平时是怎样把事情给做成的。 实际上,我们当中的大多数人甚至不知道,不同人有着不同的工作方式和表现。 许多人不是以他们习惯的方式工作,这当然就容易造成无所作为。 对于知识工作者来说,「我的工作方式是怎样的?」可能比「我的长处是什么?」这个问题更加重要。 同一个人的长处一样,一个人的工作方式也是独一无二的,这由人的个性决定。 通常,几个常见的个性特征就决定了一个人的工作方式。 我属于读者型,还是听者型? 首先,你要搞清楚的是,你是读者型(习惯阅读信息)还是听者型(习惯听取信息)的人。绝大多数人甚至都不知道还有读者型和听者型之说,而且很少有人既是读者型又是听者型。知道自己属于哪种类型的人更少。 没有几个听者型的人可以通过努力变成合格的读者型——不管是主动还是被动的努力,反之亦然。不了解你的工作方式不可能发挥才干或取得成就。 我们如何学习 要了解一个人的工作方式,需要弄清的第二点是,他是如何学习的。

安装Golang Dep

go get -v github.com/tools/godep

安装client-go

go get k8s.io/client-go/kubernetes
cd $GOPATH/src/k8s.io/client-go
git checkout v10.0.0
godep restore ./...

集群外开发

集群内开发

Organizations are looking for ways to reduce their physical data center footprints, particularly for secondary workloads such as backups, files, or on-demand workloads. However, bridging data between private data centers and the public cloud comes with a unique set of challenges. Traditional data center services rely on low-latency network attached storage (NAS) and storage area network (SAN) protocols to access storage locally. Cloud-native applications are generally optimized for API access to data in scalable and durable cloud object storage, such as Amazon Simple Storage Service (Amazon S3).