Could not build the application for the simulator.

点击三角形按钮,突然运行错误:

Could not build the application for the simulator.

Error launching application on iPhone 11 Pro Max.

错误解析:

在项目的终端flutter clean进行一下,重启,打开运行项目;

如果还不行,说明你新添加的功能代码是有问题的,以至于产生冲突,你可以先暂时注释掉最近写的权限功能代码,再细看文档吧。

比如我的 就是应该使用高德获取位置的过程中,iOS端没有处理好!

以上是我的个人经验,可能不能100%解决。
————————————————
版权声明:本文为CSDN博主「PrintfYoli」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cxy18137478587/article/details/114284567

flutter 页面返回时刷新页面

// —— 跳转页面时 ——-Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) {
// 要跳转的页面
return DiaryItem(
id: DiaryList.fromJson(model.list[index]).id,
);
},
),).then((data) => {
// 判断是否刷新
if (data == ‘refresh’)
// 刷新操作
model.refresh()});
// —— 跳转的页面 ——-
Navigator.of(context).pop(“refresh”);

Flutter 踩坑 macos项目无法运行

error: unable to parse contents of file list '/Users/用户名/Desktop/Code/Flutter/tyty_flutter/macos/Flutter/ephemeral/FlutterInputs.xcfilelist'

error: unable to parse contents of file list '/Users/用户名/Desktop/Code/Flutter/tyty_flutter/macos/Flutter/ephemeral/FlutterOutputs.xcfilelist'

遇到这种错误不要慌,先用安卓studio或者VS Code跑一下 然后再run 你的工程就可以啦!

Navigator operation requested with a context that does not include a Navigator.
The context used to push or pop routes from the Navigator must be that of a widget that is a descendant of a Navigator widget.

遇到这种push报错,不要慌,慌也没用,提示错误是上下文类型不对,看看你的runApp函数写法和官方写法有什么不同吧(暂时总结为:要使用Navigator,根元素不能是MaterialApp)

1、Flutter Column 套 ListView 不显示

将 ListView 放到 Column 内部后无法显示 ListView 内容。遇到这种问题 不要慌 慌也没用
将 ListView 用 Expand 包裹起来。完事儿!

小米路由器端口限制3306mysql无法访问

因为公司是做网站开发的 小米路由器已经安装好了lamp环境 但是mysql局域网的其他机器不能通过 navicat 等管理软件 远程访问数据库

不方便,求论坛高手指点大法

config rule ‘httpdwan’
option src ‘wan’
option proto ‘tcp’
option target ‘ACCEPT’
option dest_port ‘3306’
option name ”\”httpd wan accept tcp port 3306’\”’

上面这段是网上抄来改的 还是没用

下面这段是安装后自带的

config redirect ‘wan3306rdr’
option proto ‘tcp’
option src_dport ‘3306’
option dest_ip ‘192.168.1.14’
option dest_port ‘3306’
option src ‘wan’
option name ‘3306’
option target ‘DNAT’
option ftype ‘1’
option dest ‘lan’

exe、msi、dos、bat等静默运行,后台运行,不弹窗的解决办法

1、exe程序本身不想显示,

在源码开头中加入   #pragma comment( linker, “/subsystem:windows /entry:mainCRTStartup” )

 

2、打开其他的exe

         2.1使用WinExec(LPCSTR, UInt)函数

其第一个参数相当于system函数的参数,第二个参数可以设置窗口是否显示,SW_HIDE这个宏表示隐藏窗口,例如:

WinExec(cmd.c_str(),SW_HIDE);//cmd(string类型)中为我们要调用的程序名及其参数, 如 “dir *.exe ”

但是这个有一个问题,这个函数创建完这个进程后就返回了,也就是说它返回后,该进程不一定已经结束

另外,第一个参数不能有空格

 

 

 

  2.2 使用ShellExecute函数

ShellExecute(NULL,”open”,”calc.exe”,””,””, SW_HIDE);

 

 

       2.3 使用ShellExecuteEx函数

ShellExecuteEx(SHELLEXECUTEINFO*)函数

其参数是一个结构体,具体作用还是类似于system的参数,使用例子:

SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;   //确保返回hProcess用于了解打开的东西的生命周期
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = cmd.c_str();//调用的程序名
ShExecInfo.lpParameters = par.c_str();//调用程序的命令行参数
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;//窗口状态为隐藏
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);//等到该进程结束 ,当然可以不等待。。

CloseHandle(ShExecInfo.hProcess) ;  //释放资源

3.CreateProcess函数

 

复制代码
STARTUPINFO si;
PROCESS_INFORMATION pi;
LPTSTR szCmdline = _tcsdup(TEXT("MyChildProcess"));

ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
ZeroMemory(&pi, sizeof(pi));
// Start the child process.

if (!CreateProcess(NULL,   // No module name (use command line)
    szCmdline,      // Command line
    NULL,           // Process handle not inheritable
    NULL,           // Thread handle not inheritable
    FALSE,          // Set handle inheritance to FALSE
    CREATE_NO_WINDOW, // No Console window
    NULL,           // Use parent's environment block
    NULL,           // Use parent's starting directory
    &si,            // Pointer to STARTUPINFO structure
    &pi)           // Pointer to PROCESS_INFORMATION structure
    )
{
    printf("CreateProcess failed (%d)./n", GetLastError());
    return;
}

// Wait until child process exits.
WaitForSingleObject(pi.hProcess, INFINITE);
// Close process and thread handles.
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
复制代码

 

    3、打开msi文件(隐藏安装过程)

可以通过bat文件,输入

xxx.msi  /qn

q意思是quiet,n意思是没有用户交互

如果通过shell打开的话,注意msi只是个安装文件,安装程序为msiexec.exe

system(“msiexec.exe /i \”E:\\vcredist_x86\\vcredist.msi\” /qn”);  (这个会弹一个控制台的框system本身)

下面的方法可以啥都不弹。

复制代码
SHELLEXECUTEINFO ShExecInfo = { 0 };
    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
    ShExecInfo.hwnd = NULL;
    ShExecInfo.lpVerb = NULL;
    ShExecInfo.lpFile = L"Msiexec.exe";//调用的程序名
    ShExecInfo.lpParameters = L"/i \"E:\\vcredist_x86\\vcredist.msi\" /qn";//调用程序的命令行参数
    ShExecInfo.lpDirectory = NULL;
    ShExecInfo.nShow = SW_HIDE;//窗口状态为隐藏
    ShExecInfo.hInstApp = NULL;
    if (!ShellExecuteEx(&ShExecInfo))
    {
        printf("%d", GetLastError());
    }
    WaitForSingleObject(ShExecInfo.hProcess,30000);
    CloseHandle(ShExecInfo.hProcess);
复制代码

 

 

 

     4、bat文件

bat文件运行时会有一个黑黑的cmd.exe窗口,很吓人,就算用start/min命令去运行bat文件,电脑的任务栏下仍然会有相关的图标,怎么让bat文件在后台无声无息无影无形地运行呢?以下的办法可以达到你的目的。

           方法一、

bat里有隐藏窗口的命令,很简单,只需要在代码头部加一段代码就可以了。

@echo off
if “%1” == “h” goto begin
mshta vbscript:createobject(“wscript.shell”).run(“%~nx0 h”,0)(window.close)&&exit
:begin
::下面是你自己的代码。

            方法二、

在你批处理的相同目录下新建一个记事本,里面输入:

DIM objShell set objShell=wscript.createObject(“wscript.shell”)
iReturn=objShell.Run(“cmd.exe /C c:\1.bat”, 0, TRUE)
(其中win.bat为你自己的批处理名字,自己改)

然后把这个记事本保存为后缀名为.vbe的文件,到时候你只要运行这个vbe文件就达到目的了!

可以写的简单点:

Set ws = CreateObject(“Wscript.Shell”)
ws.run “cmd /c c:\1.bat”,0

CreateObject(“WScript.Shell”).Run “cmd /c c:\1.bat”,0
(这种写法很多杀软报毒, 需要替换参数0)

最后那个0是指窗口参数,用法为:

0 隐藏窗口并激活另一窗口。

1 激活并显示一个窗口。若窗口是最小化或最大化,则恢复到其原来的大小和位置。

