[笔记][laravel]视图的使用v1.0

怎样新建视图:

在resource/views下新建php文件即可。

模板文件类型:

  • .php文件
  • .blade.php文件

二者皆可在稍后的使用中被输出,但为了遵循项目开发的统一性,统一使用视图名字.blade.php(命名规则遵循驼峰式命名,如:ViewName)。

在该文件夹(views)下,也可以新建文件夹,并将视图文件放入其中进行归类。


怎样输出视图:

打开位于App/Http/Controller/下的控制器文件。

MemberCotroller.php

class MemberController extends Controller {
return view('info');
}

使用view()函数即可输出视图,使用函数后,view函数将会自动搜索该名字的(.php|.blade.php)文件

return view('member/info');

如果模板文件被放进了文件夹中,就给路径添加文件夹路径即可

如何给视图传入参数:

在view的第二参数中即可传入参数,第二参数是array
MemberController.php

return view('info',['name'=>'7gugu','age'=>'18']);

info.blade.php

<h1>Hello World</h1>
<p>Name:{{$name}}</p>
<p>Age:{{$age}}</p>

视图模板中使用{{$变量名}}接收来自Controller的变量

[笔记][C语言]解决VS 2017下“*”乘法符号变成指针标识符的解决方法

问题描述:

今天在Coding的时候,编写到了如下的一段代码

#include <stdio.h>
#define PI 3.14
int CircleRing(int r){
  return PI*r*r;
}

然后VS的语法检测器就抽风了,硬是把PI*r这个线性运算的公式,误认成PI和指针变量r了。在通过上网查阅资料后,暂无比较官方的解决办法后,发现了可以暂时解决这个问题的写法。


解决办法:

int CircleRing(int r){
  return r*r*PI;
}

即可完美解决误认的错误,继续编译操作。

小结:

目前已知该bug仅仅是会出现在VS 2017上。在Devc++上,按照原写法是可以正常编译并且运行的。目测可能是vs的语法检测器出现了玄学bug。若有dalao看见这篇文章,知道应该怎么更好的解决这个bug,欢迎留言,我也会及时更新到这篇博文中,方便大家的。

[笔记][laravel]路由使用笔记v1.0

Laravel路由简介:
路由第一个参数是访问的路径,第二个参数是一个action
比如:
输出视图

Route::any('/',function(){
  return view('welcome');//输出模板welcome
});
Route::any('/',function(){
  return 'Hello World';//单纯的输出文字
});

一般路由器不会直接输出视图,只会用来绑定控制器,并且进行传参操作


路由传参

比如:
web.php

Route::any('/center/{id}','CenterController@id');

(注释:把id这个参数传入CenterController这个控制器的id这个方法)
app/Http/CenterController.php

namespace App\Http\Controllers;

class CenterController extends Controller{
  public function id($id){
return 'Member-ID-'.$id;
}
}

(注释:接收来自路由传入变量id)

Route::any('/center/{name?}','CenterController@id');

(注释:此处变量name后面的”?”的作用是说明该变量具有默认值,即可以在控制器中对应的方法中传参时设定一个默认参数,如果不使用该标识的话会导致访问时出现报错/404页面的出现)


路由参数过滤器

比如:
过滤单个参数

Route::any("/center/{id}",'CenterController@id')->where('id','[0-9]+');

过滤多个参数

Route::any("/center/{id}/{name}",'CenterController@id')->where(['id'=>'[0-9]+','name'=>'[A-Za-z]+']);

(注释:where把路由指向where函数即可启用过滤器,过滤器的第一个参数是要过滤的变量名,第二个参数是过滤的正则表达式,如果不遵循正则表达式的话,会先匹配其他路由规则,若无符合的规则,则会抛出404/错误)


Laravel路由类型:

  1. Get路由
  2. Post路由
  3. Any路由
  4. Match路由

下面将开始详解每一个路由的用法(个人总结的笔记)

