V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  sc3263  ›  全部回复第 1 页 / 共 7 页
回复总数  130
1  2  3  4  5  6  7  
75 天前
回复了 justdoit123 创建的主题 DevOps 大家的 CI 都是怎么搭建的?
@FlytoSirius 前几天刚把 CI 从 Jenkins 迁移到 Gitlab Pipeline 上。迁移的时候做了亿点点改造,改完之后基本和你说的一样,CI 仅负责基本调用,主要逻辑都在 Python 中实现。
Gitlab Pipeline 被触发后,设置一系列的环境变量,调用 Python 脚本。在 Python 脚本里做真正的工作:解析环境变量,编译,跑单测、归档啥的。
这样本地开发调试脚本也方便,后续迁移 CI 平台也更容易。
2021-07-11 23:32:53 +08:00
回复了 ranxx 创建的主题 职场话题 那些让你用微信 QQ 面试的公司,建议都别去了
想起了去某个厂面试的经历。前几轮面试都是牛客网。最后 HR 面的时候,非得用自家公司的会议 app 。结果我登陆上去了,HR 半天没登录上,最后在微信完成了视频面试。
以及。。。似乎漏掉了用钉钉面试的公司。。。
2021-02-03 14:40:45 +08:00
回复了 James369 创建的主题 程序员 跨平台技术哪家强?
主要做桌面端。用过 Qt5 、PyQt5 、Electron 、原生,调研过 Flutter 。

Qt5 性能接近原生,上手后开发速度其实很快的。QML 其实很不错,但是学的人用的人都太少,很多坑只能自己填。对各平台下的特性支持的一般,需要自己封装。如果用到了 Qt Web Engine,可能会遇到显卡兼容性相关的问题。
PyQt5 开发速度极快,但 PyInstaller 打包时不时的会出点幺儿子。以及 Python 本身的性能瓶颈,同样的动画效果,C++实现好不费力,Python 实现能跑满单个核心。
Electron 开发速度快,各平台下的特性支持全,开发到打包到分发到异常收集,都有完善的解决方案。社区活跃度很高,有啥需求 /bug,很快就能处理。唯一的缺点大概就是体积占用大,运行效率稍微低一点了。
Flutter 桌面端目前还是玩具,不建议自己去踩坑。

