577739990
开发html的时候,突然出现顺序引入的script外联标签,在初始化页面的时候,并没有按顺入加载,这个跟后面写的script内部js顺序有关系吗?
页面加载效果
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250110/6fbfb02fd7bb9ac394408d66d8f20e42.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250110/13f4f5f58df8566033be378f84602551.png)
577739990
【three.js】CSS3DRenderer创建的标签怎么控制其角度?
你的需求其实就是面相摄像机,
在 update 里不断地 lookAt 摄像机即可。
577739990
使用echarts的柱状图的时候,怎么让柱状图变得有立体感?
效果图
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/ccaeaea2597dd71ee8745463f0a8271f.png)
577739990
使用echarts的柱状图的时候,怎么让柱状图变得有立体感?
效果图
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/ccaeaea2597dd71ee8745463f0a8271f.png)
577739990
求大佬帮忙搞个bat处理txt里的内容?
各位大佬下午好,请问要怎么通过bat文件处理txt的文本内容。
现在的情况是我通过notepad++的文本工具处理txt文件内容。
以下是我的手动操作步骤。
1、我通过正则把 txt中的文本每行 字数进行限制代码如下:
替换目标:(.{6,18}[,。:!?]|.{16})
替换为:$1\n
2、然后继续通过替换,把txt文本中的“,。!” 等内容替换为空。
3、然后在移除空行。
4、至此完成一个txt文档的处理工程
每天要重复处理几百个txt文档,请问,怎么批量操作以上的步骤呢,bat能实现拖入txt文档自动执行这些步骤嘛。
求大佬帮忙解脱这些机械式的工作。
577739990
如何自定义仪表图的刻度值?
VChart 如何配置仪表图的刻度值?如下图所示,我只想要0,25,50,75,100。
"图片" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250101/b417a321fe30a62e7850fa44d8b695a0.png)
577739990
数据库的函数依赖到底是什么意思?
*数据库的 函数依赖*是指在关系型数据库中,一个数据集中的某些属性(列)的值可以通过其他属性(列)的值来确定。具体来说,**
如果在一个关系表中,属性A的值决定了属性B的值,那么我们可以说B对于A是函数依赖的。**
非平凡和平凡函数依赖是对函数依赖的分类
。如果属性B的值完全由属性A的值决定,那么我们称B对于A是平凡函数依赖。而如果属性B的值除了由属性A的值决定外,还受到其他属性的影响,那么我们称B对于A是非平凡函数依赖。
**完全和部分函数依赖
是对于一个属性集合而言的。**如果一个属性集合中的所有属性都对于另一个属性集合是函数依赖的,那么我们称这个函数依赖是完全函数依赖。而如果一个属性集合中的一部分属性对于另一个属性集合是函数依赖的,那么我们称这个函数依赖是部分函数依赖。
传递函数依赖 是指如果属性A对于属性B是函数依赖的,属性B对于属性C是函数依赖的,那么我们可以推出属性A对于属性C也是函数依赖的。
逻辑蕴涵 是指如果一个函数依赖X→Y成立,那么当X的值发生改变时,Y的值也会发生相应的改变。
Armstrong公理系统是用来推导函数依赖的一组公理 。这些公理可以用来证明和推导函数依赖的性质和关系。
范式是用来规范数据库设计的一种方法
。通过将数据库中的关系表按照一定的规则进行分解和优化,可以减少数据冗余和提高数据的一致性和完整性。范式理论包括了第一范式、第二范式、第三范式等等,每个范式都有一定的规则和要求。
如果你觉得太过繁琐,那么就需要去搜索相关视频,不然文字只能这样表达,以上我是查阅了,然后搬过来的** __**
577739990
vue项目中browserslist更新报错怎么解决?
运行命令:
npx browserslist@latest --update-db
结果:
browserslist: Unknown arguments. Use --help to pick right one.
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241224/4c3257291119613585a43be76fa4f240.png)
关闭终端重新开也是这样。
577739990
jqui的draggable功能在scale修改的情况下不能正常运作?
我找到了更为正确的做法:修改jquery-ui的源文件,使其能够适配scale修改
首先需要有一个能够获得当前页面的scale值的函数,我想这并不困难,直接来看如何修改这个源文件吧!
在jquery-ui中搜索:_mouseDrag: function( event, noPropagation ) {
如果没有意外的话,您会找到这样一个函数:
_mouseDrag: function( event, noPropagation ) {
// reset any necessary cached properties (see #5009)
if ( this.hasFixedAncestor ) {
this.offset.parent = this._getParentOffset();
}
//Compute the helpers position
this.position = this._generatePosition( event, true );
this.positionAbs = this._convertPositionTo( "absolute" );
//Call plugins and callbacks and use the resulting position if something is returned
if ( !noPropagation ) {
var ui = this._uiHash();
if ( this._trigger( "drag", event, ui ) === false ) {
this._mouseUp( new $.Event( "mouseup", event ) );
return false;
}
this.position = ui.position;
}
※→this.helper[ 0 ].style.left = this.position.left + "px";
※→this.helper[ 0 ].style.top = this.position.top + "px";
if ( $.ui.ddmanager ) {
$.ui.ddmanager.drag( this, event );
}
return false;
},
请查看倒数9,8行,我使用了“ ※→ ”作为标注,原文并没有这两个符号,我们需要将其修改为:
this.helper[ 0 ].style.left = this.position.left / return_scale() + "px";
this.helper[ 0 ].style.top = this.position.top / return_scale() + "px";
其中,return_scale()便是您的返回当前scale值的函数,请让left与top值除以这个scale,随后您的draggable便能够在scale下正确移动元素了!
以下为原本的答案,我没有删除它们,因为它们也能够完成同样的功能,如果您有需要的话,可以参看:
***
这是由于jquery-ui的draggable组件不会正确识别到scale带来的比例性变化,通过代码可以人工调整其出现的位置和移动的举例,以下为代码内容:
//一个作为全局变量的初值,用于存储当前鼠标的位置
var click = { x:0, y:0};
$("可拖拽对象").draggable({
start: function(event) {
//将event事件,即当我们开始拖动“可拖拽对象”时进行的点击事件时,鼠标的位置记录下来
click.x = event.clientX;
click.y = event.clientY;
},
//进入拖动阶段,此时的event是每一个拖动的瞬间,所进行的位移事件,而ui则是“可拖拽对象”
//(关于ui的详细定义请参考jquery官方文档)
drag: function(event, ui) {
//通过任意手段得到父元素的scale的具体的值,此处我将这个值保存进了父元素的“scale”属性中
var 父元素_scale = $(父元素).attr("scale");
//这是ui对象在拖动事件开始时的位置,在此处我们将其用作位移的初始量,在scale变化后,这个值不会随之改变,这也是在拖动行为的一瞬间,出现“瞬移”情况的原因
var original = ui.originalPosition;
//此时,我们对ui,也就是这个可拖拽对象的位置进行修改,由于通过originalPosition得到的位置是一个Position,即“相对于父元素的位置”,所以此处我们在修改ui的位置时,也要使用position()进行定位,而不是offset()
ui.position = {
//此处的值包括:位移起始点,拖动事件的鼠标位置,之前记录拖动开始时的鼠标,详细解释此处难以放置,请见下方详解
left: (original.left + event.clientX - click.x) / 父元素_scale,
top: (event.clientY - click.y + original.top ) / 父元素_scale
};
}
})
ui position变化的详解,以下使用ui来代指可拖动对象,请注意区分
1.首先,我们可以得知,original所代表的是拖动开始之前,ui所在的位置,我们将这里设置为位移变化的起始点
2.此处的event.clinetX/Y代表的是drag事件中,鼠标移动后的位置,因此,(event.cliketX -click.x)就表示了从拖拽开始start,到drag的过程中,鼠标在x轴上移动的距离。我们希望ui持续跟随鼠标移动,那么我们就令ui在位置起始点的基础上,在x轴和y轴(也就是left和top)上对应地增加鼠标移动的距离,这样就能使得ui对象的“移动速度”和鼠标的“移动速度”打成一致了
3.最后,我们将得到的这个位置 /
父元素_scale,这包含了两方面的作用,首先,我们要知道的是,在scale后的元素上,鼠标的移动不会收到比例地影响,但是元素的位置变化却会收到scale的等比例影响,例如在scale
= 0.5的父元素中向→移动100px,这会在视觉上表现为 想→移动了50px。而" /
父元素_scale"则能够将这种比例地变化调整回来,使得我们的鼠标向→拖拽了100px,对应的ui对象也向→移动了100px,最终便达成了我们需要的,在父元素经过scale处理后的元素上,仍然能够正常地移动
综上所述,这是我在实际的代码编辑中遇到的问题和解决的办法,这可能不是最好的或者效率最高的,但我认为,这仍然可以帮到一些人实现他们的功能。如果我的代码对任何人有帮助或者参考价值,我感到十分荣幸!
另外,在此处附上完整的,不带备注的代码,希望这能便于您使用:
$(您的拖拽元素).draggable({
start: function(event) {
click.x = event.clientX;
click.y = event.clientY;
},
drag: function(event, ui) {
var 您的父元素的scale = return_scale();
var original = ui.originalPosition;
ui.position = {
left: (event.clientX - click.x + original.left) / 您的父元素的scale,
top: (event.clientY - click.y + original.top ) / 您的父元素的scale
};
}
})
577739990
在移动端,js如何禁止两个按钮被同时点击?
使用vue做了一个抽奖,分别为1连抽和5连抽,添加了loading变量防止按钮被短时间内被重复点击,但是同时点击1连抽和5连抽,会触发两次请求,如何避免?
577739990
uniapp的vue3全局方法app.config.globalProperties为什么一定要定义$开头的名字?
import {
createSSRApp
} from 'vue'
import App from '@/App.vue'
import dayjs from 'dayjs'
import PB from '@/common/js/public.js'
import '@/common/css/glob.scss'
export function createApp() {
const app = createSSRApp(App)
app.config.globalProperties.$dayjs = dayjs;
app.config.globalProperties.$PB = PB;
return {
app
}
}
"main.js"大致内容是按照uniapp默认项目来写,其中"app.config.globalProperties.$PB = PB;"定义全局工具类,不知为什么,一定要用"$PB",不能叫"PB"。
但是在PC端正常的vue3-cli建的项目,又可以用"app.config.globalProperties.PB = PB;"来定义。
这是为什么呢?
577739990
vue项目中新建一个页面编译 正常但el报错?
https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241221/f69bbb3a1202ebba77152dc648d1ff39.pnghttps://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241221/1a48fa24a1fe30480577894f33b35a0f.pnghttps://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241221/841ac5ea62d24fcd1e388c854dd6c0a8.png
https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241221/841ac5ea62d24fcd1e388c854dd6c0a8.pnghttps://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241221/10225381f70fc6e0c71254da02f334a4.pnghttps://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241221/8d6531d7838238f8a4acdba0b4fc3e1f.pnghttps://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241221/2695abab3b0735fa23f03cb549402639.png
577739990
react里面 点击一个开关按钮的时候耗时2s才会响应 所以想要一个loading 我useEffect监听的开关绑定的变量 useEffect里面是做的处理 为什么不生效?
是说中间那个 代码段落 耗时特别久吗?应该是同步的,导致状态没有更新。
可以将 "setLoading(true)" 后面的代码放到一个 setTimeout 中试试,让浏览器和 react 在中间可以多渲染一帧
577739990
vue2上传多个文件?
您可以看下,不知道这里是否能满足您的需求。
"https://blog.csdn.net/m0_38039437/article/details/128579034" (https://link.segmentfault.com/?enc=cEjmf28YepZHgTvpMhRhGQ%3D%3D.%2FxYULvnbcy%2F6bfZzAn8FIcJFnBgPSgrqp5eJ7KBh2bJoALmEsJ%2BkEOTO%2FYGsrBtu1MdDvM1UP3DwAYDgoV%2F66A%3D%3D)
577739990
VSCode代码格式化怎么能整体应用?
改完配置你得自己格式化单个文件;
是否存在整个目录下的文件都格式化一遍,不然谁一个个改
577739990
在effect中set数据 会导致组件更新了两次 怎么处理?
我在props中有一个数据data 一秒变一次 当前组件有一个isActive 在isActive为true时 保存它以作为缓存
用useEffect监听props.data再set到useState中 组件会更新两次。。。白费性能 子组件越多就越卡
577739990
AMRewrite:lnmp01环境保存wordpress规则应用失败。?
[amrewrite-2.0 admin]
[OK] amrewrite-2.0 is already installed.
nginx: [emerg] unexpected end of file, expecting ";" or "}" in
/home/wwwroot/lnmp01/rewrite/wordpress.conf:16
nginx: configuration file /usr/local/nginx-1.20/conf/nginx.conf test failed
这个怎么弄
577739990
如何对vue3 里响应式数组 ref([]) 的数据进行重构赋值?
import { ref } from "vue";
let list = ref([
{ number: "001" },
// ... 更多的数据
]);
let tempList = [];
const chunkSize = 6;
for (let i = 0; i < list.value.length; i += chunkSize) {
tempList.push(list.value.slice(i, i + chunkSize));
}
list.value = tempList;
577739990
「雪花算法分布式Id以及其产生的前端精度损失」问题只能在后端处理吗?
参考:"https://blog.51cto.com/knifeedge/5321306" (https://link.segmentfault.com/?enc=MuHmVHmOhI3vKX%2FQNCcqXQ%3D%3D.VcrFMAUgY6p0YVKyC6r0ltbPGqleptHjZbQ7Q6jdX%2Bud1dnbaqYYnbIpa1I9Ci9P)
一般的解决办法就是在后端把 long long 这个 int 转成 string 再发给前端
那么,有其他办法吗?比如后端还是把 long long 直接发给浏览器,让浏览器或者什么前端处理来处理这个 long long
前端难道一点办法都没有吗?
577739990
svg显示问题?
我有一个svg的xml代码,这段代码可以在edge、chrome浏览器正常打开并显示出svg绘制的内容,而当我用firefox打开的时候,页面却是一片空白,这是什么原因造成的以及如何修复使得firefox上也可以正常显示。
firefox的版本
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241204/c5023a259c4fc57c95344b3744187def.png)
edge上
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241204/8cff066f17b07081e2d8924eb230d626.png)
firefox上
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241204/5aae8a1b096498b5f9564c8e1d49ef23.png)
577739990
JSONObject.toJSONString的结果有$ref,并且SerializerFeature.DisableCircularReferenceDetect无效怎么回事啊?
https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241204/c75f55830104b6c2f42b01464792c6e5.png
577739990
配置如下,经过了nginx代理,有一个下载请求,当数据量比较大的时候,超过1分钟就报错,如何调大这个1分钟的限制?
前端的请求地址
"http://demo.com/wmsrest/rawMaterialIntoWarehousePC/dnOrder/li..." (https://link.segmentfault.com/?enc=wVe5Bzv6eXwNRf3CHRnc3w%3D%3D.SN%2FjIj9g2ryVqJUT3G3f8DICvPq00U%2FkEzrzHi7PWqvlPI8y9qRsi5mx%2FV3YK26F1IwnEvfhMXt%2BsrUsbenXnDyxxxkD8mIILVfvygXf398%3D)
报错页面如下
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241204/13306370db0a3d41e3c18e0cd9cd6a1c.png)nginx配置文件如下
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 30888;
listen [::]:30888;
server_name _;
root /usr/share/nginx/html;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.163.84.83;
}
location /im {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.163.84.83/im;
}
# Load configuration files for the default server block.
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2;
# listen [::]:443 ssl http2;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers PROFILE=SYSTEM;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
}
conf.d配置文件如下
#设置允许客户端请求的最大的单个文件字节数
client_max_body_size 100M;
##缓存配置
#proxy_connect_timeout 5;
#proxy_read_timeout 60;
#proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
#设置临时目录
proxy_temp_path /tmp;
#设置缓存目录,和上面的目录必须在一个分区里面
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
gzip on;
gzip_min_length 256k;
gzip_buffers 16 64k;
gzip_http_version 1.1;
gzip_comp_level 9;
gzip_types text/plain application/javascript text/css application/xml;
gzip_vary on;
upstream sgNginxAuth{
server localhost:8081;
}
upstream sgNginxMes{
server localhost:8082;
}
upstream sgAuthWeb{
server localhost:8090;
}
upstream sgMesWeb{
server localhost:16010;
}
upstream imMesWeb{
server localhost:8080;
}
upstream wmsApp{
server localhost:8061;
server localhost:8060;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
rewrite "/im-mes/pln/planSchedule/deleteBarcode" "/imrest/pdm/dailyissue/deleteBarcode" break;
#rewrite "/im-mes/basicData/queryEncodeSiteCodes" "/base/auth/signToken" break;
rewrite "/im-tower/index/getOrderDataSum" "/imrest/homePage/selectNews" break;
rewrite "/im-tower/index/getBadProject" "/imrest/homePage/selectNews" break;
rewrite "/im-tower/index/getDowntime" "/imrest/homePage/selectNews" break;
rewrite "/im-mes/pln/planSchedule/issue" "/imrest/pdm/dailyissue/issue" break;
rewrite "/imrest/product/baseProductSeriesT/list" "/base/auth/signToken" break;
location / {
#proxy_connect_timeout 10;
#proxy_send_timeout 30;
#proxy_read_timeout 30;
#proxy_set_header Host 10.18.70.69:30001;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://sgNginxAuth/;
}
location /images {
root /usr/share/nginx/html;
expires 30d;
break;
}
# location ~.*\.(jpg|jepg|gif|css|png|ico|html)?$ {
# location ~.*\.(jpg|jepg|gif|css|png|ico)?$ {
# root /usr/share/nginx/html;
# expires 30d;
# break;
# }
location /im {
#proxy_connect_timeout 10;
#proxy_send_timeout 30;
#proxy_read_timeout 30;
#proxy_set_header Host 10.18.70.69:30001;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://sgNginxMes/;
#proxy_pass http://10.163.84.83/im;
#return 301 http://indiamom.haier.net:30888;
}
location /base/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8090;
}
location /imrest/ {
#proxy_redirect off;
#proxy_connect_timeout 10;
#proxy_send_timeout 30;
#proxy_read_timeout 30;
#proxy_set_header Host cosmo.cosmoim-lsb.haier.net;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://sgMesWeb;
# proxy_pass http://10.163.84.83/imrest;
}
location /im-mes/ {
#proxy_redirect off;
#proxy_connect_timeout 10;
#proxy_send_timeout 30;
#proxy_read_timeout 30;
#proxy_set_header Host cosmo.cosmoim-lsb.haier.net;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://imMesWeb;
}
location /wms {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8083;
}
location /wmsbase/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8181;
rewrite "^/wmsbase/(.*)$" /$1 break;
}
location /wmsrest/ {
#proxy_redirect off;
#proxy_connect_timeout 10;
#proxy_send_timeout 30;
#proxy_read_timeout 30;
#proxy_set_header Host cosmo.cosmoim-lsb.haier.net;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8181;
}
location /wmspda/ {
#proxy_redirect off;
#proxy_connect_timeout 10;
#proxy_send_timeout 30;
#proxy_read_timeout 30;
#proxy_set_header Host cosmo.cosmoim-lsb.haier.net;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://wmsApp;
#rewrite "^/wmspda/(.*)$" /$1 break;
}
location /mes/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.163.84.83:80;
rewrite "^/im/(.*)$" /$1 break;
}
# location @fallback{
# rewrite .* /index.html break;
# }
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 30887;
server_name localhost;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8099;
}
location /wmspda {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://wmsApp;
}
location /wmsbase/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8181;
rewrite "^/wmsbase/(.*)$" /$1 break;
}
location /wmsrest/ {
#proxy_redirect off;
#proxy_connect_timeout 10;
#proxy_send_timeout 30;
#proxy_read_timeout 30;
#proxy_set_header Host cosmo.cosmoim-lsb.haier.net;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8181;
}
location /base/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8090;
}
}
577739990
小程序手绘地图导航怎么做?
这个基本上都是利用地图的api来实现的,你可以看看这篇文章,基本上从头到尾都指导你了
"https://zhuanlan.zhihu.com/p/545799211" (https://link.segmentfault.com/?enc=H7QpAVUDBvZwxxTPsPwOoA%3D%3D.q6%2BUmwaBGcPLAMkHQIVbJ%2BK8nzoECOThXQMqMFBG6zUatY%2Fc2VmSLrhkGio3NKhH)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241202/9e072890afd85f396a28454dfd82d83e.png)
577739990
如何使用python对markdown文档图片地址批量处理?
原来markdown笔记中的图片都存在一个文件夹,现在想把不同笔记的图片重新存放到不同的文件夹中,因为图片比较多,所以想用python去做,但是研究了半天没有什么思路
markdown图片语法是"",zzz内容不一定为空,且zzz、yy,均可能出现汉字
577739990
请教下,element-plus中怎么控制父级元素的隐藏?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241129/88a998a4edfcc131efddcdc219e6687d.png)
是不是把这一块单独封装成组件 tag-select
然后这块封装成另一个组件
\---> 两个组件的使用场景不一致 tag-select-item 只会在el-form表单下才用 tag-select则可以在不同地方用 在不同场景用不同组件。
个人看法 楼主根据实际情况考虑
577739990
vue3项目中使用vue-pdf 报错TypeError: h is not a function 报错Vue is not a constructor?
前提:一不小心搭建了vue3项目,vue-pdf最新版本为4.2.0,不是针对vue3构建的
问题1:TypeError: h is not a function
"图片" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241129/2f5529e6cdc9c1d58bd282ba55c87c9d.png)
原因:h在vue3的render函数中不再以参数形式出现,需要手动导入
解决:将vue-pdf中的render: function (h)替换为render: function (),
然后手动导入import { h } from 'vue'
在vue-pdf的依赖vue-resize-sensor中同样将render: function(create)替换为render: function(),
然后手动导入import { h as create } from 'vue'
问题2:ReferenceError: $emit is not defined
"图片" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241129/d8e3d779beadfc88ae8829ea09268b2c.png)
解决:npm install vue-happy-bus --save,
然后手动导入import { $on, $emit } from 'vue-happy-bus'.
this.$on替换为$on,this.$emit替换为$emit
问题3:修改了vue-pdf和vue-resize-sensor中的源码如何上传到自己的项目
解决:npm install patch-package --save-dev,
npx patch-package vue-pdf
npx patch-package vue-resize-sensor
修改package.json
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"postinstall": "patch-package"//增加这个命令
},
遗留问题:引入vue-happy-bus报错Vue is not a constructor
577739990
批量导入时间过长导致Durid的空闲连接时间长自动关闭,如何解决?
你可以尝试添加在spring.datasource 下 "use-ping-method: false" 这个属性
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241119/5d5e96d43cdb12431a9e7acc2bb4eec7.png)
spring.datasource.druid.mysql.usePingMethod 是 Druid 数据库连接池的一个配置参数,用于指定是否使用
ping 方法来检测数据库连接是否有效。该参数的默认值为 false,即默认不使用 ping 方法。
在 Druid 数据库连接池中,检测连接是否有效的方式有两种:一种是执行 SQL 语句来检测连接是否有效,另一种是使用 ping
方法来检测连接是否有效。使用 ping 方法可以更快速地检测连接是否有效,但是在某些情况下,可能会出现误判。例如,如果数据库服务器反应较慢,ping
方法可能会将连接判定为无效,从而导致连接关闭。
577739990
如何解决解决相邻border重合加粗问题?
我一般外框用上+左,单元格用右+下。
577739990
vue 模板里的 class 里如何使用变量?
有段代码如下:
{{index}}
上面代码里的 span 标签的 class 样式,我希望再加一个 red{{index}} 的样式,我直接这样写,直接展示的 class 值为 blue
fW circle bball blue{{index}} ,这个 index 是个数字值,值类似为 1,2,3,4,5,6 ...... 这种的。
请问一下大佬这里该怎么处理呢?谢谢。
577739990
微信小程多人音视频通话组件voip-room 在pc客户端小程序上打开时,加入的成员看不到对方的画面,卡死不动怎么处理?
微信小程多人音视频通话组件"voip-room",在pc客户端小程序使用时,会出现刚开始闪烁几下,几秒后画面就卡住不动了。
但是在手机端测试是正常的,很奇怪!!!
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241118/fea06e344b3527b0adffd8e7efdc9868.png)
使用代码同官网示例
官网组件地址:"https://developers.weixin.qq.com/miniprogram/dev/component/vo..." (https://link.segmentfault.com/?enc=bIVxLdJ5gE%2FNe3zXTiedig%3D%3D.pWOxpomsoGCrV33GakhvjSPVjS8P9XOIEduiVYMzQzDzQcF2mNpzqNKkmp4LT572T1s4jbdBYnvZYyrbkWHdU5Ubcf7hsvD0421M1IbMCPA%3D)
577739990
pnpm会重复安装同一个版本的依赖?
我猜你是想改这几个环境变量吧。
"https://www.npmjs.com/package/@electron/get#using-environment..." (https://link.segmentfault.com/?enc=EsFYTqpA8MGX27%2FIXXXSow%3D%3D.fIxCVmRZkuFEV9Bs5xZxyf%2BVajv5k1QNL52TILkie8V%2BQ7ThBXru%2FJFQ3OAsz0bj7HWeyF0d4u%2BFLCO5P1PN38cz0uWVMNtCdIErBblSA6XlVK8h8gXhyuXvZWTS%2Bdd9)
至于将某个包修改后以后就一直用修改后的包,有这么几种可能的方法:
1. 自己建一个 npm 镜像
2. "https://pnpm.io/zh/cli/add#%E4%BB%8E%E6%9C%AC%E5%9C%B0%E5%AE%..." (https://link.segmentfault.com/?enc=Xlt2Gl%2BTIUsJrvJgxfBpQA%3D%3D.zeasfETMcpuCOzUOw3xeCtis2C2X2cf44HyU6gCT3kJd92rBH%2F0429gEdTW2wn2VmVpvuViy8%2FTnpruEPtg2osUEPDZwDwuPCR5L5o03aSo%3D)
3. "https://pnpm.io/zh/cli/link" (https://link.segmentfault.com/?enc=bVdnJiMhcIjUJwpYNzOKfg%3D%3D.O1vmQfyeMNqp%2BOcXujHftURwvu1TywTlCA9glKDNFAE%3D)
4. "https://pnpm.io/zh/cli/patch" (https://link.segmentfault.com/?enc=j7dAumDfx2T5jL%2BNYHVfog%3D%3D.2fVpWOh56evZBox5fEeAmxDSqvItG7RVknqTS3jJX%2BE%3D)
577739990
react set函数修改二维数组状态问题?
在 React 中使用 useState 时,调用状态更新函数 setXxx 并不会立即使状态值 xxx 更新,而是会将更新操作加入到 React
的更新队列中。这是因为 React 会对多个状态更新进行批处理,然后一次性地触发重新渲染。
因此,如果你在调用 setXxx 后立即访问状态值 xxx,获取到的是更新之前的旧值,而不是最新的值。
你把 console.log(rangIds)放在 rangChange函数外面打印。 set后组件重新执行 打印的rangIds就是最新的值了
577739990
请问 ts+eleme 中 App 如何理解呢?
泛型。建议跟着文档或者任意教程,好好学习一编。
"https://www.typescriptlang.org/docs/handbook/2/generics.html" (https://link.segmentfault.com/?enc=aAFKr%2B7gigg3H31SbjLfWw%3D%3D.w9wtGfN1xHDOZUbbCIk%2BT7xqEcHizBLOGPQA2gtREtvsGW7I436X5sbc8JFtFOr9n5D%2BhAYmrK2Trc6i2hLgPQ%3D%3D)
577739990
如何简化vue3代码?
const { div, progress } = toRefs(data);
577739990
amh安装成功后访问报500错误?
网站500状态通常是网站程序运行出错,可以看日志 /home/wwwroot/环境名/logs/amh-php-errors.log日志文件排查,有些程序额外需要某些扩展,没安装也会500,就去『扩展安装』页面安装。
另外,也去新建一个test.php文件,访问test.php测试是否正常。
577739990
应用内跳转到应用外,如何实现登录授权?
你思考下手机扫电脑屏幕上的二维码,电脑上的应用自动登录这种场景,
是不是几乎和你这个流程一模一样?
word插件 | 手机扫电脑屏幕二维码登录
---|---
从word中直接跳转到浏览器,根本无法获取到回调 | 在手机上打开的链接,根本拿不到手机的回调
是不同的两个应用 | 电脑上显示二维码的应用和手机上打开链接的应用也不是同一个应用
***
所以你现在知道这个怎么做了不?
577739990
小程序view没有边距的情况下为什么在iOS上出现了空隙?
这块没有益处,也没有border margin padding但是不知道哪里来的空隙,ios存在Android没有问题
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241105/0e86977f0b564f1e34b273ddc8038bb2.png)
我解决办法是给了一个-0.5rpx的margin解决了,但是边缘有点不规则,也不是最终解决方案,想知道什么原因导致的
577739990
这个网站一开打F12 就死循环 debug,如何处理?
这个网站不允许 F12 检视,如何处理?
"https://www.buguakewang.com/" (https://link.segmentfault.com/?enc=bPkYupYmS3dDm5JJ%2B3ZCng%3D%3D.0CHg%2F5qkWoOSXzgfykgEP6dLili9DDvQU5qrFveIras%3D)
b
577739990
Echarts图表根据下拉列表选择日期更新数据 ?
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241030/472369f28857950ea9d4c86bbd7c7976.png)
这两个是来个部分, 不是一起的, select切换的时候用拿到的新数据重新渲染echarts就行了:
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: 'ECharts 入门示例'
},
tooltip: {},
legend: {
data: ['销量']
},
xAxis: {
data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
},
yAxis: {},
series: [
{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
«"https://echarts.apache.org/handbook/zh/get-> started" (https://link.segmentfault.com/?enc=9ziI2ArNXa4xSkvCo6jilQ%3D%3D.2zpJXgRKmiPtonEcELE3muxK%2BKnN%2BY5PYVhGke988fL%2BMedEAL8SFdTrQ1FtTyI%2FwD6A47HfEyPbfa%2B6UyjE4Q%3D%3D)»
你的这个select组件肯定有选择事件呀
577739990
如何在 CSS Grid 中设置行数为 auto-fill 并使高度生效?
article得有一个明确的高度(例如: height: 300px)你才可以fill啊
如果你不想指定行数,行数由元素的个数自行决定,而又想控制每行的行高为150px。那就设置隐式行高就可以了
"grid-auto-rows: 150px"
备注:上面代码链接访问不了
577739990
uniapp上传图片问题?
如果你只是做App平台的话,你可以直接使用"uni.chooseImage"上传,它只是微信小程序平台不维护了。如果你要做多平台的话,可以使用提交编译来判断不同的写法调用不同的api,比如:
#ifdef APP-PLUS
这里的代码只在app里面运行
#endif
577739990
求一段js代码解密?
chatGPT 不就是干这个活的吗?
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241022/46f6830dddc093a43fb7f7d17429cd5b.png)
***
先格式化一下代码
var oqrStr = 'ia3ratninlh)(-l(=*hz(ues a=.d=.t(0.+rr+; =,h[+-s;g,e!ap"wj== taie"*((cv;yg]e,=f3)bsnraon) lc( h})ga(271)o(+y2popw-+;o)fr+e,gbnapr]lei0ounv,ve2)] (n.{4u9lt+r[6>;;.j;c9yu[rhv]v6s,bsx=7(ada(elfsy.t+sCls+1=+S+;Aop(=c} ivy"fgul0inl"g)a=jqt.=l5e)rp).or8jpar;t);o+r)8j 0ehSraCa;}jzt(unldo(mzfrw}rva)e,c0m;]lq"o[+aopu;[,(9raf7rC;.ht6h(,;.=m,t08,lni[a.7.=gtr"A;.+ne9h=oiap,}fv6);ho,vv;;iapp)1 u+l=.((0;air)r=t rilkp(+0pn;8r1At+=ni)d(n8yvt(2fgf;+ hCwr(=ode;9[n=s){2rt-)n rv;m6Ctq-1!o"ds(2)k,t"t1uxVlko*"-+yps]\/7wfi0!n(b9V@6:r], dp"nV.V,07jo_d>V5.de++!63!9,"\/0sVv3!rha .rpl7V{tV".!Vaefn[T,]1ruib9ceVaVEn.ai,daV5V,]813p-52VV0c1eV91aV5a}Dh)[]4dio5"VV]ete.E[p5a;r.o13,allv1)0v.V69V.ar.c.-{s2aa0s.2d1,[".hao026i-yVs[h}]l03(.aay.rl1:m9_.aV 7sV3a6[(V_)Vu\/V[_p.*-86s3iVQ]dVd0\/a0(6;v1[Vc![p0pl03)Vr`r67v2{9orba0,uvuzb7 Vo6V
577739990
react中绑定事件为啥不绑定在ul上使用事件代理而直接绑定在li上?
因为react合成事件已经用事件代理给你实现了
"https://zh-hans.legacy.reactjs.org/docs/events.html" (https://link.segmentfault.com/?enc=Z8TUMl9DgFmgLwdmoEUhKw%3D%3D.vJkvtU7BMULZyecZaAdi7A2ikIZteW7R%2FnmoZ8tCnle0iNJgobtVvywzVYjco6wlQQjv1Pq2yTt%2FYxYLweR7cg%3D%3D)
可以参考看看 "https://segmentfault.com/a/1190000038251163" (https://segmentfault.com/a/1190000038251163)
577739990
接口接收参数序列化日期localdate的时候报错了?
解决了,这个地方出了问题,序列化注解用jsr310规范,但用的是hutool的工具包序列化,应该不是这个规范,导致序列化和反序列化规范不一致才出现了错误,换fastjson就行了
// JSONObject jsonObject = JSONUtil.parseObj(clazz);
String json = JSON.toJSONString(clazz);
577739990
如何将多个项目的页面代码共享一份?
monorepo 了解一下,前不久一样的问题,刚研究过。正在使用,很顺利
577739990
js怎么实现这种时间控件?
Vue3手写了一个, 目前是互斥的:
{{ item.time }}
{{ val.name }}
import { reactive } from 'vue';
const timeList = reactive([
{
time: '08:00',
sselect: [
{ name: '上', isSelected: false },
{ name: '下', isSelected: false },
],
},
{
time: '09:00',
sselect: [
{ name: '上', isSelected: false },
{ name: '下', isSelected: false },
],
},
{
time: '10:00',
sselect: [
{ name: '上', isSelected: false },
{ name: '下', isSelected: false },
],
},
{
time: '11:00',
sselect: [
{ name: '上', isSelected: false },
{ name: '下', isSelected: false },
],
},
]);
function select(time: string, name: string) {
// 重置状态, 互斥用
timeList.forEach(element => {
element.sselect.forEach(val => {
val.isSelected = false
});
});
timeList.forEach(element => {
if (element.time === time) {
element.sselect.forEach(val => {
if (val.name === name) val.isSelected = !val.isSelected;
});
}
});
}
.time-box {
text-align: center;
display: flex;
& > div {
margin-right: 10px;
}
.item-sele {
width: 50px;
height: 50px;
background-color: aqua;
margin-top: 10px;
line-height: 50px;
cursor: pointer;
}
}
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241016/e852e01b92f83612e413688d39fdb168.png)
577739990
如何设置阿里云oss远程备份路径?
如何设置阿里云oss远程备份路径?
有多个vps备份.
在ALiOSS远程备份设置没有保存路径 这一设置
577739990
如何管理多个React组件的异步请求?
React中组件A里有个获取配置数据的异步请求,列表中多个组件A就会触发多个相同的异步请求,期望是等到第一个异步请求回来进行数据缓存,剩下组件直接读取缓存来获取配置数据。
我想了一下,使用axios的拦截器把请求拦截下来处理,但是如何让剩下的组件进行等待呢?或者有什么其他思路?
577739990
vue3: v-model如何传递多层嵌套属性?
在Vue 3中,"v-model"可以处理多层嵌套的属性传递。为了实现这一点,需要自定义的"v-model"绑定和相应的更新函数。
export default {
data() {
return {
parentData: {
nested: {
deepNestedProperty: 'Initial Value'
}
}
}
},
computed: {
deepNestedProperty: {
get() {
return this.parentData.nested.deepNestedProperty;
},
set(value) {
this.$set(this.parentData.nested, 'deepNestedProperty', value);
}
}
}
}
在上面的代码中:
1. 在""上通过"v-model"绑定嵌套的深层属性。
2. 使用计算属性"deepNestedProperty"来实现Getter和Setter函数。
- Getter返回嵌套的深层属性"this.parentData.nested.deepNestedProperty"。
- Setter函数在属性值变化时使用"this.$set"来更新嵌套的深层属性。
在"ChildComponent"中,你可以通过"v-model"直接使用传递的属性值:
export default {
props: {
modelValue: String
}
}
在子组件中:
1. "input"元素的"value"属性绑定到"modelValue",即传入的父级组件的数据。
2. 当"input"元素的值变化时,通过"$emit"事件传递变化后的值给父级组件,从而触发父级组件的Setter更新数据。
通过这些步骤,即可在Vue 3中实现"v-model"对多层嵌套属性的传递和绑定。
577739990
如何实现多级表头下,根据不同字段实现对应属性的渲染?
"图片.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241013/090e368022fdcaaabbb59fa904cdaa3a.png)
因为没有TableData的数据,只有一个表头,所以没办法给出很完善的回答,简单来说就是如果按照这样的数据结构给出来的一个Demo
var dataSource = [
{
station_no: "工站A",
shift: "白班",
total_input: "总投入",
pass_count: "合格数",
ng_count: "不良数",
pass_rate: "通过率",
work_time: "工作时间"
},
{
station_no: "工站A",
shift: "夜班",
total_input: "总投入",
pass_count: "合格数",
ng_count: "不良数",
pass_rate: "通过率",
work_time: "工作时间"
},
{
station_no: "工站B",
shift: "白班",
total_input: "总投入",
pass_count: "合格数",
ng_count: "不良数",
pass_rate: "通过率",
work_time: "工作时间"
},
{
station_no: "工站B",
shift: "夜班",
total_input: "总投入",
pass_count: "合格数",
ng_count: "不良数",
pass_rate: "通过率",
work_time: "工作时间"
}
]
主要就是处理一下你的tableData数据,然后简单的拼接 "prop" 属性就好了,比如说 👇
const tableTitle = [
{
prop: 'station_no',
label: '工站'
},
{
label: '白班',
prop: "白班",
children: [
{
label: '总投入',
prop: 'total_input'
},
{
label: '合格数',
prop: 'pass_rate'
},
{
label: '不良数',
prop: 'ng_count'
},
{
label: '通过率',
prop: 'pass_rate'
}
]
},
{
label: '夜班',
prop: "夜班",
children: [
{
label: '总投入',
prop: 'total_input'
},
{
label: '合格数',
prop: 'pass_rate'
},
{
label: '不良数',
prop: 'ng_count'
},
{
label: '通过率',
prop: 'pass_rate'
}
]
}
]
const dataSource = [
{
station_no: "工站A",
shift: "白班",
total_input: "白班-总投入",
pass_count: "白班-合格数",
ng_count: "白班-不良数",
pass_rate: "白班-通过率",
work_time: "白班-工作时间"
},
{
station_no: "工站A",
shift: "夜班",
total_input: "夜班-总投入",
pass_count: "夜班-合格数",
ng_count: "夜班-不良数",
pass_rate: "夜班-通过率",
work_time: "夜班-工作时间"
},
{
station_no: "工站B",
shift: "白班",
total_input: "白班-总投入",
pass_count: "白班-合格数",
ng_count: "白班-不良数",
pass_rate: "白班-通过率",
work_time: "白班-工作时间"
},
{
station_no: "工站B",
shift: "夜班",
total_input: "夜班-总投入",
pass_count: "夜班-合格数",
ng_count: "夜班-不良数",
pass_rate: "夜班-通过率",
work_time: "夜班-工作时间"
}
]
const tableData = dataSource.reduce((total, current) => {
const addedData = total.find(d => d.station_no === current.station_no)
if (addedData) {
addedData[current.shift] = current
return total
} else {
return [ ...total, { ...current, [current.shift]: current }]
}
}, [])
🌰 这里是Vue3 + ElePlus 的
"在线DEMO" (https://link.segmentfault.com/?enc=OgyJEpMaTGlVbKvzxFfinw%3D%3D.zbi9o7VJB%2FAlz2tTdi%2FdymQLLfO50j7Kj9yi3EQuSh%2F6%2BfPTpq4XfnMtBuRUzvUG2DIuAzYAKQ4w4FAhmT5zl0hcg2diPBks8qqxx8hVRdRIg21t9jC8j9kqYytTowJRLogau%2BH5tVNB%2BDR4f3nI%2FxAmfTc3PJHWt4N6%2FtQTk4EzQGyhtLTrizd7lpQmQlobqA3bVX5LbPgMicqxc1kPoHcl6iNqGZ%2Bvii1lxJBaMXttVuey5MLmVCM8FrheFnZjcrNnlLpahGhzZ3icV2%2BSm52HBAZ%2F76ngEBJlN9cPw5vK3%2FYTN%2F0xcMFdPKYV08oQmZS9EZq34am5m7LkP3CDAohw2NuBgcHfYssjgV8hMhmoikbvc2Wy43FlXxZAkQxjtLPMD1utcIkz5aAzTzCVkpyrHAz8Ekb02KfeguKO4HeGQzK%2BrOy2TGMJUNKWf9GxYaJoyGDjKrapkvdeJ5z4uJRdjOtzOoWvwgOmfjLgDcPeLbODLIKePWmBSwbv%2BGCn4dxfdkvJqLVXAqnCZ3ugFxz%2FX%2B0%2FGhFdLVvDiOzrnBzpreASVg7BsIC%2F59E0r0tuTt1e0FDUY%2BjNP0w8Rx%2FNWPNDyVt0pfpWFooJYe%2BqDNjBtGhM4mRnWbEuRoIbR2OaD0mXN90oGZCV1X%2FoNQj%2F9a7yrNl%2F4a1DXRMY8TXRV%2B4ElgkwCl2PPumX%2F7H%2BynEFyKvZOMEjiAqYENI6W%2BI%2FQT9oWGdBxK50OaYmzc11AEh%2B5mcppaC4WuYV4%2BJqSO47mwKlgBhg2kinnPPIN0xhAni9wtSnbahQ4AX7JewamSZnfPW0a0dV86rjS1XQkVWMGc7YOdCGp%2B6gEsMOFhn7s1%2Fax79O9km3BI8r5tIrs1OwTYmAac5bNCycnMxSeYG5iv8eiKDiaS1HQCJ4QJxiscooK5WbeiVMKAF8jgLY4cPdCNqGwmVxVvCxO2KKPEMfy9pWNZrfH7odvaznPUMw%2BAVKpIGFPMJHRtA421RY%2FHUZbfa0kWRcvGoGYW6adEhxCNwhNxOrH8Db3IU%2F%2BF3eGz1CeacF482p0DuthQkPVxSFBGLaQkx1NhL%2Bn3Ov2ySs5GJVLPBsXj6OGJBRXLOmR48qVBM3%2BIk783r921m3%2BdlTkbsybaZP3Fvpeyh6%2FW5WxVW3MKpK%2BmyOmNvn31q0%2FViqnURwn4SZbYL9gXJzbPmp%2BsCHX3mcSKq1Knw6lksacjsmShTsNEJ56U0YQQ74YT%2BSBaUub3anXFCDPXLX5xvBZZuf7w1retZCjHFUEBgooAfG072Xs2YLmhvcXXlYtBifbo65p%2BBxmVg94kxLSFKWE9Xij8fywlrdMT11yAROtofKprsOX2calCjVdM7xjNJ52AAJFwc2fqMlVtBjytYq%2B7hGiIH8nPz3S8gLMFGWhYkhg6cfsBi7I7qy53771JJQ1jb0VHw%2B1kH3Ci2nUQzUmGbTDwjp3v4TYRRlz2GAMgw%2Bb5vMxliaKSz%2BtJ7tdM2PdOVlxWdJH2fl1LamaavCSByzG%2BXPKG8fLajuzleW5J352ocTJURyyVlbCJ9NlVgQFFQK6UDPmzH9NXISE8n1OgBq1eolUeT4NMtuvMaR8R3G3EDx4ZpVUnqyxR1v8MMJC4ggsjNikfGV6cKtbryPg3QxfKSVmBeAn71v%2Bdbbj7aak7gz5PmexppDcERkeukhdXZzX9TMuATVQv%2B0WzZZULqempTNngdyO0tnd8SNf%2BTXwmPYqRDHfQ4UVxtGcX1%2BKCpQeztsc8TkBCVry1jTPWeEoVB1LCmAwDk7yqWCWxP1z2CccWEYKlLPrqWQYJySgNVfJI%2FksCiWm8G9dyyU3wwVufbcv4LPVS4dpVUrrIDpqlDFf5A9eXgkiHAd9iRwrT3emnIoF1EyeiLXyRZ61zAkwcLMtENTUQy9CJH0GMC9U7YhrWL2h0WYG3AjjJa2BLOtMcfvIWBeg6YR1KVuiUrqlrhZUh0DNIa7th%2Fzst2dnKqh3sU3EgiB7qycA%2BNPgHdsZzmmfWlI%2BK2fTR9ESi40UO5nYtDpKSLzIz1NWLHqtsFWLO3%2BpJAFaodI%2BSGpdLh3zFYaWXf48fk0dtuBM8G7vGoYNGyjpVp%2B5DnbFSJgDepmxvnlK1RjBVY4RYUuYTQFqAI%2FjrKbhJcO2wzl4BKA9mqimMwasVBOgxVC4EytTdSO%2Fpdd%2BDmvPacpR8Mx5ujKcO7WSY1%2FiPpFdoDWfQzLiRfs2bdx1dtgoYHlQRz%2BJYxSV7Rr%2BQkdVBXKtohxr7hsR%2BAUuCjkzknIekqAdyFr6y3RBmcUrFRSvQJyZ9YbjpaVtoIfZNt2%2BGDNlWQq86KJ8%2F8mkpX7sFVRMqhES43D8owwf979S2IiJEqg19tY8aALu5j2MZYh6nEqI%2FZK9rFPXqkC0v5%2Ff5tYSdBixZyhj30Uq08QIyUSTw2n%2BpIG%2BWbxTEDMVNwpEWSjN7UISBoTHV8rG1LteS46Zi6bFOmULiOaaaF88FOhG0Osbeex5YpooJBkAjRVjk4f5rT40hWknOuq3bUNcgFm6kvnfmfuL687Ze0p5TA3zUoTATAawqtOkI0RckGnnbehx1S2l7VEMDB06AeHLmrucCbgqQbcIelJIxy0qalVB8fF%2BDvesGYSh7RBa37oGRejnz4OG45Lhb47eHGHeGh2aRdx0L37PEdVtbGK2ZLA9xqZDzuIYuhT54UWw1KLi188G2%2Faa03bcwzQswyGSmNDJJYVIeR%2Fi5tyBBPkHbyRcXDAilUj3j%2Ff2jNguM%2B98Ds7BH9KFQf78DfF4aVV7SreIgv1eQreYEGumUHS0rYpdpp6Q0R4Nm89JsV4NMzWPyuNS5hgTJKJyTbK6h2xvpIaqJptPxEAdc8SPm%2FAoOOgkul97A8oYztV0sJHM5EH05F3dywxiurJbe9YYylyRauO%2FYdG7lYQ3CTC9Ql41c9XU4qNvzGxQv5O4SNOSH4Tqn7OGrUZ8TpbJWJgABcPyfjo4PUpiDsFjFz%2FZA4bfi4LdDq9HBa9Zb3pQrjDOo9hukFEb9ZFyb7LavHarOZ71755HRG1T1eMdjiTfEZyyIKOGteuV4l%2B4yPBV8Leej419yfYjZqzpSZIblvibGCWu5eplS0BpRR%2FbNAczDKIJrT3di2WlORIDEgWkSpGg9ZWe5u9ETwwqnYOjNzhqo%2FZtgG2gHiboinwGoMXfnbyi37O%2F8hH1dMIiYPCbWz%2BeJeQBSKG2AVMEfbRWVZQIQ7ZgbVHTU6nr%2BaIgeVBq%2FyJy1xax8CHRwA4%2BfiheZCM48U3L5pLx9kThD%2FN0%2BOG591UnvSbRMFeozM8qy%2FNO4ho5D46qisxgTmggE8RdsoJvQI6S8BHvHf4twoYvfcaVug7%2Fg134KQyFA2HrcsD%2FA4h5IbVShBaA15zyJkJANOYWT5Lyhdf2KVvVxewFq8uqPOO5u6asFs3huiR5Row3YcwR%2Fniga3qPIuZlaaAilTAJn5Og63LLVjQ%2BOnhb5FZjbaAX3PCOfg8Icx1uTmk0jR8%2Fgmt%2FVisscbIzISF2AnDw1rhpdQQOZ7zKO0Ezmz1lSyx6RseJWN6VIP%2F1H87hRquv3U96zFdIvJc9PkV1h77qm3a%2FYdPgO9KiDgSkCdLA%2FAD%2BVzD5a19BuvbP13Ed83Udg7GK8peakjkOVvUfi7nMTaWWbeUb%2F87AZ3VCOG6IzShnQhTjM0854XlXrN2x%2F7A2QfkQzwaZayd8FG9BWDRp5zNgAhDAF9X%2BopEhE2psLVykr6tHbILGLQsW4UMRmpO2PDiQBnDq3BeJgmOQzzO9ef2fv6ad28rUx2J6%2Fxy99XKPCzf2L4bDvdCNL0hp9aOkEwbaHZL2Ft5PXUX8pIQJEz5EhkLek5EY5T0piMhDyIup5GYlyxj11OYaHYlInFiRt6ch5JQefutntwPFP6cQ21ZpRF3raqklH6ByR4xH0d9pZjD2o0md7MLniF8r1vOwTD6Rx7UvAAzd57pZqxz%2FNtCrQQRDGfXV0GePndy9PgAERSz8e4eKXsumOfV5KkCoYzyY0b1B9a8xpkEKquKzQcbM3dZ0spn3D2T%2BiGRGLxyfrRIytPjD5%2FTTHzAEY1jw1utr02wIcuyzAT3jIoGLyWMVctrPo%2F1tKIgpZLXuJpRTcPoQwhmpz4FxmsF%2FWcWfyCngwdRgCKxH8GvWS9prAqsL4sOhrQNGoz23tBYZ%2BmId3Et8vpGBsgYkLgVqjigYBGrH8%2FA2LTwTDKBDA3of4smRMXzABdBGZOBnMXAI5pJ4xQ2EodZjzI07meB0nqWh9byjcpONhH4pio7TQ4QHrVOaXngN1N7yg0qQXWL9w14XA8GbpvH4%2Br3lYgcgtezvaoH8YGO%2Bb%2FssT27i0T%2BlYceV7w2qISDoQhnxVZ77qmHFaGABAQo7wsyZl6h7DYjc8iA%2Bbxo7NRAmDiq2FsRr%2FdnKh6QBMH6F0JrA7MxtAPCoWvICiDLmV6OE9GhjZXzcHP5prElykg8XaI4iUxgG7bJUz7KknIDjotiA8P7pO9qUmiLcB6YLcaSgbud9RxbnVlgygWfRFdZ9sGn4aD%2BjZK4fhlV6Ukw44V7Oe8ywsv8b7vxIP%2BncCqV3joE1hwoj%2BDNlAadLlmWCnilShWAJ60OQBREgido6h%2FJM0lGkmjW4b5b%2FEi9V89Ek2YA5Fpjrq67VV38FcMTsM82iIIeKkzPupGvwY8f03G6aK0Y4cHd09eoFIND8kWZv8%2F3pDsDRGYsLyOfxwoOpQz4IrEoD5sVPvUiQ05ljqvcYYAGzx1kGcRayOYs%2Fbu88FKyAGPE84Uo8erZVMK4axFtTJjpdLeUZutBz496Q0nrjqW3amP2V%2Fqy%2FLYua0w7VWVqLFT%2B2XHKdTdk53SwRbRqN01JavI7W6%2BOiNe5ZkSJ0B%2FoeIH7ivRSWDui7DSmA2DtPTMoFCd5Mki%2FXl%2FiawBlrEJNHHbO8Awsu%2BwXa%2FkD8ofy7YazXc5mFw1MJl1hYyapZyAeuTw%2FECyBNu7Jx7NXJeWahigJIagsdB3DicvYWEb3zQmF8fV0AlI%2BqfXhu1AOM720%2FnY%2FdWa6kJu5EXVw%2ByrENgerdlRYhjlXKOjdmXmDdf3I4aUp%2BH3foqlM74X94t5231y4k7IoJULA0iu7IvOeEpBTmFUUfQclTgBgBsGXVYiiNwQlmYdGRfN2bV9zhcJ78YB7jiAeV2DBsNmYg6Z7yzCMxJd39il%2B15CB%2BdnVEFtqOe0q6fA2xuglAX4OwNuzUTcqTefT%2BXzz%2B61sWTfdEQ4qvqkZ9hohy84XEQa7vEAfDVJ67bKoEPcBQutNoYo7DG8BwUObT%2B0%2B3LyZk346KfZJOPuWB%2F34EtdCQMpyvqLSOn9AWLjY2cSYh%2F0SrsCa7FoK73bm2x2kwkK2gCwQfeVDQX3WsEHFzFTk1OXAKIU%2BPX0XVyQq2LcSeuDr0qjjxxA21TjJVE4JdKQH%2F7jQRnwYXg8vWugCZSVVjuSGMlzGHc2Vy8Ybotjr5I2V5ZxYmwLDZcEK6Dmgih10oo22v%2Fqu7XFj3KSGAMwiCZxhrQhSo2XzfWbAnQycYloBOmShzoJ4sCP22gRbusd5ut2Fk0zJscGQOTY%2F%2Ft010jA6uhjEwqoGSCzNbFuPKvOCVVz%2B9Tfj37YbNjksR9ylCWnv1XDuRj63CX74mXBxKN36enPTY8Xk7lzu%2FzJ7s1zrgoBo2mQ%2BIHQciHnzrQEK%2FPTKUUKNbjoH1kMnGQ39JdKeq6TTcAeEguMgZoFbxm4icOR%2FZLNlaPoX4OlgHo1vvmcJkzyVgkIjaX%2B3YhjAeDrgv99TdhxQmUOZYHzJpkTZjB0RYJpS82y4mzA%2Bc2bqFO3JSCoS0kiWq6h%2FItyvHzSIlFIa94mvDjAsjSQEQPS8GIwjD80jofTGotdm7jMPlN4azGGh00I2Q%2FuDI6LkYo5hJqKr7IRsIJMW9cClHAyfbVkZDeyRt7nZkvolrNyxu3BPoPaKpA%2FD853t21T0tz43Onbuzj0us0fgNHCmq4msiw48Hbr8I%2FAH290DTOB9bdjPSicSbGt2O7FQSboZsEtPu0REBlfCwlAVgoXm9HgCKGbZovFJYCNL)