Get路由

Route::get('/','ControllerName@MethodName');

顾名思义通过给服务器发起get请求时,可以触发该路由操作

Post路由

Route::post('/','ControllerName@MethodName');

只有当发起post请求时,才会触发该路由绑定的控制器
若直接访问该路由,将会抛出错误

Any路由(多请求路由)

Route::any('/','ControllerName@MethodName');

any路由其实就是post与get路由的结合体,可以通过使用post请求/get请求来访问该路由

Match路由(多请求路由)

Route::match(['get','post'],'/','ControllerName@MethodName');

在match路由中,该路由的第一个参数使用来配置该路由可以接受什么样的请求(详细可以接受什么样子的参数待以后再更新)


路由群组:

Route::group(['prefix'=&gt;'member'],function(){
    Route::any('user/member-center',['as'=>'center',function(){
        return route('center');
    }]);
    Route::get('/basic1',function(){
        return 'Hello world';
    });//GET路由
});

路由群组的作用:
可以把路由分门别类的放置到一个群组中,使用路由前缀进行访问
如localhost/member/basic1访问的就是位于member群组下的basic1路由


路由别名:

Route::get('user/member-center',['as'=>'center',function(){
    return route('center');//获取center路由的完整地址
}]);

路由别名的作用就是使用route时使用已预定好名字对应的路由
比如:route(‘center’)对应的就是localhost/user/member-center
如果此时需要修改url仅需要在路由这修改,即可做到全项目修改


目前笔记先做到这里,如果有错再更新

[笔记][laravel]安装指定版本的Laravel

安装

假设你要做一个博客的项目,打开命令行执行

[bash]composer create-project –prefer-dist laravel/laravel=5.5.* blog[/bash]


其中:

5.*代表的是你所需要安装的laravel

blog项目的地址,一般是运行该指令时候的位置,此处可写全路径或者先使用查到移动目录后,再运行该指令,就会将laravel安装在移动后的目录中
blog 是你的项目目录,安装完成后所有的文件都会在这个目录中。

C语言高精度计算

高精度乘法

#include "pch.h"
#include <iostream>
#include <stdlib.h>

int main()
{
char n1[1500], n2[1500];
int a[1500] = {'\0'};
int b[1500] = {'\0'};
int c[3000] = {0};
int m, n, i, j, o;
printf("请输入被乘数:\n");
scanf_s("%s",&n1,128);
m = strlen(n1);
printf("请输入乘数:\n");
scanf_s("%s",&n2,128);
n = strlen(n2);
if(m>n){o = m;}else{o = n;}
//将char类型的元素转换成int类型
for (i = 0, j = m - 1; i < m; i++, j--) {
a[i] = n1[j] - '0';
}
//将char类型的元素转换成int类型
for (i = 0, j = n - 1; i < n; i++, j--) {
b[i] = n2[j] - '0';
}
//用数组a的每一位跟数组b进行乘法操作
for (i = 0; i < m;i++) {
for (j = 0; j < n; j++) {
c[i + j] = c[i+j]+(a[i] * b[j]);
}
}
//处理进位
for (i = 0; i < m + n; i++) { if (c[i] >= 10) {//若该位大于10则向前进该处元素的十位数
c[i + 1] = c[i+1] + c[i] / 10;//20=>2,10=>1
c[i] = c[i] % 10;//取个位数
}
}
//由于存储c时是逆序存储,所以要再次逆序输出
for (i = o-1; i >=0;i--) {
printf("%d",c[i]);
}
printf("\n");
system("pause");
}


高精度加法

#include "pch.h"
#include <iostream> 
#include <stdlib.h>

