[转] qml 实现弹窗音乐播放

代码位置 教程被应用在MediaStateT中 MediaStateT Github项目地址: https://github.com/taxue-alfred/MediaStateT MediaStateT Gitee项目地址: https://gitee.com/MediaState/MediaStateT 带图片的弹窗,有物理弹跳效果 最近看到MAC上的网易云音乐播放音乐切换歌曲的时候会有一个弹窗,个人感觉这功能挺不错的,但是Windows却没有这个功能,所以就想着去实现一下,正好加一些功能,再和单片机做配合做成一整个体系算了。 效果展示 窗口调用 PopWindow 使用 Loader 控件进行了模块化,非常好用,可以随便在 Loader 里面添加控件 > 需要注意的是,添加到Loader中的控件id不能被外部所访问,所以建议在外部先加载好控件然后传递到Loader 直接在 source_component 添加 Conponent 控件即可 > 需要注意的是Component只能有一个控件,所以建议先创建一个大的Rectangle 然后再在Rectangle里面创建其他控件,最后传递Component也就传递了 Rectangle及其整个界面 代码参考 整体的代码不是很难,必要的注释都写在代码里了。需要注意的是: PopWindow.qml 的 Window 属性的 x y 可以被外部调用的时候被覆盖 窗口的大小根据 Loader 里面 content_loader 的内容大小改变 sign 这个变量只是一个标志,为了防止动画被多次执行 //PopWindow.qml import QtQuick import QtQuick.Controls 2.5 import QtQuick.Window 2.3 Window{ id: pop_window visible: false color: "transparent" // 透明度 opacity: 0 // 取消边框 flags:Qt.FramelessWindowsHint | Qt.ToolTip // 设置为非模态 modality: Qt....

2024-08-28 · 8 min · 1690 words · RamLife

[转] 恶魔的奶爸:为什么要听ESL Pod和English Pod

