Monday, March 28, 2022

V2EX - 技术

V2EX - 技术


GitHub 解释近期频繁宕机原因: MySQL 不堪重负

Posted: 28 Mar 2022 05:32 AM PDT

是不是在某种程度上,服务不可用的大头还是落在数据库上?


在过去的几周里,GitHub 经历了多次宕机事件,导致平台的服务降级,影响了许多用户的正常使用。GitHub 团队在解决问题的同时,近日也分享了这些事件的详细情况。

据介绍,近期 GitHub 频繁宕机主要是其 mysql1 集群的资源争夺导致,这影响了 GitHub 在负载高峰期的大量服务和功能性能。虽然在过去几年 GitHub 已经进行了许多优化,例如增加集群以支持平台的增长、对主数据库进行分区等,但这不是一劳永逸的工作,直到现在他们仍在积极解决这个问题。


官方博客链接:An update on recent service disruptions

国内资讯: GitHub 解释近期频繁宕机原因:MySQL 不堪重负

现在俄罗斯的前端开发能用 react 或 webpack 等美国的开源技术吗?会受到制裁吗?

Posted: 28 Mar 2022 05:28 AM PDT

第一次看到美国的制裁那么厉害,连猫都能制裁,那么技术有国界吗?俄罗斯的前端开发还好吗?

vue-router4 页面跳转问题

Posted: 28 Mar 2022 05:10 AM PDT

router.push('xxx')的时候一直跳转到 / 路径,但是使用<router-link :to="toPage2()"></router-link>这种标签就可以正常跳转

vue3 + vue-router4

  • page1
<template>   <h1>page1</h1>   <button v-on:click="toPage2()">toPage2</button> </template>  <script> import {useRouter} from 'vue-router'  export default {   name: "page1",   setup () {     const router = useRouter()     const toPage2 = () => {       router.push('page2')     }     return {       toPage2     }   } } </script>  
  • page2
<template>   <h2>page2</h2>   <button v-on:click="toPage1()">toPage1</button> </template>  <script> import {useRouter} from "vue-router";  export default {   name: "page2",   setup () {     const router = useRouter()     const toPage1 = () => {       router.push('page1')     }     return {       toPage1     }   } } </script>  
  • router/index.js
import {createRouter, createWebHistory} from 'vue-router'  const routes = [   {     path: "/",     redirect: 'page1'   },   {     path: '/page1',     name: 'page1',     component: () => import('@/view/page1.vue')   },   {     path: '/page2',     name: 'page2',     component: () => import('@/view/page2.vue')   }, ]  const router = createRouter({   history: createWebHistory(),   routes })  export default router 
  • main.js
import { createApp } from 'vue' import App from './App.vue' import router from './router'  const app = createApp(App) app.use(router) app.mount('#app') 
  • App.vue
<template>   <router-view/> </template>  <script>  export default {   name: 'App', } </script> 

请教 Node.js 后端框架的选择

Posted: 28 Mar 2022 05:07 AM PDT

之前一直做前端,没用过 nodeJS 后端框架

目前需求是这样:
1. 后端数据库存储数据,同时给 C 端前端提供 api 进行 curd
2. 后端需要对接第三方 api
3. 给 B 端提供后台管理网页

哪个框架满足上述需求并且易于上手?

背景:有 thinkphp 开发后端的经验、有简单的 nodejs 脚本开发经验

选 node 不选 php 原因:npm 比 composer 丰富;很久没碰 php ;对 js 语言足够熟练

[2022-03] GitHub 加速终极教程

Posted: 28 Mar 2022 04:52 AM PDT

时常看到 V 站吐嘈 git clone 慢的帖子,本人写了这篇文章,推荐 阅读原文


本文意图解决使用 GitHub 访问( https) 或者 git clone ( https or ssh )慢的问题。在此分享我的方法,我所了解的 GitHub 加速最佳方案。

前提是,你的木弟子应该还行,木弟子越好,GitHub 体验越好