int main()
{
	char n1[1500], n2[1500];
	int a[1500] = {'\0'};
	int b[1500] = {'\0'};
	int c[3000] = {0};
	int m, n, i, j,o;
	printf("请输入被加数:\n");
	scanf_s("%s",&amp;amp;n1,128);
	m = strlen(n1);
	printf("请输入加数:\n");
	scanf_s("%s",&amp;amp;n2,128);
	n = strlen(n2);
	for (i = 0, j = m - 1; i &amp;lt; m; i++, j--) {
		a[i] = n1[j]-'0' ;
	}
	for (i = 0, j = n - 1; i &amp;lt; n; i++, j--) { b[i] = n2[j]-'0' ; } if (m &amp;gt; n) { o = m; }
	else { o = n; }
	for (i = 0; i &amp;lt; o;i++) {
			c[i] = c[i]+(a[i] + b[i]);
	}
	for (i = 0; i &amp;lt; o; i++) { if (c[i] &amp;gt;= 10) {
			c[i + 1] =c[i+1]+( c[i] / 10);
			c[i] = c[i] % 10;
		}
}
	for (i = o-1; i &amp;gt;=0;i--) {
		printf("%d",c[i]);
	}
	printf("\n");
	system("pause");
}


高精度减法

#include "pch.h"
#include <iostream> 
#include <stdlib.h>

int main()
{
	char n1[1500], n2[1500];
	int a[1500] = { '\0' };
	int b[1500] = { '\0' };
	int c[3000] = { 0 };
	int m, n, i, j, o,flag=0;
	printf("请输入被减数:\n");
	scanf_s("%s", &amp;amp;n1, 128);
	m = strlen(n1);
	printf("请输入减数:\n");
	scanf_s("%s", &amp;amp;n2, 128);
	n = strlen(n2);
	for (i = 0, j = m - 1; i &amp;lt; m; i++, j--) {
		a[i] = n1[j] - '0';
	}
	for (i = 0, j = n - 1; i &amp;lt; n; i++, j--) { b[i] = n2[j] - '0'; } if (m &amp;gt; n) { o = m; }
	else { o = n; }
	for (i = 0; i &amp;lt; o; i++) {
		c[i] = c[i] + (a[i] - b[i]);
	}
	for (i = 0; i &amp;lt; o; i++) {
		if (c[i] &amp;lt; 0 &amp;amp;&amp;amp; flag != 1) { flag = 1; }//记录正负号
		if (c[i] &amp;lt; 0 &amp;amp;&amp;amp; a[i] == 0) { c[i + 1] = c[i + 1] - 1; c[i] = 10 - b[i]; } if (b[i] == 0 &amp;amp;&amp;amp; c[i] &amp;gt; 0) {
			c[i] = 10 - a[i];
			if (c[i + 1] &amp;gt; 0) { c[i + 1] = c[i + 1] - 1; }
			else {
				c[i + 1] = c[i + 1] + 1;
			}
		}
		if (c[i] &amp;lt; 0) { c[i] = -1 * c[i]; } } if (flag == 1) { printf("-"); } for (i = o-1; i &amp;gt;=0;i--) {
		printf("%d",c[i]);
	}
	printf("\n");
	system("pause");
}

高精度除低精度

#include "pch.h"
#include <iostream> 
#include <stdlib.h>

int main()
{
	char n1[1500];
	int n2;
	double a[3000] = { '\0' }, b[3000] = { 0 }, c = 0;
	int m, n, i, j, o,flag=0;
	printf("请输入被除数:\n");
	scanf_s("%s", &amp;amp;amp;n1, 128);
	m = strlen(n1);
	printf("请输入除数:\n");
	scanf_s("%d", &amp;amp;amp;n2, 128);
	if (n2 == 0) { printf("除数不可为0\n"); system("pause"); exit(0); }
	for (i = 0, j = m - 1; i &amp;amp;lt; m; i++, j--) {
		a[i] = n1[j] - '0';
	}
	for (i = 0,j=0; i &amp;amp;lt; m;i++,j++) { b[i] = b[i] + (a[i] / n2); for (o=j; o&amp;amp;gt;0; o--) {
			b[i] = b[i] * 10;
		}
	}
	for (i = 0; i&amp;amp;lt;m; i++) {
		c = c + b[i];
	}
	printf("%lf",c);
	printf("\n");
	system("pause");
}