心中最理想的跨平台方案:核心业务逻辑用 C/C++实现。在各平台下用原生语言去实现界面交互和使用系统特性。但绝大部分场景下,不需要这么重的方案。
确定下公司当下是否真的需要跨平台方案,是否真的需要移动端和桌面端使用同一套方案。目前并没有哪套框架能够完美通吃桌面端和移动端。各个框架依然需要针对各个端进行适配开发。实际工作量并不比单独维护要小,甚至难度会更高。
快速出产品的话,桌面端除非有历史经验 /包袱,否则建议无脑 Electron 。移动端没有上线的项目,没有发言权。
2021-01-18 11:16:14 +08:00
回复了 yuhuan66666 创建的主题 问与答 亲戚问薪资问存款,该怎么不伤面子的情况下不说
凑合,月光,刚好够用。
2020-12-17 11:57:13 +08:00
回复了 whatever93 创建的主题 生活 请问大家:夫妻一起存的钱,放在哪里?
wps/onedrive 上建个协作的表格,两个人把收入和支出都记录一下。月度年度做下汇总,看看哪块儿支出多,账上的钱和实际账户余额对不对的上。至于钱放哪边,我倾向于是谁更会管钱就交给谁。我家是放我媳妇那儿,让她买买基金啊理财产品啥的,不看收益多少,只求钱不莫名其妙的消失。
我和我媳妇已经这么实践了三年了。弊端大约是,媳妇会通过账单发现我偷偷喝奶茶不带她😂
2020-11-30 21:15:17 +08:00
回复了 IssacTomatoTan 创建的主题 程序员 流量计费实现思路
用户想要使用服务(打电话 /流量传输等),提供实际服务的设备,在提供服务前,向计费系统发起鉴权请求。
计费系统根据用户权限、套餐、余额等信息,返回一个配额,告诉设备,可以先提供多少分钟通话时间 /多少兆的传输流量等。如果这些配额被用完后,用户还在使用服务,设备再重新发请求。
用户停止使用服务后,设备再告诉计费系统,最后一个配额用了多少。
中间如果遇到余额不足之类的情况,就直接返回鉴权失败。让设备终止服务。
大概的实现方式就是这样,实际的鉴权请求不会很大的。
2020-07-30 10:37:50 +08:00
回复了 opai1995 创建的主题 问与答 ubuntu 下 qt 与 web 交互问题
看着像是安装或者编译 Qt 的时候,少了 webenginewidgets 的那部分。
2020-07-14 19:50:29 +08:00
回复了 imn1 创建的主题 Python 对整个目录树内文件改名思路是怎样的?
os.walk 函数,topdown 参数设置为 False,就会从下往上遍历。
然后直接匹配文件 /目录名称,重命名就行了。
2020-04-01 12:06:39 +08:00
回复了 TomeWong 创建的主题 程序员 windows 客户端 上传海量文件(5 万+),性能问题如何处理?
@TomeWong Electron 应该是主进程和渲染进程吧,之间用 IPC 通讯。
我们的客户端也是 Electron 实现的,计算 sha1 和上传都是放在 addon 里用 C 实现的。
这种 CPU 密集任务还是不要为难 js 了。
2020-04-01 10:56:15 +08:00
回复了 TomeWong 创建的主题 程序员 windows 客户端 上传海量文件(5 万+),性能问题如何处理?
计算和上传的逻辑放到独立的子进程中去。
或者写个 addon,在 addon 中新建线程进行处理。
2020-03-26 23:35:12 +08:00
回复了 nyanyh 创建的主题 程序员 电脑里的 Chromium/CEF/Electron 越来越多了
@nyanyh 虽然说都是基于 Chromium 内核,但 CEF 和 Electron 的上层封装完全不一样,无法复用。
即使使用同样的库,为了实现特殊需求,各家公司也会基于官方版本做一些小改动。比如说 Steam 用的 CEF,其实是自己定制的版本。不同的定制化版本之间也无法复用。
就算大家用的都是官方版本,但各家使用的 runtime 版本也不会一致。对于这种每一两周就会出更新一个稳定版的框架,要求开发商去适配自家的软件在各个版本的 runtime 下都能稳定运行是不现实的。甚至保证能在 runtime 最新版本下稳定运行这件事,都是很奢侈的。
最有可能实现的复用方案,就是楼上提到的 Microsoft Visual C++ Redistributable 那种,各个版本的 runtime 都来一份。然后期待某两个开发商的软件,用的 runtime 是同一个版本,能省下小几百兆的硬盘空间。
2020-03-20 11:08:44 +08:00
回复了 CurChen 创建的主题 程序员 大家好 想问下 py 处理长路径该怎么做
@xiri 那个貌似需要 win10 1607 及之后的系统,配合 Python 3.6 及之后的版本,才能正常处理。
2020-03-20 11:00:09 +08:00
回复了 CurChen 创建的主题 程序员 大家好 想问下 py 处理长路径该怎么做
这个应该是 windows 下特有情况。相关解释可以看一下
https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#maximum-path-length-limitation
你也可以看一下
https://qdebug.com/2019/07/31/Python3%E5%9C%A8Windows%E7%B3%BB%E7%BB%9F%E4%B8%8A%E5%AF%B9%E9%95%BF%E8%B7%AF%E5%BE%84%E7%9A%84%E6%94%AF%E6%8C%81/
之前我整理的一个文章。
想快速解决的话,可以试试把路径处理一下,所有的‘/’替换为 r‘\’,再在最前面加上 r‘\\?\’,作为新的路径,传入函数。
2020-03-06 14:47:26 +08:00
回复了 Marven 创建的主题 问与答 前端事情少,领导让转 c++
界面迁移到 Qt 上做,是因为底层调用的库是用 C 封装的,用 Qt 调用起来会更方便?还是别的什么原因?
给个思路供参考哈。
楼主可以考虑 C++甚至 C 入个门,然后看一下 Node js addon 相关的开发文档。
后续如果还留在公司,可以把公司的 C 库封装成 addon,在 electron 中调用。
如果换工作,简历上的经历也是连续且逐步深入的。
2020-03-05 13:40:42 +08:00
回复了 fyyz 创建的主题 C++ 求助, qt 信号槽到底怎么传递 std::string 啊, SLOTS 始终调不到。
@sc3263 试一下 Qt5 里新的信号槽连接方式呗。那个会有编译期的类型检查。
2020-03-05 13:39:47 +08:00
回复了 fyyz 创建的主题 C++ 求助, qt 信号槽到底怎么传递 std::string 啊, SLOTS 始终调不到。
以及。。。2020 年了
2020-03-05 13:39:22 +08:00
回复了 fyyz 创建的主题 C++ 求助, qt 信号槽到底怎么传递 std::string 啊, SLOTS 始终调不到。
QObject::connect(
this, SIGNAL(tunnel::add_item_into_table_signal(std::string, std::string, std::string)),
this, SLOT(tunnel::add_item_into_table(std::string, std::string, std::string))
);

去掉这边的 tunnel::
如果还不行的话,调试模式启动,看看 Qt 本身有没有输出类似
QObject::connect: No such signal A::add_item_into_table_signal(std::string, std::string, std::string) in xxx.cpp
的日志
2020-01-17 18:20:56 +08:00
回复了 hua123s 创建的主题 问与答 C++ 动态调用库问题, node.js 调用
@hua123s 可以按照
https://github.com/nodejs/node-addon-api/blob/master/doc/object_wrap.md
里提到的,定义一个继承自 Napi::ObjectWrap 的包装类,在里面实现 C++的代码。
我是直接在包装类对象里存 C++对象的指针。构造时新建 C++对象,析构时删除,再添加需要暴露给 JS 的成员函数,在里面调用 C++的对象对应的方法。
hmmmmmmmm
基本上就是你说的,属性一一对应写映射。
2020-01-15 10:52:10 +08:00
回复了 hua123s 创建的主题 问与答 C++ 动态调用库问题, node.js 调用
0. 找个写过 C/C++的同事 /朋友协助你
1. 确定动态库是 x86 还是 x64 的。后续调用的 node.js 运行时需要和它一样
2. 对着 node-addon-api 的例子改一下。
https://github.com/nodejs/node-addon-examples/tree/master/1_hello_world/node-addon-api
binding.gyp 里加要链接的动态库。
hello.cc 里加对应的调用。基本上就是增加 Napi::Value MethodName(const Napi::CallbackInfo& info)的函数,把 info 中的入参解析出来,调用对应的 C++函数,拿到返回值,再包成 Napi::Value 返回。最后在 Napi::Object Init(Napi::Env env, Napi::Object exports)里把写好的函数 set 到 exports。
js 中的用法参照 hello.js
3. 无尽的查 node addon api 文档+debug
4. 祈祷你的动态库调用里没有啥需要注册回调的。不然又是另外一场噩梦。
这样应该可以出个凑合能用的版本。所有对动态库方法的调用都是在主线程中完成的。要是动态库方法会执行很长时间的话,会阻塞主线程。
1  2  3  4  5  6  7  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1097 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 23:31 · PVG 07:31 · LAX 16:31 · JFK 19:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.