很多文章没有讲全面,只讲了 http proxy ,而没有讲 ssh proxy 。事实上大部分程序员使用 GitHub 都会使用 SSH keys (普通用户可能就不会了),在本机生成 rsa 公私钥(其他的类型还有 dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk),然后把公钥内容拷贝、设置进 GitHub 。

设置 Http Proxy

$ git config --global http.proxy socks5://127.0.0.1:7890 

事实上使用 socks5h 更佳,即

$ git config --global http.proxy socks5h://127.0.0.1:7890 

h 代表 host ,包括了域名解析,即域名解析也强制走这个 proxy 。另外不需要配置 https.proxy,git 不认的(关于这一点我认识不是很清晰,希望有人解惑)。

推荐使用 socks5 代理,因为 socks5 包含 http(s)。而且 socks5 代理工作在 osi 七层模型中的会话层(第五层),https/http 代理工作在 osi 七层模型的应用层(第七层), socks 代理更加底层。所以就没必要配置 git config --global http.proxy http://127.0.0.1:7890 了。

这样配置的话会使本机所有的 git 服务都走了代理,假如你在良心云上(国内主机)部署了自己的 gitea ,域名 https://gitea.example.com,那么可以只配置 GitHub 的 http proxy ,即

$ git config --global http.https://github.com.proxy socks5://127.0.0.1:7890 

设置 SSH Proxy

Linux & macOS

配置文件在用户家目录下的 .ssh/config 其中 nc 程序位于 /usr/bin/nc

$ cat ~/.ssh/config  Host github.com  Hostname ssh.github.com  IdentityFile /xxx/.ssh/github_id_rsa  User git  Port 443  ProxyCommand nc -v -x 127.0.0.1:7890 %h %p 

nc 就是 netcat ,引用一段描述

netcat is a simple unix utility which reads and writes data across network connections, using TCP or UDP protocol. It is designed to be a reliable "back-end" tool that can be used directly or easily driven by other programs and scripts. At the same time, it is a feature-rich network debugging and exploration tool, since it can create almost any kind of connection you would need and has several interesting built-in capabilities. Netcat, or "nc" as the actual program is named, should have been supplied long ago as another one of those cryptic but standard Unix tools.

译文: netcat 是一个简单的 unix 实用程序,它使用 TCP 或 UDP 协议跨网络连接读取和写入数据。 它被设计成一个可靠的"后端"工具,可以直接使用或由其他程序和脚本轻松驱动。 同时,它还是一个功能丰富的网络调试和探索工具,因为它几乎可以创建您需要的任何类型的连接,并且具有几个有趣的内置功能。Netcat ,或实际程序命名的"nc",早就应该作为另一种神秘但标准的 Unix 工具提供。

Windows

Win 下与之对应的 netcat 程序是 connect.exe,程序位于 Git 安装路径 C:\Program Files\Git\mingw64\bin,win 下推荐使用 Git Bash ,路径也是 Linux style

$ cat ~/.ssh/config  Host github.com  Hostname ssh.github.com  IdentityFile /c/users/xxx/.ssh/github_id_rsa  User git  Port 443  ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -S 127.0.0.1:7890 %h %p 

补充信息

为什么 hostname 是 ssh.github.com,为什么要用 443 端口,ssh 默认不是 22 端口么?

因为有些木弟子对于 22 端口做了限制,要么禁止了,要么有些抽风,这时经常会遇到如下错误

kex_exchange_identification: Connection closed by remote host

所以如果 22 端口不畅就使用 443 ,安全可靠。ps: 22 端口时 hostname 请填 github.com。这部分请扩展阅读 此文

至于网页访问 GitHub ,借助木弟子访问已然是日常,要么浏览器扩展 SwitchyOmega,要么系统代理,要么直接使用 Clash 的分流策略等等。我的习惯还是使用 Switchy Omega 。

这样配置之后 git clone https://github.com/xxx/yyy.git 或者 git clone git@github.com:xxx/yyy.git 以及 git pullgit push 等等操作都很快了,除非科学的工具不行。

难免有误,欢迎大家补充和纠正。

居家办公,怎么实现微信提醒?