根据天涯的著名英语学习帖子《告诉你英语学习的真实方法和误区》,作者漏屋从著名语言学家Krashen的二语获得理论,总结了英语学习这几点。 听力输入 要从听入手,而且要听各种口音的英语,母语国家和非母语国家的人讲的英语都要多听,因为成年人的耳朵有障碍,听不标准音有对比才能打通,发音才能变好。 狭窄输入Narrow Input 在某一段时间内要只听一种特定类型的材料,比如喜欢新闻就在几个月里只听新闻,喜欢听有声书就只听有声书,听熟了后再接触其他材料 可理解性+1的听力输入,就是i+1,i代表你现在的水平 听力一定要在自己听懂的水平上稍微难一点点,然后逐级过渡,一开始就是正常语速,那叫无效输入,跟杂音没两样(针对成人,小孩子没关系) 情绪机制 学习材料要有趣让人感兴趣,学习者在学习过程中始终感到愉快有收获,挫折感不是太重 图像理论 一开始一定要重视图像和语言联系的作用,这样就直接是听到外语反映图像,而不是听到外语,反映中文,再是图像。 输入和输出理论 输入一定要重视!只有在输入达到足够多的情况下,口语和写作的输出在会流利正确,甚至有很多人专门练习输入从未练过输出但是去国外后畅通无阻的。 听说在前 先达到一千个小时左右的有效输入,这样听力和口语问题彻底解决后,前期积累的5000左右单词都是主动词汇,然后再大量接触各种原版读物,增加词汇量。随后再练习写,彻底解决英语问题,跟骑自行车一样,彻底获得英语,而不是总是在苦苦的煎熬学习英语。 下面我们来看下English Pod的几大特点。 每次的对话几乎都是有口音的,从第一期开始那个意大利餐厅的服务生意大利口音就重,到后来的美国各地的口音,英式口音,印度的墨西哥的等等都有。符合! 所有节目都是近似节目脱口秀的形式播出,主持人讲解细心,以一种固定形式播讲英语,符合! 材料难度分级,从基础,中级,中高级,到高级,让学习者慢慢过渡,不仅是说话速度难度加大,高级的内容也多为演讲大学授课等形式,比日常对话词汇难度大,符合! 所有内容都非常搞笑,有点冷笑话的意思!主持人讲解生动,去官网留言还会有主持人的细心解答。符合! 虽然是音频,不能直接放图片,但是音效做的非常好,场景利于学习者想象,在讲解某些生词的时候会放出音效让人知道是什么样子,图片和场景的感觉通过音效表达的栩栩如生,EP的工作团队要赞一个!符合! 输入输出,不用说了吧。符合! 这个,我拿了EP300期的脚本做了词频统计,所有生词,大约在6000个左右,足以表达生活中的各个方面,不管是日常对话还是正式场合演讲,这么多词汇,够了。在听完300期以后,听力问题解决后,我还是建议大家好好的多读些报刊,从华尔街日报开始读(网上主页中英对照,免费),纽约时报的电子版(免费)。在搞定听说,积累主动词汇这方面,EP,全胜! 所有学习材料选择最重要的两条,i+1原则和情绪机制,EP主要是用近似正常语速的腔调播报,间或主持人的搞怪和幽默,我强烈推荐觉得VOA慢速太简单而VOA 常速又太难的童鞋听这个,而且我建议把它当成流行歌曲放MP3,在精听完一期后,平时有空就放开,有一搭没一搭的多听。 至于觉得EP有点快的童鞋那么ESL最适合你不过了,ESL符不符合Krashen的二语获得理论不需要我论证了,因为它是得到过Krashen本人亲自认可的,官方认证就是牛!Krashen在接受记者采访时候被问道,你丫理论讲的一套套的,有没符合你这么龟毛条件的材料啊!Krashen回答,有!那就是最出名的ESL播客!说实话这老头居然还没死,每一个在我教科书里出现没死的人我都大吃一惊。 根据两百个小时精听搞定听力的原则,慢速50 小时,常速150左右,大家听完 150期的ESL再听完900期的Englishpod听说就完全过关了,前提条件是有效输入,就是集中精力的情况下听力跟读。可是EP没出道900期,所以大家还是购买正版,支持EP团队再接再厉吧。 顺带一提,学英语的材料,其它的都可以抛弃了,把EP现在出的几百期反复听个好几遍,单词句法都记得,英语想不流利都难。 对如此科学的材料,就说平时带着听听模仿简直就是焚琴煮鹤,一定要下定决心,有系统的在一年之内狠狠的把这材料学个好多遍,之后再有半年阅读和背单词时间,英语就可以做到彻底获得了。 关于阅读我建议先搭配听Young Adult的有声书,结合文本阅读来积累单词,VC 上的Harry Potter是不错的选择,听英音比较纠结的同志请听 波西杰克逊系列,一套五本,本人上传了新浪网盘,有空把地址发这里,书的话,有钱去卓越订原版,没钱去淘宝,你知道的,估计最多60块。 有了一套YA小说的过渡,再读报刊会轻松很多,通读完一套YA的话,词汇多在7 千到八千左右,再读4个月的报刊,词汇可以扩张到1万以上,坚持阅读的话,够用了。 强烈推荐几个好用的工具。 灵格斯,把那些英汉字典都卸掉,把英汉双解和英英都装上。 一定要买在手上的书:《牛津学生英语搭配词典》,依个人水平选择英汉双解版和纯英英版,牛津高级双解字典或其他任何一本国外出的学习词典,叶永昌的《新编英语阅读手册》,读书是不明白的句子查这个,不明白的单词查字典。 韦伯斯特的可视化字典,虽然很大,但是强烈排这个,简直太好用了!VC有下载 灵格斯建议装两个语言包,韦氏词典的真人发音和朗文的英式英语发音,官网有下。 2011-01-10 17:37:39 [已注销] 不是用心,是天涯上的漏屋先生很用心,他自己在中国亲自实践 Krashen的第二语言获得理论,成效显著,他在天涯开了帖,《告诉你真是的外语学习方法和误区》,当年很火爆的,理论讲的一套套,成果也很动听,就是符合条件的材料很不好找,后来接触到了English Pod,发现居然每条二语学习的理论这材料都符合,惊讶无比,当然自己是不要脸的去VC下载的盗版,我决定年后付几个月的钱再说。 在中国EP完全是最科学的材料,地位放得多高都不为过,而且不像某某大法某某机构那般吹嘘得不得了,编辑团队都只是些默默做着伟大事情的有心人而已。 顺带一提,我登录他们的官方博客,上面赫然写着,我们的材料主要是根据 Krashen先生的二语习得理论精心编制,虽然Krashen很谨慎的说自己的理论还只是假说,有些细节还不能被证明百分百是真理,但是和一切其他的学习方还有砖家大湿们相比,现在的二语习得,绝对是最科学的,也是最有效的。 2011-01-10 17:40:04 [已注销] 大三听这个ep,只是两个月,听力完全突破,口语也顺带快了很多。 当然有个前提条件,在那之前我背了很多的单词,很痛苦,我不推荐大家背单词,最好是在EP主持人帅哥美眉那趣味十足的讲解中,慢慢的积累,这样才最好 参考: 恶魔的奶爸:为什么要听ESL Pod和English Pod