2 激活窗口并以最小化显示该窗口。

3 激活窗口并以最大化显示该窗口。

4 按窗口最近的大小和位置显示。活动窗口保持活动。

5 以当前大小和位置激活并显示窗口。

6 最小化指定窗口并激活按 Z 序排序的下一个顶层窗口。

7 最小化显示窗口。活动窗口保持活动。

8 以当前状态显示窗口。活动窗口保持活动。

9 激活并显示窗口。若窗口是最小化或最大化,则恢复到原来的大小和位置。在还原应用程序的最小化窗口时,应指定该标志。

flask 提供文件下载

@app.route(‘/download/<filename>’)
def download_file(filename):
defsend_file():
store_path = os.path.join(UPLOAD_FOLDER,filename)
withopen(store_path, ‘rb’) as targetfile:
while1:
data = targetfile.read(1 * 1024 * 500) # 每次读取1MB (可用限速)
ifnot data:
break
yield data
response = Response(send_file(), content_type=’application/octet-stream’)
response.headers[“Content-disposition”] = ‘attachment; filename=%s’ % filename # 如果不加上这行代码,导致下图的问题
return response

Http: server gave HTTP response to HTTPS client 解决方法

系统:CentOS 7.6 Minimal
镜像:CentOS-7-x86_64-Everything-1810
Docker版本:18.09.6, build 481bc77156

如果没有 /etc/docker/daemon.json 这个文件,可以自己新建一个

情况1.这种写法是没有配置Docker加速器的情况下

在 /etc/docker/daemon.json 中设置以下:

// 没有配置加速器的

// 单个私服的写法
{
“insecure-registries”: [“registry的IP地址:端口号”]
}
// 多个私服的写法
{
“insecure-registries”: [“registry1的IP地址:端口号”,”registry2的IP地址:端口号”]
}

1
2
3
4
5
6
7
8
9
10

情况2.这种写法是配置过Docker加速器的情况下

在 /etc/docker/daemon.json 中设置以下:

// 没有配置加速器的