Posted: 28 Mar 2022 04:45 AM PDT

因要居家办公,但是发现好累。时不时要看微信信息。

不知道有没有办法设置 提醒?

比如:

  1. @ 我的 时候
  2. 我关注的某些群 /人有消息的时候
  3. 我关注的群里在讨论 xx 关键字的时候

是不是安卓系统比较有办法实现阿?

请教一个深度学习的问题

Posted: 28 Mar 2022 04:20 AM PDT

想用生成对抗网络或者变分自编码器做个序列缺失数据填补,不知可行否?

场景如下: 比如:有一段时间内的人体监控参数,比如血压、心跳、呼吸,每隔 15s 一组。假设已经有了一个月这种的数据,然后发现中间缺失了某一个或者几个小时的数据,现在想通过某种方法将它补上。

通过生成对抗网络或者变分自编码器能达到这个目的么?

音乐播放器被屏蔽了有没有办法绕过去

Posted: 28 Mar 2022 04:19 AM PDT

用的是深*服的上网行为管理工具,有没有办法绕过去.

国内 IPv6 DNS

Posted: 28 Mar 2022 04:13 AM PDT

话说,国内的 IPv6 DNS 为什么还不支持,这种写法: https://[2400:3200::1]/dns-query

是技术原因吗?

分享一个用于打印复杂数据结构的库 gop

Posted: 28 Mar 2022 03:08 AM PDT

项目地址 https://github.com/ysmood/got/tree/master/lib/gop

目的是把复杂的结构体打印成易于阅读的格式。输出的格式使用的 Go 原生语法,不需要学习任何额外的知识就可以阅读输出。不像其他库可能需要考猜测输出格式。

特性

  • 使用原生 Go 语法输出
  • 支持循环引用(比如 go-spew 的这个 bug, 而 gop 可以正常打印)
  • 更好的 rune, []byte, time 等数据的可读性
  • 字符串里的隐藏字符也会被打印
  • 可配置的高亮打印
  • 根据排序后的 key 输出一致的 map
  • 自动将多行大段文字打印成多行以便于阅读
  • 可扩展的 API

用法

通常你只需要用 gop.P 函数:

package main  import (     "time"      "github.com/ysmood/got/lib/gop" )  func main() {     val := map[string]interface{}{         "bool":   true,         "number": 1 + 1i,         "bytes":  []byte{97, 98, 99},         "lines":  "multiline string\nline two",         "slice":  []interface{}{1, 2},         "time":   time.Now(),         "struct": struct{ test int32 }{             test: 13,         },     }     val["slice"].([]interface{})[1] = val["slice"]      gop.P(val) } 

输出:

集团自建虚拟化平台怎么平稳过渡至混合云

Posted: 28 Mar 2022 02:59 AM PDT

自建虚拟化>私有云>混合云

平稳过渡有什么思路

Mac 拾色器中的数字后面的“被截”是什么意思

Posted: 28 Mar 2022 01:48 AM PDT

数码测色计切换到 sRGB 显示,有些颜色数字后面显示"(被截)"。是因为系统底层使用颜色的范围比 sRGB 更大的原因吗?

天翼云服务器迁移不支持镜像迁移

Posted: 28 Mar 2022 01:31 AM PDT

3 月初天翼云通知说资源池到期要迁移

您好! 我们查到您内蒙 4 资源池有购买我们的云主机,因内蒙 4 资源池已达到使用年限,我们将在 3 月底对该资源池做关停处理,基于您业务运行安全考虑,为提升您业务可靠性及适用性,我们电话联系您确认是否可以做资源池迁移,如果您同意迁移,请您提供一下迁移的具体时间,我们将在内蒙 6 资源池为您开通同规格云主机,并在现有资源到期时间上额外赠送 1 个月使用时长。迁移以后您的旧公网 IP 将不可用,我们将在新的资源池给您分配新的公网 IP ,请您知晓。

然后过了数天没人联系,是我主动联系的他们,确认可以迁移,并且可以指定地区,但他们没说具体时间,只说三月底。