2024-08-08 · 1 min · 63 words · RamLife

[转] 英语学习播客推荐(英语水平分级推荐)

大家在提高英语听力时,有一个问题就是材料等级和自己能力不匹配造成困惑,这篇内容采用CEFR(Common European Framework of Reference)分级帮助大家找到适合自己的节目。 简单介绍一下,CEFR分为三个大级,六个小级别:初级(A1入门,A2初级),中级(B1初中级,B2中级),高级(C1高级,C2专业)。我说一下直观的感受:A1 入门级针对非常基础的东西,相当于小学水平。大家经历几年学校英语学习,都具备一定英语基础,大家普遍停留在A2初级和B1初中级阶段。B2中级的人基本可以收听熟悉题材的英语材料了。C级已经属于Fluent英语阶段,C1可以扩展到大多数的题材节目,C2那就想听什么随便听。所以,我们英语学习播客的推荐内容主要是针对A2,B1和B2三个级别的听众。 推荐 A1入门级听众(无推荐) 如果没有基础的人,最好按照课本系统学习一下。 推荐材料:新概念1-2,赖世雄英语学习系列,以及剑桥英语在用系列,尽快打好基础。 A2初级听众(4个节目) 这个级别的听众可以听一些双语节目和日常对话性质的学习型节目。 潘吉Jenny告诉你 一个专业团队制作的英语双语节目,女主播Jenny和几个Native Speaker聊最近时髦话题和英语地道表达,在讨论时总是能听到很多中西方的Culture Shock,节目的文本可以在他们的官方微信号里看到。我自己听了很多年。 EnglishPod 非常经典的ESL学习材料,形式主要是一遍对话,一遍对话讲解,复听一遍对话,而且可以找到对应的Transcripts,可惜只出了365集。对话内容覆盖日常的地道表达。 推荐收听方式: 喜马拉雅有搬运工,也可以网上找到下载资源。 ESLPod 形式与EnglishPod一样,现在还在更新,这个很容易和EnglishPod混淆,我直观的感受,EnglishPod制作的对话质量要更高一些,口音也更加多样丰富,但是 ESLPod语速更慢一些,稍微简单一点。 推荐收听方式: 因为节目收费,所以各大音频平台都没有,但可以在网上轻松找到1000集的下载资源。 Effortless English Podcast AJ Hoge是一个前辈级的人物,自己创建了一套英语学习方法,做的节目也可以听一听,不过他的音调太高了,我听的不是很多。 B1初中级听众(5个节目) 这个级别的听众可以将学英语和用英语获取资讯一起结合起来,并且为口语发音做一点的基础。 BBC 6 Minute English BBC在传播英语影响力上不遗余力,有非常多很棒的英文节目,偏重学习的最推荐这个,6分钟讲一个小小的英语主题。旗下还有其他同类节目可以收听:The English We Speak(讲习语和俚语),6 Minute Vocabulary,6 Minute Grammar。 All Ears English Podcast 美式口音,两个美国女孩对话形式的英语学习节目,有1000多集了,讲一些英语学习的小知识。 Luke’s ENGLISH Podcast 英式口音,Luke小哥会讲一些有关英国文化和生活的内容,每集时间略长一些。 Daily Easy English Expression Podcast Coach Shane做的节目,很可爱的小老头,非常推荐看视频,在白板前会讲最地道的英语对话,并且交给你美式发音的技巧,可以去Youtube或者Bilibili(有人搬运)上收看,这个是他的Podcast。 Round Table China 算是CRI一个明星节目了,三个人评论中国最近发生的热门事情,虽然三个人都是中国人,但是他们有不同背景,保证了一些事情上的辩证看法,我个人感觉听时事讨论要比听新闻容易一些。另外,赫扬的声音太魔怔了。 推荐收听方式: 苹果播客。喜马拉雅因为版权原因没有,可以下载轻松调频官方 APP收听。 B2中级听众(5个节目) 这个阶段可以从学英语转变为用英语了,并且建议按照主题的方式收听,一点一点扩展自己的主题材料。...