原理:使用被除数的每一位进行除法运算,并将最终结果sum起来

记0x0FDFE224 (ucrtbased.dll)处(位于.exe 中)引发的异常BUG的解决办法

0x0FDFE224 (ucrtbased.dll)处(位于.exe 中)引发的异常: 0xC0000005: 写入位置 0x01100000 时发生访问冲突。

原代码:

scanf_s("%s",&a)

出现该报错时,是因为启用了scanf_s时没有填写第三参数


解决该bug的办法:

scanf_s("%s",&a,128)

PS:第三参数指的是最多可读取的字符数

Umarket开源Steam饰品市场

本项目是基于之前的steambot的代码库开发的饰品市场。

一套具备商城系统与机器人系统的一体化方案

Github地址:https://github.com/7gugu/umarket

功能:
1.查询玩家的库存
2.对玩家的库存进行自动化托管与交易
3.支持支付宝与Uwallet双支付系统
4.商城可部分自定义
5.饰品交易系统
6.支持Windows平台

下面是预览图:

可根据用户背包按需缓存物品图像,节省系统资源占用
支持Alipay与Uwallet
自研机器人系统,可网页管理
自由启用出售的栏目

不忘初心,最终还是选择把项目开源出来让大家使用.自我承认我的代码真的很烂,但我也在慢慢进步,希望有朝一日能得到dalao的认可,项目将于11.11推送至Github,届时会在此放出链接地址.owo

[笔记]Linux基础入门

目录操作


创建目录

使用 mkdir 命令创建目录
mkdir $HOME/testFolder

(home是用户地主目录,登录后缺省进入的目录,比方说有个用户叫wang,那他的地主目录就是/home/wang,也能够用~wang表示。其实如果在安装Linux时选择中文版,桌面的目录就在$home目录下的“桌面目录”。)


切换目录

使用 cd 命令切换目录
cd $HOME/testFolder
使用 cd ../ 命令切换到上一级目录
cd ../

移动目录

使用 mv 命令移动目录
mv $HOME/testFolder /var/tmp

删除目录

使用 rm -rf 命令删除目录
rm -rf /var/tmp/testFolder

查看目录下的文件

使用 ls 命令查看/etc目录下所有文件和文件夹
ls /etc

(/etc 目录默认是 *nix 系统的软件配置文件存放位置)


文件操作


创建文件

使用 touch 命令创建文件
touch ~/testFile
执行 ls 命令, 可以看到刚才新建的 testFile 文件
ls ~

复制文件

使用 cp 命令复制文件
cp ~/testFile ~/testNewFile

删除文件

使用 rm 命令删除文件, 输入 y 后回车确认删除
rm ~/testFile

查看文件内容

使用 cat 命令查看 .bash_history 文件内容
cat ~/.bash_history

过滤,管道与重定向


过滤

过滤出 /etc/passwd 文件中包含 root 的记录
grep 'root' /etc/passwd
递归地过滤出 /var/log/ 目录中包含 linux 的记录
grep -r 'linux' /var/log/

管道

简单来说, Linux 中管道的作用是将上一个命令的输出作为下一个命令的输入, 像 pipe 一样将各个命令串联起来执行, 管道的操作符是 |
比如, 我们可以将 cat 和 grep 两个命令用管道组合在一起
cat /etc/passwd | grep 'root'
过滤出 /etc 目录中名字包含 ssh 的目录(不包括子目录)
ls /etc | grep 'ssh'

重定向

可以使用 > 或 < 将命令的输出重定向到一个文件中
echo 'Hello World' &gt; ~/test.txt

常用运维指令


Ping指令

对 cloud.tencent.com 发送 4 个 ping 包, 检查与其是否联通
ping -c 4 cloud.tencent.com