今天,早上来电话,天翼云 400 电话,说要我的天翼云账号密码,加微信给他,称需要在我的服务器上装一个软件,不能镜像迁移,要么只能手动迁移了。原因是跨机房了= = 10 点 51 有个呼入,58 呼出找客服确认是否有这个问题。

账号密码当然不能给他,但后询问官方客服是不是有这回事,官方说给反馈,工单发到了内蒙区监控部,说他们查不到是谁给我打的电话,客服也不给他们。

自己迁移倒是没啥,因为月初收到邮件就已经都移动到其他的服务器上了(认为天翼云不是很靠谱)。奇怪的就是迁移不用镜像,然后需要的还不是服务器的账号密码,要的是天翼云网站的账号密码,然后客服还查不着谁给我打的电话。


以前这个服务器买的时候,就说资源池空(但是直到活动结束都可以正常下单)了让退款,最后是着了工商后才给发的(工商也说不归他们管,但是帮我说说)。

然后当年(19 年底)买完服务器 开通这个 80 端口也费了不少劲,备案接入了,但是 80 端口就是不给开,最后查说是什么线路问题= =


有天翼云出现过类似 这种不靠谱的问题么

想在另外一个 thread/worker 里面 monitor, subscribe 一个事件,有什么好的方法么?

Posted: 28 Mar 2022 01:28 AM PDT

react+typescript, redux + redux-saga

有一个 UI 组件(也是一个 npm package),用的是上面的技术栈写的。现在我们团队要引入 LaunchDarkly ,来设置 feature flag 。目前,通过 saga ,建立一个 event channel ,来 monitor launchdarkly 的 sdk client 。当服务器,设置了某个 feature flag on or off 的时候,sdk client 能够收到通知,"该功能打开 /关闭了"。然后 saga 的 event channel 就能够收到,并派送一个 action ,UI 就能够 "显示 /隐藏"对应的功能。工作挺好的。

// ldClient is the initialized LaunchDarkly client export function listen(ldClient: any): any {   return eventChannel(emitter => {     const callback = (settings: any) => {       emitter(settings);     };      ldClient.on("change", callback);      return () => {       ldClient.off("change", callback);     };   }); } 

接下来,我们后继要开发很多个这样的 UI 组件(每个 ui-component 是独立的,在一个 webview 或者浏览器的 tab page 里面,只会有一个这样的 ui component),也可以按照上面的 pattern/template 来使用 LaunchDarkly 。

但是,每个 ui component ,都需要在 saga 里面写上两三段几乎一模一样的代码,我觉得这样重复的代码太多了。以后如果这段逻辑需要一点小修改,得改 N 个 packages 并且再发布。
所以,我想有没有办法,把这段逻辑,放到一个 pakcage 里面,然后所有的 ui component 都引用这个 package 就行了。

比如,

  1. 能否用 work.js monitor launchdarkly client change. 在 ui-component 组件里面和这个 worker.js 通讯。当 launchdarkly client 的 "change" 事件触发了,就通知 ui-component 刷新 UI
  2. 或者 使用 hooks? 自己写一个 hooks, 能否 monitor 或者 subscribe launchdarkly client on change?

想听听大家的意见。

谢谢!

为什么 django ORM 的更新时间字段选择在程序内部生成(auto_now),而不使用 MYSQL 的 on update?

Posted: 28 Mar 2022 01:03 AM PDT

如题, 特指的是 update_time 这样的普通字段, 当一条数据更新时, 会自动更新成当前的时间.

是为了减轻数据库压力吗?还是说兼容其他没有 on update 的数据库?

「VSCode」部分快捷功能及对应的命令 ID

Posted: 28 Mar 2022 12:49 AM PDT

VSCode 多光标编辑: https://www.v2ex.com/t/843239 ← 算是这个贴子的补充,单独发一下;

我自己有份快捷键列表,附带了某个效果对应哪个内部命令,正好补充了一下;

很多键是我自己改过的,有一部分甚至没有默认绑定键,根据命令项查看实际绑定键或自定义;