2024-08-08 · 1 min · 107 words · RamLife

[转] 听VOA还不如学这些

学习顺序,严格的按照从上到下(有难度和语速升级的),这篇文章所提到的材料的听力难度和需要的基础大概是这样吧: ESLPOD模仿完了2-3本书了,或者觉得ESLPOD太简单不想听和模仿的(不针对用法,只针对语速) 学过赖世雄教程但是仍然有迷惑的 词汇量在四级左右基础 可以听懂慢速英语,但是对常速压力太大的 以上四个条件缺少任何一项都清不要阅读! 知乎在清剿我的东西(说话太遭人恨),所以这篇教程集合放这里,大家看这个就足够了其实每次一学英语,材料无非就是VOA美剧那几样的实在是弱爆了,我来告诉你,想提高听力改善发音练好口语必须看的一些东西——用VOA美剧什么的也行,但效率远不如这些东西,尤其是在答疑解惑这个范畴上,几乎完爆了其它教材. 以下提到的所有教材都是版权材料,在中国网络有可能也是第一次面试,版权归商家所有,请勿进行盈利性的传播,谢谢. 说到英文听力或者学英语,一般基础一般的中级学习者,肯定就是要去听VOA,稍微好点的就去看美剧,看似有效实属大谬,这里就给出一些播讲类材料,从语速开始慢慢过渡到常速的括弧:已经加入奶爸的英语教室或者已经买了我的书的同学,如果觉得ESLPOD和赖世雄太简单,那么只需要看这篇学习就好了,每天两小时,最多3个月,打通轻松看懂美剧的障碍 以下资料集合在这里 http://pan.baidu.com/s/1c0eR9Nq#dir 教程推荐 American Accent Course简称AAC 语速较慢,老师讲解耐心细心,深入浅出,播讲得当,偶尔有个别发音讲的不是很具体,但是有后面教程补充,所以不必担心。 下载地址: http://pan.baidu.com/s/14AIY9 拓展阅读:Lisa还出了本书,例子更丰富,见这里Mastering the American Accent http://pan.baidu.com/s/128OlI The American Pronunciation Workshop 这个大叔的语速稍快,单在所有的导师中,这位大叔总结的规律和诀窍,是最适合ESL外语学习者的!所有略微有冲突的地方,一切讲解都应该以这位大叔为准! 地址:http://pan.baidu.com/s/1zlarl Master Spoken English-Special Edition 视频教程成于96年,质量远远超过目前互联网上流传的什么“好莱坞演员发音矫正师”,语速不慢,而且形成的系统很有趣,从慢到快从单个音标到整体篇章连读,非常棒的教材简介: This special edition e-course teaches all the core speech dynamics you need for a foundation to master spoken English. You will learn to feel tone and vibration, create well-formed vowels, and develop articulated consonants. Further, there is extensive linking and phrasing practice, which is the key to fluency....

