修复(resume): 修改简历

This commit is contained in:
NICE CODE BY DEV 2022-05-23 12:17:33 +08:00
parent f40ea2e284
commit 3e498ffbea
6 changed files with 196 additions and 35 deletions

12
.dumi/layouts/index.tsx Normal file
View File

@ -0,0 +1,12 @@
// .dumi/theme/layout.tsx(本地主题) 或 src/layout.tsx(主题包)
import React from 'react';
import Layout from 'dumi-theme-default/es/layout';
export default ({ children, ...props }) => (
<Layout {...props}>
<>
<button></button>
{children}
</>
</Layout>
);

32
.dumi/theme/layout.tsx Normal file
View File

@ -0,0 +1,32 @@
// .dumi/theme/layout.tsx(本地主题) 或 src/layout.tsx(主题包)
import React, { useEffect } from 'react';
import Layout from 'dumi-theme-default/es/layout';
export default ({ children, ...props }) => {
const { history } = props;
useEffect(() => {
const header = document.querySelector('.__dumi-default-navbar')
const cont = document.querySelector('.__dumi-default-layout-content')
const lo = document.querySelector('.__dumi-default-layout')
if (location.hash === '#/resume' && lo) {
cont.style.position = 'relative'
cont.style.top = '-64px'
header.style.display = 'none'
} else {
cont.style.position = 'relative'
cont.style.top = '0'
header.style.display = 'flex'
}
},[location.hash])
return (
<Layout {...props}>
<>
{children}
</>
</Layout>
)
};

View File

