2019年 我的全新开始
转眼之间已经4月1日了,2019年第一个季度就在我浑浑噩噩的状态、乱七八糟的生活中结束了,很早就想记录一下,这两天不工作,今天终于有了点时间。 新目标从2018年底开始,我就基本放弃了做了两三年的外包,准备做标准化产品,这相当于进入全新领域,销售、运营都是我不熟悉的,需要我摸索,但是我觉得这是值得的,一旦有了眉目,这会使我的工作更顺畅,可能更有利于发展。2018年,我有了一个上市公司比较大的客户,如果做下去,我的外包也会更顺,但是我发现这些客户实在太麻烦了,我是个不喜欢麻烦和浪费时间的人,做太多纯体力工作让我很心烦,所以我果断放弃了客户,放弃了外包。 感情状态唉。距离上一次谈这个话题可能2年了吧,喜大普奔的是,目前依然毫无进展。哈哈哈。不过人的心境是不同了,那时候太年轻,惭愧的说特别想女人,难以自拔那种,现在毕竟年龄大了,没有那么强烈了,不过说实话还是有些恨的,我相信我今天所写,日后我再看到必将感到羞耻想笑,但是这确实是我最真实的心境。这期间大概认识了3个女孩子吧,第一个女孩很自强,学历工作比较普通,但是凭借自己的努力还在苏州给自己买了一套房子。第二个女孩是个迷,她很年轻漂亮,但...
swoft 1.0 自定义 redis 池
定义Redis池在app/config/beans/base.php增加如下配置 1234'cacheRedis' => [ 'class' => \Swoft\Redis\Redis::class, 'poolName' => 'cacheRedis',], 定义Redis池配置12345678910111213141516171819202122232425namespace App\Pool\Config;use Swoft\Bean\Annotation\Bean;use Swoft\Bean\Annotation\Value;use Swoft\Redis\Pool\Config\RedisPoolConfig;/** * CacheRedisPoolConfig * * @Bean() */class CacheRedisPoolConfig extends RedisPoolConfig{ /...
H5小游戏模板化方案 会展行业 (资源替换,分数记录,次数限制,排行榜) v20190321
流程 看具体游戏有哪些资源可以被替换 确定后,后端出模板配置 后端创建一个测试游戏的配置,给出游戏id 按以下步骤接入 把发布后的代码给我,充分保证你的劳动成果不被窃取 引入sdk如果是白鹭5.0需要在发布后引入 1<script src="//h5.iguojin.com/template/gamesdk/hudongsdk.js"></script> 实例化sdk1234// ts声明,防止报错declare var HudongSdkvar sdksdk = HudongSdk.getInstance() 替换资源以白鹭为例,可以在 1await RES.loadConfig("resource/default.res.json", "resource/"); 后面添加如下代码,并记录值,在需要时可以直接从里获取,而不用默认的值可以检测url上的gameid参数,正式交付客户都会加上这个参数 123await sdk.loadConfig().then((res)=>{ ...
ajax 中 request payload 和 form data 区别
在使用swoft时候发现ajax如果设置header 1xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 后端可以收到如果不设置,默认header是 1Content-Type:text/plain;charset=UTF-8 后端就接受不到参数
mysql 统计重复记录数量
123456SELECT COUNT(*) as total FROM ( SELECT count(openid) as t FROM user GROUP BY `openid` HAVING t > 1 limit 1000) as a 如果下面写法会很慢 123456SELECT COUNT(*) as total FROM form_user WHERE id IN( SELECT count(id) FROM form_user GROUP BY `openid` HAVING COUNT(openid) > 1 limit 1000)
swoft 控制器参数注入和 从 容器获取的不同点
经过测试控制器参数注入大致上和自己直接new没有区别,被实例化的类中的,注解内容没有起作用 只有通过类似 1BeanFactory::getBean("gameConfig"); 这样获取时候,用注解初始化的值才会有作用 123456789101112131415use Swoft\Bean\Annotation\Bean;use Swoft\Bean\Annotation\Scope;use Swoft\Bean\Annotation\Value;/** * 注入类 * @Bean(name="gameConfig",scope=Scope::SINGLETON) *//** * 注入属性值 * @Value(name="${config.loginkey}", env="${PFILE}") * @var string */public $val;
swoft 容器 注入 ioc 补充
在使用swoft注入时候,发现一些文档没有说明的条件 注解类Bean注入没有给定名字例如 12345/** * CacheRedisPoolConfig * @Bean() */class CacheRedisPoolConfig extends RedisPoolConfig{} 在使用时需要给定var注释也不能写名字 12345/** * @Inject() * @var CacheRedisPoolConfig */public $poolConfig; 注解时给定了名字 1234/** * CacheRedisPoolConfig * @Bean("CacheRedisPoolConfig") */ 使用时候 1234/** * @Inject("CacheRedisPoolConfig") * @var CacheRedisPoolConfig */
swoft获取cookie和设置cookie
文档中没有介绍但经过分析,用法如下 获取12request()->cookie()request()->cookie("cookiename") 设置12use Swoft\Http\Message\Cookie\Cookie;$response->withCookie(new Cookie($key, $value, $expire, $path, $domain, $secure, $httponly)); 补充所有的方法封装在以下文件中swoft\http-message\src\Server\Request.phpswoft\http-message\src\Server\Concerns\InteractsWithInput.php 12Swoft\Http\Message\Server\RequestSwoft\Http\Message\Server\Concerns\InteractsWithInput
swoft 中间件 传递数据 request
经过查看源码 1request() 方法会获取当前请求上下文,并在请求结束时销毁,所以可以安全使用他传递数据例如中间件获取用户信息结束后可以 123$req = request();$req->user = $udata;$req->openid = $openid;
swoft 支持 OPTIONS 请求
如果路由中不明确设置,swoft默认只使用了post get请求只要在控制器中明确声明OPTIONS请求即可