Netstat指令

netstat 命令用于显示各种网络相关信息,如网络连接, 路由表, 接口状态等等
列出所有处于监听状态的tcp端口
netstat -lt
查看所有的端口信息, 包括 PID 和进程名称
netstat -tulpn

Ps指令

过滤得到当前系统中的 ssh 进程信息
ps -aux | grep 'ssh'

资料来源:

腾讯云

Umarket开源饰品商城

未完待续……

2018/08/31更新:

  • 支持对背包进行存取操作
  • 支持上架下架修改价格操作
  • 支持浏览商店,并加入购物车的流程
  • 支持管理栏目组件及名称

Todo:

  • 支持查看订单详情
  • 支持支付提现及管理钱包功能
  • 支持站内公告
  • 支持管理机器人
  • 支持管理用户
  • 支持管理UI样式
  • 支持购物流程的自定义

Steam交易机器人API

简介:
目前已提供完整的函数库,各位dalao可直接通过二次开发成Bot便可投入使用,本项目严格遵守Apache License V2
以下为目前已实现的API

  • 接受/拒绝/取消/发起交易
  • 支持二步验证的登录
  • 获取单笔交易状态
  • 获取steamID SessionID
  • 获取玩家游戏列表
  • 获取API秘钥
  • 获取玩家库存
  • 支持自动过二步验证[需要提供shared_sersect,方法详参我的博客]
  • 支持面对象
  • 支持遍历未确认的交易请求
  • 确认/取消发回饰品的交易

下载链接:

Git库地址:

使用方法:

<?php 
//登录DEMO 
require('steambot_function.php'); 
$obj = new SteamBot(); 
$res=$obj->login("7gugu","password");
var_dump($res);
?>

可用方法:

setSteamID 设定SteamID
setDeviceID 设定DeviceID
setSharedSecret 设定SharedSecert
setIdentitySecret 设定IdentitySecret
getApiKey 获取API-KEY
getgamelist 获取用户游戏列表
getinventory 获取用户库存
send 发起一笔饰品交易
login 登录Steam账户
acceptoffer 接受交易报价
canceloffer 取消交易报价
declineoffer 拒绝交易报价
GenerateSteamGuardCode 生成2FA验证码
fetchConfirmations 遍历确认列表
getConfirmationTradeOfferId 获取交易确认页的TradeOfferId
acceptConfirmation 接受确认请求
cancelConfirmation 取消确认请求

开发文档:
https://www.yuque.com/books/share/8f76ee1e-917e-4656-82d2-cebec314829c?#
注意事项:
这些是使用Umarket试运营后得出的一些注意事项,请注意!

  • 机器人账户一定要有超过5USD的交易记录,不然作为受限账户是无法发起发回交易的
  • 机器人一定要有消费记录,不然可能会受限,暂挂住商品
  • Steamcommunity极其不稳定,有时候login返回Null或者Empty Response都是因为无法正常访问Steam的服务造成的
  • Steam的交易确认页面有时候会抽搐,需要多加载几次,才能刷新出来
  • 解决无法访问Steam服务的方法有两个一是使用各家的加速器,二是使用科学手段来修复网络不可用,三是把机器人放到国外去



联系方式:
邮箱:gz7gugu@qq.com

[有问题邮箱留言,我看得见的]

更新日志:

2020/02/09:

加入了登录样例,其实不是今天加的,我忘了准确时间了,就瞎写了个时间,目前登录模块依旧可以用,但请务必挂代理,才能登陆成功
2019/06/15:
时隔一年时间,加入了遍历确认的功能。
Umarket也弃坑了[项目太大了,一个人无法carry,以后再考虑用框架重写]
不过这个SteamBot终于可以用于实际的项目中了,已形成一个交易闭环了,接下去就交由各位dalao做下去吧OWO
还有就是,欢迎大家常到我的Blog看看呀,就写到这了,Peace