@ -9,36 +9,42 @@ group:
# 💊 Q&A
## 通过浏览器打开https后无法再次打开http链接
## 页面弹框之后请求一直失败
可能是因为手机插件类似 ADB 将弹框事件拦截了,关闭或加入白名单就好了
## 通过浏览器打开 https 后,无法再次打开 http 链接?
请将下面这串代码删除,删干净一点:
```javascript
<meta http-equiv ="Content-Security-Policy" content="upgrade-insecure-requests">
```
## 阿里云 oss 上传
### 创建bucket
### 创建 bucket
![image.png](https://cdn.nlark.com/yuque/0/2021/png/195884/1614156371487-2e7a495b-c225-4ed4-82a3-ab28f7dfa4e2.png#height=363&id=r7ZCt&margin=%5Bobject%20Object%5D&name=image.png&originHeight=726&originWidth=473&originalType=binary&ratio=1&size=187718&status=done&style=none&width=236.5)
### 设置跨域规则
![image.png](https://cdn.nlark.com/yuque/0/2021/png/195884/1614156400297-4528de9b-e249-4f15-bdd1-9ae07bf8c2df.png#height=329&id=Kws6W&margin=%5Bobject%20Object%5D&name=image.png&originHeight=657&originWidth=629&originalType=binary&ratio=1&size=62533&status=done&style=none&width=314.5)
### 创建 RAM 用户
### 创建 RAM 用户
> 这一步的作用是分担风险,不要直接用主账号去登录
并给该用户分配调用 STS 服务 AssumeRole 接口的权限,这样待会儿后端就能以该用户的身份给前端分配 STS 凭证了:
![image.png](https://cdn.nlark.com/yuque/0/2021/png/195884/1614156480237-912d579e-2e46-4738-996c-991810b0121a.png#height=280&id=GWXB4&margin=%5Bobject%20Object%5D&name=image.png&originHeight=560&originWidth=1456&originalType=binary&ratio=1&size=275868&status=done&style=none&width=728)
### 创建用户角色
该角色即有权限在前端调用 aliyun-oss SDK 上传文件的用户角色,例如我们创建一个只有上传权限的角色,命名为 uploader
![image.png](https://cdn.nlark.com/yuque/0/2021/png/195884/1614156569197-374d1b4d-87ef-4b83-b888-43e585823b57.png#height=314&id=yH483&margin=%5Bobject%20Object%5D&name=image.png&originHeight=628&originWidth=1396&originalType=binary&ratio=1&size=365279&status=done&style=none&width=698)
接下来我们需要给该角色分配权限,可以通过创建一条权限策略并分配给角色,该权限策略里面只包含了上传文件、分片上传相关的权限:
![image.png](https://cdn.nlark.com/yuque/0/2021/png/195884/1614156596778-1a1bd9f9-675d-4de8-ae9a-fe119187a138.png#height=370&id=M1KQd&margin=%5Bobject%20Object%5D&name=image.png&originHeight=740&originWidth=1382&originalType=binary&ratio=1&size=307620&status=done&style=none&width=691)
```javascript
// 策略内容
{
@ -64,27 +70,28 @@ group:
]
}
```
然后,把该策略赋予 uploader 角色
![image.png](https://cdn.nlark.com/yuque/0/2021/png/195884/1614156673094-a4029f4e-63c9-4396-b3bc-d632f4056c7a.png#height=445&id=JrO2L&margin=%5Bobject%20Object%5D&name=image.png&originHeight=890&originWidth=1390&originalType=binary&ratio=1&size=295135&status=done&style=none&width=695)
### node 代码实现
```javascript
const OSS = require('ali-oss');
const STS = OSS.STS;
const sts = new STS({
accessKeyId: process.env.ALIYUN_OSS_RULE_ASSUMER_ACCESS_KEY,
accessKeySecret: process.env.ALIYUN_OSS_RULE_ASSUMER_ACCESS_KEY_SECRET
accessKeySecret: process.env.ALIYUN_OSS_RULE_ASSUMER_ACCESS_KEY_SECRET,
});
async function getCredential(req, res, next) {
try {
const { credentials } = await sts.assumeRole(
'acs:ram::1582938330607257:role/uploader', // role arn
'acs:ram::1582938330607257:role/uploader', // role arn
null, // policy
15 * 60, // expiration
'web-client' // session name
'web-client', // session name
);
req.result = credentials;
next();
@ -92,9 +99,9 @@ async function getCredential(req, res, next) {
next(err);
}
}
```
### OSS报错大全
### OSS 报错大全
1. AccessDeniedError: You have no right to access this object because of bucket acl
> 看下配置的bucket 策略内容对不对
> 看下配置的 bucket 策略内容对不对

View File

@ -91,6 +91,16 @@ learna publish
| lerna create | 新建 package |
| lerna publish | 发布 |
### 🌰
```js
lerna exec [--scope <package包名package.json中的name>] -- <command> [..args]
# 举个例子
lerna exec -- rm -rf node_modules # 删除所有package下的node_modules
lerna exec --scope @yh-imooc-cli-dev/core -- rm -rf node_modules # 碰到scope说明定位到@yh-imooc-cli-dev/cor包下(注意:--scope后面写的是包名)然后删除当前子包下的node_modules
```
## 官方文档
[http://www.febeacon.com/lerna-docs-zh-cn/](http://www.febeacon.com/lerna-docs-zh-cn/)

View File

@ -32,6 +32,10 @@
text-align: left;
color: #d1d1d1;
}
a {
cursor: pointer;
float: left;
}
}
.content {
position: relative;

View File

@ -1,21 +1,16 @@
import React, { useEffect } from 'react';
import styles from './css/index.less'
export default () => {
export default (props) => {
useEffect(() =>{
const header = document.querySelector('.__dumi-default-navbar')
const cont = document.querySelector('.__dumi-default-layout-content')
cont.style['position'] = 'relative'
cont.style['top'] = '-64px'
header.style.display = 'none'
}, [])
return (
<div className={styles.resume}>
<p className="last-modified"> 202205</p>
<p className="last-modified"><a onClick={() => location.replace('/')} ></a> 202205</p>
<div className="content">
<header className="content-hd">
<section className="title">
@ -36,6 +31,7 @@ export default () => {
<li><a href="https://j710328466.github.io" target="_blank"><span className="contact-link">https://j710328466.github.io</span><i className="iconfont icon-homepage"></i></a></li>
<li><a href="https://github.com/j710328466" target="_blank"><span className="contact-link">github.com/j710328466</span><i className="iconfont icon-github"></i></a></li>
<li><a href="mailto:710328466@qq.com" target="_blank"><span className="contact-link">710328466@qq.com</span><i className="iconfont icon-email"></i></a></li>
<li><a href="#" target="_blank"><span className="contact-link">·</span><i className="iconfont icon-email"></i></a></li>
</ul>
</section>
</header>
@ -52,7 +48,7 @@ export default () => {
<header className="item-hd">
<span className="item-time">2017.10 ~ 2020.03</span>
<a className="btn item-more" href="http://jimistore.com" target="_blank" title="工作经历"></a>
<h3 className="item-name"></h3>
<h3 className="item-name" style={{ float: 'right' }}></h3>
</header>
</div>
<div className="item">
@ -61,10 +57,9 @@ export default () => {
</header>
<div className="item-bd">
<p className="section-content">
<strong></strong><strong></strong>
<em>nextJs</em>使<em>antd</em>使<em>ant Motion</em>使<em>Pm2</em><em>node项目</em>
<strong></strong>
<em>nextJs</em>使<em>antd</em>使<em>ant Motion</em>使<em>Pm2</em><em>node端搭建项目</em>node后端化具有一定的里程碑意
</p>
</div>
</div>
<div className="item">
@ -73,10 +68,10 @@ export default () => {
</header>
<div className="item-bd">
<p className="section-content">
<strong></strong><strong></strong>
<em>gulp</em>使<em>Webpack</em><em>typescript</em>
使<em></em><em></em>
使<em>css样式</em>
<strong>Owner</strong><strong></strong>
<em>gulp</em>使<em>Webpack</em><em>typescript</em>
使<em></em><em></em>
使<em>css样式</em>
</p>
</div>
</div>
@ -86,7 +81,7 @@ export default () => {
</header>
<div className="item-bd">
<p className="section-content">
<strong></strong><strong></strong>
<strong></strong>
使使<em>typescript</em>npm仓库中维护<em></em>
<em></em><em></em><em></em><em></em>...
</p>
@ -105,6 +100,110 @@ export default () => {
</div>
</div>
</div>
<div className="section-bd">
<div className="item item-main">
<header className="item-hd">
<span className="item-time">2020.03 ~ 2021.03</span>
<h3 className="item-name" style={{ float: 'right' }}>-</h3>
</header>
</div>
<div className="item">
<header className="item-hd">
<h3 className="item-name"><i className="iconfont icon-dot"></i> · UmireactJsmidwayantdts</h3>
</header>
<div className="item-bd">
<p className="section-content">
<strong>Owner</strong>
bug维护使<em>cuz</em><em>Umi</em> + <em>midway</em>(eggjs前身)
</p>
</div>
</div>
<div className="item">
<header className="item-hd">
<h3 className="item-name"><i className="iconfont icon-dot"></i> · umireactJsmidwayantdts</h3>
</header>
<div className="item-bd">
<p className="section-content">
<strong></strong>
使
</p>
</div>
</div>
<div className="item">
<header className="item-hd">
<h3 className="item-name"><i className="iconfont icon-dot"></i> · umiantd-mobile-v2midwayts</h3>
</header>
<div className="item-bd">
<p className="section-content">
<strong>Owner</strong><strong></strong>
app端使app时问题反馈到运营同学
</p>
</div>
</div>
<div className="item">
<header className="item-hd">
<h3 className="item-name"><i className="iconfont icon-dot"></i> · nextJsantdmidwayts</h3>
</header>
<div className="item-bd">
<p className="section-content">
<strong></strong>
线线beta阶段产品
</p>
</div>
</div>
</div>
<div className="section-bd">
<div className="item item-main">
<header className="item-hd">
<span className="item-time">2021.03 ~ 2022.02</span>
<h3 className="item-name" style={{ float: 'right' }}></h3>
</header>
</div>
<div className="item">
<header className="item-hd">
<h3 className="item-name"><i className="iconfont icon-dot"></i> 耀 · UmireactJsantdtsyapi</h3>
</header>
<div className="item-bd">
<p className="section-content">
<strong>Owner</strong><strong></strong>
使...
</p>
</div>
</div>
<div className="item">
<header className="item-hd">
<h3 className="item-name"><i className="iconfont icon-dot"></i> · easyV-UIreactJsyapi</h3>
</header>
<div className="item-bd">
<p className="section-content">
<strong>Owner</strong><strong></strong>
...
</p>
</div>
</div>
<div className="item">
<header className="item-hd">
<h3 className="item-name"><i className="iconfont icon-dot"></i> Toucan-UI · EchartG2/plotreacttsdumilerna</h3>
</header>
<div className="item-bd">
<p className="section-content">
<strong>Owner</strong><strong></strong>
toucan-UI <em>meta </em><em>chart </em><em>bizs </em>
</p>
</div>
</div>
<div className="item">
<header className="item-hd">
<h3 className="item-name"><i className="iconfont icon-dot"></i> UU中心 · electronantdOsstsumi</h3>
</header>
<div className="item-bd">
<p className="section-content">
<strong></strong>
<em>electron</em> OSS uniubi-uiuniubi-lib...广
</p>
</div>
</div>
</div>
</section>
</div>
<div className="content-right">
@ -117,7 +216,7 @@ export default () => {
<div className="section-bd">
<ul className="section-list">
<li><p className="section-content"><i className="iconfont icon-dot"></i>
Web前端开发基本技能<strong>W3C标准</strong><strong>HTML</strong><strong>CSS</strong><strong>UI重构</strong><strong></strong><strong></strong><strong></strong>
<strong>JavaScript</strong><strong>HTML</strong><strong>CSS</strong><strong>UI重构</strong><strong></strong><strong></strong><strong></strong>
</p></li>
<li><p className="section-content"><i className="iconfont icon-dot"></i>
<strong>JavaScript</strong><strong>UI组件库</strong><strong>JS类库</strong><strong></strong><strong>MV*</strong><strong></strong>
@ -131,9 +230,6 @@ export default () => {
<li><p className="section-content"><i className="iconfont icon-dot"></i>
使<strong>Git</strong><strong>Markdown</strong><strong></strong><strong></strong><strong>Unix</strong>
</p></li>
<li><p className="section-content"><i className="iconfont icon-dot"></i>
</p></li>
</ul>
</div>
</section>
@ -151,7 +247,7 @@ export default () => {
</header>
<div className="item-bd">
<p className="section-content">
nicecoder
nicecoder
<em>@nicecode/changelog</em><em>@nicecode/lint</em><em>@nicecode/commit</em><em>@nicecode/tools</em>...
</p>
</div>
@ -174,7 +270,7 @@ export default () => {
</header>
<div className="item-bd">
<p className="section-content">
websocket挺有意思使<em>Vue全家桶</em><em>muse-Ui</em>UI框架<em>axios</em>使<em>socket.io</em>
<em>Vue全家桶</em><em>muse-Ui</em>UI框架<em>axios</em>使<em>socket.io</em> express
</p>
</div>
</div>