被恶心了两次的PHP安装错误
web开发中我是用的XAMPP集成环境,安装的PHP版本是5.6,我又单独下了个7.3版本,这样只需要单独写个配置文件,之后切换加载不同的配置文件就可以切换PHP版本了。 这次的问题是,昨天PHP-7.3的目录坏了,原因至今不详 打不开也删不掉,我决定这个先暂时放一放,直接去下载一个新的PHP 于是在官网下完后,解压、改名,接下来修改配置文件,新的PHP是没有php.ini这个文件的,但在文件夹下有两个文件php.ini-development和php.ini-production是php.ini的模板,分别对应着开发版和线上版,根据需要复制一份然后把名字改成php.ini就可以 这还没结束,你还需要开启扩展,比如;extension=openssl,把你需要的扩展前面的分号去掉 这次的问题运行Apache、Mysql一切正常,打开最近用Laravel开发的网站发现,它报了个错! 1Call to undefined function...
魔兽争霸3连接PvPGN服务器
魔兽争霸III首先你的魔兽必须得是正版,输入CDKey激活的那种(大概吧),你可以在这里下载 war3.zip 1.09G 提取码 goqr Battle.net Gateways Editor这是战网网关编辑器,修改成PvPGN服务器的地址 下载:gwe.zip 208.0K 点击 Add Gateway 添加Name 随便Zone 没提供的话就0吧IP PvPGN 服务器IP或域名 WarCraft 3 PvPGN Loader这是运行所需要的文件,有它你才能连接PvPGN服务器 下载:w3l.zip 20.0K 把解压缩得到的 w3l.exe、w3h.dll、wl27.dll 放到魔兽争霸目录下,运行 w3l.exe 打开游戏 点击Battle.net,然后注册或者输入用户名和密码登陆,即可看到以下界面
树莓派搭建PvPGN服务器
简介PvPGN 和 PvPGN PROPvPGN 全称:Player versus Player Gaming Network,是一款免费的开源跨平台服务器软件,支持Battle.net和Westwood Online游戏客户端PvPGN在2011年停止维护,PvPGN PRO是PvPGN的一个分支版本,持续维护更新。 详情查看Github项目 搭建参考官方教程 首先下载编译 PvPGN 源代码所需的软件、工具 这里用的存储方式是mysql,所以下载了libmysql++-dev,你可以不下载mysql数据库,根据自己的需求来,甚至可以用文件存储的方式保存玩家信息等 其他存储:pgsql、sqlite3、odbc 1sudo apt-get -y install build-essential clang libc++-dev git cmake zlib1g-dev liblua5.1-0-dev libmysql++-dev 这会下载一堆编译所需工具 然后下载 PvPGN 的源代码,找个目录执行命令下载并解压 12wget...
Chrome插件跨域请求
Chrome插件中,可以跨域的地方只有background js和popup js这两个地方,popup js是右上角那个弹出页,只有弹出的时候才有效,所以定义跨域监听大概不现实 这样只能在background js,我们需要在background js中定义一个监听函数,来监听其他页面传过来的信息。根据传来的值,判断是否是API请求 下面是一个有get和post的简易解决方案 1234567891011121314151617181920212223242526272829chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { switch(request.type) { case 'get': fetch(request.url) .then(function(response) { return response.json() }) .then(function(json) {...
Objective-C 笔记 – 网络请求
获取页面数据 123456789101112- (void)viewDidLoad { [super viewDidLoad]; // URL NSURL * url = [NSURL URLWithString:@"https://m.baidu.com"]; // 请求 NSURLRequest * request = [NSURLRequest requestWithURL:url]; // 连接服务器 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { // data是返回数据的16进制,需要转换 NSString * html = [[NSString alloc]...
Objective-C 笔记 – NSOperation
本质上是GCD的并发队列异步执行,是对GCD的面向对象的封装,是苹果大力推荐的并发技术 与GCD的对比: GCD: iOS 4.0 推出 针对多核处理器做了优化的并发技术 是C语言 提供一次执行、延迟执行、调度组 将任务添加到队列(串行、并发、主队列、全局队列),并且指定执行任务的函数(同步、异步) NSOperation: iOS 2.0 推出 底层是GCD 面向对象 提供最大并发线程、队列暂停继续、取消所有操作、指定操作之间的依赖关系 将操作添加到队列(并发),然后立即异步执行 NSOperation 是一个抽象类,继承NSObject 特点:不能直接使用 目的:定义子类共有属性和方法 子类: NSInvocationOperation NSBlockOperation 123456789101112- (void)demo1 { NSInvocationOperation * op = [[NSInvocationOperation alloc] initWithTarget:self...
Objective-C 笔记 - GCD
全称是Grand Central Dispatch,🐮🍺的中枢调度器,纯C语言,提供非常多强大的函数。 1234567891011121314151617- (void)viewDidLoad { [super viewDidLoad]; [self gcdDemo1];}// 同步执行方法,这里不执行完就不会执行下一个任务- (void)gcdDemo1 { // 创建队列 dispatch_queue_t q = dispatch_get_global_queue(0, 0); // 定义任务 block void(^task)() = ^{ NSLog(@"%@", [NSThread currentThread]); }; // 添加任务到队列并执行 dispatch_sync(q, task);} 也可以直接写成 123dispatch_sync(q,...
Objective-C 笔记 – 多线程
互斥锁12345678910111213141516171819202122232425262728@property(nonatomic, assign) init tickets;- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { self.tickets = 20; NSThread * t1 = [[NSThread alloc] initWithTarget:self selector:@selector(saleTickets) object:nil]; [t1 start]; NSThread * t2 = [[NSThread alloc] initWithTarget:self selector:@selector(saleTickets) object:nil]; [t2 start];}- (void)saleTickets { while(YES) { [NSThread...
阿里云服务器内网穿透的坑
这篇文章主要不是说内网穿透的,而是说一下用阿里云服务器做内网穿透的注意事项 首先是需要配置这个“安全组配置”,把需要用到的端口都配置一下,这个网上不少教程 但如果没成功,你还需要把防火墙端口打开,比如把23333端口打开 1234# 开启端口firewall-cmd --zone=public --add-port=23333/tcp --permanent# 重启防火墙systemctl restart firewalld 本来我以为安全组配置是跟防火墙同步的,后来发现并不是,所以得手动开一下
树莓派折腾笔记
解锁root1234567sudo passwd rootsudo passwd --unlock root# 可能会提示 password expiry information changed# 需要配置ssh,允许root用户登录sudo nano /etc/ssh/sshd_config# Ctrl + W 搜索 PermitRootLogin without-password 取消注释并改为PermitRootLogin yes 重启后就可以用root登录了,之后的操作我都是在root下,如果你没用root,自行加上sudo 切换国内软件源参考 [1] 版本对应表 [2] 版本号 对应代号 6.0 squeeze 7.0 wheezy 8.0 jessie 9.0 stretch 10.0 buster 11.0? bullseye 12345678# 首先查看版本cat /etc/debian_version# 备份配置cp /etc/apt/sources.list /etc/apt/sources.list.bak# 修改...