KRPano1.20.9 自习笔记.一
网上查到的版本是上一版的,注册及导入素材之类很多操作要靠批处理和命令行实现和当前版本已经不一致。
所以还是对照着官方文档自己先摸索一下吧,感觉并不需要太深入研究高阶的功能。
初期目标:
- 能批量导入场景,后期能追加删除场景
- 能自定义导航工具条的部分样式
- 能添加和编辑自定义的热点(hotspot)把众多场景链接起来
大概这样便足够了(这个并不是本篇要完成的全部目标)
网上查到的版本是上一版的,注册及导入素材之类很多操作要靠批处理和命令行实现和当前版本已经不一致。
所以还是对照着官方文档自己先摸索一下吧,感觉并不需要太深入研究高阶的功能。
初期目标:
大概这样便足够了(这个并不是本篇要完成的全部目标)
这个问题其实早在2016年已经遇到,在2018年知道原因盖棺定论。近日项目重新触及,备忘一下。
从jssdk或scope接口获得用户信息内的头像链接,如果直接用php的 file_get_contents 请求的话,通常会非常的慢,脚本运行大约30秒之后才能加载出图像。如果请求量大非常容易造成服务器的堵塞。
摘录另一网友的日志:
https://www.cnblogs.com/mysic/p/5421754.html
微信的服务器对头像的资源请求返回的头信息是 Connection: keep-alive
,于是请求传输完数据后就一直在干等超时。
网上对这个问题求助的也不在少数,不知道腾讯是故意为之还是装作不知道,反正问题存在至今没有主动解决。
自欺欺人的解决办法:
这是我最早期的解决思路,在发起请求或者获得用户头像资源的最初即在后台预载这个资源到本地缓存,降低用户对等待延迟的感知。
老实人的解决办法:
改用curl请求到本地缓存处理,加上header,下载完主动截断链接。代码演示略
无效的解决办法:
给file_get_contents() 设置第三参数 context 指定关闭链接,设置了参数后,腾讯返回过来的是0字节的数据。我觉得它们故意的嫌疑更大了!
//实验证明 context 无效,会导致返回0字节
$context = stream_context_create(
array("http" =>
array(
'method'=>'get',
'header'=>'Connection: close\r\n'
)
)
);
$tmp_face_data = file_get_contents($face_url, false, $context);
目前在用的解决办法:
ini_set('default_socket_timeout', 1);
$tmp_face_data = file_get_contents($face_url);
也不是没有缺点,一个小小的瑕疵是要浪费额外的1秒等timeout,不过还可以接受。
另外有一个优点,这个参数不但对 file_get_contents
有效,对于 getimagesize
这个没有context参数的方法也有帮助
所以,一劳永逸。
奇怪的错误,虽然表格内容有点大,2万多行50多列。但单线程理应不会吃掉128M内存
试过代码中非常保守地注销不必要的对象管控内存,依然不行。
解决方法:做了一个激进的预设
ini_set('memory_limit', '1024M');
终于运行通过了。
导出的xlsx文件只有2M,百思不得其解,不该吃掉128M内存啊?
我还是选择最土的那种,遍历生成新list,适用小量数据
unidata = []
for item in rawdata:
if item not in unidata:
unidata.append(item)
print("raw data:", rawdata)
print("unique data", unidata)
先扔参考文链接
windows直接上传带文件名带中文的文件到linux, linux 系统的字符编码默认是utf-8。
文件名的中文部分会显示乱码,且在把文件名 print 出来时 一定概率会触发 一个 UnicodeEncodeError
异常 提示 surrogates not allowed
def bad_filename(filename):
return repr(filename)[1:-1]
try:
print(filename)
except UnicodeEncodeError:
print(bad_filename(filename))
对异常文件处理可以根据自己需要制定策略,例如 os.rename 过滤掉汉字部分,或 更彻底用 uuid.uuid1() 赋予新文件名。