2024-08-08 · 2 min · 345 words · RamLife

SQL速通

SQL速通-001.001-安装MySQL数据管理系统 下载地址 搜索 mysql community download 跳转到 mysql 的官方网站的社区版下载网页。 版本选择 选择 8.0 版本,选择离线安装版。 安装时注意点 可能是家庭版系统的原因,安装时不能选择 development 模式,只好选择 custom 模式,然后额外选择了 odbc, c++ 之类的。 可能是家庭版系统原因,不能选择安装位置,只能默认安装到 C盘,安装完成大约占用 10G 空间。 安装一路下一步即可。 安装时提示没有 visualstudio 也没有关系,这个 vs 连接 mysql 的驱动可以在官网下载,搜索 mysql for visual studio 即可。 SQL速通-003-小查询里有故事 概述 sql 分为 server 和 client 两大块 使用时我们在 client 中输入命令,client 把命令通过网络传递给 server server 执行命令并通过网络把结果返回给我们 use 在使用 select 等语句前,一定要确认是否选中了需要用到的 库, 如果没有,那么需要使用 use 命令来选择。 大小写是否敏感 在 win 系统默认不敏感,在 linux 系统默认敏感。 具体还要看是否设置了大小写敏感。 query 在一个查询行为中可包含多个查询语句。 一个查询行为只会产生一个查询结果,也就是说查询行为的次数与查询结果的个数是对应的。 一个包含多条查询语句的查询行为会产生一个查询结果,而在这个结果中包含多个表。 SQL速通-004-万变不离其宗 语法 sql 语法其实就是层层嵌套的套娃语法。基本就是对 select 的层层包装。...

2023-10-03 · 3 min · 448 words · RamLife

P13 select 模型上

电脑承受进程数量 1核2GB 可以大约 100 多进程或线程 普通服务器大概是 10倍性能,即 1000 多进程或线程。 IO 多路复用能力 1个进程或线程可以使用多个 TCP。 单进程 select 可以 1024 单进程 poll 可以数千 单进程 epoll 可以百万 fdset 本质上是 int[32] 组成的 bitmap, 刚好对应 1024 个文件描述符。 参考 IO 多路复用 select 模型上

2023-09-24 · 1 min · 36 words · RamLife

P6 万恶的结构体

客户端和服务端字符串转字节为啥不一样? 客户端 struct hostent* h; // 用于存放服务端IP地址(大端序)的结构体的指针。 if ( (h = gethostbyname(argv[1])) == nullptr ) // 把域名/主机名/字符串格式的IP转换成结构体。 { cout << "gethostbyname failed.\n" << endl; close(sockfd); return -1; } memcpy(&servaddr.sin_addr,h->h_addr,h->h_length); // ③指定服务端的IP(大端序)。 服务端 servaddr.sin_addr.s_addr=inet_addr(argv[1]); // ③指定服务端的IP,只能用IP,不能用域名和主机名。 原因 inet_addr 这个只能转换 ip 地址 gethostbyname 可以支持 IP,域名等等。 对于服务端来说,给他 ip 地址就够了。但是对于客户端来说,他需要连接的更多的可能是域名,而不是 IP。 服务端为什么也要设置 IP 如果服务端是运行于多网卡的服务器上面,那么必须要明确当前这个服务端是服务于那一个网段的,通过设置 servaddr.sin_addr.s_addr 就可以确定服务的网段了。 参考 万恶的结构体

2023-09-24 · 1 min · 54 words · RamLife

P12 TCP 缓存