// 单个私服的写法
{
“registry-mirrors”: [“http://f1361db2.m.daocloud.io”],
“insecure-registries”: [“registry的IP地址:端口号”]
}
// 多个私服的写法
{
“registry-mirrors”: [“http://f1361db2.m.daocloud.io”],
“insecure-registries”: [“registry1的IP地址:端口号”,”registry2的IP地址:端口号”]
}

1
2
3
4
5
6
7
8
9
10
11
12

以上配置完成以后使用命令

systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service

————————————————
版权声明:本文为CSDN博主「兔子不会武功」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liyin6847/article/details/90599612

Rancher环境下的catalog创建

项目描述:在Rancher 的catalog界面中新加一个catalog,用这个catalog创建的stack可以正常工作。
实现环境
在局域网内四台vmware的ESX虚拟机中进行试验,其中A(192.168.4.33)机器上启动rancherServer,另外B(192.168.4.27)和C(192.168.4.46)通过AddHost的方式添加进来。B和C主机添加进去之后,对每个主机进行编辑,各自添加一个hostname=B和C的labels,本步骤是为了后面测试catalog的docker-compose.yml中指定在哪台机器上运行是否正确。D(192.168.4.12)主机作为Registry。选择添加进catalog的的应用是GoToMyCloud官网。(注释: GoToMyCloud是一款 用于远程办公的远程PC控制软件 )
实现步骤:
说明:GoToMyCloud Web项目主要有两个服务器组成:
A: mysql数据库服务器
此服务器用容器来代替,需要在容器启动的时候带动mysql服务程序,并在第一次启动时将数据库的表建出来。
B:tomcat网页服务器
需安装java和tomcat ,将GoToMyCloud网页代码做成java的war包放在tomcat的指定路径下,就可访问网页。war包中有个配置用于指定数据库的IP地址,地址在做war包的时候,为了利用容器之间的link关系,需要进行修改,将ip地址换成mysql服务器的容器名称,这里定下来用mysqlhost。
具体的实现步骤如下
1.搭建私有registry;
2.编写Dockerfile,制作mysql和tomcat的镜像;
3.编写docker-compose.yml和rancher- compose.yml,为创建新的catalog做准备;
4.添加自定义的catalog到rancher UI中并测试。
搭建私有Registry

搭建Registry的步骤只有一步,运行如下命令就可以创建一个registry的容器:


在上面的这个命令中,一定要使用-v做个主机目录和regsitry目录的映射,这样的好处是容器崩溃了,数据依然还在,重建regsitry的话数据就可以恢复了。
客户端使用此registry时,如果不修改/etc/sysconfig/docker这个配置文件,会报“认证不过”的错误。在这个文件中找到OPTIONS这个key,在后面的值中加:
–insecure-registry 192.168.4.12:80

保存后,通过service docker restart 就可以访问这个私有的Registry了。

编写Dockerfile,制作mysql和tomcat的镜像
mysql镜像制作:
1.使用docker pull ubuntu命令先取下一个ubuntu的镜像作为基础镜像;

2.基于这个镜像使用docker run –name ubuntu_mysql –it bash命令创建一个容器,在这个容器中使用apt-get install mysql-server,安装过程中会提示输入密码这个使用Cloudsoar12,安装完成后,需要配置mysql允许外部主机访问,这里要改两个地方:

A. /etc/mysql/my.cnf中找到bind-addree=127.0.0.1这行,然后把他注释掉,然后重启mysql服务;
B.使用mysql进入服务器,设置mysql允许其他主机访问。

3.将第二步中配置好的容器通过docker commit ubuntu 192.168.2.35:80/base _mysql做成一个服务镜像,其中192.168.2.35:80是搭建的私有Registry,做成镜像后,通过push命令将这个镜像提交到私有Registry中。
4.编写Dockerfile制作应用镜像。 新建一个目录,命名为mysql,在这个目录下,放置如下三个文件:
A:GoToMyCloudDB.sql
容器首次启动时,通过这个文件可以将数据库表建出来。
B:run.sh
启动mysql服务,并且判断是否是第一次启动,如果是就导入GoToMyCloudDB.sql。里面的具体内容如下:
C:Dockerfile 文件
内容如下:

在mysql这个目录下,建出上面的三个文件后,通过使用docker build –t 192.168. 4.12:80/brank_mysql,制作服务镜像,做完后上传到私有Registry上。

tomcat镜像制作
GoToMyCloud项目对tomcat的要求是8.0以上,在dockerhub上有一个版本叫做emedeiros/tomcat的,这个里面安装好了8.0.4的tomcat,java环境也已经配置好了,选择它作为服务镜像,具体的步骤如下:

1.先使用docker pull 将emedeiros/tomcat 拉到本地;

2.新建一个目录,取名为tomcat,在这个目录下放3个文件:

A:GoToMyCloud.war,放网页代码
B:Run.sh,容器启动后的执行脚本,内容如下:
C:Dockerfile文件,里面的内容如下:

完成这步后使用docker build 将这个镜像打出来,并上传到registry上,比如叫做 192.168.2.35:80/brank_tomcat。

测试镜像
为了确认上面打出来的两个镜像是否是没有问题的,先不适用docker-compose来做,先通过docker 命令来启动两个容器,看是否可以把整个项目运行起来。验证步骤如下:

1.在192.168.4.46的主机上创建mysql 容器;docker run –name gotomycloud_mysql -d -p 3306:3306 192.168. 4.12:80/brank_mysql

2.在192.168.4.46的主机上创建tomcat 容器;

3.打开局域网里的浏览器访问192.168.4.46:8080/GoToMyCloud看是否可以正常访问,正常的话说明制作的两个镜像是没有问题的。

version `ZLIB_1.2.3.4‘ not found 解决方法

查了一下这个错误的解决方案 网上的教程都是照抄很久以前的一个人的 连错误都没换

特修订如下
解决方法

安装个新版的zlib

wget http://zlib.net/zlib-1.2.11.tar.gz
tar zxf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install
cp /usr/local/lib/libz.so.1.2.11 /lib64/
cd /lib64/
rm libz.so.1
ln -s libz.so.1.2.11 libz.so.1
————————————————
版权声明:本文为CSDN博主「Mumunu-」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/h952520296/article/details/108326507