博客内表格排版很不好,,建议直接 GitHub 查看;

Markdown-To-Z-Blog/2013-05-25-VSCode-Hot-Key at main · wdssmq/Markdown-To-Z-Blog

https://github.com/wdssmq/Markdown-To-Z-Blog/blob/main/_posts/2013-05-25-VSCode-Hot-Key.md

「 VSCode 」快捷键备忘_电脑网络_沉冰浮水

https://www.wdssmq.com/post/20130525410.html


快捷键 操作 命令
ctrl + b 切换侧栏显隐 workbench.action.toggleSidebarVisibility
ctrl + d 复制当前行(向下) editor.action.copyLinesDownAction
ctrl + e 展开 emmet 缩写 editor.emmet.action.expandAbbreviation
ctrl + q 切换注释 editor.action.commentLine
ctrl + l 选中当前行 expandLineSelection
ctrl + shift + ↑ 选中文本 - 向上一行 cursorUpSelect
ctrl + shift + ↓ 选中文本 - 向下一行 cursorDownSelect
ctrl + ← 光标移动 - 单词左侧为界 cursorWordLeft
ctrl + shift + ← 选中文本 - 同上 cursorWordLeftSelect
光标移动 - 词首或驼峰 cursorWordPartLeft
选中文本 - 同上 cursorWordPartLeftSelect
ctrl + → 光标移动 - 单词右侧为界 cursorWordEndRight
ctrl + shift + → 选中文本 - 同上 cursorWordEndRightSelect
光标移动 - 词尾或驼峰 cursorWordPartRight
选中文本 - 同上 cursorWordPartRightSelect
shift + alt + ← 收起选择 editor.action.smartSelect.shrink
shift + alt + → 展开选择 editor.action.smartSelect.expand
ctrl + p 最近打开过的单文件 workbench.action.quickOpen
ctrl + r 最近打过的工作区或文件夹 workbench.action.openRecent
ctrl + shift + o 转到编辑器中的符号 workbench.action.gotoSymbol
ctrl + alt + b 格式化代码 /文档 editor.action.formatDocument
ctrl + alt + ↑ 同一列的上一行添加光标 editor.action.insertCursorAbove
ctrl + alt + ↓ 同一列的下一行添加光标 editor.action.insertCursorBelow
ctrl + shift + p 命令面板 workbench.action.showCommands
ctrl + shift + x 扩展 /插件 查看 workbench.view.extensions
ctrl + shift + g 源代码管理( Git ) workbench.view.scm
ctrl + shfit + e 工作区 /文件夹查看 workbench.view.explorer
ctrl + shift + k 删除当前行 感觉 ctrl + l ,然后 del 会更安全?
ctrl + shift + l 将全部查找匹配项添加到选择 addCursorsAtSearchResults
alt + d 将下一个查找匹配项添加到选择 editor.action.addSelectionToNextFindMatch
alt + ↑ 向上移动行 editor.action.moveLinesUpAction
alt + ↓ 向上移动行 editor.action.moveLinesDownAction
ctrl + k z 禅模式 workbench.action.toggleZenMode
ctrl + k m 语言模式 workbench.action.editor.changeLanguageMode
ctrl + k k 快捷方式设置 workbench.action.openGlobalKeybindings
ctrl + k u 关闭已经保存的编辑器页 workbench.action.closeUnmodifiedEditors
ctrl + k o 在新窗口打开活动文件 workbench.action.files.showOpenedFileInNewWindow
ctrl + k ctrl + l 转为小写 editor.action.transformToLowercase
ctrl + k ctrl + u 转为大写 editor.action.transformToUppercase

如何用 Java 实现自动化运维

Posted: 27 Mar 2022 11:42 PM PDT

  1. 关于使用 java 实现自动化运维有什么好的建议,如调用 ansible 脚本等等
  2. 有什么好的开源项目,方便推荐一波
  3. 关于自动化运维,诸君有何看法与建议

spreadjs 的源代码有人感兴趣吗

Posted: 27 Mar 2022 08:26 PM PDT

No comments:

Post a Comment