getsockopt 作用 可以获取 socket 缓冲区大小。 int bufsize = 0; socklen_t optlen = sizeof(bufsize); getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &bufsize, &optlen); // 获取发送缓冲区的大小。 cout << "send bufsize=" << bufsize << endl; getsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &bufsize, &optlen); // 获取接收缓冲区的大小。 cout << "recv bufsize=" << bufsize << endl; send 会阻塞吗? 如果发送太快,接受太慢,send 也会被阻塞。 send 之后,立即关闭,能接收到吗? 可以的,因为 send 是把数据写入到内核中的发送缓冲区,就算立即关闭,也能接收到。 nagle 算法 在发送一个小于 MSS 长度的包之后,必须收到回复,才能发下一个小包。保证了网络中小包数量得到控制。一般 ACK 大概 40ms. 接收延迟:在接受到一个包之后,会等待 40ms,才会发送 ACK, 这样可以尽量和应用层的回复数据合一个包。 在联机游戏,证券交易等应用场景,时效性要求高,一般会禁用 Nagle 算法。开启 TCP_NODELAY 选项。 #include <netinet/tcp....

2023-09-23 · 1 min · 82 words · RamLife

P11 三握四挥

netstat 使用 netstat 可以用来查看 socket 状态。 安装 如果系统里面没有,那么 yum install net-tools -y 可以安装。 使用 使用 netstat -a | less 或者 netstat -a | more 来查看。 上半部分的信息是 TCP 相关,下半部分是进程间的 socket 通信。 可以观察右边的 listen, established 等状态。 客户端的 port 是客户端系统随机选择的,不要去太过于关注。 port 使用限制 普通权限只能使用 1024 以上端口 root 可以使用 1024 以下的端口。 close 状态是假想状态,不存在的。 listen 的第二个参数作用 第二个参数 + 1 是 established 队列的大小,超过队列的客户端连接状态为 SYN_RCV. 三次握手 客户端申请向服务端的通道 服务端接受了,并且向客户端申请通道 客户端接受了,并给出回应 这样经过三次握手,双方建立了双向通道 四次挥手 A 请求关闭 B 同意关闭单向通道 B 把剩余的数据全部发送。 B 向 A 发送关闭请求 A 发送回应 主动端开的 A 在最后的回应后有个 TIME_WAIT 状态,时间为 2MSL,一个 MSL 在 30秒到1分钟。 服务端主动关闭 会导致 socket 释放,并且 2MSL 后端口才能重用。否则会有 bind 错误提示,并且在 netstat 中可以看到处于 TIME_WAIT 状态。 可以使用 setsockopt 函数,在 bind 之前,可以防止 bind 错误。 客户端主动关闭 没有危害,因为客户端的端口是随机分配端口号的,并且一般用的不多,够用了。...

2023-09-22 · 1 min · 107 words · RamLife

P10 多进程服务端

signal(i, SIG_IGN) 作用 // 忽略全部的信号,不希望被打扰。顺便解决了僵尸进程的问题。 for (int ii=1;ii<=64;ii++) signal(ii,SIG_IGN); kill(0, SIGTERM) 作用 kill(0,SIGTERM); // 向全部的子进程发送15的信号,通知它们退出。 因为在子进程中 SIGTERM 是退出信号。 父进程关掉 clientsocket, 子进程关掉 listensocket int pid=fork(); if (pid==-1) { perror("fork()"); return -1; } // 系统资源不足。 if (pid> 0) { // 父进程。 tcpserver.closeclient(); // 父进程关闭客户端连接的socket。 continue; // 父进程返回到循环开始的位置,继续受理客户端的连接。 } tcpserver.closelisten(); // 子进程关闭监听的socket。 在 /proc/xxx 下面的是进程相关资源,里面的 fd 是根据当前最小可用来递增的。 如果父进程不关 clientsocket, 那么每次 accept 之后,fd 都需要增加一个,然后在后面的 fork 中,这些递增的 fd 也都会被复制到子进程中。对于子进程来说,它不需要其他子进程相关的 =clientsocket=,所以完全是浪费资源。 子进程只需要自己对应的 clientsocket, 不需要 listensocket. listensocket 是专门给父进程用来监听的。 子进程结束需要 return return 0; // 子进程一定要退出,否则又会回到accept()函数的位置。 如果子进程结束没有 return=,让进程退出,那么会在 =while 中重新回到 accept 这个地方,进行了监听,然后 fork 了。...

2023-09-21 · 1 min · 88 words · RamLife