刘悦的技术博客 学习研究python能做什么以及如何能做的更好,关注互联网行业相关技术,浸淫web开发技术。 https://v3u.cn GPT-SoVITS教程,接入酒馆AI,SillyTavern-1.11.5,让AI女友声若幽兰 https://v3u.cn/a_id_359 Tue, 26 Mar 2024 00:00:00 +0000 https://v3u.cn/a_id_359 本次分享一下如何将GPT-SoVITS接入SillyTavern-1.11.5项目,让让AI女友声若幽兰,首先明确一下,SillyTavern-1.11.5只是一个前端项目,它没有任何大模型文本生成能力,所以后端必须有一个api服务来流式生成对话文本,这里选择koboldcpp。首先看一下简单的项目运行架构图:这里SillyTavern作为前端负责向后端的Koboldcpp发起请求,Koboldcpp流式返回文本,SillyTavern接受聊天文本进行展示,当文本接受完毕后,SillyTavern再次向后端的GPT-SoVITS发起请求,将全量文本传递给后端GPT-SoVITS,GPT-SoV... 苹果AppleMacOs系统Sonoma本地部署无内容审查(NSFW)大语言量化模型Causallm https://v3u.cn/a_id_358 Sat, 09 Mar 2024 00:00:00 +0000 https://v3u.cn/a_id_358 最近Mac系统在运行大语言模型(LLMs)方面的性能已经得到了显著提升,尤其是随着苹果M系列芯片的不断迭代,本次我们在最新的MacOs系统Sonoma中本地部署无内容审查大语言量化模型Causallm。这里推荐使用koboldcpp项目,它是由c++编写的kobold项目,而MacOS又是典型的Unix操作系统,自带clang编译器,也就是说MacOS操作系统是可以直接编译C语言的。首先克隆koboldcpp项目:gitclonehttps://github.com/LostRuins/koboldcpp.git随后进入项目:cdkoboldcpp-1.60.1输入make命令,开始编译:ma... 无所不谈,百无禁忌,Win11本地部署无内容审查中文大语言模型CausalLM-14B https://v3u.cn/a_id_357 Wed, 28 Feb 2024 00:00:00 +0000 https://v3u.cn/a_id_357 目前流行的开源大语言模型大抵都会有内容审查机制,这并非是新鲜事,因为之前chat-gpt就曾经被“玩”坏过,如果没有内容审查,恶意用户可能通过精心设计的输入(prompt)来操纵LLM执行不当行为。内容审查可以帮助识别和过滤这些潜在的攻击,确保LLM按照既定的安全策略和道德标准运行。但我们今天讨论的是无内容审查机制的大模型,在中文领域公开的模型中,能力相对比较强的有阿里的Qwen-14B和清华的ChatGLM3-6B。而今天的主角,CausalLM-14B则是在Qwen-14B基础上使用了Qwen-14B的部分权重,并且加入一些其他的中文数据集,最终炼制了一个无内容审核的大模型版本,经过量化后... 遭遇DDOS攻击忍气吞声?立刻报警!首都网警重拳出击,犯罪分子无所遁形 https://v3u.cn/a_id_356 Sat, 24 Feb 2024 00:00:00 +0000 https://v3u.cn/a_id_356 公元2024年2月24日18时许,笔者的个人网站突然遭遇不明身份者的DDOS攻击,且攻击流量已超过阿里云DDos基础防护的黑洞阈值,服务器的所有公网访问已被屏蔽,由于之前早已通过Nginx屏蔽了所有国外IP,在咨询了阿里云客服之后,阿里网安的老同事帮助分析日志并进行了溯源,客服建议笔者选择立刻报警处理!我国《刑法》二百八十六条规定,违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下三年以上有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。但口说无凭,没有证据无法立案,于是立刻登录阿里云后台,调取后台日志随后点击DDos入流攻... 苹果AppleMacOs最新Sonoma系统本地训练和推理GPT-SoVITS模型实践 https://v3u.cn/a_id_355 Wed, 21 Feb 2024 00:00:00 +0000 https://v3u.cn/a_id_355 GPT-SoVITS是少有的可以在MacOs系统下训练和推理的TTS项目,虽然在效率上没有办法和N卡设备相提并论,但终归是开发者在MacOs系统构建基于M系列芯片AI生态的第一步。环境搭建首先要确保本地环境已经安装好版本大于6.1的FFMPEG软件:(base)➜~ffmpeg-versionffmpegversion6.1.1Copyright(c)2000-2023theFFmpegdevelopersbuiltwithAppleclangversion15.0.0(clang-1500.1.0.2.5)configuration:--prefix=/opt/homebrew/Cellar... 自然语言开发AI应用,利用云雀大模型打造自己的专属AI机器人 https://v3u.cn/a_id_354 Fri, 02 Feb 2024 00:00:00 +0000 https://v3u.cn/a_id_354 如今,大模型层出不穷,这为自然语言处理、计算机视觉、语音识别和其他领域的人工智能任务带来了重大的突破和进展。大模型通常指那些参数量庞大、层数深、拥有巨大的计算能力和数据训练集的模型。但不能不承认的是,普通人使用大模型还是有一定门槛的,首先大模型通常需要大量的计算资源才能进行训练和推理。这包括高性能的图形处理单元(GPU)或者专用的张量处理单元(TPU),以及大内存和高速存储器。说白了,本地没N卡,就断了玩大模型的念想吧。其次,大模型的性能往往受到模型调优和微调的影响。这需要对模型的超参数进行调整和优化,以适应特定任务或数据集。对大模型的调优需要一定的经验和专业知识,包括对深度学习原理和技术的理... 离线生成双语字幕,一键生成中英双语字幕,基于AI大模型,ModelScope https://v3u.cn/a_id_353 Mon, 29 Jan 2024 00:00:00 +0000 https://v3u.cn/a_id_353 制作双语字幕的方案网上有很多,林林总总,不一而足。制作双语字幕的原理也极其简单,无非就是人声背景音分离、语音转文字、文字翻译,最后就是字幕文件的合并,但美中不足之处这些环节中需要接口api的参与,比如翻译字幕,那么有没有一种彻底离线的解决方案?让普通人也能一键制作双语字幕,成就一个人的字幕组?人声背景音分离如果视频不存在嘈杂的背景音,那么大多数情况下是不需要做人声和背景音分离的,但考虑到背景音可能会影响语音转文字的准确率,那么人声和背景音分离还是非常必要的,关于人声抽离,我们首先想到的解决方案当然是spleeter,但其实,阿里通义实验室开源的大模型完全不逊色于spleeter,它就是FRCR... Whisper对于中文语音识别与转写中文文本优化的实践(Python3.10) https://v3u.cn/a_id_352 Thu, 25 Jan 2024 00:00:00 +0000 https://v3u.cn/a_id_352 阿里的FunAsr对Whisper中文领域的转写能力造成了一定的挑战,但实际上,Whisper的使用者完全可以针对中文的语音做一些优化的措施,换句话说,Whisper的“默认”形态可能在中文领域斗不过FunAsr,但是经过中文特殊优化的Whisper就未必了。中文文本标注优化Whisper经常被人诟病的一点是对中文语音转写后标点符号的支持不够完备。首先安装whisper:pipinstall-Uopenai-whisper编写转写脚本:importwhisperdevice="cuda:0"iftorch.cuda.is_available()else"cpu&q... 龙蛇入笔,身不由己,码农出书以及无法控制的表达欲 https://v3u.cn/a_id_351 Mon, 22 Jan 2024 00:00:00 +0000 https://v3u.cn/a_id_351 拙著《Tornado(龙卷风)编程实战》结集付梓,自惟庸陋,略為芹献,积年咳唾,不入方家,聊供诸君一哂。这本书以异步框架Tornado为基底,透过一个完整的项目阐释异步框架结合Vue.js如何实现一个低成本的前后端分离架构。项目内涉及的知识点涵括:Web3.0、数据库、设计模式落地、算法和数据结构落地、跨境支付、全文检索、Websocket、以及当下时新的ChatGPT和深度学习等技术,最后以K8S部署收尾。Tornado框架在开发者社区中有一定的知名度和使用率,但确实没有专门为Tornado框架编写的专著,但是私以为Tornado值得地球上任何一座开源奖杯,这本书,献给Tornado,也献给... 如何快速部署本地训练的 Bert-VITS2 语音模型到 Hugging Face https://v3u.cn/a_id_350 Mon, 15 Jan 2024 00:00:00 +0000 https://v3u.cn/a_id_350 HuggingFace是一个机器学习(ML)和数据科学平台和社区,帮助用户构建、部署和训练机器学习模型。它提供基础设施,用于在实时应用中演示、运行和部署人工智能(AI)。用户还可以浏览其他用户上传的模型和数据集。HuggingFace通常被称为机器学习界的GitHub,因为它让开发人员公开分享和测试他们所训练的模型。本次分享如何快速部署本地训练的Bert-VITS2语音模型到HuggingFace。本地配置HuggingFace首先注册HuggingFace平台:https://huggingface.co/join随后在用户的设置界面新建token,也就是令牌:这里令牌有两种权限类型,一种是... 中文语音识别转文字的王者,阿里达摩院FunAsr足可与Whisper相颉顽 https://v3u.cn/a_id_349 Wed, 10 Jan 2024 00:00:00 +0000 https://v3u.cn/a_id_349 君不言语音识别技术则已,言则必称Whisper,没错,OpenAi开源的Whisper确实是世界主流语音识别技术的魁首,但在中文领域,有一个足以和Whisper相颉顽的项目,那就是阿里达摩院自研的FunAsr。FunAsr主要依托达摩院发布的Paraformer非自回归端到端语音识别模型,它具有高精度、高效率、便捷部署的优点,支持快速构建语音识别服务,最重要的是,FunASR支持标点符号识别、低语音识别、音频-视觉语音识别等功能,也就是说,它不仅可以实现语音转写,还能在转写后进行标注,一石二鸟。FunAsr和Whisper对比Mediumvsspeech_paraformer首先配置好Pyth... 如何在GitHub正确提PR(Pull Requests),给喜欢的开源项目贡献代码 https://v3u.cn/a_id_348 Sun, 07 Jan 2024 00:00:00 +0000 https://v3u.cn/a_id_348 最好的中文TTS项目Bert-vits2更新了中文特化分支,但可能由于时间仓促,代码中存在不少的bug,作为普通用户,有的时候也想为自己喜欢的开源项目做一点点贡献,帮助作者修改一些简单的bug,那么该如何开始?本次我们以Bert-vits2项目为例子,分享正确提交PR(PullRequests)的方式。FORK项目首先面对一个开源项目,作为普通用户我们有三个选项:点击Watch可以关注该项目,项目有了更新会提醒关注者,点击Star可以给作者鼓励,类似点赞之类的操作,这里最重要的是Fork,可以把项目拷贝一份到自己的项目库中:在项目列表中可以看到明确标出了该项目是fork自fishaudio/B... 首次引入大模型!Bert-vits2-Extra中文特化版40秒素材复刻巫师3叶奈法 https://v3u.cn/a_id_347 Sat, 06 Jan 2024 00:00:00 +0000 https://v3u.cn/a_id_347 Bert-vits2项目又更新了,更新了一个新的分支:中文特化,所谓中文特化,即针对中文音色的特殊优化版本,纯中文底模效果百尺竿头更进一步,同时首次引入了大模型,使用国产IDEA-CCNL/Erlangshen-MegatronBert-1.3B大模型作为Bert特征提取,基本上完全解决了发音的badcase,同时在情感表达方面有大幅提升,可以作为先前V1.0.1纯中文版本更好的替代。更多情报请参见Bert-vits2项目官网:https://github.com/fishaudio/Bert-VITS2/releases/tag/Extra本次我们基于Bert-vits2中文特化版本通过40... 字正腔圆,万国同音,coqui-ai TTS跨语种语音克隆,钢铁侠讲16国语言(Python3.10) https://v3u.cn/a_id_346 Thu, 04 Jan 2024 00:00:00 +0000 https://v3u.cn/a_id_346 按照固有的思维方式,如果想要语音克隆首先得有克隆对象具体的语言语音样本,换句话说,克隆对象必须说过某一种语言的话才行,但现在,coqui-aiTTSV2.0版本做到了,真正的跨语种无需训练的语音克隆技术。coqui-aiTTS实现跨语种、无需训练克隆语音的方法是基于Tacotron模型,该模型使用了一种音素输入表示来鼓励在不同语种之间共享模型容量。此外,还引入了对抗损失项,以鼓励模型将说话者身份与语音内容进行解耦。这使得模型能够在不同语种之间进行语音合成,而无需在任何双语或平行示例上进行训练。具体来说,coqui-aiTTS首先使用音素输入表示:采用音素(语音的基本发音单位)作为输入表示,鼓励... 丝丝入扣,毫不违和,AI一键换脸和微调,基于Rope-Ruby,2024最新整合包 https://v3u.cn/a_id_345 Wed, 03 Jan 2024 00:00:00 +0000 https://v3u.cn/a_id_345 AI换脸已经不是什么时新的技术了,从DeepFace到Facesweap,再到Roop。AI换脸技术中出现了一种名为“一键换脸”的方法,它不需要训练模型。这种方法利用了名为“GHOST”的技术,它是一种新的一键换脸方法,可以用于图像和视频领域。这种技术采用了先进的生成对抗网络(GAN)、自动编码器等方法,可以实现精确和稳健的换脸效果。GHOST技术的特点是可以在不需要训练模型的情况下进行换脸,从而实现快速、简单的操作。这种方法的优势在于可以快速生成换脸图像或视频,而无需进行复杂的训练过程。本次我们基于Rope-Ruby来进行换脸,把复联4中惊奇队长的脸型进行替换。Rope-Ruby是基于深度学... Win11环境Mecab日语分词和词性分析以及动态库DLL not found问题(Python3.10) https://v3u.cn/a_id_344 Tue, 02 Jan 2024 00:00:00 +0000 https://v3u.cn/a_id_344 日语因为存在假名,会导致翻译软件进行翻译时机翻味道过重的问题,比如積ん読(つんどく)这个词,大多数软件会翻译成:堆积的读,但其实是明明买了书却不读,光放着的意思。有时候也需要单独查句子中的单词释义来理解句子的意思,但一看下去全是假名,无法像中文或者英文那样进行简单的分词操作。本次我们基于Python3.10的三方库Mecab来对日语进行分词和词性分析。安装和配置Mecab首先下载最新的Mecab0.996的64位安装包:https://github.com/ikegami-yukino/mecab/releases随后双击进行安装,注意编码选择国标码utf-8:默认的Shift_JIS是日本电... 一键打包,随时运行,Python3项目虚拟环境一键整合包的制作(Venv) https://v3u.cn/a_id_343 Sun, 31 Dec 2023 00:00:00 +0000 https://v3u.cn/a_id_343 之前我们介绍了如何使用嵌入式Python3环境给项目制作一键整合包,在使用嵌入式Python环境时,通常是作为另一个应用程序的一部分,而Python3虚拟环境是为了在开发过程中隔离项目所需的Python环境。虚拟环境允许我们在同一台计算机上的不同项目中使用不同的Python版本和软件包,而不会相互干扰。本次我们利用Python3自带的虚拟环境(venv)功能来给项目制作一键整合包。创建虚拟环境首先确保本地环境已经安装好了Python3开发环境,如果没有,请移步:一网成擒全端涵盖,在不同架构(Intelx86/Applem1silicon)不同开发平台(Win10/Win11/Mac/Ubunt... 免费背景音人声分离解决方案MVSEP-MDX23,足以和Spleeter分庭抗礼 https://v3u.cn/a_id_342 Fri, 29 Dec 2023 00:00:00 +0000 https://v3u.cn/a_id_342 在音视频领域,把已经发布的混音歌曲或者音频文件逆向分离一直是世界性的课题。音波混合的物理特性导致在没有原始工程文件的情况下,将其还原和分离是一件很有难度的事情。言及背景音人声分离技术,就不能不提Spleeter,它是一种用于音频源分离(音乐分离)的开源深度学习算法,由Deezer研究团队开发。使用的是一个性能取向的音源分离算法,并且为用户提供了已经预训练好的模型,能够开箱即用,这也是Spleeter泛用性高的原因之一,关于Spleeter,请移步:人工智能AI库Spleeter免费人声和背景音乐分离实践(Python3.10),这里不再赘述。MVSEP-MDX23背景音人声分离技术由Demuc... Bert-vits2最终版Bert-vits2-2.3云端训练和推理(Colab免费GPU算力平台) https://v3u.cn/a_id_341 Wed, 27 Dec 2023 00:00:00 +0000 https://v3u.cn/a_id_341 对于深度学习初学者来说,JupyterNoteBook的脚本运行形式显然更加友好,依托Python语言的跨平台特性,JupyterNoteBook既可以在本地线下环境运行,也可以在线上服务器上运行。GoogleColab作为免费GPU算力平台的执牛耳者,更是让JupyterNoteBook的脚本运行形式如虎添翼。本次我们利用Bert-vits2的最终版Bert-vits2-v2.3和JupyterNoteBook的脚本来复刻生化危机6的人气角色艾达王(adawong)。本地调试JupyterNoteBook众所周知,GoogleColab虽然可以免费提供GPU让用户用于模型训练和推理,但是每一... 朱令去世,朱令案:不能公开的“内参” https://v3u.cn/a_id_340 Sun, 24 Dec 2023 00:00:00 +0000 https://v3u.cn/a_id_340 题记朱令令于公元2023年12月22日在北京去世,生于斯,长于斯,殁于斯。她的死,让我们想起了臧克家的千古名篇《有的人》:有的人死了,她还活着;有的人活着,她已经死了。而那个女人,她还在澳大利亚,但是她已经死了,没错,她还在呼吸,也许还在工作,但是她的灵魂早已失去了光泽。事情还没有完全收束,也许是妥协的挣扎,也许是不愿屈服的反抗,也许是再三思量的沉默。朱令案看似结束了,但人之本性的淘金汰砂的过程却刚刚开始。在威权和疯愚之势裹挟下,有的人选择遗忘,有的人选择铭记,而朱令案本身,也成为了一本不能公开的“内参”。内参所谓内参,是内部参阅的简称。它与普通的新闻有所不同,就是这些新闻是一种不公开发布的报... Bert-vits2-2.3-Final,Bert-vits2最终版一键整合包(复刻生化危机艾达王) https://v3u.cn/a_id_339 Fri, 22 Dec 2023 00:00:00 +0000 https://v3u.cn/a_id_339 近日,Bert-vits2发布了最新的版本2.3-final,意为最终版,修复了一些已知的bug,添加基于WavLM的Discriminator(来源于StyleTTS2),令人意外的是,因情感控制效果不佳,去除了CLAP情感模型,换成了相对简单的BERT融合语义方式。事实上,经过2.2版本的测试,CLAP情感模型的效果还是不错的,关于2.2版本,请移步:Bert-vits2-v2.2新版本本地训练推理整合包(原神八重神子英文模型miko)更多情报请关注Bert-vits2官网:https://github.com/fishaudio/Bert-VITS2/releases/tag/v2.3本... 云端开炉,线上训练,Bert-vits2-v2.2云端线上训练和推理实践(基于GoogleColab) https://v3u.cn/a_id_338 Tue, 19 Dec 2023 00:00:00 +0000 https://v3u.cn/a_id_338 假如我们一定要说深度学习入门会有一定的门槛,那么设备成本是一个无法避开的话题。深度学习模型通常需要大量的计算资源来进行训练和推理。较大规模的深度学习模型和复杂的数据集需要更高的计算能力才能进行有效的训练。因此,训练深度学习模型可能需要使用高性能的计算设备,如图形处理器(GPU)或专用的深度学习处理器(如TPU),这让很多本地没有N卡的同学望而却步。GoogleColab是由Google提供的一种基于云的免费Jupyter笔记本环境。它可以帮助入门用户轻松地进行机器学习和深度学习的实验。尽管GoogleColab提供了很多便利和免费的功能,但也有一些限制。例如,每个会话的计算资源可能是有限的,并... Bert-vits2-v2.2新版本本地训练推理整合包(原神八重神子英文模型miko) https://v3u.cn/a_id_337 Mon, 18 Dec 2023 00:00:00 +0000 https://v3u.cn/a_id_337 近日,Bert-vits2-v2.2如约更新,该新版本v2.2主要把Emotion模型换用CLAP多模态模型,推理支持输入textprompt提示词和audioprompt提示语音来进行引导风格化合成,让推理音色更具情感特色,并且推出了新的预处理webuI,操作上更加亲民和接地气。更多情报请参见Bert-vits2官网:https://github.com/fishaudio/Bert-VITS2/releases/tag/v2.2与此同时,基于FastApi的推理web界面项目也同步适配了Bert-vits2-v2.2版本,官网如下:https://github.com/jiangyuxia... 衡兰芷若成绝响,人间不见周海媚(4k修复基于PaddleGan) https://v3u.cn/a_id_336 Sat, 16 Dec 2023 00:00:00 +0000 https://v3u.cn/a_id_336 一代人有一代人的经典回忆,1994年由周海媚、马景涛、叶童主演的《倚天屠龙记》曾经风靡一时,周海媚所诠释的周芷若凝聚了汉水之钟灵,峨嵋之毓秀,遇雪尤清,经霜更艳,俘获万千观众,成为了一代人的共同记忆。如今美人仙去,回望经典,雪肤依然,花貌如昨,白璧微瑕之处是九十年代电视剧的分辨率有些低,本次我们利用百度自研框架PaddleGan的视频超分SOTA算法来对九十年代电视剧进行4K修复。配置PaddlePaddle框架PaddlePaddle框架需要本地环境支持CUDA和cudnn,具体请参照:声音好听,颜值能打,基于PaddleGAN给人工智能AI语音模型配上动态画面(Python3.10),囿于... 两亿大奖,一夜暴富,江西彩票、概率学、阴谋论暨景观社会 https://v3u.cn/a_id_335 Sun, 10 Dec 2023 00:00:00 +0000 https://v3u.cn/a_id_335 近日,中国福彩“快乐8”选七玩法中有一人投注近5万倍共中2.2亿余元,两个小目标,一夜全自由,如果你以为这是故事,那么你错了,如果你以为这是生活,那么我们都错了。“快乐8”的快乐是真的快乐快乐如果也分等级,那“快乐8”选10一等大奖快乐一定比选1的要高级很多。首先明确一下“快乐8”一等奖的规则:投注人从80个数(1-80)中选10个数,开奖时会从80个数中开出20个数,如果选择的10个数均在开出的20个数中,那么就中了一等大奖,也可以理解为选10中10。那么中一等奖的概率是多少呢?首先第一步,求出所有投注组合的可能性:fromscipy.specialimportcombfromfractio... Bert-vits2新版本V2.1英文模型本地训练以及中英文混合推理(mix) https://v3u.cn/a_id_334 Fri, 08 Dec 2023 00:00:00 +0000 https://v3u.cn/a_id_334 中英文混合输出是文本转语音(TTS)项目中很常见的需求场景,尤其在技术文章或者技术视频领域里,其中文文本中一定会夹杂着海量的英文单词,我们当然不希望AI口播只会念中文,Bert-vits2老版本(2.0以下版本)并不支持英文训练和推理,但更新了底模之后,V2.0以上版本支持了中英文混合推理(mix)模式。还是以霉霉为例子:https://www.bilibili.com/video/BV1bB4y1R7Nu/截取霉霉说英文的30秒音频素材片段:Bert-vits2英文素材处理首先克隆项目:gitclonehttps://github.com/v3ucn/Bert-VITS2_V210.git安... 义无反顾马督工,Bert-vits2V210复刻马督工实践(Python3.10) https://v3u.cn/a_id_333 Wed, 29 Nov 2023 00:00:00 +0000 https://v3u.cn/a_id_333 Bert-vits2更新了版本V210,修正了日/英的bert对齐问题,效果进一步优化;对底模使用的数据进行优化和加量,减少finetune失败以及电音的可能性;日语bert更换了模型,完善了多语言推理。更多情报请参考Bert-vits2官网:https://github.com/fishaudio/Bert-VITS2/releases/tag/2.1最近的事情大家也都晓得了,马督工义无反顾带头冲锋,身体力行地实践着横渠四句:为天地立心,为生民立命,为往圣继绝学,为万世开太平。本次我们基于Bert-vits2的新版本V210,复刻马督工,向他致敬。Bert-vits2V210整备数据集我们知... 中国版OJ辛普森案,朱令案暨疑罪从无 https://v3u.cn/a_id_332 Sun, 26 Nov 2023 00:00:00 +0000 https://v3u.cn/a_id_332 楔子毫无疑问,面对一桩刑事案件时,旁观者始终处于一个脆弱无知的状态。人们会被无数可能的事情影响对某件事情的判断,而真相,只有那个人知道。因此法治社会下不得不倚重于法律程序来做出判断。而一旦执掌法律武器的权力机构受到质疑,事情的发展通常都会是灾难性的。1994年,前美式橄榄球运动员O·J·辛普森(O.J.Simpson)杀妻一案成为当时美国最为轰动的事件。此案当时的审理一波三折,辛普森在用刀杀前妻及餐馆的侍应生郎·高曼两项一级谋杀罪的指控中,由于警方的几个重大失误导致有力证据的失效,以无罪获释,仅被民事判定为对两人的死亡负有责任,被判处民事赔偿。本案也成为美国历史上疑罪从无的最大案件。1994年... 本地训练,立等可取,30秒音频素材复刻霉霉讲中文音色基于Bert-VITS2V2.0.2 https://v3u.cn/a_id_331 Mon, 27 Nov 2023 00:00:00 +0000 https://v3u.cn/a_id_331 之前我们使用Bert-VITS2V2.0.2版本对现有的原神数据集进行了本地训练,但如果克隆对象脱离了原神角色,我们就需要自己构建数据集了,事实上,深度学习模型的性能和泛化能力都依托于所使用的数据集的质量和多样性,本次我们在本地利用Bert-VITS2V2.0.2对霉霉讲中文的音色进行克隆实践。霉霉讲中文的原始音视频地址:https://www.bilibili.com/video/BV1bB4y1R7Nu/这一段是基于HeyGen项目的AI音色克隆以及唇形合成技术,全片1分钟左右,中文和英文各30秒,因为我们只克隆中文音色部分,那么将英文部分截去,留下30秒的中文音频素材。Bert-VITS... 本地训练,开箱可用,Bert-VITS2 V2.0.2版本本地基于现有数据集训练(原神刻晴) https://v3u.cn/a_id_330 Wed, 22 Nov 2023 00:00:00 +0000 https://v3u.cn/a_id_330 按照固有思维方式,深度学习的训练环节应该在云端,毕竟本地硬件条件有限。但事实上,在语音识别和自然语言处理层面,即使相对较少的数据量也可以训练出高性能的模型,对于预算有限的同学们来说,也没必要花冤枉钱上“云端”了,本次我们来演示如何在本地训练Bert-VITS2V2.0.2模型。Bert-VITS2V2.0.2基于现有数据集目前Bert-VITS2V2.0.2大体上有两种训练方式,第一种是基于现有数据集,即原神各角色已经标注好的语音数据,这部分内容是公开的,但是不能商用,可以在这里下载:https://pan.ai-hobbyist.org/Genshin%20Datasets/%E4%B8%A... 又欲又撩人,基于新版Bert-vits2V2.0.2音色模型雷电将军八重神子一键推理整合包分享 https://v3u.cn/a_id_329 Mon, 20 Nov 2023 00:00:00 +0000 https://v3u.cn/a_id_329 Bert-vits2项目近期炸裂更新,放出了v2.0.2版本的代码,修正了存在于2.0先前版本的重大bug,并且重炼了底模,本次更新是即1.1.1版本后最重大的更新,支持了三语言训练及混合合成,并且做到向下兼容,可以推理老版本的模型,本次我们基于新版V2.0.2来本地推理原神小姐姐们的音色模型。具体的更新日志请参见官网:https://github.com/fishaudio/Bert-VITS2/releases模型配置首先克隆官方最近的v2.0.2代码:gitclonehttps://github.com/fishaudio/Bert-VITS2.git随后在项目的根目录创建Data目录c... 一键整合,万用万灵,Python3.10项目嵌入式一键整合包的制作(Embed) https://v3u.cn/a_id_328 Thu, 16 Nov 2023 00:00:00 +0000 https://v3u.cn/a_id_328 我们知道Python是一门解释型语言,项目运行时需要依赖Python解释器,并且有时候需要安装项目中对应的三方依赖库。对于专业的Python开发者来说,可以直接通过pip命令进行安装即可。但是如果是分发给其他的Windows用户,特别是不熟悉Python的人来说,这样过于繁琐。因此最好的办法是连同Python解释器和Python项目打包在一起,通过嵌入式一键整合包解决项目的分发问题。本次我们以一键扒谱的项目为例子,演示如何将项目直接打包为一键整合包,方便其他用户运行使用。嵌入式Python处理首先克隆我们自己的项目:gitclonehttps://github.com/v3ucn/YiJian... 不懂乐理,也能扒谱,基于openvpi将mp3转换为midi乐谱(Python3.10) https://v3u.cn/a_id_327 Wed, 15 Nov 2023 00:00:00 +0000 https://v3u.cn/a_id_327 所谓"扒谱"是指通过听歌或观看演奏视频等方式,逐步分析和还原音乐作品的曲谱或乐谱的过程。它是音乐学习和演奏的一种常见方法,通常由音乐爱好者、乐手或学生使用。在扒谱的过程中,人们会仔细聆听音乐作品,辨别和记录出各个音符、和弦、节奏等元素,并通过试错和反复推敲来逐渐还原出准确的曲谱或乐谱。这对于那些没有正式乐谱或想学习特定曲目的人来说,是一种有效的方式。扒谱的目的是为了更好地理解和演奏音乐作品,从中学习技巧、乐曲结构和艺术表达等方面。但不懂乐理的人很难听出音符和音准,本次我们通过openvpi的开源项目some来直接针对mp3文件进行扒谱,将mp3转换为midi文件。项目配置首... AI歌姬,C位出道,基于PaddleHub/Diffsinger实现音频歌声合成操作(Python3.10) https://v3u.cn/a_id_326 Tue, 14 Nov 2023 00:00:00 +0000 https://v3u.cn/a_id_326 懂乐理的音乐专业人士可以通过写乐谱并通过乐器演奏来展示他们的音乐创意和构思,但不识谱的素人如果也想跨界玩儿音乐,那么门槛儿就有点高了。但随着人工智能技术的快速迭代,现在任何一个人都可以成为“创作型歌手”,即自主创作并且让AI进行演唱,极大地降低了音乐制作的门槛。本次我们基于PaddleHub和Diffsinger实现音频歌声合成操作,魔改歌曲《学猫叫》。配置PaddleHub首先确保本地就已经安装好了百度的PaddlePaddle深度学习框架,随后输入命令安装PaddleHub库:pipinstallpaddlehub@2.4.0PaddleHub是基于PaddlePaddle生态下的预训练模... 春秋笔法,微言大义,中山二院“癌症事件”情况说明解析 https://v3u.cn/a_id_325 Thu, 09 Nov 2023 00:00:00 +0000 https://v3u.cn/a_id_325 公元2023年11月8日凌晨2点20分,广州的中山医科大学孙逸仙纪念医院发布关于“癌症事件”的情况说明:第一段:我院关注到网络上有传播“中山二院乳腺外科团队疑受实验环境和试剂影响致多人患癌”等信息。医院迅速组织调查核实,初步了解到:近年在乳腺肿瘤中心实验室工作、学习过的人员中有3名罹患癌症,其中2名现为我院乳腺外科医生,在临床工作;另外1名不是我院职工或学生,为外地来院进修人员,已回原单位工作。该实验室无在读学生患癌。这段描述有三个人罹患癌症,但有两人是该院外科医生,另有一人不是该院员工,强调无在读学生患癌,意思是和实验室好像没啥关系。第二段:黄某,女,2017年至2022年在我院攻读博士学位... 持续进化,快速转录,Faster-Whisper对视频进行双语字幕转录实践(Python3.10) https://v3u.cn/a_id_324 Fri, 03 Nov 2023 00:00:00 +0000 https://v3u.cn/a_id_324 Faster-Whisper是Whisper开源后的第三方进化版本,它对原始的Whisper模型结构进行了改进和优化。这包括减少模型的层数、减少参数量、简化模型结构等,从而减少了计算量和内存消耗,提高了推理速度,与此同时,Faster-Whisper也改进了推理算法、优化计算过程、减少冗余计算等,用以提高模型的运行效率。本次我们利用Faster-Whisper对日语视频进行双语(日语/国语)转录实践,看看效率如何。构建Faster-Whisper转录环境首先确保本地已经安装好Python3.10版本以上的开发环境,随后克隆项目:gitclonehttps://github.com/ycyy/f... 栩栩如生,音色克隆,Bert-vits2文字转语音打造鬼畜视频实践(Python3.10) https://v3u.cn/a_id_323 Mon, 23 Oct 2023 00:00:00 +0000 https://v3u.cn/a_id_323 诸公可知目前最牛逼的TTS免费开源项目是哪一个?没错,是Bert-vits2,没有之一。它是在本来已经极其强大的Vits项目中融入了Bert大模型,基本上解决了VITS的语气韵律问题,在效果非常出色的情况下训练的成本开销普通人也完全可以接受。BERT的核心思想是通过在大规模文本语料上进行无监督预训练,学习到通用的语言表示,然后将这些表示用于下游任务的微调。相比传统的基于词嵌入的模型,BERT引入了双向上下文信息的建模,使得模型能够更好地理解句子中的语义和关系。BERT的模型结构基于Transformer,它由多个编码器层组成。每个编码器层都有多头自注意力机制和前馈神经网络,用于对输入序列进行多... 铅华洗尽,粉黛不施,人工智能AI基于ProPainter技术去除图片以及视频水印(Python3.10) https://v3u.cn/a_id_322 Fri, 13 Oct 2023 00:00:00 +0000 https://v3u.cn/a_id_322 视频以及图片修复技术是一项具有挑战性的AI视觉任务,它涉及在视频或者图片序列中填补缺失或损坏的区域,同时保持空间和时间的连贯性。该技术在视频补全、对象移除、视频恢复等领域有广泛应用。近年来,两种突出的方案在视频修复中崭露头角:flow-basedpropagation和spatiotemporalTransformers。尽管两套方案都还不错,但它们也存在一些局限性,如空间错位、时间范围有限和过高的成本。说白了,你通过AI技术移除水印或者修复一段不清晰的视频,但结果却没法保证连贯性,让人一眼能看出来这个视频或者图片还是缺失状态,与此同时,过高的算力成本也是普通人难以承受的。本次,我们通过Pro... AIGC革新,将文字或者LOGO融入AI视频基于PIKA-labs(Python3.10) https://v3u.cn/a_id_321 Sat, 07 Oct 2023 00:00:00 +0000 https://v3u.cn/a_id_321 很多平台都会禁止用户使用带有网址或者二维码的头像以及文章配图,这样可以有效的防止用户的一些“导流”行为。当然,头像、文章或者视频现在都是AI来审,毕竟现在人工的成本实在太高,但是如果我们把文字元素直接融入图像或者视频之中,如此一来,AI也会很难识别出一些“导流”的元素。本次我们依靠PIKA-labs平台,无需本地环境,直接简单粗暴输出带有文字元素的光影视频效果,基于Python3.10。文字/图片生成视频首先通过Discord平台订阅PIKA频道,频道地址:https://discord.com/channels/1123665496148017235目前有两种方式来生成AI视频,分别是文字生... 《卖炭翁》致敬河北程序员,初读已解诗中意,再读却是诗中人! https://v3u.cn/a_id_320 Mon, 02 Oct 2023 00:00:00 +0000 https://v3u.cn/a_id_320 起初他们追杀共产主义者的时候,我没有说话——因为我不是共产主义者;接着他们追杀犹太人的时候,我没有说话——因为我不是犹太人;后来他们追杀工会成员的时候,我没有说话——因为我不是工会成员;此后他们追杀天主教徒的时候,我没有说话——因为我是新教教徒;最后他们奔我而来,那时已经没有人能为我说话了。这一首著名的《我没有说话》是德国神学家马丁・尼莫拉牧师的忏悔诗,尽管他写的是自己,但这首诗却振聋发聩,发人深省,其描述忽视与表面上自己无关的团体所造成的结果。该诗后来常被引用,作为对事不关己高高挂起的人的呼吁。这首诗被镌刻在美国马萨诸塞州波士顿的新英格兰犹太人大屠杀纪念碑石碑上。马丁・尼莫拉曾经生活在一个黑... 基于TOTP算法的Github两步验证2FA(双因子)机制Python3.10/Golang1.21实现 https://v3u.cn/a_id_319 Fri, 29 Sep 2023 00:00:00 +0000 https://v3u.cn/a_id_319 从今年(2023)三月份开始,Github开始强制用户开启两步验证2FA(双因子)登录验证,毫无疑问,是出于安全层面的考虑,毕竟Github账号一旦被盗,所有代码仓库都会毁于一旦,关于双因子登录的必要性请参见:别让你的服务器(vps)沦为肉鸡(ssh暴力破解),密钥验证、双向因子登录值得拥有。双因子登录说白了就是通过第三方设备证明"你是你自己"的一个措施,Github官方推荐在移动端下载1Password、Authy、MicrosoftAuthenticator等APP来通过扫码进行验证,其实大可不必如此麻烦,本次我们通过Python/Golang代码来实现双因子登录验证。... 通用密钥,无需密码,在无密码元年实现Passkeys通用密钥登录(基于Django4.2/Python3.10) https://v3u.cn/a_id_318 Wed, 21 Jun 2023 00:00:00 +0000 https://v3u.cn/a_id_318 毋庸讳言,密码是极其伟大的发明,但拜病毒和黑客所赐,一旦密码泄露,我们就得绞尽脑汁再想另外一个密码,但记忆力并不是一个靠谱的东西,一旦遗忘密码,也会造成严重的后果,2023年业界巨头Google已经率先支持了Passkeys登录方式,只须在设备上利用PIN码解锁、指纹或面部辨识等生物识别方式,即可验证身份,也就是说,可以和密码说拜拜了。什么是PassKeysPasskeys的原理很简单,就是在用户注册环节,可以选择生成一对密钥,分别是公钥和私钥,公钥存在服务器端,而私钥存在用户需要登录的设备上,包含但不限于电脑、手机、或者平板。只有在公钥和私钥配对,并且验签通过的情况下,系统才会判定用户登录成... 批量生成,本地推理,人工智能声音克隆框架PaddleSpeech本地批量克隆实践(Python3.10) https://v3u.cn/a_id_317 Thu, 15 Jun 2023 00:00:00 +0000 https://v3u.cn/a_id_317 云端炼丹固然是极好的,但不能否认的是,成本要比本地高得多,同时考虑到深度学习的训练相对于推理来说成本也更高,这主要是因为它需要大量的数据、计算资源和时间等资源,并且对超参数的调整也要求较高,更适合在云端进行。在推理阶段,模型的权重和参数不再调整。相反,模型根据输入数据的特征进行计算,并输出预测结果。推理阶段通常需要较少的计算资源和时间,所以训练我们可以放在云端,而批量推理环节完全可以挪到本地,这样更适合批量的声音克隆场景。本地配置PaddleSpeech首先需要在本地安装PaddlePaddle框架,关于PaddlePaddle的本地配置,请移步:声音好听,颜值能打,基于PaddleGAN给人... 声音克隆,精致细腻,人工智能AI打造国师“一镜到底”鬼畜视频,基于PaddleSpeech(Python3.10) https://v3u.cn/a_id_316 Wed, 14 Jun 2023 00:00:00 +0000 https://v3u.cn/a_id_316 电影《满江红》上映之后,国师的一段采访视频火了,被无数段子手恶搞做成鬼畜视频,诚然,国师的这段采访文本相当经典,他生动地描述了一个牛逼吹完,大家都信了,结果发现自己没办法完成最后放弃,随后疯狂往回找补的过程。最离谱的是,他这段采访用极其丰富的细节描述了一个没有发生且没有任何意义的事情,堪比单口相声,形成了一种荒诞的美感,毫无疑问,《满江红》最大的贡献就是这个采访素材了。往这个文本里套内容并没有什么难度,小学生也可以,但配音是一个瓶颈,也就是说,普通人想染指鬼畜视频还是有一定门槛的,这个领域往往是专业配音演员的天下,但今时非比往日,人工智能AI技术可以让我们基于PaddleSpeech克隆出精致... 南洋才女,德艺双馨,孙燕姿本尊回应AI孙燕姿(基于Sadtalker/Python3.10) https://v3u.cn/a_id_315 Wed, 07 Jun 2023 00:00:00 +0000 https://v3u.cn/a_id_315 孙燕姿果然不愧是孙燕姿,不愧为南洋理工大学的高材生,近日她在个人官方媒体博客上写了一篇英文版的长文,正式回应现在满城风雨的“AI孙燕姿”现象,流行天后展示了超人一等的智识水平,行文优美,绵恒隽永,对AIGC艺术表现得极其克制,又相当宽容,充满了语言上的古典之美,表现出了“任彼如泰山压顶,我只当清风拂面”的博大胸怀。本次我们利用edge-tts和Sadtalker库让AI孙燕姿朗诵本尊的博文,让流行天后念给你听。Sadtalker配置之前我们曾经使用百度开源的PaddleGAN视觉效果模型中一个子模块Wav2lip实现了人物口型与输入的歌词语音同步,但Wav2lip的问题是虚拟人物的动态效果只能... 音容笑貌,两臻佳妙,人工智能AI换脸(deepfake)技术复刻《卡萨布兰卡》名场面(Python3.10) https://v3u.cn/a_id_314 Tue, 23 May 2023 00:00:00 +0000 https://v3u.cn/a_id_314 影史经典《卡萨布兰卡》是大家耳熟能详的传世名作,那一首壮怀激烈,激奋昂扬的马赛曲,应当是通片最为激动人心的经典桥段了,本次我们基于faceswap和so-vits库让AI川普复刻美国演员保罗·亨雷德高唱《马赛曲》的名场面。配置人脸替换DeepFakes项目关于人脸替换,业内鼎鼎有名的deepfakes代表了这个人工智能细分领域的最高水平,旗下的faceswap库正好适合这种视频二次创作的场景。首先克隆faceswap项目:gitclonehttps://github.com/deepfakes/faceswap.git随后进入项目的目录:cdfaceswap确保本地已经配置好python3.1... 声音好听,颜值能打,基于PaddleGAN给人工智能AI语音模型配上动态画面(Python3.10) https://v3u.cn/a_id_313 Thu, 18 May 2023 00:00:00 +0000 https://v3u.cn/a_id_313 借助So-vits我们可以自己训练五花八门的音色模型,然后复刻想要欣赏的任意歌曲,实现点歌自由,但有时候却又总觉得少了点什么,没错,缺少了画面,只闻其声,却不见其人,本次我们让AI川普的歌声和他伟岸的形象同时出现,基于PaddleGAN构建“靓声靓影”的“懂王”。PaddlePaddle是百度开源的深度学习框架,其功能包罗万象,总计覆盖文本、图像、视频三大领域40个模型,可谓是在深度学习领域无所不窥。PaddleGAN视觉效果模型中一个子模块Wav2lip是对开源库Wav2lip的二次封装和优化,它实现了人物口型与输入的歌词语音同步,说白了就是能让静态图的唇部动起来,让人物看起来仿佛正在唱歌。... 云端炼丹,算力白嫖,基于云端GPU(Colab)使用So-vits库制作AI特朗普演唱《国际歌》 https://v3u.cn/a_id_312 Tue, 16 May 2023 00:00:00 +0000 https://v3u.cn/a_id_312 人工智能AI技术早已深入到人们生活的每一个角落,君不见AI孙燕姿的歌声此起彼伏,不绝于耳,但并不是每个人都拥有一块N卡,没有GPU的日子总是不好过的,但是没关系,山人有妙计,本次我们基于Google的Colab免费云端服务器来搭建深度学习环境,制作AI特朗普,让他高唱《国际歌》。Colab(全名Colaboratory),它是Google公司的一款基于云端的基础免费服务器产品,可以在B端,也就是浏览器里面编写和执行Python代码,非常方便,贴心的是,Colab可以给用户分配免费的GPU进行使用,对于没有N卡的朋友来说,这已经远远超出了业界良心的范畴,简直就是在做慈善事业。配置ColabCol... 民谣女神唱流行,基于AI人工智能so-vits库训练自己的音色模型(叶蓓/Python3.10) https://v3u.cn/a_id_311 Fri, 12 May 2023 00:00:00 +0000 https://v3u.cn/a_id_311 流行天后孙燕姿的音色固然是极好的,但是目前全网都是她的声音复刻,听多了难免会有些审美疲劳,在网络上检索了一圈,还没有发现民谣歌手的音色模型,人就是这样,得不到的永远在骚动,本次我们自己构建训练集,来打造自己的音色模型,让民谣女神来唱流行歌曲,要多带劲就有多带劲。构建训练集训练集是指用于训练神经网络模型的数据集合。这个数据集通常由大量的输入和对应的输出组成,神经网络模型通过学习输入和输出之间的关系来进行训练,并且在训练过程中调整模型的参数以最小化误差。通俗地讲,如果我们想要训练民谣歌手叶蓓的音色模型,就需要将她的歌曲作为输入参数,也就是训练集,训练集的作用是为模型提供学习的材料,使其能够从输入数... AI天后,在线飙歌,人工智能AI孙燕姿模型应用实践,复刻《遥远的歌》,原唱晴子(Python3.10) https://v3u.cn/a_id_310 Thu, 11 May 2023 00:00:00 +0000 https://v3u.cn/a_id_310 忽如一夜春风来,亚洲天后孙燕姿独特而柔美的音色再度响彻华语乐坛,只不过这一次,不是因为她出了新专辑,而是人工智能AI技术对于孙燕姿音色的完美复刻,以大江灌浪之势对华语歌坛诸多经典作品进行了翻唱,还原度令人咋舌,如何做到的?本次我们借助基于Python3.10的开源库so-vits-svc,让亚洲天后孙燕姿帮我们免费演唱喜欢的歌曲,实现点歌自由。so-vits-svc是基于VITS的开源项目,VITS(VariationalInferencewithadversariallearningforend-to-endText-to-Speech)是一种结合变分推理(variationalinfere... Python3.10动态修改Windows系统(win10/win11)本地IP地址(静态IP) https://v3u.cn/a_id_309 Tue, 09 May 2023 00:00:00 +0000 https://v3u.cn/a_id_309 一般情况下,局域网里的终端比如本地服务器设置静态IP的好处是可以有效减少网络连接时间,原因是过程中省略了每次联网后从DHCP服务器获取IP地址的流程,缺点是容易引发IP地址的冲突,当然,还有操作层面的繁琐,如果想要切换静态IP地址,就得去网络连接设置中手动操作,本次我们使用Python3.10动态地修改电脑的静态IP地址。获取多网卡配置一个网卡对应一个静态IP地址,但机器上未必只有一个网卡,所以如果想动态切换,必须要指定网卡名称,Win系统中通过ipconfig命令来获取当前系统的网卡信息:ipconfig系统返回:PSC:\Users\liuyue\h2102-a\videopro&... 极速进化,光速转录,C++版本人工智能实时语音转文字(字幕/语音识别)Whisper.cpp实践 https://v3u.cn/a_id_308 Thu, 04 May 2023 00:00:00 +0000 https://v3u.cn/a_id_308 业界良心OpenAI开源的Whisper模型是开源语音转文字领域的执牛耳者,白璧微瑕之处在于无法通过苹果M芯片优化转录效率,Whisper.cpp则是Whisper模型的C/C++移植版本,它具有无依赖项、内存使用量低等特点,重要的是增加了CoreML支持,完美适配苹果M系列芯片。Whisper.cpp的张量运算符针对苹果M芯片的CPU进行了大量优化,根据计算大小,使用ArmNeonSIMDinstrisics或CBLASAccelerate框架例程,后者对于更大的尺寸特别有效,因为Accelerate框架可以使用苹果M系列芯片中提供的专用AMX协处理器。配置Whisper.cpp老规矩,运行... 人工智能AI图像风格迁移(StyleTransfer),基于双层ControlNet(Python3.10) https://v3u.cn/a_id_307 Fri, 21 Apr 2023 00:00:00 +0000 https://v3u.cn/a_id_307 图像风格迁移(StyleTransfer)是一种计算机视觉技术,旨在将一幅图像的风格应用到另一幅图像上,从而生成一幅新图像,该新图像结合了两幅原始图像的特点,目的是达到一种风格化叠加的效果,本次我们使用Stable-Diffusion结合ControlNet来实现图像风格迁移效果。安装ControlNet插件首先确保本地已经安装并且配置好了Stable-Diffusion-Webui服务,关于Stable-Diffusion-Webui,请参见:人工智能,丹青圣手,全平台(原生/Docker)构建Stable-Diffusion-Webui的AI绘画库教程(Python3.10/Pytorch... 任务拆解,悠然自得,自动版本的ChatGPT,AutoGPT自动人工智能AI任务实践(Python3.10) https://v3u.cn/a_id_306 Wed, 19 Apr 2023 00:00:00 +0000 https://v3u.cn/a_id_306 当我们使用ChatGPT完成某些工作的时候,往往需要多轮对话,比如让ChatGPT分析、翻译、总结一篇网上的文章或者文档,再将总结的结果以文本的形式存储在本地。过程中免不了要和ChatGPT“折冲樽俎”一番,事实上,这个“交涉”的过程也可以自动化,AutoGPT可以帮助我们自动拆解任务,没错,程序能做到的事情,人类绝不亲力亲为。我们唯一需要做的,就是告诉AutoGPT一个任务目标,AutoGPT会自动根据任务目标将任务拆解成一个个的小任务,并且逐个完成,简单且高效。配置AutoGPT先确保本地环境安装好了Python3.10.9。接着运行Git命令拉取项目:gitclonehttps://gi... 人工智能AI库Spleeter免费人声和背景音乐分离实践(Python3.10) https://v3u.cn/a_id_305 Mon, 17 Apr 2023 00:00:00 +0000 https://v3u.cn/a_id_305 在视频剪辑工作中,假设我们拿到了一段电影或者电视剧素材,如果直接在剪辑的视频中播放可能会遭遇版权问题,大部分情况需要分离其中的人声和背景音乐,随后替换背景音乐进行二次创作,人工智能AI库Spleeter可以帮我们完成大部分素材的人声和背景音乐的分离流程。Spleeter的模型源来自最大的音乐网站Deezer,底层基于深度学习框架Tensorflow,它可以通过模型识别出素材中的背景音乐素材,从而判断出哪些是背景音乐,哪些是外部人声。Spleeter安装在终端执行运行pip命令:pip3installspleeter--user安装成功之后,输入命令,检查Spleeter安装路径:pipshow... 颜值即正义,献礼就业季,打造多颜色多字体双飞翼布局技术简历模板(Resume) https://v3u.cn/a_id_304 Fri, 14 Apr 2023 00:00:00 +0000 https://v3u.cn/a_id_304 一年好景君须记,最是橙黄橘绿时。金三银四,秣马厉兵,没有一个好看的简历模板怎么行?无论是网上随便下载还是花钱买,都是一律千篇的老式模版,平平无奇,味同嚼蜡,没错,蜡都要沿着嘴角流下来了。本次我们基于Html和Css3打造一款独立实现的高颜值简历模板,就像看岛国的爱情片儿一样,也许你会找自己喜欢的主题和类型,但最终,还是要看脸。身无彩蝶双飞翼传统简历基本上是由上自下的单体布局方案,本次我们采用双飞翼布局,让简历内容双向填充主体容器,如此可以让简历显得更加丰满,打印的时候也更加节约纸:<divclass="resumedefault">&lt... 事实胜于雄辩,苹果MacOs能不能玩儿机器/深度(ml/dl)学习(Python3.10/Tensorflow2) https://v3u.cn/a_id_303 Tue, 11 Apr 2023 00:00:00 +0000 https://v3u.cn/a_id_303 坊间有传MacOs系统不适合机器(ml)学习和深度(dl)学习,这是板上钉钉的刻板印象,就好像有人说女生不适合编程一样的离谱。现而今,无论是Pytorch框架的MPS模式,还是最新的Tensorflow2框架,都已经可以在M1/M2芯片的Mac系统中毫无桎梏地使用GPU显卡设备,本次我们来分享如何在苹果MacOS系统上安装和配置Tensorflow2框架(CPU/GPU)。Tensorflow2深度学习环境安装和配置首先并不需要任何虚拟环境,直接本地安装Python3.10即可,请参见:一网成擒全端涵盖,在不同架构(Intelx86/Applem1silicon)不同开发平台(Win10/Wi... 某公司技术经理媚上欺下,打工人应怼尽怼,嘤其鸣兮,求其友声! https://v3u.cn/a_id_302 Thu, 06 Apr 2023 00:00:00 +0000 https://v3u.cn/a_id_302 最近的事情大家都晓得了,某公司技术经理媚上欺下,打工人应怼尽怼,不亦快哉!不亦壮哉!所谓媚上者必欺下!古人诚不我欺!技术经理者,公然在聊天群里大玩职场PUA,气焰嚣张,有恃无恐,最终引发众怒,嘿嘿,技术经理,团队领导,原来团队领导这四个字是这么用的:奴媚显达、构陷下属,人文具损、逢迎上意、傲然下欺,装腔作势、极尽投机,父他人之父、慷他人之慨……如此者,可谓“团队领导”也。功其利也“有用吗”?中国的所谓“传统文化”——除了仁义礼智信、除了经史子集、除了铮铮风骨,其实还有很多别的东西,被大家或有意或无意地忽视了:比如功利实用、趋炎附势、以奸治善、官本位和潜规则的“传统”……在某种程度上,传统文化这... 成为钢铁侠!只需一块RTX3090,微软开源贾维斯(J.A.R.V.I.S.)人工智能AI助理系统 https://v3u.cn/a_id_301 Thu, 06 Apr 2023 00:00:00 +0000 https://v3u.cn/a_id_301 梦想照进现实,微软果然不愧是微软,开源了贾维斯(J.A.R.V.I.S.)人工智能助理系统,贾维斯(jarvis)全称为JustARatherVeryIntelligentSystem(只是一个相当聪明的人工智能系统),它可以帮助钢铁侠托尼斯塔克完成各种任务和挑战,包括控制和管理托尼的机甲装备,提供实时情报和数据分析,帮助托尼做出决策等等。如今,我们也可以拥有自己的贾维斯人工智能助理,成本仅仅是一块RTX3090显卡。贾维斯(Jarvis)的环境配置一般情况下,深度学习领域相对主流的入门级别显卡是2070或者3070,而3090可以算是消费级深度学习显卡的天花板了:再往上走就是工业级别的A系列... 读破万卷,神交古人,突破ChatGPT4096的Token限制,llama_index建立自己的垂直领域资料人工智能助理 https://v3u.cn/a_id_300 Tue, 04 Apr 2023 00:00:00 +0000 https://v3u.cn/a_id_300 ChatGPT的泛用性极高,上知天文,下通地理,参考古今,博稽中外,几乎无所不知,无所不晓。但如果涉及垂直领域的专业知识点,ChatGPT难免也会有语焉不详,闪烁其词的毛病,本次我们将特定领域的学习材料“喂”给ChatGPT,让它“学习”后再来回答专业问题。专业领域语料问题所谓专业领域语料问题,可以理解为特定范围内的知识图谱,也就是给GPT提供前置的检索维度,举个例子,大家都读过鲁迅的名篇《从百草园到三味书屋》,文章中涉及一个“美女蛇”的典故,假设我们没有给GPT设置一个特定范围,直接问“美女蛇”的相关问题:一望而知,ChatGPT对于“美女蛇”典故的理解出现了信息偏差问题,它以为“美女蛇”指... 好饭不怕晚,Google基于人工智能AI大语言对话模型Bard测试和API调用(Python3.10) https://v3u.cn/a_id_299 Fri, 31 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_299 谷歌(Google)作为开源过著名深度学习框架Tensorflow的超级大厂,是人工智能领域一股不可忽视的中坚力量,旗下新产品Bard已经公布测试了一段时间,毁誉参半,很多人把Google的Bard和OpenAI的ChatGPT进行对比,GoogleBard在ChatGPT面前似乎有些技不如人。事实上,GoogleBard并非对标ChatGPT的产品,Bard是基于LaMDA模型对话而进行构建的,Bard旨在构建一个对话式的AI系统,使其能够更好地理解人类语言,并且具备进行多轮对话的能力。而GPT的目标是生成自然语言文本。在特征数据层面,Bard使用了像Gmail、Meet等Google社交产... 构建基于深度学习神经网络协同过滤模型(NCF)的视频推荐系统(Python3.10/Tensorflow2.11) https://v3u.cn/a_id_298 Thu, 30 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_298 毋庸讳言,和传统架构(BS开发/CS开发)相比,人工智能技术确实有一定的基础门槛,它注定不是大众化,普适化的东西。但也不能否认,人工智能技术也具备像传统架构一样“套路化”的流程,也就是说,我们大可不必自己手动构建基于神经网络的机器学习系统,直接使用深度学习框架反而更加简单,深度学习可以帮助我们自动地从原始数据中提取特征,不需要手动选择和提取特征。之前我们手动构建了一个小型的神经网络,解决了机器学习的分类问题,本次我们利用深度学习框架Tensorflow2.11构建一套基于神经网络协同过滤模型(NCF)的视频推荐系统,解决预测问题,完成一个真正可以落地的项目。推荐系统发展历程“小伙子,要光盘吗?... 动手造轮子自己实现人工智能神经网络(ANN),解决鸢尾花分类问题Golang1.18实现 https://v3u.cn/a_id_297 Tue, 28 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_297 人工智能神经网络(ArtificialNeuralNetwork,又称为ANN)是一种由人工神经元组成的网络结构,神经网络结构是所有机器学习的基本结构,换句话说,无论是深度学习还是强化学习都是基于神经网络结构进行构建。关于人工神经元,请参见:人工智能机器学习底层原理剖析,人造神经元,您一定能看懂,通俗解释把AI“黑话”转化为“白话文”。机器学习可以解决什么问题机器学习可以帮助我们解决两大类问题:回归问题和分类问题,它们的主要区别在于输出变量的类型和预测目标的不同。在回归问题中,输出变量是连续值,预测目标是预测一个数值。例如,预测房价、预测销售额等都是回归问题。通常使用回归模型,如线性回归、决策... 人工智能机器学习底层原理剖析,人造神经元,您一定能看懂,通俗解释把AI“黑话”转化为“白话文” https://v3u.cn/a_id_296 Mon, 27 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_296 按照固有思维方式,人们总以为人工智能是一个莫测高深的行业,这个行业的人都是高智商人群,无论是写文章还是和人讲话,总是讳莫如深,接着就是蹦出一些“高级”词汇,什么“神经网络”,什么“卷积神经”之类,教人半懂不懂的。尤其ChatGPT的风靡一时,更加“神话”了这个行业,用鲁迅先生形容诸葛武侯的话来讲:“多智而近妖”。事实上,根据二八定理,和别的行业一样,人工智能行业内真正顶尖的天才也就是20%,他们具备真正的行业颠覆能力,可以搞出像ChatGPT这种“工业革命”级别的产品,而剩下的80%也不过就是普通人,每天的工作和我们这些人一样,枯燥且乏味,而之所以会出现类似“行业壁垒”的现象,是因为这个行业的... 本地推理,单机运行,MacM1芯片系统基于大语言模型C++版本LLaMA部署“本地版”的ChatGPT https://v3u.cn/a_id_295 Fri, 24 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_295 OpenAI公司基于GPT模型的ChatGPT风光无两,眼看它起朱楼,眼看它宴宾客,FaceBook终于坐不住了,发布了同样基于LLM的人工智能大语言模型LLaMA,号称包含70亿、130亿、330亿和650亿这4种参数规模的模型,参数是指神经网络中的权重和偏置等可调整的变量,用于训练和优化神经网络的性能,70亿意味着神经网络中有70亿个参数,由此类推。在一些大型神经网络中,每个参数需要使用32位或64位浮点数进行存储,这意味着每个参数需要占用4字节或8字节的存储空间。因此,对于包含70亿个参数的神经网络,其存储空间将分别为8GB或12GB。此外,神经网络的大小不仅取决于参数的数量,还取决于神... 暗夜发光,独自闪耀,盘点网页暗黑模式(DarkMode)下的特效和动效,CSS3实现 https://v3u.cn/a_id_294 Thu, 23 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_294 众所周知,网页的暗黑模式可以减少屏幕反射和蓝光辐射,减少眼睛的疲劳感,特别是在夜间使用时更为明显。其实暗黑模式也给霓虹灯效应(NeonEffect)提供了发挥的环境。霓虹灯效应是一种视觉效果,其特点是在深色背景上使用鲜艳的颜色来产生强烈的视觉冲击。这种效应通常用于设计海报、广告、标志和网页等。霓虹灯效应的作用在于吸引人们的注意力和增强品牌形象的辨识度,因为这种效果让人印象深刻且易于记忆,本次我们盘点适合暗色模式的网页特效,还是喜欢,暗夜的你。发光特效暗黑模式下最炫酷的效果无外乎发光,基本上页面元素的发光需要依赖box-shadow属性:logo{width:150px;height:150px... 孔乙己文学,满街长衫,为谁而穿?解构孔乙己文学 https://v3u.cn/a_id_293 Sun, 19 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_293 鲁迅先生创作《孔乙己》的背景是20世纪初期的中国社会。那时,中国正处于民国的初期,社会动荡不安,人民生活贫困。在这个背景下,鲁迅开始写作并发表了一系列揭露社会黑暗面的作品。《孔乙己》是其中之一,它讲述了一个被社会边缘化的小人物孔乙己的故事,反映了社会的不公和人性的悲剧。这篇小说具有深刻的社会意义和人道主义精神,成为了中国现代文学的经典之作。鲁迅先生是新文化运动的代表人物之一。新文化运动是中国现代文化史上的一次重要运动,它发生于20世纪初期的中国,旨在推动中国社会的现代化和文化的更新。鲁迅在新文化运动中扮演了重要角色,他的一系列文学作品,如《孔乙己》、《狂人日记》、《阿Q正传》、《药》等等,揭示... 文心一言,通营销之学,成一家之言,百度人工智能AI大数据模型文心一言Python3.10接入 https://v3u.cn/a_id_292 Fri, 17 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_292 “文心”取自《文心雕龙》一书的开篇,作者刘勰在书中引述了一个古代典故:春秋时期,鲁国有一位名叫孔文子的大夫,他在学问上非常有造诣,但是他的儿子却不学无术,孔文子非常痛心。一天,孔文子在山上遇到了一位神仙,神仙告诉他:“你的儿子之所以不学无术,是因为你没有给他灌输文心,让他懂得文学的魅力和意义。”孔文子听后深受启发,回家后开始给儿子灌输文学知识,儿子也逐渐对学问产生了兴趣,最终成为了一位有学问的人。因此,刘勰在书中将“文心”解释为“灌输文学知识的心灵”之意。百度以“文心”命名自己的AI产品线,可见其对自己的中文处理能力是极为自信的,ERNIE3.0对标ChatGPT3.5/4.0,ERNIE-V... 顺应潮流,解放双手,让ChatGPT直接编写可融入业务可运行的程序代码(Python3.10实现) https://v3u.cn/a_id_291 Thu, 16 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_291 众所周知,ChatGPT可以帮助研发人员编写或者Debug程序代码,但是在执行过程中,ChatGPT会将程序代码的一些相关文字解释和代码段混合着返回,如此,研发人员还需要自己进行编辑和粘贴操作,效率上差强人意,本次我们试图将ChatGPT直接嵌入到代码业务中,让ChatGPT生成可以直接运行的代码。ChatGPT的主观回答问题首先,我们向ChatGPT提出一个简单的代码需求:可以看到,就像上文所描述的那样,ChatGPT会将文字描述和代码片段混合着返回,其实对于真正的需求者来说,文字描述本身是不必要的,因为如果提问者不知道什么是布隆过滤器,也就不会提出布隆过滤器相关的代码需求。再看ChatGP... 性能的极致,Rust的加持,Zed.dev编辑器快速搭建Python3.10开发环境 https://v3u.cn/a_id_290 Tue, 14 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_290 快就一个字,甚至比以快著称于世的Sublime4编辑器都快,这就是Zed.dev编辑器。其底层由Rust编写,比基于Electron技术微软开源的编辑器VSCode快一倍有余,性能上无出其右,同时支持多人编辑代码。安装和配置Zed.devZed.dev编辑器还在灰度测试阶段,暂时只释出了Mac版本,在Zed.dev官网下载,安装成功后,进入Zed.dev编辑器,使用组合键Command+,调出编辑器的配置文件://Zedsettings////ForinformationonhowtoconfigureZed,seetheZed//documentation:https://zed.dev/d... 笔精墨妙,妙手丹青,微软开源可视化版本的ChatGPT:Visual ChatGPT,人工智能AI聊天发图片,Python3.10实现 https://v3u.cn/a_id_288 Mon, 13 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_288 说时迟那时快,微软第一时间发布开源库VisualChatGPT,把ChatGPT的人工智能AI能力和StableDiffusion以及ControlNet进行了整合。常常被互联网人挂在嘴边的“赋能”一词,几乎已经变成了笑话,但这回,微软玩了一次真真正正的AI“赋能”,彻底打通了人工智能“闭环”。配置VisualChatGPT环境老规矩,运行Git命令拉取VisualChatGPT项目:gitclonehttps://github.com/microsoft/visual-chatgpt.git进入项目目录:cdvisual-chatgpt确保本机的Python版本不低于Python3.10.9... 神隐的航班,扑朔的谜团,马航MH370失联事件始末 https://v3u.cn/a_id_287 Fri, 10 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_287 Malaysia370,ContactHoChiMinh120,decimal9这里是马来西亚航空370,联系胡志明塔台120,编码decimal9。Goodnight.晚安。Uh,Goodnight,Malaysia370.哦,晚安,马来西亚航空370。晚安,这是马航MH370航班留给这个世界的最后一句话,自此之后,马航MH370航班仿若隐入云烟,杳如黄鹤。直至九年后的今天,依然没有人能够说得清,在那一天的夜空之下,马航MH370航班到底发生了什么,为什么音信全无,为什么调查无果,不知道,没有人知道,亦或者,永远无解。神隐的红眼航班公元2014年3月8日凌晨0时41分,马航MH370航班从马... 逐句回答,流式返回,ChatGPT采用的Server-sent events后端实时推送协议Python3.10实现,基于Tornado6.1 https://v3u.cn/a_id_286 Wed, 08 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_286 善于观察的朋友一定会敏锐地发现ChatGPT网页端是逐句给出问题答案的,同样,ChatGPT后台Api接口请求中,如果将Stream参数设置为True后,Api接口也可以实现和ChatGPT网页端一样的流式返回,进而更快地给到前端用户反馈,同时也可以缓解连接超时的问题。Server-sentevents(SSE)是一种用于实现服务器到客户端的单向通信的协议。使用SSE,服务器可以向客户端推送实时数据,而无需客户端发出请求。SSE建立在HTTP协议上,使用基于文本的数据格式(通常是JSON)进行通信。客户端通过创建一个EventSource对象来与服务器建立连接,然后可以监听服务器发送的事件。服... 口播神器,基于Edge,微软TTS(text-to-speech)文字转语音免费开源库edge-tts语音合成实践(Python3.10) https://v3u.cn/a_id_285 Tue, 07 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_285 不能否认,微软Azure在TTS(text-to-speech文字转语音)这个人工智能细分领域的影响力是统治级的,一如ChatGPT在NLP领域的随心所欲,予取予求。君不见几乎所有的抖音营销号口播均采用微软的语音合成技术,其影响力由此可见一斑,仅有的白璧微瑕之处就是价格略高,虽然国内也可以使用科大讯飞语音合成进行平替,但我们只想要最好的那一个,本次我们使用免费的开源库edge-tts来实现文本转语音操作,薅微软edge的羊毛。TTS文本转语音基础使用方式首先安装edge-tts库:pip3installedge-tts安装成功后,直接在终端运行edge-tts命令:edge-tts显示帮助菜单... 重新定义性价比!人工智能AI聊天ChatGPT新接口模型gpt-3.5-turbo闪电更新,成本降90%,Python3.10接入 https://v3u.cn/a_id_284 Mon, 06 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_284 北国春迟,春寒料峭略带阴霾,但ChatGPT新接口模型gpt-3.5-turbo的更新为我们带来了一丝暖意,使用成本更加亲民,比高端产品ChatGPTPlus更实惠也更方便,毕竟ChatGPTPlus依然是通过网页端来输出,Api接口是以token的数量来计算价格的,0.002刀每1000个token,token可以理解为字数,说白了就是每1000个字合0.01381人民币,以ChatGPT无与伦比的产品力而言,如此低的使用成本让所有市面上其他所有类ChatGPT产品都黯然失光。本次让我们使用Python3.10光速接入ChatGPTAPI的新模型gpt-3.5-turbo。OpenAI库的S... 人工智能,丹青圣手,全平台(原生/Docker)构建Stable-Diffusion-Webui的AI绘画库教程(Python3.10/Pytorch1.13.0) https://v3u.cn/a_id_283 Fri, 03 Mar 2023 00:00:00 +0000 https://v3u.cn/a_id_283 世间无限丹青手,遇上AI画不成。最近一段时间,可能所有人类画师都得发出一句“既生瑜,何生亮”的感叹,因为AI绘画通用算法StableDiffusion已然超神,无需美术基础,也不用经年累月的刻苦练习,只需要一台电脑,人人都可以是丹青圣手。本次我们全平台构建基于Stable-Diffusion算法的Webui可视化图形界面服务,基于本地模型来进行AI绘画操作。本地安装Stable-Diffusion-Webui如果系统之前安装过Python3.10或者使用过Pytorch深度学习框架,那么推荐直接本地安装Stable-Diffusion-Webui,因为Stable-Diffusion的核心依赖... 登峰造极,师出造化,Pytorch人工智能AI图像增强框架ControlNet绘画实践,基于Python3.10 https://v3u.cn/a_id_282 Sun, 26 Feb 2023 00:00:00 +0000 https://v3u.cn/a_id_282 人工智能太疯狂,传统劳动力和内容创作平台被AI枪毙,弃尸尘埃。并非空穴来风,也不是危言耸听,人工智能AI图像增强框架ControlNet正在疯狂地改写绘画艺术的发展进程,你问我绘画行业未来的样子?我只好指着ControlNet的方向。本次我们在M1/M2芯片的Mac系统下,体验人工智能登峰造极的绘画艺术。本地安装和配置ControlNetControlNet在HuggingFace训练平台上也有体验版,请参见:https://huggingface.co/spaces/hysts/ControlNet,但由于公共平台算力有限,同时输入参数也受到平台的限制,一次只能训练一张图片,不能让人开怀畅饮... 玫瑰花变蚊子血,自动化无痕浏览器对比测试,新贵PlayWright Vs 老牌Selenium,基于Python3.10 https://v3u.cn/a_id_281 Fri, 24 Feb 2023 00:00:00 +0000 https://v3u.cn/a_id_281 也许每一个男子全都有过这样的两个女人,至少两个。娶了红玫瑰,久而久之,红的变了墙上的一抹蚊子血,白的还是床前明月光;娶了白玫瑰,白的便是衣服上沾的一粒饭黏子,红的却是心口上一颗朱砂痣。--张爱玲《红玫瑰与白玫瑰》Selenium一直都是Python开源自动化浏览器工具的王者,但这两年微软开源的PlayWright异军突起,后来者居上,隐隐然有撼动Selenium江湖地位之势,本次我们来对比PlayWright与Selenium之间的差异,看看曾经的玫瑰花Selenium是否会变成蚊子血。PlayWright的安装和使用PlayWright是由业界大佬微软(Microsoft)开源的端到端Web... 前端已死?全栈当立?取法于中,仅得其下。 https://v3u.cn/a_id_280 Tue, 21 Feb 2023 00:00:00 +0000 https://v3u.cn/a_id_280 开篇明义,前端已死?根本就是扯淡。前端技术精微渊深,驳杂宽广,除了基础的HTML、CSS和JavaScript技术外,前端技术还涉及到许多其他相关技术和工具,比如前端框架、UI库、自动化构建工具、代码管理工具等等。这些技术并没有死,反而生态圈愈发健壮,但为什么前端已死的论调甚嚣尘上?前端市场萎靡前端技术并未消亡,但前端工程师的坑位却逐年减少,为什么?是由于竞争加剧、市场饱和、经济衰退等多种因素导致的。每年都有海量的应届生进入市场,但是岗位就那么多,三年经济下行,不是短时间能够缓过来的,所以前端岗的HeadCount比往年少也是合乎逻辑的,再者说,所谓出来混,迟早都要还,从2015年开始,前端岗... 加密,各种加密,耙梳加密算法(Encryption)种类以及开发场景中的运用(Python3.10) https://v3u.cn/a_id_279 Mon, 20 Feb 2023 00:00:00 +0000 https://v3u.cn/a_id_279 不用说火爆一时,全网热议的Web3.0区块链技术,也不必说诸如微信支付、支付宝支付等人们几乎每天都要使用的线上支付业务,单是一个简简单单的注册/登录功能,也和加密技术脱不了干系,本次我们耙梳各种经典的加密算法,试图描摹加密算法在开发场景中的运用技巧。可逆加密算法(对称加密)加密算法是一种将原始数据转换为加密数据的方法。根据加密算法的不同特征,可以将其分为可逆加密算法和不可逆加密算法。可逆加密算法也称为对称加密算法,其加密和解密过程使用相同的密钥。在这种算法中,加密数据可以通过解密算法还原为原始数据。这种算法通常用于保护数据的机密性,例如保护存储在计算机硬盘上的文件或网络传输的数据。说白了,就是... 躬身入局,干货分享,2023年春招后端技术岗(Python)面试实战教程,Offer今始为君发 https://v3u.cn/a_id_278 Thu, 16 Feb 2023 00:00:00 +0000 https://v3u.cn/a_id_278 早春二月,研发倍忙,杂花生树,群鸥竟飞。为什么?因为春季招聘,无论是应届生,还是职场老鸟,都在摩拳擦掌,秣马厉兵,准备在面试场上一较身手,既分高下,也决Offer,本次我们打响春招第一炮,躬身入局,让2023年的第一个Offer来的比以往快那么一点点。打开某垂直招聘平台,寻找2023年的第一个猎物:投递简历之后,如约进行面试。笔试题正规公司的面试一般都是笔试先行,笔试题的作用非常务实,就是直接筛掉一批人,提高面试效率,需要注意的是,在这个环节中,往往无法用搜索引擎进行检索,所以,你的大脑就是Python解释器,你的笔将会代替程序的输出:#实现字符串反转,以逗号作为切割符,切割的子串以单词作为单... 影片自由,丝滑流畅,Docker容器基于WebDav协议通过Alist挂载(百度网盘/阿里云盘)Python3.10接入 https://v3u.cn/a_id_277 Tue, 14 Feb 2023 00:00:00 +0000 https://v3u.cn/a_id_277 使用过NAS(NetworkAttachedStorage)的朋友都知道,它可以通过局域网将本地硬盘转换为局域网内的“网盘”,简单理解就是搭建自己的“私有云”,但是硬件和网络成本都太高了,有点可望而不可及的意思。Alist开源库则可以满足我们,它能将公共网盘反过来变成一种联网的本地硬盘,使用Web页面来统一挂载和管理,网盘类型包含但不限于:百度网盘、阿里云盘、迅雷网盘等等。Alist挂载网盘的另外一个好处是可以基于WebDav协议直接播放网盘资源,虽然说网盘也支持在线播放功能,但是代价就是得充会员,没错,这符合逻辑,网盘主机厂也得盈利,但Alist技术可以帮助我们曲线救国,节省一笔开支。此外,... 吾剑未尝不利,国内Azure平替,科大讯飞人工智能免费AI语音合成(TTS)服务Python3.10接入 https://v3u.cn/a_id_276 Wed, 08 Feb 2023 00:00:00 +0000 https://v3u.cn/a_id_276 微软Azure平台的语音合成(TTS)技术确实神乎其技,这一点在之前的一篇:含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入),已经做过详细介绍,然则Azure平台需要信用卡验证,有一定门槛,对国内用户不太友好,放眼神州,科大讯飞的讯飞开放平台也有语音合成服务接口,可以通过语音合成流式接口将文字信息转化为声音信息。创建语音应用首先注册讯飞开放平台,随后创建语音合成应用:https://console.xfyun.cn/app/myapp创建成功后,可以获取5个小时的免费语音合成时间,同时获取应用的appid、秘钥和APIKey:该语音合成能... 基于NOSTR协议的“公有制”版本的Twitter,去中心化社交软件Damus用后感,一个极端走向另一个极端 https://v3u.cn/a_id_275 Sat, 04 Feb 2023 00:00:00 +0000 https://v3u.cn/a_id_275 最近,一个幽灵,Web3的幽灵,在网络游荡,它叫Damus,这玩意诠释了什么叫做病毒式营销,滑稽的是,一个Web3产品却在Web2的产品链上疯狂传销,各方大佬纷纷为其背书,到底发生了什么?Damus的葫芦里,卖的是什么药?注册和简单实用很少有什么产品在用户注册环节会有什么噱头,但Damus确实出其不意,它抛开了传统的Web3产品“区块链钱包先行”的策略,直接一键式生成秘钥对,没有了任何门槛,即使是对Web3完全没有任何概念的普通人,也可以直接上手使用,这里我们使用Damus的网页版,直接访问https://snort.social/login:点击页面中的GenerateKey按钮即可注册。注... 千姿百态,瞬息万变,Win11系统NeoVim打造全能/全栈编辑器(前端/Css/Js/Vue/Golang/Ruby/ChatGpt) https://v3u.cn/a_id_274 Wed, 01 Feb 2023 00:00:00 +0000 https://v3u.cn/a_id_274 我曾经多次向人推荐Vim,其热情程度有些类似现在卖保险的,有的时候,人们会因为一些弥足珍贵的美好暗暗渴望一个巨大的负面,比如因为想重温手动挡的快乐而渴望买下一辆二十万公里的老爷车,比如因为所谓完美的音质而舍不得一个老旧的有线耳机,比如因为一个铜炉火锅而期待北京那漫长而寒冷的冬天。也许有的人会因为Vim而放弃169刀的JetBrains全家桶,没错,Vim的快乐,就是手动挡的快乐,懂得自然懂,不懂的永远也不会懂,但如果没有用Vim敲过代码,那么绝对枉生于有Vim的世界。之前一篇:上古神兵,先天至宝,Win11平台安装和配置NeoVim0.8.2编辑器搭建Python3开发环境(2023最新攻略)... 上古神兵,先天至宝,Win11平台安装和配置NeoVim0.8.2编辑器搭建Python3开发环境(2023最新攻略) https://v3u.cn/a_id_273 Sat, 28 Jan 2023 00:00:00 +0000 https://v3u.cn/a_id_273 毫无疑问,我们生活在编辑器的最好年代,Vim是仅在Vi之下的神级编辑器,而脱胎于Vim的NeoVim则是这个时代最好的编辑器,没有之一。异步支持、更好的内存管理、更快的渲染速度、更多的编辑命令,是大神ThiagodeArruda对开发者们最好的技术馈赠。之前一篇:Win10系统下安装编辑器之神(TheGodofEditor)Vim并且构建Python生态开发环境(2020年最新攻略),我们已经领略了Vim的魅力,但时代不同了,繁琐的配置,差强人意的性能,很难不让人把目光投向NeoVim,正所谓江山代有人才出,一代更比一代强。安装配置首先去Github项目官网下载最新稳定版0.8.2:https... 闻其声而知雅意,M1 Mac基于PyTorch(mps/cpu/cuda)的人工智能AI本地语音识别库Whisper(Python3.10) https://v3u.cn/a_id_272 Tue, 17 Jan 2023 00:00:00 +0000 https://v3u.cn/a_id_272 前文回溯,之前一篇:含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入),利用AI技术将文本合成语音,现在反过来,利用开源库Whisper再将语音转回文字,所谓闻其声而知雅意。Whisper是一个开源的语音识别库,它是由FacebookAIResearch(FAIR)开发的,支持多种语言的语音识别。它使用了双向循环神经网络(bi-directionalRNNs)来识别语音并将其转换为文本。Whisper支持自定义模型,可以用于实现在线语音识别,并且具有高级的语音识别功能,支持语音识别中的语音活动检测和语音识别中的语音转文本。它是使用PyTor... 云间玉兔,自出机抒,从零开始制作Web插件网页特效小兔子组件(小挂件widget),基于原生CSS/NPM https://v3u.cn/a_id_271 Thu, 12 Jan 2023 00:00:00 +0000 https://v3u.cn/a_id_271 著意登楼瞻玉兔,何人张幕遮银阙?又到了一年一度的网页小挂件环节,以往我们都是集成别人开源的组件,但所谓熟读唐诗三百首,不会做诗也会吟,熟读了别人的东西,做几首打油诗也是可以的,但若不能自出机抒,却也成不了大事,所以本次我们从零开始制作属于自己的网页小挂件,博君一晒。玉兔主题元素绘制成本最低的绘制方式是使用纯CSS,不依赖任何图片和三方库,首先创建绘制容器:<divid="rabbit_box"></div>由于是小挂件,我们首先将容器固定在右下角:#rabbit_box{position:fixed;bottom:va... 防微杜渐,未雨绸缪,百度网盘(百度云盘)接口API自动化备份上传以及开源发布,基于Golang1.18 https://v3u.cn/a_id_270 Wed, 11 Jan 2023 00:00:00 +0000 https://v3u.cn/a_id_270 奉行长期主义的开发者都有一个共识:对于服务器来说,数据备份非常重要,因为服务器上的数据通常是无价的,如果丢失了这些数据,可能会导致严重的后果,伴随云时代的发展,备份技术也让千行百业看到了其“云基因”的成长与进化,即基于云存储的云备份。本次我们使用Golang1.18完成百度网盘(百度云盘)接口API自动化备份上传功能,以及演示如何将该模块进行开源发布。百度网盘API接入授权如果希望golang服务可以访问并且上传用户的百度网盘,则需要经过用户同意,这个流程被称为“授权”。百度网盘开放平台基于OAuth2.0接入授权。OAuth2.0是一种授权协议,通过该协议用户可以授权开发者应用访问个人网盘信... 物以类聚人以群分,通过GensimLda文本聚类算法构建人工智能个性化推荐系统(Python3.10) https://v3u.cn/a_id_269 Mon, 09 Jan 2023 00:00:00 +0000 https://v3u.cn/a_id_269 众所周知,个性化推荐系统能够根据用户的兴趣、偏好等信息向用户推荐相关内容,使得用户更感兴趣,从而提升用户体验,提高用户粘度,之前我们曾经使用协同过滤算法构建过个性化推荐系统,但基于显式反馈的算法就会有一定的局限性,本次我们使用无监督的Lda文本聚类方式来构建文本的个性化推荐系统。推荐算法:协同过滤/Lda聚类我们知道,协同过滤算法是一种基于用户的历史行为来推荐物品的算法。协同过滤算法利用用户之间的相似性来推荐物品,如果两个用户对某些物品的评分相似,则协同过滤算法会将这两个用户视为相似的,并向其中一个用户推荐另一个用户喜欢的物品。说白了,它基于用户的显式反馈,什么是显式反馈?举个例子,本如本篇文... 旧酒换新瓶,新版M1/M2芯片Macos系统(Ventura)安装古早版本Python2.7(Python2.x) https://v3u.cn/a_id_268 Wed, 04 Jan 2023 00:00:00 +0000 https://v3u.cn/a_id_268 向下兼容特性是软件开发系统的一个重要指标,它是指一个新的系统或者软件能够与旧的系统或软件兼容并正常运行。这意味着旧系统或软件可以在新系统或软件中使用,而不会出现问题。向下兼容对于提高软件或系统的可用性非常重要,因为它允许用户在不更换旧系统或软件的情况下使用新系统或软件。我们知道MacOS系统从Monterey12.3版本起就移除了系统内置的Python2,更不消说最新的Ventura13.1了,但有时候我们依然需要古早版本的Python2.x来维护或者更新一些“祖传项目”,不得不承认,这类低版本的“祖传项目”在各种中大型企业内可谓是层出不穷,那么在最新的Ventura13.1系统中,就得重新安... 乾坤大挪移,如何将同步阻塞(sync)三方库包转换为异步非阻塞(async)模式?Python3.10实现。 https://v3u.cn/a_id_267 Fri, 30 Dec 2022 00:00:00 +0000 https://v3u.cn/a_id_267 众所周知,异步并发编程可以帮助程序更好地处理阻塞操作,比如网络IO操作或文件IO操作,避免因等待这些操作完成而导致程序卡住的情况。云存储文件传输场景正好包含网络IO操作和文件IO操作,比如业内相对著名的七牛云存储,官方sdk的默认阻塞传输模式虽然差强人意,但未免有些循规蹈矩,不够锐意创新。在全球同性交友网站Github上找了一圈,也没有找到异步版本,那么本次我们来自己动手将同步阻塞版本改造为异步非阻塞版本,并上传至Python官方库。异步改造首先参见七牛云官方接口文档:https://developer.qiniu.com/kodo,新建qiniu_async.py文件:#@Author:Li... Generator(生成器),入门初基,Coroutine(原生协程),登峰造极,Python3.10并发异步编程async底层实现 https://v3u.cn/a_id_266 Tue, 27 Dec 2022 00:00:00 +0000 https://v3u.cn/a_id_266 普遍意义上讲,生成器是一种特殊的迭代器,它可以在执行过程中暂停并在恢复执行时保留它的状态。而协程,则可以让一个函数在执行过程中暂停并在恢复执行时保留它的状态,在Python3.10中,原生协程的实现手段,就是生成器,或者说的更具体一些:协程就是一种特殊的生成器,而生成器,就是协程的入门心法。协程底层实现我们知道,Python3.10中可以使用async和await关键字来实现原生协程函数的定义和调度,但其实,我们也可以利用生成器达到协程的效果,生成器函数和普通函数的区别在于,生成器函数使用yield语句来暂停执行并返回结果。例如,下面是一个使用生成器函数实现的简单协程:defmy_corout... 周而复始,往复循环,递归、尾递归算法与无限极层级结构的探究和使用(Golang1.18) https://v3u.cn/a_id_265 Wed, 21 Dec 2022 00:00:00 +0000 https://v3u.cn/a_id_265 所有人都听过这样一个歌谣:从前有座山,山里有座庙,庙里有个和尚在讲故事:从前有座山。。。。,虽然这个歌谣并没有一个递归边界条件跳出循环,但无疑地,这是递归算法最朴素的落地实现,本次我们使用Golang1.18回溯递归与迭代算法的落地场景应用。递归思想与实现递归思想并非是鲜为人知的高级概念,只不过是一种相对普遍的逆向思维方式,这一点我们在:人理解迭代,神则体会递归,从电影艺术到Python代码实现神的逆向思维模式中已经探讨过,说白了就是一个函数直接或者间接的调用自己,就是递归,本文开篇和尚讲故事的例子中,和尚不停地把他自己和他所在的庙和山调用在自己的故事中,因此形成了一个往复循环的递归故事,但这... 2022,烟火如常,布衣剩饭,啥也没干,年终总结,蹈海难酬 https://v3u.cn/a_id_264 Fri, 09 Dec 2022 00:00:00 +0000 https://v3u.cn/a_id_264 开篇明义,2022年,我啥也没干,或者说的更准确一些,啥也没干成,没有什么值得拿出来凡尔赛一下的事情,或者可以满足一下虚荣心的成就,300多个日夜里,就是日复一日的起床、上班、讲课、下班、吃饭、睡觉。有什么可总结的呢?偶然间得一针鸡血或者是一碗鸡汤,便打开博客奋笔疾书写一些狗屁不通的文章,或者是操弄FCP剪辑一些无人问津的视频,壮怀激烈之后,一年也就更六十多篇文章,视频者,也不过十余枚,观看数与播放量更少的可怜。赖以为生的代码能力:https://github.com/zcxey2911,一年间只开源了两三个项目,星者更是寥寥。然而,碌碌无为者非吾辈一人,众多超凡绝伦的人类群星之中,其实也有啥... 把盏言欢,款款而谈,ChatGPT结合钉钉机器人(outgoing回调)打造人工智能群聊/单聊场景,基于Python3.10 https://v3u.cn/a_id_263 Thu, 08 Dec 2022 00:00:00 +0000 https://v3u.cn/a_id_263 就像黑火药时代里突然诞生的核弹一样,OpenAI的ChatGPT语言模型的横空出世,是人工智能技术发展史上的一个重要里程碑。这是一款无与伦比、超凡绝伦的模型,能够进行自然语言推理和对话,并且具有出色的语言生成能力。好吧,本篇的开头其实是由ChatGPT生成的:没办法,面对这个远超时代的AI产品,我们能说什么呢?顶礼膜拜?惊为天人?任何言语对于描述ChatGPT来说已经是苍白无力的,而辞海中的形容词在面对ChatGPT时也已经鞭长莫及。一句话:言语不能赞其伟大。本次我们利用ChatGPT的开放API接入钉钉群聊/单聊机器人,让钉钉机器人具备进行自然语言推理和对话的能力,所谓化腐朽为神奇,不过如此... 新版以太坊Ethereum库ethersV5.0配合后端Golang1.18实时链接区块链钱包(Metamask/Okc)以及验签操作 https://v3u.cn/a_id_262 Sun, 04 Dec 2022 00:00:00 +0000 https://v3u.cn/a_id_262 区块链去中心化思想无处不在,比如最近使用个体抗原自检替代大规模的中心化核酸检测,就是去中心化思想的落地实践,避免了大规模聚集导致的交叉感染,提高了检测效率,本次我们使用Ethereum最新的ethersV5.0以上版本链接去中心化区块链钱包,并且通过后端Golang1.18服务进行验签。在之前的一篇文章:青山不遮,毕竟东流,集成Web3.0身份钱包MetaMask以太坊一键登录(Tornado6+Vue.js3)中,我们使用的是ethersV4.0版本链接Metamask钱包,后端使用基于Python3.10的Tornado6.0框架,为了避免同质化,这里换成Okc钱包,客户端插件安装地址:h... M1/M2系列芯片苹果MacOs系统蓝牙链接SonyPlayStation4手柄Rosetta 2转译畅玩实况足球pes2017 https://v3u.cn/a_id_261 Thu, 01 Dec 2022 00:00:00 +0000 https://v3u.cn/a_id_261 大力神杯比赛热火朝天,方兴未艾,让人忍不住一时技痒,怎奈MacOs系统和游戏天生八字不合,苹果的M1/M2系列处理器基于Arm这个精简指令集的处理器,开发游戏虽然绰绰有余,但ARM架构原生游戏大作几乎没有,本次我们借助Mac无敌的Rosetta2来对3A级大作:实况足球进行转译运行。首先下载移植版实况足球pes2017游戏本体,下载链接如下:链接:https://pan.baidu.com/s/1GZRQizMpH0O9hxp7jIXPYg?pwd=uh4c提取码:uh4c下载成功后,双击dmg安装文件进行安装。游戏本地大概占用8个G左右的磁盘空间,如果有SSD的固态外接硬盘,也可以不安装到系... 含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入) https://v3u.cn/a_id_260 Sun, 27 Nov 2022 00:00:00 +0000 https://v3u.cn/a_id_260 所谓文无第一,武无第二,云原生人工智能技术目前呈现三足鼎立的态势,微软,谷歌以及亚马逊三大巨头各擅胜场,不分伯仲,但目前微软Azure平台不仅仅只是一个PaaS平台,相比AWS,以及GAE,它应该是目前提供云计算人工智能服务最全面的一个平台,尤其是语音合成领域,论AI语音的平顺、自然以及拟真性,无平台能出其右。本次,我们通过Python3.10版本接入Azure平台语音合成接口,打造一款本地的TTS服务(文本转语音:TextToSpeech)。准备工作首先根据Azure平台官方文档:https://learn.microsoft.com/zh-cn/azure/cognitive-servic... 以小博大外小内大,Db数据库SQL优化之小数据驱动大数据 https://v3u.cn/a_id_259 Wed, 23 Nov 2022 00:00:00 +0000 https://v3u.cn/a_id_259 SQL优化中,有一条放之四海而皆准的既定方针,那就是:永远以小数据驱动大数据。其本质其实就是以小的数据样本作为驱动查询能够优化查询效率,在SQL中,涉及到不同表数据的连接、转移、或者合并,这些操作必须得有个数据集作为“带头”大哥,即驱动数据,而这个驱动数据最好是数据量最小的那一个。内大外小在讨论数据库之前,日常开发中,我们经常会遇到数据样本数量不一致,但是需要进行检索的情况,比如某人在地铁的某节车厢里捡到N台Iphone,而车厢里正好有T个人,他应该怎么去检索双样本数据,从而找到失主?for(inti=0;i<N;i++)for(intj=0;j<T;j++)fin... 最新系统MacOs13 Ventura(M1/M2芯片) + Parallels Desktop 18(PD18史上最强虚拟机)永久使用/破解攻略 https://v3u.cn/a_id_258 Tue, 22 Nov 2022 00:00:00 +0000 https://v3u.cn/a_id_258 众神殿内,高朋满座,胜友如云,Vmware、VirtualBox、Utm等虚拟机大神群英荟萃,只见位于C位王座上的Parallels怅惘抬头,缓缓逡巡,睥睨群小,目光到处,无人敢抬头对视。是的,如果说虚拟机领域有一位王者,非Parallels不能领袖群伦,毕竟大厂背书,功能满格,美中不足之处就是价格略高,但这也并非是Parallels的错,因为市场上没有任何一款虚拟机产品在产品力层面能和Parallels抗衡,本次我们在最新的MacOs13Ventura(M1/M2芯片)系统下永久使用ParallelsDesktop18.1.0版本。首先升级最新的MacOs13Ventura13.01系统:随... 红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础数据类型(data types)EP02 https://v3u.cn/a_id_257 Thu, 13 Oct 2022 00:00:00 +0000 https://v3u.cn/a_id_257 Ruby是强类型动态语言,即Ruby中一旦某一个对象被定义类型,如果不通过强制转换操作,那么它永远就是该数据类型,并且只有在Ruby解释器运行时才会检测对象数据类型,它的一切皆为对象(包括nil值对象),可以通过调用内置class属性来获取该对象的具体数据类型。对于Ruby而言,所有类型都继承自Object类(根类为BasicObject)。数字(Numeric)数字是最基本的数据类型之一,Ruby中包含五种内置数字类型类:Numeric,Integer,Float,Fixnum和Bignum,另外标准库中还提供了三种数字类型:Complex,BigDecimal,Rational.除Nume... 红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础语法,第一次亲密接触EP01 https://v3u.cn/a_id_256 Thu, 06 Oct 2022 00:00:00 +0000 https://v3u.cn/a_id_256 书接上回,前一篇我们在全平台构建好了Ruby3的开发环境,现在,可以和Ruby3第一次亲密接触了。Ruby是一门在面向对象层面无所不用其极的解释型编程语言。我们可以把编写Ruby代码看作是一场行为上的艺术,编码就像跳舞一样,Ruby的每一步都很优雅,几乎没有一步是多余的。第一行代码进入系统的irb终端,输入第一行代码:irb(main):001:0>puts"你好Ruby!"你好Ruby!=>nilputs关键字是Ruby语言里用来打印的基本命令。第三行输出的nil是什么?其实是puts命令的返回值,puts命令永远返回nil,nil也是Ruby... 时间老去,Ruby不死,Ruby语言基础入门教程之Ruby3全平台开发环境搭建EP00 https://v3u.cn/a_id_255 Wed, 05 Oct 2022 00:00:00 +0000 https://v3u.cn/a_id_255 如果说电子游戏是第九艺术,那么,编程技术则配得上第十艺术的雅称。艺术发展的普遍规律就是要给与人们对于艺术作品的更高层感受,而Matz的Ruby语言则正是这样一件艺术品。无论是语法还是理念,都让Ruby开发者感受到款待,如此,Ruby代码就像活了过来,它们时而高声,却藏不住优雅,时而细语,却意外地铿锵,真是美妙,这种庄重而温柔的魅力,用那一代奉松本行弘为偶像的人的话说,叫剑胆琴心。现在的话又讲,心有猛虎,细嗅蔷薇。本次,让我们再一次全平台构建Ruby3开发环境,感受Ruby3的魅力。Mac平台(ARM/X86)都知道Mac和Ruby是天作之合,你中有我,我中有你,衔接得天衣无缝,拉链般重合。首先... 君子不玩物丧志,亦常以借物调心,网站集成二次元网页小组件(widget)石蒜模拟器,聊以赏玩 https://v3u.cn/a_id_254 Fri, 16 Sep 2022 00:00:00 +0000 https://v3u.cn/a_id_254 传世经典《菜根谭》中有言曰:“徜徉于山林泉石之间,而尘心渐息;夷犹于诗书图画之内,而俗气潜消。故君子虽不玩物丧志,亦常借物调心。”意思是,徜徉在林泉山石之间,能够摒弃杂念,留意诗词歌画之中,可以尽弃俗见。所以说君子虽然不会玩物丧志,也常常要借一些优雅的小物件来调理情绪,二次元网页小组件(widget)就是这样的小物件,功能上无甚大观,却可以博君一晒。引入方式根据官方文档:https://github.com/dsrkafuu/sakana-widget,引入方式分为两种,分别是模板引入:<divid="sakana-widget">&lt... 一颗红心,三手准备,分别基于图片(img)/SCSS(样式)/SVG动画实现动态拉轰的点赞按钮特效 https://v3u.cn/a_id_253 Tue, 06 Sep 2022 00:00:00 +0000 https://v3u.cn/a_id_253 华丽炫酷的动画特效总能够让人心旷神怡,不能自已。艳羡之余,如果还能够探究其华丽外表下的实现逻辑,那就是百尺竿头,更上一步了。本次我们使用图片、SCSS样式以及SVG图片动画来实现“点赞”按钮的动画特效,并比较不同之处。图片实现最简单,也最容易理解的实现方式就是使用图片。曾几何时,几乎所有前端特效都需要借助图片来完成。实现原理很简单,通过不同的关键帧来“拼接”一段完整的动画影片,每一帧即该动画的每一个瞬间“状态”。首先声明必要的盒子模型:<divclass="heart"></div>这里以div为例子,声明伪类对象he... 巧如范金,精比琢玉,一分钟高效打造精美详实的Go语言技术简历(Golang1.18) https://v3u.cn/a_id_252 Thu, 01 Sep 2022 00:00:00 +0000 https://v3u.cn/a_id_252 研发少闲月,九月人倍忙。又到了一年一度的“金九银十”秋招季,又到了写简历的时节,如果你还在用传统的Word文档寻找模板,然后默默耕耘,显然就有些落后于时代了,本次我们尝试使用云平台flowcv高效打造一份巧如范金、精比琢玉的高品质Golang技术简历。首先来到云平台:flowcv.com点击tryfree然后选择Resume点击创建新简历:一份合格的技术简历大抵包含六大部分:个人信息(Information)、个人简介(Profile)、工作经历(ProfessionalExperience)、学历信息(Education)、项目经验(ProfessionalExperience)以及技能列表... 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-JWT和中间件(Middleware)的使用EP07 https://v3u.cn/a_id_251 Tue, 30 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_251 前文再续,上一回我们完成了用户的登录逻辑,将之前用户管理模块中添加的用户账号进行账号和密码的校验,过程中使用图形验证码强制进行人机交互,防止账号的密码被暴力破解。本回我们需要为登录成功的用户生成Token,并且通过Iris的中间件(Middleware)进行鉴权操作。Iris模板复用在生成Token之前,首先我们需要对项目的模板进行优化改造,目前存在的页面模板有三块,分别是:首页模板(index.html)、登录页模板(signin.html)、后台用户管理页模板(/admin/user.html),虽然页面并不多,但不难发现,有很多重复的代码,比方说,首页模板和登录页模板都有公共的头部导航菜... 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-登录与图形验证码(captcha)EP06 https://v3u.cn/a_id_250 Mon, 29 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_250 书接上回,上一回我们按照“低耦合高内聚”的组织架构方针对项目的整体结构进行了优化,本回将会继续编写业务,那就是用户的登录逻辑,将之前用户管理模块中添加的用户账号进行账号和密码的校验,校验通过后留存当前登录用户的信息,过程中使用图形验证码强制进行人机交互,防止账号的密码被暴力破解。登录逻辑首先在逻辑层handler包中,创建用户模块文件user.go:packagehandlerimport("github.com/kataras/iris/v12")//用户登录模板funcUser_signin(ctxiris.Context){ctx.View("/signin... 清源正本,鉴往知来,Go lang1.18入门精炼教程,由白丁入鸿儒,Golang中引用类型是否进行引用传递EP18 https://v3u.cn/a_id_249 Sun, 28 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_249 开篇明义,Golang中从来就不存在所谓的“引用传递”,从来就只有一种变量传递方式,那就是值传递。因为引用传递的前提是存在“引用变量”,但是Golang中从来就没有出现过所谓的“引用变量”,所以也就不可能存在引用传递这种变量传递的方式。引用类型首先,Golang的基本数据类型是值类型,比如整数、浮点、字符串、布尔、数组及错误类型,它们本质上是原始类型,也就是不可改变的,所以对它们进行操作,一般都会返回一个新创建的值,所以把这些值传递给函数时,其实传递的是一个值的拷贝副本,这一点,基本没啥争议。而引用类型指的是它的修改动作可以影响到任何引用到它的变量。在Go语言中,引用类型有切片(slice)、... 区块链,中心去,何曾着眼看君王?用Go语言实现区块链技术,通过Golang秒懂区块链 https://v3u.cn/a_id_248 Sat, 27 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_248 区块链技术并不是什么高级概念,它并不比量子力学、泡利不相容原则、哥德巴赫猜想更难以理解,但却也不是什么类似“时间就是金钱”这种妇孺皆知的浅显道理。区块链其实是一套统筹组织记录的方法论,或者说的更准确一些,一种“去中心化”的组织架构系统。去中心化众所周知,任何一个公司、组织、或者是机构,都遵循同一套组织架构原则,那就是“下级服从上级、少数服从多数”原则。而对于区块链技术来说,只遵循这个原则的后半句,那就是“少数服从多数”,不存在“下级服从上级”。进而言之,在区块链中,根本就没有什么所谓“上级”的概念。什么是“上级”?一艘在大海中航行的货船上,一定会有一位船长,游荡在非洲大草原上的狮群里,一定会有... 延宕执行,妙用无穷,Go lang1.18入门精炼教程,由白丁入鸿儒,Golang中defer关键字延迟调用机制使用EP17 https://v3u.cn/a_id_247 Fri, 26 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_247 先行定义,延后执行。不得不佩服Golang设计者天才的设计,事实上,defer关键字就相当于Python中的try{...}except{...}finally{...}结构设计中的finally语法块,函数结束时强制执行的代码逻辑,但是defer在语法结构上更加优雅,在函数退出前统一执行,可以随时增加defer语句,多用于系统资源的释放以及相关善后工作。当然了,这种流程结构是必须的,形式上可以不同,但底层原理是类似的,Golang选择了更简约的defer,避免多级嵌套的tryexceptfinally结构。使用场景操作系统资源在业务上避免不了的,比方说单例对象的使用权、文件读写、数据库读写、... 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目结构优化EP05 https://v3u.cn/a_id_246 Thu, 25 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_246 前文再续,上一回我们完成了用户管理模块的CURD(增删改查)功能,功能层面,无甚大观,但有一个结构性的缺陷显而易见,那就是项目结构过度耦合,项目的耦合性(Coupling),也叫耦合度,进而言之,模块之间的关系,是对项目结构中各模块间相互联系紧密程度的一种量化。耦合的强弱取决于模块间调用的复杂性、调用模块之间的方式以及通过函数或者方法传送数据对象的多少。模块间的耦合度是指模块之间的依赖关系,包括包含关系、控制关系、调用关系、数据传递关系以及依赖关系。项目模块的相互依赖越多,其耦合性越强,同时表明其独立性越差,愈加难以维护。项目结构优化目前IrisBlog项目的问题就是独立性太差,截至目前为止,... 仙人指路,引而不发,Go lang1.18入门精炼教程,由白丁入鸿儒,Golang中New和Make函数的使用背景和区别EP16 https://v3u.cn/a_id_245 Wed, 24 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_245 Golang只有二十五个系统保留关键字,二十几个系统内置函数,加起来只有五十个左右需要记住的关键字,纵观编程宇宙,无人能出其右。其中还有一些保留关键字属于“锦上添花”,什么叫锦上添花?就是从表面上看,就算没有,也无伤大雅,不影响业务或者逻辑的实现,比如lambda表达式之类,没有也无所谓,但在初始化数据结构的时候,我们无法避免地,会谈及两个内置函数:New和Make。New函数假设声明一个变量:packagemainimport"fmt"funcmain(){varastringfmt.Println(a)fmt.Println(&a)}系统返回:0x140... 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-完善用户管理EP04 https://v3u.cn/a_id_244 Tue, 23 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_244 书接上回,上一回我们完成了用户管理页面的构建,并且通过前端的Vue.js框架动态地获取表单数据,同时异步请求后端Iris接口进行入库操作,过程中使用函数封装可复用的逻辑。本回我们将继续完善用户管理功能。唯一索引虽然在之前的章节中已经完成了用户添加(注册)的功能,然而我们忽略了一个重要的细节,那就是用户名(username)应该是全局唯一的字段,而添加逻辑中并未做唯一性校验,事实上唯一性校验有两种方案,一种是入库之前做一次查询,但这样会浪费一次磁盘的IO操作,另外一种就是通过唯一索引进行拦截操作,这里我们采用后者,修改model.go文件:packagemodelimport("tim... 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-用户系统EP03 https://v3u.cn/a_id_243 Mon, 22 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_243 前文再续,之前一篇我们已经配置好了数据库以及模板引擎,现在可以在逻辑层编写具体业务代码了,博客平台和大多数在线平台一样,都是基于用户账号体系来进行操作,所以我们需要针对用户表完成用户账号的CURD操作。用户后台模板首先用户操作逻辑主要在后台展现,所以模板应该单独生成admin文件夹,和前台模板进行逻辑隔离:cdviewsmkdiradmin随后创建用户管理页面模板user.html:<!DOCTYPEhtml><htmllang="zh-CN"><head><metahttp-... 因势而变,因时而动,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang泛型(generic)的使用EP15 https://v3u.cn/a_id_242 Sun, 21 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_242 事实上,泛型才是Golang1.18最具特色的所在,但为什么我们一定要拖到后面才去探讨泛型?类比的话,我们可以想象一下给小学一年级的学生讲王勃的千古名篇《滕王阁序》,小学生有多大的概率可以理解作者的青云之志以及壮志难酬的愤懑心情?恐怕很难罢,是的,如果对Golang的强类型语法没有一段时间的体验期,就很难理解泛型这种“反”静态语言概念。基本概念什么是泛型?泛型泛型,顾名思义,泛用的类型,说白了,就是在静态类型语言环境使用动态类型语言的特性:packagemainimport("fmt")funcsum(astring,bstring)string{s:=a+breturns... 大道如青天,协程来通信,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang通道channel的使用EP14 https://v3u.cn/a_id_241 Sat, 20 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_241 众所周知,Golang的作用域相对严格,数据之间的通信往往要依靠参数的传递,但如果想在多个协程任务中间做数据通信,就需要通道(channel)的参与,我们可以把数据封装成一个对象,然后把这个对象的指针传入某个通道变量中,另外一个协程从这个通道中读出变量的指针,并处理其指向的内存对象。通道的声明与创建packagemainimport"fmt"funcmain(){varachanintifa==nil{fmt.Println("通道是空的,不能使用,需要先创建通道")a=make(chanint)fmt.Printf("数据类型是:%T&quo... 并发与并行,同步和异步,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang并发编程之GoroutineEP13 https://v3u.cn/a_id_240 Fri, 19 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_240 如果说Golang是静态语言中的皇冠,那么,Goroutine就是并发编程方式中的钻石。Goroutine是Go语言设计体系中最核心的精华,它非常轻量,一个Goroutine只占几KB,并且这几KB就足够Goroutine运行完,这就能在有限的内存空间内支持大量Goroutine协程任务,方寸之间,运筹帷幄,用极少的成本获取最高的效率,支持了更多的并发,毫无疑问,Goroutine是比Python的协程原理事件循环更高级的并发异步编程方式。GMP调度模型(Goroutine-Machine-Processor)为什么Goroutine比Python的事件循环高级?是因为Golang的调度模型G... 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-模板与数据库EP02 https://v3u.cn/a_id_239 Thu, 18 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_239 书接上回,上次我们搭建好了项目入口文件,同时配置了路由体系,接着就可以配置项目的模板了,这里我们采用Iris内置的模板引擎,事实上,采用模板引擎并不意味着前后端耦合,模板中的数据保持其独立性即可,也就是说模板的数据操作交互方式采用http接口请求的形式,Iris并不参与模板逻辑,只返回Json格式的数据即可。前端集成数据双向绑定机制的框架Vue.js。配置模板Iris支持但不限于下面几种模板引擎:#NameParser1HTMLhtml/template2Blockskataras/blocks3Djangoflosch/pongo24PugJoker/jade5Handlebarsaymer... 千山群翠终究抵不过八月流火,比亚迪新能源汽车自燃,有些问题需要澄清,有些情况需要了解。 https://v3u.cn/a_id_238 Wed, 17 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_238 公元2022年8月16日,四川省阆中市某品牌高端车型“千山翠”自燃,该车车主发布视频称,该车刚从车库开出来,没有经过暴晒和任何碰撞。自燃,又见自燃,作为拥有小十年新能源车型操作经验的消费者,有必要也有责任澄清一些问题,这些问题可能非常尖锐,但也是广大新能源汽车消费者无法回避的问题。磷酸铁锂电池会不会自燃?会,当然会。毫无疑问,磷酸铁锂电池也是电池,只要是电池,就有自燃的风险。大部分主机厂谈起磷酸铁锂,都会如数家珍,比方说:循环寿命长、高温性能好、容量大、安全性高等等,市面上很多新能源车型都默认配装磷酸铁锂电池,车企的口径都非常一致:因为更安全。事实上呢?不是因为安全,或者说得更准确一些,不仅仅... 百亿数据百亿花, 库若恒河沙复沙,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang数据库操作实践EP12 https://v3u.cn/a_id_237 Wed, 17 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_237 Golang可以通过Gorm包来操作数据库,所谓ORM,即ObjectRelationalMapping(数据关系映射),说白了就是通过模式化的语法来操作数据库的行对象或者表对象,对比相对灵活繁复的SQL语句,ORM上手简单,通用性较高,但是在性能层面略有损耗,Gorm的底层是结构体对象,关于结构体,请移玉步至:你有对象类,我有结构体,Golang1.18入门精炼教程,由白丁入鸿儒,golang结构体(struct)的使用EP06。Gorm的安装与配置首先如果要使用Gorm操作数据库,得先有数据库才行,这里为了全平台统一标准,我们使用Docker来安装Mysql数据库,Docker的安装请参见... 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目入口与路由EP01 https://v3u.cn/a_id_236 Tue, 16 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_236 书接上回,我们已经安装好Iris框架,并且构建好了Iris项目,同时配置了fresh自动监控项目的实时编译,万事俱备,只欠东风,彩虹女神蓄势待发。现在我们来看看Iris的基础功能,如何编写项目入口文件以及配置路由系统。项目入口事实上,Iris遵循的是单一入口模式,说白了就是单一入口文件main.go处理项目所有的来源请求,如此,项目就避免了因为多个文件处理不同的请求而增加的安全性风险,同时也更便于项目的统筹管理。在上一篇文章:急如闪电快如风,彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-初始化项目EP00中,我们已经编写好了入口文件main.go:packagemai... 人非圣贤孰能无过,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang错误处理机制EP11 https://v3u.cn/a_id_235 Mon, 15 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_235 人非圣贤,孰能无过,有则改之,无则加勉。在编程语言层面,错误处理方式大体上有两大流派,分别是以Python为代表的异常捕获机制(try....catch);以及以Golang为代表的错误返回机制(returnerror),前者是自动化流程,模式化的语法隔离正常逻辑和错误逻辑,而后者,需要将错误处理判断编排在正常逻辑中。虽然模式化语法更容易让人理解,但从系统资源开销角度看,错误返回机制明显更具优势。返回错误Golang的错误(error)也是一种数据类型,错误用内置的error类型表示,就像其他的数据类型的,比如字符串、整形之类,错误的具体值可以存储在变量中,从函数中返回:packagemain... 急如闪电快如风,彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-初始化项目EP00 https://v3u.cn/a_id_234 Sun, 14 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_234 在GolangWeb编程的世界里,君不言高性能则已,言高性能必称Iris。彩虹女神的名号响彻寰宇、名动江湖,单论一个快字,无人能出其右,就连以简洁轻量著称于世的Gin也难以望其项背,只见彩虹女神Iris回眸一笑撩人心扉:“虽然你们也不是那么慢,但我还是快那么一点点......”,本次就让我们来一睹彩虹女神Iris的芳颜,感受宇宙最快Web框架的神乎其神。女神本神(Iris)选择一款框架有诸多的参考层面,比如灵活性、扩展性、API友好程度、文档详细程度、项目活跃度、社区贡献等等,但是性能和内存占用绝对是优先参考的一个重要层面,原因无他,天下武功,唯快不破,正所谓一快遮百丑,经济下行,降本增效的大... 层次分明井然有条,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang包管理机制(package)EP10 https://v3u.cn/a_id_233 Sat, 13 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_233 Golang使用包(package)这种概念元素来统筹代码,所有代码功能上的可调用性都定义在包这个级别,如果我们需要调用依赖,那就“导包”就行了,无论是内部的还是外部的,使用import关键字即可。但事情往往没有那么简单,Golang在包管理机制上走了不少弯路,虽然1.18版本的包管理已经趋于成熟,但前事不忘后事之师,我们还是需要了解一下这段历史。环境变量一般情况下,golang在系统中会依赖两个环境变量,分别是:GOPATH和GOROOT,有点类似于Python的解释器目录的概念,GOROOT这个变量的作用就是为了告诉当前运行的Go进程当前Go安装路径,当要运行的时候去什么位置找GoSDK相... 巨细靡遗流程控制,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang流程结构详解EP09 https://v3u.cn/a_id_232 Fri, 12 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_232 流程结构就是指程序逻辑到底怎么执行,进而言之,程序执行逻辑的顺序。众所周知,程序整体都是自上由下执行的,但有的时候,又不仅仅是从上往下执行那么简单,大体上,Golang程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。顺序结构:从上向下,逐行执行;选择结构:条件满足,某些代码才会执行,0-1次;循环结构:条件满足,某些代码会被反复的执行多次,0-N次选择结构之条件判断if/else市面上的语言都有if/else逻辑,逻辑非常简单,只要满足条件,就会执行条件代码块的逻辑:if布尔表达式{/*在布尔表达式为true时执行*/}if布尔表达式{/*在布尔表达式为true时执行*/}else... 实证与虚无,抽象和具象,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang接口(interface)的使用EP08 https://v3u.cn/a_id_231 Thu, 11 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_231 看到接口这两个字,我们一定会联想到面向接口编程。说白了就是接口指定执行对象的具体行为,也就是接口表示让执行对象具体应该做什么,所以,普遍意义上讲,接口是抽象的,而实际执行行为,则是具象的。接口(interface)的定义在Golang中,接口是一组方法签名,当类型为接口中的所有方法提供定义时,它被称为实现接口。和面向接口的思想非常类似,接口指定了类型应该具有的方法,类型决定了到底该怎么实现这些方法:/*定义接口*/typeinterface_nameinterface{method_name1[return_type]method_name2[return_type]method_name3[... 化整为零优化重用,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang函数的定义和使用EP07 https://v3u.cn/a_id_230 Wed, 10 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_230 函数是基于功能或者逻辑进行聚合的可复用的代码块。将一些复杂的、冗长的代码抽离封装成多个代码片段,即函数,有助于提高代码逻辑的可读性和可维护性。不同于Python,由于Golang是编译型语言,编译之后再运行,所以函数的定义顺序无关痛痒。函数声明在Golang里,函数声明语法如下:funcfunction_name(parameter_list)(result_list){//函数逻辑}这里使用function的简写形式func关键词,后面依次接function_name(函数名),parameter_list(参数列表),result_list(返回值列表)以及函数体。parameter_li... 你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06 https://v3u.cn/a_id_229 Tue, 09 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_229 再续前文,在面向对象层面,Python做到了超神:万物皆为对象,而Ruby,则干脆就是神:飞花摘叶皆可对象。二者都提供对象类操作以及继承的方式为面向对象张目,但Golang显然有一些特立独行,因为它没有传统的类,也没有继承,取而代之的是结构和组合的方式,也就是结构体(struct)的方式来组织代码,达到类似类的效果。结构体struct的声明在Golang中使用下面的语法是对结构体的声明:typestruct_namestruct{attribute_name1attribute_typeattribute_name2attribute_type...}假设定义一个名为Lesson(课程)的结构... 借问变量何处存,牧童笑称用指针,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang类型指针(Pointer)的使用EP05 https://v3u.cn/a_id_228 Mon, 08 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_228 指针是指什么?指针是存储另一个变量的内存地址的变量。变量是一种使用方便的占位符,用于引用计算机内存地址,一个指针变量可以指向任何一个值的内存地址它指向那个值的内存地址。类比的话,指针就是书籍中的目录,本身也占据书页,既可以通过目录获得章节内容,又可以指向具体章节的页数(地址)。指针声明声明指针,*T是指针变量的类型,它指向T类型的值:varvar_name*var-typevar-type为指针类型,var_name为指针变量名,*号用于指定变量是作为一个指针。例如:varip*int/*指向整型*/varfp*float32/*指向浮点型*/之前我们曾经使用&关键字来获取变量... 兼容并蓄广纳百川,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang复合容器类型的声明和使用EP04 https://v3u.cn/a_id_227 Sun, 07 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_227 书接上回,容器数据类型是指一种数据结构、或者抽象数据类型,其实例为其他类的对象。或者说得更具体一点,它是以一种遵循特定访问规则的方法来存储对象。容器的大小取决于其包含的基础数据对象(或数据元素)的个数。Golang中常用的容器数据有数组、切片和集合。数组数组是一个由长度固定的特定类型元素组成的序列,一个数组可以由零个或多个元素组成,它是一种线性的数据结构,同时内部元素的内存地址是相连的,没错,Python中的元祖(tuple)和Golang中的数组就是一类东西,由于定长的特性,所以在系统资源占用层面具备一定的优势。我们可以使用[n]Type来声明一个数组。其中n表示数组中元素的数量,Type表... 分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03 https://v3u.cn/a_id_226 Sat, 06 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_226 前文再续,Golang和Python一样,基础数据类型有着很多分类,分门别类,一应俱全。它们对应着不同的使用场景,分别是:整形、浮点、字符、字符串、布尔等等。常用的基本数据类型经常会参与日常业务逻辑的运算、判断以及输入输出操作。整形int整形顾名思义,就是存储的数据类型是整数,Golang中分为有符号和无符号,简单理解就是存储范围上的差异:有符号整型:int8、int16、int32、int64、int。无符号整型:uint8、uint16、uint32、uint64、uint。packagemainimport("fmt""math""uns... 运筹帷幄决胜千里,Python3.10原生协程asyncio工业级真实协程异步消费任务调度实践 https://v3u.cn/a_id_225 Fri, 05 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_225 我们一直都相信这样一种说法:协程是比多线程更高效的一种并发工作方式,它完全由程序本身所控制,也就是在用户态执行,协程避免了像线程切换那样产生的上下文切换,在性能方面得到了很大的提升。毫无疑问,这是颠扑不破的业界共识,是放之四海而皆准的真理。但事实上,协程远比大多数人想象中的复杂,正因为协程的“用户态”特性,任务调度权掌握在撰写协程任务的人手里,而仅仅依赖async和await关键字远远达不到“调度”的级别,有时候反而会拖累任务效率,使其在任务执行效率上还不及“系统态”的多线程和多进程,本次我们来探讨一下Python3原生协程任务的调度管理。Python3.10协程库async.io的基本操作事... 牛刀小试基本语法,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本语法和变量的使用EP02 https://v3u.cn/a_id_224 Thu, 04 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_224 书接上回,Golang1.18首个程序的运行犹如一声悠扬的长笛,标志着并发编程的Golang巨轮正式开始起航。那么,在这艘巨轮之上,我们首先该做些什么呢?当然需要了解最基本的语法,那就是基础变量的声明与使用。变量的声明与使用变量是什么玩意?是具体的数据被内存存储之后内存地址的名称。说白了就是内存中的门牌号,在golang中声明变量有很多种方式,相对严谨的:packagemain//声明main包importf"fmt"//导入fmt包,打印字符串时需要用到funcmain(){//声明main主函数入口//声明变量varnameintname=1f.Println(name... 初窥门径代码起手,Go lang1.18入门精炼教程,由白丁入鸿儒,首次运行golang程序EP01 https://v3u.cn/a_id_223 Wed, 03 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_223 前文再续,书接上回,前一篇:兔起鹘落全端涵盖,Golang1.18入门精炼教程,由白丁入鸿儒,全平台(Sublime4)Golang开发环境搭建EP00,我们搭建起了Golang1.18的开发运行环境,接着就可以运行第一个Golang1.18程序了,让我们整装待发,开启Golang1.18的处女航。首次运行打开Sublime4,在任意目录下新建test.go文件:packagemain//声明main包import"fmt"//导入fmt包,打印字符串时需要用到funcmain(){//声明main主函数入口fmt.Println("helloGolang1.18... 兔起鹘落全端涵盖,Go lang1.18入门精炼教程,由白丁入鸿儒,全平台(Sublime 4)Go lang开发环境搭建EP00 https://v3u.cn/a_id_222 Tue, 02 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_222 Golang,为并发而生的静态语言,源于C语言又不拘泥于效率,高效却不流于古板,Python灵活,略输性能,Java严谨,稍逊风骚。君不见各大厂牌均纷纷使用Golang对自己的高并发业务进行重构,原因无他,经济下行的大背景之下,性能突出、效率拉满的Golang无疑是高并发场景下节约服务器资源的一剂灵药。与时俱进,顺应潮流,本次我们乘着市场的东风,在各大主流平台(Win/Mac/Linux/Docker)安装并搭建Golang1.18的开发环境,短时间内做到能够在任何一款开发机或者服务器上输出Golang的全部功力,如臂使指,挥洒自如。Windows11平台首先来到市场占有率最高的Win11系统... 物无定味适口者珍,Python3并发场景(CPU密集/IO密集)任务的并发方式的场景抉择(多线程threading/多进程multiprocessing/协程asyncio) https://v3u.cn/a_id_221 Mon, 01 Aug 2022 00:00:00 +0000 https://v3u.cn/a_id_221 一般情况下,大家对Python原生的并发/并行工作方式:进程、线程和协程的关系与区别都能讲清楚。甚至具体的对象名称、内置方法都可以如数家珍,这显然是极好的,但我们其实都忽略了一个问题,就是具体应用场景,三者的使用目的是一样的,换句话说,使用结果是一样的,都可以提高程序运行的效率,但到底那种场景用那种方式更好一点?这就好比,目前主流的汽车发动机变速箱无外乎三种:双离合、CVT以及传统AT。主机厂把它们搭载到不同的发动机和车型上,它们都是变速箱,都可以将发动机产生的动力作用到车轮上,但不同使用场景下到底该选择那种变速箱?这显然也是一个问题。所谓“无场景,不功能”,本次我们来讨论一下,具体的并发编程... 日夕如是寒暑不间,基于Python3+Tornado6+APScheduler/Celery打造并发异步动态定时任务轮询服务 https://v3u.cn/a_id_220 Thu, 28 Jul 2022 00:00:00 +0000 https://v3u.cn/a_id_220 定时任务的典型落地场景在各行业中都很普遍,比如支付系统中,支付过程中因为网络或者其他因素导致出现掉单、卡单的情况,账单变成了“单边账”,这种情况对于支付用户来说,毫无疑问是灾难级别的体验,明明自己付了钱,扣了款,但是订单状态却未发生变化。所以,每一笔订单的支付任务流程中都需要一个定时轮询的备选方案,一旦支付中发生问题,定时轮询服务就可以及时发现和更正订单状态。又比如,之前的一篇以寡治众各个击破,超大文件分片上传之构建基于Vue.js3.0+Ant-desgin+Tornado6纯异步IO高效写入服务,在超大型文件分片传输任务过程中,一旦分片上传或者分片合并环节出了问题,就有可能导致超大型文件无... 鲜衣怒马散尽千金,Vue3.0+Tornado6前后端分离集成Web3.0之Metamask钱包区块链虚拟货币三方支付功能 https://v3u.cn/a_id_219 Wed, 27 Jul 2022 00:00:00 +0000 https://v3u.cn/a_id_219 不得不承认,大多数人并不拥有或者曾经拥有加密货币。是的,Web3.0、加密货币、区块链,对于大多数的互联网用户来说,其实是一些过于轻佻的词汇。如果你是为了追求暴利投机而研究区块链和加密货币,那你多半会失望,因为盐在哪里都是咸的;而如果你是为了摆脱知识桎梏而学习区块链,那你几乎一定能满足,因为懵懂决不是编程界的常态。对于支付系统来说,加密货币的主要好处之一是去中心化,这意味着它由许多团队或团体控制和管理,而不是一个单一的中心化机构,暗箱操作在这里并不存在,这为系统带来了透明度。加密货币的另一个好处是它是一个点对点系统,因为它可以发送给世界上任何人,消除了微信、支付宝等第三方支付寡头的干预,这使得... 以寡治众各个击破,超大文件分片上传之构建基于Vue.js3.0+Ant-desgin+Tornado6纯异步IO高效写入服务 https://v3u.cn/a_id_218 Mon, 25 Jul 2022 00:00:00 +0000 https://v3u.cn/a_id_218 分治算法是一种很古老但很务实的方法。本意即使将一个较大的整体打碎分成小的局部,这样每个小的局部都不足以对抗大的整体。战国时期,秦国破坏合纵的连横即是一种分而治之的手段;十九世纪,比利时殖民者占领卢旺达,将卢旺达的种族分为胡图族与图西族,以图进行分裂控制,莫不如是。21世纪,人们往往会在Leetcode平台上刷分治算法题,但事实上,从工业角度上来看,算法如果不和实际业务场景相结合,算法就永远是虚无缥缈的存在,它只会出现在开发者的某一次不经意的面试中,而真实的算法,并不是虚空的,它应该能帮助我们解决实际问题,是的,它应该落地成为实体。大文件分片上传就是这样一个契合分治算法的场景,现而今,视频文件的... 承上启下继往开来,Python3上下文管理器(ContextManagers)与With关键字的迷思 https://v3u.cn/a_id_217 Tue, 19 Jul 2022 00:00:00 +0000 https://v3u.cn/a_id_217 在开发过程中,我们会经常面临的一个常见问题是如何正确管理外部资源,比如数据库、锁或者网络连接。稍不留意,程序将永久保留这些资源,即使我们不再需要它们。此类问题被称之为内存泄漏,因为每次在不关闭现有资源的情况下创建和打开给定资源的新实例时,可用内存都会减少。正确管理资源往往是一个棘手的问题,因为资源的使用往往需要进行善后工作。善后工作要求执行一些清理操作,例如关闭数据库、释放锁或关闭网络连接。如果忘记执行这些清理操作,就可能会浪费宝贵的系统资源,例如内存和网络带宽。背景譬如,当开发人员使用数据库时,可能会出现一个常见问题是程序不断创建新连接而不释放或重用它们。在这种情况下,数据库后端可以停止接受... 天人合一物我相融,站点升级渐进式Web应用PWA(Progressive Web Apps)实践 https://v3u.cn/a_id_216 Tue, 14 Jun 2022 00:00:00 +0000 https://v3u.cn/a_id_216 PWA(Progressivewebapps,渐进式Web应用)使用现代的WebAPI以及传统的渐进式增强策略来创建跨平台Web应用程序,说白了,PWA可以让我们的站点以原生APP的形式运行,但相比于安装原生APP应用,访问PWA显然更加容易和迅速,还可以通过链接来分享PWA应用。有许多知名的网络平台已经将PWA方案落地,比如Twitter。选择增强的网站体验而不是原生应用。事实上使用PWA也确实从中获得了显而易见的益处。https://www.pwastats.com这个网站上分享了许多案例研究,PWA相比于传统应用有以下好处:1、减少应用安装后的加载时间,通过ServiceWorkers来... 见微知著,细节上雕花:SVG生成矢量格式网站图标(Favicon)探究 https://v3u.cn/a_id_215 Tue, 07 Jun 2022 00:00:00 +0000 https://v3u.cn/a_id_215 Favicon是favoritesicon的缩写,也被称为websiteicon(站点图标)、pageicon(页面图标)或者urlicon(URL图标)。Favicon是与某个站点或网页相关联的图标,网站设计者可以多种方式建立这种图标,几乎所有浏览器都支持此功能,浏览器可以将favicon显示于浏览器的地址栏中,也可置于书签列表的网站名前,还可以放在标签式浏览界面中的页标题前:我们定义一个favicon的方法是将一个名为“favicon.ico”的文件置于Web服务器的根目录下,IE的收藏夹(即书签)可以自动显示该文件。后来出现了一种更为灵活的方法,即使用HTML来为任何一个网页指示其图标所... 当我们进行性能优化,我们在优化什么(LightHouse优化实操) https://v3u.cn/a_id_214 Thu, 02 Jun 2022 00:00:00 +0000 https://v3u.cn/a_id_214 好的互联网产品不仅仅在功能上要高人一筹,在性能层面也需要出类拔萃,否则金玉其外败絮其中,页面是美轮美奂了,结果首屏半天加载不出来,难免让用户乘兴而来,败兴而归。幸运的是,前端的性能优化有诸多有迹可循的理论和方法,其中相对权威的,无疑是LightHouse。LightHouse是一个开源的自动化工具,它作为Chrome浏览器的扩展程序运行,提供一套完整的站点评分标准,我们可以依据此标准对站点进行基准测试,从而达到优化的效果。怎么打开LightHouse?可以在Chrome浏览器开发人员工具中找到LightHouse。要打开“开发人员工具”,请选择:“顶部菜单→查看→开发人员→开发人员工具”或者使... 青山不遮,毕竟东流,集成Web3.0身份钱包MetaMask以太坊一键登录(Tornado6+Vue.js3) https://v3u.cn/a_id_213 Tue, 31 May 2022 00:00:00 +0000 https://v3u.cn/a_id_213 上世纪九十年代,海湾战争的时候,一位美军军官担心他们的五角大楼会被敌人的一枚导弹干掉,从而导致在全球的美军基地处于瘫痪状态。这时候,有一位天才的科学家说,最好的中心就是没有中心。是的,这就是最朴素的去中心化思想,于是互联网出现了。一个没有互联网的时代是无法想象的,互联网的核心就是把一个信息分成若干的小件,用不同的途径传播出去,怎么方便怎么走。三十年后的今天,去中心化身份逐渐被广泛采用。用户的部分在线活动在链上是公开的,可通过加密钱包搜索到,用户在链上创造、贡献、赚取和拥有的东西,都反映了他们的喜好,也逐渐积累成该用户的身份和标识。当我们的用户厌倦了传统的电子邮件/密码注册流程时,他们会选择Go... 众妙之门玄之又玄,游戏系统中的伪随机(Pseudo-Randomization)和真随机(True-Randomization)算法实现Python3 https://v3u.cn/a_id_212 Fri, 22 Apr 2022 00:00:00 +0000 https://v3u.cn/a_id_212 有人说,如果一个人相信运气,那么他一定参透了人生。想象一下,如果你在某款moba游戏中,在装备平平,队友天坑的情况下,却刀刀暴击,在一小波gank中轻松拿下五杀,也许你会感叹自己的神操作和好运气,但其实,还有另外一种神秘的力量在支配着这一切,那就是:随机算法。伪随机(Pseudo-Randomization)其实,竞技游戏通常是拒绝随机性干预的,因为它干扰了玩家实际操作水平的考量。但是,应对突发情况也应该是玩家应变能力的一种表现。因此,在moba游戏中,有很多随机事件,这些随机事件降低了游戏的可预测性,增加了变数。为了限制这种随机性的影响,伪随机算法应运而生。伪随机分布(pseudo-rand... 小波从此逝,江海寄余生,不但是文坛巨擘还是不世出的编程奇才,王小波离世25周年 https://v3u.cn/a_id_211 Mon, 11 Apr 2022 00:00:00 +0000 https://v3u.cn/a_id_211 二十五年前的今天,王小波先生因病于北京逝世,享年四十四周岁。喜爱他的人,都知道他是一个特立独行的人,拥有谦虚与自豪并存的强大气质,并且留下无数传世作品,无可争议的文坛巨擘,他的力量、有趣,对媚众形式束缚的反抗,以及一以贯之的,对待生活无比真诚的态度都让我们为之倾倒。然而,鲜为人知的是,他不仅仅在文学上造诣非凡,与此同时,他还是一位不世出的编程奇才。在整个九十年代,除了和文字跳舞,王小波还将他的才华通过键盘喷涌而出,天才的脑细胞幻化为一行一行的代码,挥洒自如,回转如意。王小波在编程领域的惊人艺业,我们也许可以通过他的书信以及著作中的内容略窥一二。1988年12月,致好友刘晓阳:回来之前我曾往人大... 轻盈潇洒卓然不群,敏捷编辑器Sublime text 4中文配置Python3开发运行代码环境(Win11+M1 mac) https://v3u.cn/a_id_210 Fri, 01 Apr 2022 00:00:00 +0000 https://v3u.cn/a_id_210 20世纪初,几乎所有的飞机都是并列双翼结构,此时,美国著名飞行大亨霍华德·休斯认为自己的飞机不够快,助手委婉地提醒他,如果速度太快,飞机的上翼结构支柱很可能会支撑不住,发生断裂。霍华德愤怒地向助手大喊:“谁说我们需要上翼结构?让上翼和支柱见鬼去吧,我们需要的是更轻便的单翼飞机!”于是乎,H1单翼飞机就此出现,这款机型身上体现了霍华德作为一名航空工程师的天才之处:突破性的流线型机身,可收放起落架,轻巧灵动,平面的铆钉和接头以减少空气阻力,因其优美的造型被称为“银色子弹”。同样地,如果你入职了一家公司,当主管拍拍你的肩膀让你往电脑里安装Pycharm的时候,你也可以愤怒地向他大喊:“谁说我们需要P... 孔雀折翼空中浩劫,东航MU5735航班高空垂直骤降八千米坠毁失事原因技术性分析 https://v3u.cn/a_id_209 Tue, 22 Mar 2022 00:00:00 +0000 https://v3u.cn/a_id_209 公元2022年3月21日北京时间下午2点22分,东航MU5735航班(昆明至广州航段),以接近音速的速度和近乎垂直的角度,高速俯冲地面坠毁。坠毁位置位于广西省梧州市埌南镇莫埌村神塘表附近的山林中,坠毁前,该航班并未挂出“7700”紧急代码。北京时间下午1点16分,MU5735航班顺利起飞,并在升空的十分钟后飞行至海拔7500米左右的高度。此后,这架航班以每小时830公里左右的飞行速度途径云南百色市、广西南宁市和玉林市的上空,前往广州。MU5735航班在持续飞行近63分钟后,其航行高度突然从海拔约8870米的高度下降至约2770米,时长约持续了2分15秒。当时,这架飞机依然以每小时约842公里的... 并发异步编程之争:协程(asyncio)到底需不需要加锁?(线程/协程安全/挂起/主动切换)Python3 https://v3u.cn/a_id_208 Fri, 18 Mar 2022 00:00:00 +0000 https://v3u.cn/a_id_208 协程与线程向来焦孟不离,但事实上是,线程更被我们所熟知,在Python编程领域,单核同时间内只能有一个线程运行,这并不是什么缺陷,这实际上是符合客观逻辑的,单核处理器本来就没法同时处理两件事情,要同时进行多件事情本来就需要正在运行的让出处理器,然后才能去处理另一件事情,左手画方右手画圆在现实中本来就不成立,只不过这个让出的过程是线程调度器主动抢占的。线程安全系统的线程调度器是假设不同的线程是毫无关系的,所以它平均地分配时间片让处理器一视同仁,雨露均沾。但是Python受限于GIL全局解释器锁,任何Python线程执行前,必须先获得GIL锁,然后,每执行100条字节码,解释器就自动释放GIL锁,... Logo小变动,心境大不同,SVG矢量动画格式网站Logo图片制作与实践教程(Python3) https://v3u.cn/a_id_207 Wed, 23 Feb 2022 00:00:00 +0000 https://v3u.cn/a_id_207 曾几何时,SVG(ScalableVectorGraphics)矢量动画图在坊间称之为一种被浏览器诅咒的技术,只因为糟糕的硬件支持(IE),和没完没了的兼容性调优(Safari)。但是在2022年的今天,一切都不一样了,正所谓三十年河东,三十年河西,微软所研发的采用Chromium内核作为IE替代者的Edge浏览器已经有望超越Safari成为第二大桌面浏览器,而曾经因为不支持关键帧动画被人诟病的Safari也统一了标准,市面上除了老帮菜IE,几乎所有平台(包括移动端)都已经对SVG足够友好,这让我们可以放心大胆的在网站上应用SVG矢量动画图。目前国内外相对来说技术先行的平台都已经采用SVG矢量... 霜皮剥落紫龙鳞,下里巴人再谈数据库SQL优化,索引(一级/二级/聚簇/非聚簇)原理 https://v3u.cn/a_id_206 Mon, 14 Feb 2022 00:00:00 +0000 https://v3u.cn/a_id_206 举凡后端面试,面试官不言数据库则已,言则必称SQL优化,说起SQL优化,网络上各种“指南”和“圣经”难以枚举,不一而足,仿佛SQL优化已然是妇孺皆知的理论常识,然后根据多数无知(Pluralisticignorance)理论,人们印象里觉得多数人会怎么想怎么做,但这种印象往往是不准确的。那SQL优化到底应该怎么做?本次让我们褪去SQL华丽的躯壳,以最浅显,最粗俗,最下里巴人的方式讲解一下SQL优化的前因后果,前世今生。SQL优化背景首先要明确一点,SQL优化不是为了优化而优化,就像冬天要穿羽绒服,不是因为有羽绒服或者羽绒服本身而穿,是因为天儿太冷了!那SQL优化的原因是什么?是因为SQL语句太... B站员工猝死,审核员之殇,谁该反省?谁该惭愧?技术层面解构内容安全审核系统(python3) https://v3u.cn/a_id_205 Thu, 10 Feb 2022 00:00:00 +0000 https://v3u.cn/a_id_205 猝死,又见猝死,可怜无定河边骨,犹是春闺梦里人!每当有年轻的生命逝去,我们就会感到心中某种撕裂的感觉,惆怅万千,疼痛不已。审核专员,一个我们既熟悉又陌生的岗位,他们的疲惫,不仅仅体现在肉体上重复工作的折磨,而更多的,是精神上处于一种无知无觉的疲惫,想象一下,作为审核员,千帆阅尽之后,感动过你的一切不再感动你,吸引过你的一切不再吸引你,甚至激怒过你的一切都不再激怒你,麻木和怅惘充斥着你的工作和生活,只剩下疲于奔命,惨淡经营。而造成审核员审核过劳的因素之一,就是海量内容审核系统的设计问题。谁也不能否认,对于UGC(UserGeneratedContent,即用户产出内容)内容类产品来说,内容审核是... 增效降本开源节流,2022年技术趋势前瞻(异步编程/容器技术) https://v3u.cn/a_id_204 Fri, 14 Jan 2022 00:00:00 +0000 https://v3u.cn/a_id_204 2022初始,凛冬已至,疫情横跳,环境繁复,君不见互联网大厂纷纷裁员,银根紧缩。这一切归结为两个字:成本。对于互联网企业来讲,除了最基本的工商财税,办公室、办公设备、人力、产品和公关等等,这一切都是成本。而在疫情因素侵入导致经济下滑的情况下,降本增效就已经成为2022开年很多企业管理者非常重视的KPI指标,而降本也一定会成为2022年技术发展的一个必然趋势。降本增效,到底降什么本,增什么效,有何妙计?异步编程一直以来,异步编程都是最有经验的开发者的专长,他们孜孜不倦地研究着非线性执行流中的回调方法,念兹在兹的,不过就是有限资源下每秒处理请求数的提升。异步编程方式也许是开发者对自己的严格要求,但... 四位一体水溶交融,Docker一拖三Tornado6.2 + Nginx + Supervisord非阻塞负载均衡容器式部署实践 https://v3u.cn/a_id_203 Fri, 07 Jan 2022 00:00:00 +0000 https://v3u.cn/a_id_203 容器,又见容器。Docker容器的最主要优点就在于它们是可移植的。一套服务,其所有的依赖关系可以捆绑到一个独立于Linux内核、平台分布或部署模型的主机版本的单个容器中。此容器可以传输到另一台运行Docker的主机上,并且在没有兼容性问题的情况下执行。而传统的微服务架构会将各个服务单独封装为容器,虽然微服务容器化环境能够在给定数量的基础架构内实现更高的工作负载密度,但是,在整个生产环境中创建、监视和销毁的容器需求总量呈指数级增长,从而显著增加了基于容器管理环境的复杂性。藉此,本次我们将服务化零为整,将Tornado服务和Nginx服务器以及配套的监控管理程序Supervisor集成到一个单独的... 把酒言欢话聊天,基于Vue3.0+Tornado6.1+Redis发布订阅(pubsub)模式打造异步非阻塞(aioredis)实时(websocket)通信聊天系统 https://v3u.cn/a_id_202 Tue, 21 Dec 2021 00:00:00 +0000 https://v3u.cn/a_id_202 “表达欲”是人类成长史上的强大“源动力”,恩格斯早就直截了当地指出,处在蒙昧时代即低级阶段的人类,“以果实、坚果、根作为食物;音节清晰的语言的产生是这一时期的主要成就”。而在网络时代人们的表达欲往往更容易被满足,因为有聊天软件的存在。通常意义上,聊天大抵都基于两种形式:群聊和单聊。群聊或者群组聊天我们可以理解为聊天室,可以有人数上限,而单聊则可以认为是上限为2个人的特殊聊天室。为了开发高质量的聊天系统,开发者应该具备客户机和服务器如何通信的基本知识。在聊天系统中,客户端可以是移动应用程序(C端)或web应用程序(B端)。客户端之间不直接通信。相反,每个客户端都连接到一个聊天服务,该服务支撑双方... 神工鬼斧惟肖惟妙,M1 mac系统深度学习框架Pytorch的二次元动漫动画风格迁移滤镜AnimeGANv2+Ffmpeg(图片+视频)快速实践 https://v3u.cn/a_id_201 Wed, 15 Dec 2021 00:00:00 +0000 https://v3u.cn/a_id_201 前段时间,业界鼎鼎有名的动漫风格转化滤镜库AnimeGAN发布了最新的v2版本,一时间街谈巷议,风头无两。提起二次元,目前国内用户基数最大的无疑是抖音客户端,其内置的一款动画转换滤镜“变身漫画”,能够让用户在直播中,把自己的实际外貌转换为二次元“画风”。对于二次元粉丝来说,“打破次元壁,变身纸片人”这种自娱自乐方式可谓屡试不爽:但是看多了就难免有些审美疲劳,千人一面的“锥子脸”,一成不变的“卡姿兰”式大眼睛,让人多少有点味同嚼蜡的感觉,未免过犹不及,失之现实。而基于CartoonGan的AnimeGAN动漫风格滤镜则能够在保留原图特点的同时,兼具二次元的炫酷和三次元的写实,颇有些刚柔并济、举重... 一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境 https://v3u.cn/a_id_200 Tue, 30 Nov 2021 00:00:00 +0000 https://v3u.cn/a_id_200 时光荏苒,过隙白驹,即将进入2022年,著名敏捷开发语言Python也放出了3.10最终版,本次我们来展示一下在不同的系统和平台中,高效部署Python3.10开发环境,这里我们并不依赖其他的三方软件,只通过Python官方的安装包进行配置,编辑器我们依然使用微软开源的Vscode,争取在一分钟以内就可以在一台干净的开发机上部署好环境,省去一些不必要的步骤。首先我们以市场占有率最高的微软Intel芯片x86架构的64位win10系统为例子。第一步,打开python官网,python.org选择python3.10.064位windows系统安装包。下载成功后,双击安装,这里不要选择默认第一个立... 十万高层齐卸甲,竟无一人有慈心。前阿里员工看阿里高管不法侵害女员工事件 https://v3u.cn/a_id_198 Mon, 09 Aug 2021 00:00:00 +0000 https://v3u.cn/a_id_198 最近的事情大家都晓得了,公元2021年7月27日,阿里P7高管涉嫌勾结客户对其女性下属进行不法人身侵害,28日受害人报警,随后8月2日受害人向其上级各个主管依次反馈,均无结果。公元2021年8月8日凌晨,阿里首席执行官逍遥子(张勇)在阿里内网发帖进行回应,六字以敝之:震惊、气愤、羞愧。十天,整整十天之后,阿里高层才对此事予以重视,请诸位想象一下,一个弱女子,在遭受上级领导不法侵害之后,在上级主管的沆瀣一气,官官相护,不作为之后。整整十天,她经历了怎样的绝望和痛苦?实在是伤心惨目,尤非生人所忍闻也,阿里诸位高管既要做官,又要讨钱,而特别又要以“阿里巴巴”之身份标榜其清廉不苟之态度。令人作呕!作为... 举重若轻流水行云,前端纯CSS3实现质感非凡的图片Logo鼠标悬停(hover)光泽一闪而过的光影特效 https://v3u.cn/a_id_197 Sat, 04 Dec 2021 00:00:00 +0000 https://v3u.cn/a_id_197 喜欢看电影的朋友肯定会注意到一个有趣的细节,就是电影出品方一定会在片头的Logo环节做一个小特效:暗影流动之间光泽一闪而过,这样做不仅可以提高Logo的辨识度,还可以提升质感,一举两得。参照华纳兄弟影业(WarnerBros.Pictures)的例子:那么,在前端领域,如果使用纯CSS技术,能不能实现类似的特效呢?答案当然是可以的,这次我们以本站的Logo为例子,以一持万、提纲挈领地讲解一下如何使用纯CSS技术实现图片Logo鼠标悬停光泽一闪而过的光影特效。一般情况下,大多数前端开发会选择linear-gradient(),这个方法创建一个表示两种或多种颜色线性渐变的图片。其结果属于&... Win10系统下基于Docker构建Appium容器连接Android模拟器Genymotion完成移动端Python自动化测试 https://v3u.cn/a_id_196 Tue, 27 Jul 2021 00:00:00 +0000 https://v3u.cn/a_id_196 Python自动化,大概也许或者是今年最具热度的话题之一了。七月流火,招聘市场上对于Python自动化的追捧热度仍未消减,那么Python自动化到底能帮我们做些什么呢?第一,Python自动化可以避免熟练工种的重复工作,对于功能相对完整和成熟的软件,每发布一个新的版本,无论是大版本还是小版本,其中大部分功能和界面都几乎和上一个版本相似或完全相同,但所谓向上兼容,你不能因为新功能的产生而不对老版本功能进行测试工作,而这些老功能又在上一个版本上线时测过,所以这部分功能特别适合于自动化测试,从而可以让测试达到测试每个特征的目的。第二,Python自动化可以帮助我们提高测试效率:比如一个项目要的开发周... 浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid https://v3u.cn/a_id_195 Sun, 27 Jun 2021 00:00:00 +0000 https://v3u.cn/a_id_195 “世界上有那么多城市,城市里有那么多的酒馆,可她,却偏偏走进了我的.....”,这是电影《卡萨布拉卡》中的一句著名独白,投射到现实生活中,与之类似的情况不胜枚举,这世界上有那么多的系统,系统中有那么多的浏览器,在只有一台测试机的前提下,难道我们只能排队一个一个地做兼容性测试吗?有没有效率更高的方法呢?为此我们提出一个更高效的解决方案:使用Docker+SeleniumGrid。SeleniumGrid是一个分布式WebUI测试工具,可以将测试流程分发到多台服务器上,并行地执行。SeleniumGrid架构中包含两个主要角色:Hub是中心点控制节点,而Node是Selenium的工作节点,它们注... 珠联壁合地设天造|M1 Mac os(Apple Silicon)基于vscode(arm64)配置搭建Java开发环境(集成web框架Springboot) https://v3u.cn/a_id_194 Thu, 20 May 2021 00:00:00 +0000 https://v3u.cn/a_id_194 也许有人从未听说过Python,但是不会有人没听说过Java,它作为一个拥有悠久历史的老牌编程语言,常年雄踞TIOBE编程语言榜首,其顶尖的霸主地位不可撼动,而M1mac业已发布了一段时间,作为跨时代的顶级芯片系统,这两大巨头能否珠联璧合,让开发者们猛虎添翼、更上层楼?本次我们尝试在M1mac系统中搭建Java开发环境,并且集成目前Web开发领域红的发紫的Springboot框架,另外,谁说玩儿Java就必须得用Eclipse或者IntelliJIDEA?我们就骄傲地使用Vscode。首先需要应对的是OpenJDK的选择,这里推荐使用Azul公司提供的zulu版本,Zulu又是什么?它是Azu... 王霸雄图荣华敝屣,谈笑间尽归尘土|基于Python3双队列数据结构搭建股票/外汇交易匹配撮合系统 https://v3u.cn/a_id_192 Thu, 22 Apr 2021 00:00:00 +0000 https://v3u.cn/a_id_192 如果你爱他,那么送他去股市,因为那里是天堂;如果你恨他,送他去股市,因为那里是地狱。在过去的一年里,新冠疫情持续冲击世界经济,全球主要股票市场的波动都相对频繁,尤其是A股,正所谓:曾经跌停难为鬼,除非解套才做人;抄底时难抛亦难,反弹无力百花残。对于波谲云诡的股票市场,新投资人还是需要谨慎入场,本次我们来利用双队列的数据结构实现实时在线交易匹配引擎,探索股票交易的奥秘。首先需要明确一点,证券交易和传统的B2C电商系统交易完全不同,证券交易系统提供的买卖标的物是标准的数字化资产,如美元、股票、比特币等等,它们的特点是数字计价,可分割买卖,也就是说,当我们发起买盘申请的时候,需要有价格对应的卖盘响应... 奇技淫巧玄妙无穷| M1 mac os(苹果/AppleSilicon)系统的基本操作和设置 https://v3u.cn/a_id_191 Tue, 06 Apr 2021 00:00:00 +0000 https://v3u.cn/a_id_191 最近有个朋友跟我说,说他新入职了一家公司,公司还不错,给他配了一台Mac,但是呢他以前一直在Windows环境下开发,对Macos并不了解,他感到很彷徨,所以本次呢,我们来分享一下,当手头儿有一部崭新的Mac,我们应该怎么上手操作和配置,让它成为我们开发的好帮手。首先我们来看一下键位上的差异,传统Windows系统的键盘以control键为主,以左小指为基准,食指为辐射范围,组合快捷键,比如说我们非常熟悉control+c和control+v:Mac系统的键位是以command键为主,以左拇指为基准,食指为辐射范围,组合快捷键,用习惯了windows朋友只要脑子想着原本的control键改为c... 石火电光追风逐日|前端优化之次时代图片压缩格式WebP的项目级躬身实践(Python3 PIL+Nginx) https://v3u.cn/a_id_190 Wed, 10 Mar 2021 00:00:00 +0000 https://v3u.cn/a_id_190 我们知道,在前端界有一个共识:速度就是生命,带宽就是金钱。怎样将页面加载速度有效提升是无数前端工程师无时不刻在思考的课题,目前的网络环境中,除了视频,图片仍旧是占用流量较大的一部分,对于app端尤其如此,因此,如何在保证图片视觉不失真的前提下缩小图片体积,对于节省带宽和电池电量都十分重要,因此Google在十年前提出了一种新的图片压缩格式:WebP,给图片的优化提供了新的方向。WebP的优势在于它具有更优的图像数据压缩算法,在拥有肉眼几乎无法识别差异的图像质量前提下,带来更小的图片体积,同时具备了无损和有损的压缩模式、Alpha透明以及动画的特性,从JPEG和PNG上的转化效果都非常突出、稳定... 金玉良缘易配而木石前盟难得|M1 Mac os(Apple Silicon)天生一对Python3开发环境搭建(集成深度学习框架Tensorflow/Pytorch) https://v3u.cn/a_id_189 Thu, 04 Mar 2021 00:00:00 +0000 https://v3u.cn/a_id_189 笔者投入M1的怀抱已经有一段时间了,俗话说得好,但闻新人笑,不见旧人哭,Intelmac早已被束之高阁,而M1mac已经不能用真香来形容了,简直就是“香透满堂金玉彩,扇遮半面桃花开!”,轻抚M1mac那滑若柔荑的秒控键盘,别说996了,就是007,我们也能安之若素,也可以笑慰平生。好了,日常吹M1的环节结束,正所谓剑虽利,不厉不断,材虽美,不学不高。本次我们尝试在M1Macos中搭建Python3的开发环境。一般情况下,直接Python官网(python.org)下载最新的基于arm架构的python3.9即可,但是由于向下兼容等问题,我们尝试使用Python多版本管理软件conda,cond... 别梦依稀咒逝川,Ruby二十八年前|M1芯片Mac os系统配置Ruby(3.0.0) on Rails(6.1.1)开发环境(2021最新攻略) https://v3u.cn/a_id_188 Mon, 01 Mar 2021 00:00:00 +0000 https://v3u.cn/a_id_188 在每个开发者心里,都会有一门“最好”的语言,在这个世界的某个深处,在一些矫矫不群的人们心中,这门语言的名字叫做Ruby,它今年二十八岁了,历史和Java一样的悠久,但是它没有大厂背书、它的性能被开发者诟病、时至今日依然无法高效利用多核资源,甚至于它每年都要被“死亡”一次,相比于有太阳计算机系统、甲骨文、IBM这些大公司支持的Java,它是那么的一无所有,但是,它又拥有全世界最虔诚的“信徒”,拥有最活跃的开发者社区,这一切,又让它是那么的应有尽有。是的,这就是Rubyist的理念:有的时候,你想证明给一万个人看,到后来,你发现只得到了一个明白的人,那就够了。本次我们尝试在最新的M1芯片Macos... 无意苦争春,一任群芳妒!M1 Mac book(Apple Silicon)能否支撑全栈工程师的日常?(Python3/Ruby/PHP/Mysql/Redis/NPM/虚拟机/Docker) https://v3u.cn/a_id_187 Wed, 24 Feb 2021 00:00:00 +0000 https://v3u.cn/a_id_187 就像大航海时代里突然诞生的航空母舰一样,苹果把玩着手心里远超时代的M1芯片,微笑着对Intel说:“不好意思,虽然你也玩桌面芯片,但是,从今天开始,游戏就已经结束了,X86?还是省省吧。”十五年前,iPhone横空出世,乔布斯告诉世人什么才叫做真正的智能手机,十年前,A4处理器粉墨出场,iPhone瞬间猛虎添翼,性能这两个字从此没有友商敢在苹果面前提及,iPad更是在业界呼风唤雨,几乎把整个平板市场都收入囊中,在人们的脑海中,Pad就是iPad的代名词,安卓平板?不存在的。今时今日,AppleSilicon华丽登台,不必说M1堪称恐怖到爆炸的性能,也不必说十个小时以上的超长续航以及丝滑无迟滞的... 人理解迭代,神则体会递归,从电影艺术到Python代码实现神的逆向思维模式 https://v3u.cn/a_id_186 Sun, 21 Feb 2021 00:00:00 +0000 https://v3u.cn/a_id_186 “从来如此,便对么?”,鲁迅先生在《狂人日记》中借狂人之口在月光下发出的质疑与呐喊,是的,从来如此,一般人的思维模式就是从来如此,以高数为例子,我们大抵都是先从数分、线代、解几去学泛函、抽代、拓扑等,其实就是按照标准路子来,这样做理论上可以增加对已学知识的理解程度,并对某些数分、线代中的问题看清其本质有所帮助。数学归纳法其实就是一种迭代(iteration),从一个简单的起点,推广到一般情况。而递归(recursion),则是一种反人类的逆向思维模式,作为研发人员,掌握这种反常识的思维逻辑是非常必要的,这里我们以一个推理故事为开端:在一个秋意绵绵的雨夜,日本警视厅搜查课警司古畑任三郎和其助手今... 一寸宕机一寸血,十万容器十万兵|Win10/Mac系统下基于Kubernetes(k8s)搭建Gunicorn+Flask高可用Web集群 https://v3u.cn/a_id_185 Thu, 04 Feb 2021 00:00:00 +0000 https://v3u.cn/a_id_185 2021年,君不言容器技术则已,欲言容器则必称Docker,毫无疑问,它是当今最流行的容器技术之一,但是当我们面对海量的镜像与容器时,怎样快速精准的对海量容器进行管理和编排就又成了新的课题,此时,由Google开源的Kubernetes(读音[kubə'netis],业界也有称其k8s的,但k8s其实就是文盲版的Kubernetes,只是因为k和s之间有8个字母)就应时而生了,它是一个开源的用于多个主机虚拟成一个云平台后进行容器资源管理和应用编排引擎,致力于让部署容器化应用简单并且高效,提供了应用的全生命周期管理,如应用部署,规划,更新,维护等机制。本次我们尝试在Win10/Mac系统下,利用... 别无分号只此一家,Python3接入支付宝身份认证接口( alipay.user.certify)体系(2021年最新攻略) https://v3u.cn/a_id_184 Wed, 06 Jan 2021 00:00:00 +0000 https://v3u.cn/a_id_184 目前国内身份认证体系做的比较不错的大抵就是支付宝和微信两家了,支付宝的身份验证基于支付宝app的实人认证能力,采用多因子认证技术快速得出认证结果,对于多因子认证技术不太了解的朋友可移步:别让你的服务器(vps)沦为肉鸡(ssh暴力破解),密钥验证、双向因子登录值得拥有进行了解。其作用主要是为了解决线上实人开户、账号实名认证、账号实人登录等场景中个人身份的识别问题,比如你某一天突然心血来潮想当一把韭菜炒炒股,又不想去人多眼杂的营业厅,所以利用app远程开户,开户的过程中,你怎么证明“你是你本人”的问题。首先,老规矩,做一下前置任务,注册蚂蚁金服开放平台:https://open.alipay.c... 虚言妙诀终虚见,面试躬行是致知,Python技术面试策略与技巧实战记录 https://v3u.cn/a_id_183 Thu, 21 Jan 2021 00:00:00 +0000 https://v3u.cn/a_id_183 2021年,对于正在找工作的朋友来说,笼罩在新冠肺炎疫情之下,今年的就业季显得更加具有挑战性,更有意思的是,每当这个时候,各种面试经验分享就如同过江之鲫一般,俯拾皆是,因为例子过多,兹不细举。然而这些面试经验大部分都停留在理论阶段,这就造成了一个问题:理论和实际,到底有多大出入?我国古代大名仕曾文正公曾经说:“天下事,在局外呐喊议论,总是无益,必须躬身入局,挺膺负责,方有成事之可冀。”革命先烈李大钊先生也曾感叹:“凡事都要脚踏实地去作,不驰于空想,不骛于虚声,而惟以求真的态度作踏实的工夫。以此态度求学,则真理可明,以此态度做事,则功业可就。”所以本次我们来进行一次真实的线上面试,正所谓空谈误国... Win10环境前后端分离项目基于Vue.js+Django+Python3实现微信(wechat)扫码支付流程(2021年最新攻略) https://v3u.cn/a_id_182 Fri, 18 Dec 2020 00:00:00 +0000 https://v3u.cn/a_id_182 之前的一篇文章:mpvue1.0+python3.7+Django2.0.4实现微信小程序的支付功能,主要介绍了微信小程序内部支付的流程,然而实际上微信小程序有一定的局限性,也就是用户范围仅限于小程序内部生态圈,在生活中真正具有广泛性、高效性、使用方便性的支付方式还得是扫码支付,扫码的优点在于推广成本低,上至钓鱼台国宾馆,下至发廊地摊都能用,打印出来就完事了,而相比其他支付方式,现金的找零及假钞问题,信用卡的办理门槛、pos机的沉没成本,就算微信可集成的h5支付和小程序支付,奈何很多老年人根本不会用小程序和手机浏览器,更别说再进行支付操作了,所以基于二维码的扫码支付的确是非常符合国情的。本次我... 远见而明察近观若明火|Centos7.6环境基于Prometheus和Grafana结合钉钉机器人打造全时监控(预警)Docker容器服务系统 https://v3u.cn/a_id_181 Sun, 06 Dec 2020 00:00:00 +0000 https://v3u.cn/a_id_181 我们知道,奉行长期主义的网络公司,势必应在软件开发流程管理体系上具备规范意识,即代码提交有CR(CodeReview),功能测试上自动化,而功能发布讲究三板斧:灰度、监控、止血。灰度属于测试范畴,止血则是亡羊补牢,今天我们来聊聊监控,提起监控,就不得不提在DepOps(自动化运维)领域鼎鼎有名的Prometheus(普罗米修斯),有人说这个开源系统的名字怎么有点如雷贯耳啊,没错,它的名字就是取自从宙斯手中为人类夺回圣火的古希腊神明普罗米修斯,而Prometheus的Logo恰恰就是奥林匹克圣火。Prometheus主要的功能就是可以无时不刻的监控所有部署在生产环境中的服务,如果服务出现问题则会... 金瓯无缺江河一统|Win10系统基于Docker和Python3搭建并维护统一认证系统OpenLdap https://v3u.cn/a_id_180 Tue, 24 Nov 2020 00:00:00 +0000 https://v3u.cn/a_id_180 OpenLdap(LightweightDirectoryAccessProtocol)是什么?它其实是一个开源的、具备工业标准特性的应用协议,可以使用TCP协议提供访问控制和维护分布式信息的目录信息。这是一个传统意义上的书面解释,是的,毫无疑问,你会一脸懵逼。好吧,让我们变得感性一点,假如我每天早上使用Twitter想听听懂王又吹了什么牛,登录Twitter账号密码,紧接着又想上Instagram看看女神又post了什么新靓照,好的,登录Instagram账号密码,摸了一上午的鱼之后,突然想起来要登录公司的邮箱,看看有没有新需求,是的,又需要那该死的账号和密码,甚至于查询社保、公积金提取、交... 海纳百川无所不容,Win10环境下使用Docker容器式部署前后端分离项目Django+Vue.js https://v3u.cn/a_id_179 Tue, 17 Nov 2020 00:00:00 +0000 https://v3u.cn/a_id_179 随着现代化产品研发的不断推进,我们会发现,几乎每个产品线都会包含功能各异的服务,而且服务与服务之间存在也会存在着错综复杂的依赖和被依赖关系,这就会带来一个世界性难题,项目部署的时候需要运维来手动配制服务之间通信的协议和地址,稍有不慎就会导致服务异常,同时如果服务器因为坏道或者其他原因导致更换物理机,重新部署新环境的成本也会非常之高。因此,我们就会寄希望于Docker这种的容器技术可以让我们构建产品所需要的所有的服务能够迅速快捷的重新部署,并且可以根据需求做横向扩展,且能够保证稳定的容灾性,在出现问题的时候可以利用守护进程自动重启或者启动容灾备份。本次我们将在Win10环境下利用Docker容器... 人工智能不过尔尔,基于Python3深度学习库Keras/TensorFlow打造属于自己的聊天机器人(ChatRobot) https://v3u.cn/a_id_178 Wed, 11 Nov 2020 00:00:00 +0000 https://v3u.cn/a_id_178 聊天机器人(ChatRobot)的概念我们并不陌生,也许你曾经在百无聊赖之下和Siri打情骂俏过,亦或是闲暇之余与小爱同学谈笑风生,无论如何,我们都得承认,人工智能已经深入了我们的生活。目前市面上提供三方api的机器人不胜枚举:微软小冰、图灵机器人、腾讯闲聊、青云客机器人等等,只要我们想,就随时可以在app端或者web应用上进行接入。但是,这些应用的底层到底如何实现的?在没有网络接入的情况下,我们能不能像美剧《西部世界》(Westworld)里面描绘的那样,机器人只需要存储在本地的“心智球”就可以和人类沟通交流,如果你不仅仅满足于当一个“调包侠”,请跟随我们的旅程,本次我们将首度使用深度学习库... 一代版本一代神:利用Docker在Win10系统极速体验Django3.1真实异步(Async)任务 https://v3u.cn/a_id_177 Wed, 30 Sep 2020 00:00:00 +0000 https://v3u.cn/a_id_177 就在去年(2019年),Django官方发布3.0版本,内核升级宣布支持Asgi,这一重磅消息让无数后台研发人员欢呼雀跃,弹冠相庆。大喜过望之下,小伙伴们兴奋的开箱试用,结果却让人大跌眼镜:非但说好的内部集成Websocket没有出现,就连原生的异步通信功能也只是个壳子,内部并未实现,很明显的换汤不换药,这让不少人转身投入了FastAPI的怀抱。不过一年之后,今天8月,Django3.1版本姗姗来迟,这个新版本终于一代封神,不仅支持原生的异步视图,同时也支持异步中间件,明显整了个大活。本次我们利用Docker制作一款基于Django3.1.1的项目镜像,实际体验一下Django原生异步的魅力。... 鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机 https://v3u.cn/a_id_176 Thu, 24 Sep 2020 00:00:00 +0000 https://v3u.cn/a_id_176 众所周知,尤文图斯需要一座欧冠奖杯,C罗也还想再拿一座欧冠奖杯,为自己的荣誉簙上锦上添花。意甲霸主在意甲虽然风生水起,予取予求,但是在今年欧冠1/8决赛赛场上,被法甲球队里昂所淘汰,痛定思痛,球队解雇了主教练萨里,签约名宿皮尔洛,但是要想在欧冠赛场上夺冠,这还不够,球队还需要什么?没错,需要一名强力中锋,在正印中锋伊瓜因难堪大用的情况下,尤文图斯必须引进一名强力中锋。现在的问题是,在新赛季即将开始、疫情下球队银根紧缩的背景下,到底谁才是合格的引援人选?本次我们使用基于Python3的factor_analyzer库来对球员进行分析,试图寻找尤文图斯最适合引援的球员。首先我们来划定范围,先排除掉... 聚是一团火散作满天星,前端Vue.js+elementUI结合后端FastAPI实现大文件分片上传 https://v3u.cn/a_id_175 Thu, 10 Sep 2020 00:00:00 +0000 https://v3u.cn/a_id_175 分片上传并不是什么新概念,尤其是大文件传输的处理中经常会被使用,在之前的一篇文章里:python花式读取大文件(10g/50g/1t)遇到的性能问题(面试向)我们讨论了如何读写超大型文件,本次再来探讨一下如何上传超大型文件,其实原理都是大同小异,原则就是化整为零,将大文件进行分片处理,切割成若干小文件,随后为每个分片创建一个新的临时文件来保存其内容,待全部分片上传完毕后,后端再按顺序读取所有临时文件的内容,将数据写入新文件中,最后将临时文件再删掉。大体流程请见下图:其实现在市面上有很多前端的三方库都集成了分片上传的功能,比如百度的WebUploader,遗憾的是它已经淡出历史舞台,无人维护了。... 利用本地HTTPS模拟环境为FastAPI框架集成FaceBook社交三方登录 https://v3u.cn/a_id_174 Sun, 06 Sep 2020 00:00:00 +0000 https://v3u.cn/a_id_174 提起社交,就不得不说马克·扎克伯格(MarkZuckerberg)一手创办的社交网络(FaceBook)。进入2020年,FaceBook的全球用户数已经突破了30亿,这是什么概念?全球人口大约70亿,除开中国14亿,还有56亿。国外市场是四倍于中国的潜在市场,扣除短期内有上网限制的人群,那也是两倍以上。站在全球视角看问题,说微信、支付宝偏安一隅,其实也并不为过。所以为你的平台集成全球最大用户基数的社交登录系统,显然可以为你带来更多的潜在用户,本次我们使用当红炸子鸡FastAPI框架来集成FaceBook的三方登录。首先在https://developers.facebook.com/上面注册... 还在用Alpine作为你Docker的Python开发基础镜像?其实Ubuntu更好一点 https://v3u.cn/a_id_173 Thu, 03 Sep 2020 00:00:00 +0000 https://v3u.cn/a_id_173 一般情况下,当你想为你的Python开发环境选择一个基础镜像时,大多数人都会选择Alpine,为什么?因为它太小了,仅仅只有5MB左右(对比Ubuntu系列镜像接近100MB),但事实的真相是,我们选择基础镜像并不是为了体验一下Python语法而已,在此基础上,我们需要调试和安装各种扩展,可能会安装很多三方依赖,甚至预设更多服务,在这种环境下,Alpine就并非是一个很好的选择了,本次我们就来分别在Alpine和Ubuntu上来体验一下安装和编译Python的区别。首先分别拉取Alpine和Ubuntu的镜像:dockerpullubuntu:18.04dockerpullalpine拉取完毕... 别让你的服务器(vps)沦为肉鸡(ssh暴力破解),密钥验证、双向因子登录值得拥有 https://v3u.cn/a_id_172 Wed, 19 Aug 2020 00:00:00 +0000 https://v3u.cn/a_id_172 如果你购买了阿里云、腾讯云或者华为云等国内云服务上的服务器,默认登录都是以密码的方式,这就给潜在的渗透带来了机会,因为当你的linux服务器暴露在外网当中时,服务器就极有可能会遭到互联网上的扫描软件进行扫描,然后试图连接ssh端口进行暴力破解(穷举扫描),如果你不采取相对应的措施,迟早有一天服务器会被渗透者攻陷,这也就解释了为什么googlecloud(谷歌云)和aws(亚马逊云)默认都是以秘钥的方式登录服务器。基于密钥的安全验证必须为用户自己创建一对密钥(公钥和私钥),并把公钥放在需要访问的服务器上。当需要连接到远程服务器上时,客户端软件就会向服务器发出请求,请求使用私钥进行安全验证。服务器... 心动不如行动,基于Docker安装关系型数据库PostgrelSQL替代Mysql https://v3u.cn/a_id_171 Wed, 12 Aug 2020 00:00:00 +0000 https://v3u.cn/a_id_171 最近“全栈数据库”的概念甚嚣尘上,主角就是PostgrelSQL,它最近这几年的技术发展不可谓不猛,覆盖OLTP、OLAP、NoSQL、搜索、图像等应用场景,实实在在的全栈性发展。帮助公司解决了数据孤岛、数据平台多、同步一致性、延迟,软硬件成本增加等业务痛点,在互联网、金融、物联网、传统企业等领域得到了广泛的应用。PostgreSQL的应用场景丰富,不亚于商用数据库Oracle,常被业界称为“开源界的Oracle”。至于Mysql大家都很熟悉,很多公司因为人才储备和数据量大的原因,一般是Hadoop+Mysql的模式,Hadoop计算大量原始数据,然后按维度汇总后的展示数据存储在Mysql上,... 基于Docker在Win10平台搭建Ruby on Rails 6.0框架开发环境 https://v3u.cn/a_id_170 Tue, 04 Aug 2020 00:00:00 +0000 https://v3u.cn/a_id_170 2020年,“非著名Web框架”--RubyonRails已经15岁了。在今年,Rails6.0趋于完善,除了拿掉讨厌的Jquery,Webpacker也成为默认前端打包方案,Sprockets开始软着陆,未来很可能会和Jquery一样被彻底废弃,这就是历史的进程。由于历史原因,本身就由Ruby撰写的HomeBrew在Macos系统上大行其道,所以大部分Rails程序员的主力电脑都是Macbookpro,而使用Windows系统的用户就没那么好运了,比如Rails6.0开始启用Webpacker,这就需要用户安装yarn,由此带来一系列的连锁反应,还有令人绝望的Win10系统下的CoffeeS... 基于Python3(Autosub)以及Ffmpeg配合GoogleTranslation(谷歌翻译)为你的影片实现双语版字幕(逐字稿) https://v3u.cn/a_id_169 Mon, 03 Aug 2020 00:00:00 +0000 https://v3u.cn/a_id_169 为影片加字幕其实是一件非常耗费时间的事情,尤其是对于打字慢的朋友来说。当然不光为影片加字幕,在其他领域,类似的逐字稿也是工作中避免不了的内容。比如写论文,如果内容中有访谈,就必须要附上逐字稿,又或者是会议的记录等等。本次使用基于Python3的AutoSub库对实时语音进行识别,然后再通过GoogleTranslation的在线API接口对语音识别后的内容进行翻译,这样就可以得到一份双语字幕(逐字稿),这里的双语不只针对国语+英语组合,也可以包含其他国家,包括小语种地区,非常方便。首先需要安装ffmpeg,这个软件在之前有过介绍:Python3利用ffmpeg针对视频进行一些操作,Win10用... Python算法之动态规划(Dynamic Programming)解析:二维矩阵中的醉汉(魔改版leetcode出界的路径数) https://v3u.cn/a_id_168 Sat, 25 Jul 2020 00:00:00 +0000 https://v3u.cn/a_id_168 现在很多互联网企业学聪明了,知道应聘者有目的性的刷Leetcode原题,用来应付算法题面试,所以开始对这些题进行“魔改”,比如北京某电商平台的这道题:有一个正方形的岛,使用二维方形矩阵表示,岛上有一个醉汉,每一步可以往上下左右四个方向之一移动一格,如果超出矩阵范围他就死了,假设每一步的方向都是随机的(因为他是醉的),请计算n步以后他还活着的概率。例如:输入矩阵大小2*2,起点(0,0),随机走出一步n=1输出0.5也就是有一半的几率还活着例如:输入矩阵大小3*3,起点(1,1),随机走出一步n=1输出1也就是百分之百还活着乍一看有点懵,但是提取关键字:二维矩阵、上下左右四个方向、矩阵范围、n步... 2020年是时候更新你的技术武器库了:Asgi vs Wsgi(FastAPI vs Flask) https://v3u.cn/a_id_167 Wed, 22 Jul 2020 00:00:00 +0000 https://v3u.cn/a_id_167 也许这一篇的标题有那么一点不厚道,因为Asgi(AsynchronousServerGatewayInterface)毕竟是Wsgi(WebServerGatewayInterface)的扩展,而FastAPI毕竟也是站在Flask的肩膀上才有了突飞猛进的发展,大多数人听说Asgi也许是因为Django的最新版(3.0)早已宣布支持Asgi网络规范,这显然是一个振奋人心的消息,2020年,如果你在Web开发面试中不扯一点Asgi,显然就有点落后于形势了。那么到底啥是Wsgi,什么又是Asgi,放心,不扯CGI,不扯各种抽象概念,简单粗暴理解:Wsgi是同步通信服务规范,客户端请求一项服务,并等... 上穷碧落下凡尘:Win10系统下基于Docker配置Elasticsearch7配合Python3进行全文检索交互 https://v3u.cn/a_id_166 Tue, 21 Jul 2020 00:00:00 +0000 https://v3u.cn/a_id_166 基于文档式的全文检索引擎大家都不陌生,之前一篇文章:使用Redisearch实现的全文检索功能服务,曾经使用Rediseach来小试牛刀了一把,文中戏谑的称Rediseach已经替代了Elasticsearch,其实不然,Elasticsearch作为老牌的全文检索引擎还并没有退出历史舞台,依旧占据主流市场,桃花依旧笑春风,阿里也在其ecs服务中推出了云端Elasticsearch引擎,所以本次我们在Win10系统中依托Docker来感受一下Elasticsearch的魅力。首先安装Docker,具体流程请参照:win10系统下把玩折腾DockerToolBox以及更换国内镜像源(各种神坑),... 利用DockerHub在Centos7.7环境下部署Nginx反向代理Gunicorn+Flask独立架构 https://v3u.cn/a_id_165 Fri, 17 Jul 2020 00:00:00 +0000 https://v3u.cn/a_id_165 上一篇文章:Docker在手,天下我有,在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像,是在Win10简单玩了一下Docker的镜像打包,属实玩票,娱乐属性较高。要是想真刀真枪的在生产环境部署还得是Centos。本次使用Nginx反向代理Flask服务,为什么要加一层Nginx呢?因为Nginx可以直接处理静态文件请求而不用经过应用服务器,避免占用宝贵的运算资源,并且可以缓存静态资源,使访问静态资源的速度有效提高。同时它可以吸收一些瞬时的高并发请求,让Nginx先保持住连接(缓存http请求),然后后端慢慢消化掉这些并发。当然了,最重要的一点就是Nginx可以提... Docker在手,天下我有,在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像 https://v3u.cn/a_id_164 Thu, 16 Jul 2020 00:00:00 +0000 https://v3u.cn/a_id_164 书接上回,之前一篇:Win10环境下使用Flask配合Celery异步推送实时/定时消息(Socket.io)/2020年最新攻略,阐述了如何使用Celery异步推送Websocket消息,现在我们利用Docker将这个完整项目部署起来,为什么用Docker呢?原因很简单,这种容器技术可以将整个项目用单个容器装起来,仅仅只需要维护一个简单的配置文件就告诉电脑每次部署要把什么东西装进容器,甚至把这个过程自动化,部署流程就会变得简单、方便。简单理解就是Docker的镜像就类似《精灵宝可梦》中小智手里的精灵球,我们的项目就类似那些宠物小精灵,当我们开发完毕就可以利用DockerFile对项目进行打包... Win10环境下使用Flask配合Celery异步推送实时/定时消息(Socket.io)/2020年最新攻略 https://v3u.cn/a_id_163 Wed, 15 Jul 2020 00:00:00 +0000 https://v3u.cn/a_id_163 首先得明确一点,和Django一样,在2020年Flask1.1.1以后的版本都不需要所谓的三方库支持,即Flask-Celery或者Flask-Celery-Help这些库,直接使用Celery原生库即可。一般情况下,Celery被用来处理耗时任务,比如千篇一律的发邮件或者文件上传之类,本次使用Celery实时或者定时发送基于Websocket的消息队列,因为如果前端已经摒弃老旧的轮询策略,使用Websocket,后端则需要相应的配合Celery进行对持久化的Websocket链接主动推送消息,这种场景在生产环境中还是很常见的,但是网上却鲜有文章阐述,而Celery官方对此的说明是:Ifus... 让你的简历不落窠臼,精雕细镂写一份真正的技术简历(Python向) https://v3u.cn/a_id_162 Mon, 13 Jul 2020 00:00:00 +0000 https://v3u.cn/a_id_162 孔子云:食不厌精,脍不厌细。字面意思是:粮食越精致越好,肉类切得越细越好,而实际上强调的是做事情要细致、精益求精,孔夫子阐之未尽,写简历同样不厌精亦不厌细,在上一篇文章:秋季招聘季如何制作一款“秀色可餐”的简历?由ShareLatex和Python3打造中,阐述了如何制作一款漂亮的简历模板,但这只是“外在”,一份简历真正灵魂则在于“内涵”,如果内容与模板不匹配,那无异于金玉其外败絮其中,所以吸引招聘者的还得是内容。有道是:模板为王,内容为皇。所以本次我们来讨论一下到底怎么写一份技术简历。基本信息(Profile)求职者的基本信息是首先映入招聘者眼帘的,除了姓名、性别、手机、学历、邮箱这些最“基... 秋季招聘季如何制作一款“秀色可餐”的简历?由ShareLatex和Python3打造 https://v3u.cn/a_id_161 Wed, 08 Jul 2020 00:00:00 +0000 https://v3u.cn/a_id_161 秋招季还有两个月就到了,即所谓的“金九银十”。疫情因素导致市场环境不太理想,所以我们更应该未焚而徙薪,未雨而绸缪,提前做好准备,否则到了时候才临渴掘井、江心补漏那就真的来不及了,而找工作的第一步就是写简历,写简历的第一步就是选择一块好的简历模板。说起简历模板,大家一定不会陌生,随便在百度搜关键词“简历模板”,林林总总的会出现一大片,但是这些简历模板往往都会有一个共同点,就是太Low、“土味”重、没有时代感、味同嚼蜡,蜡都要顺着嘴角流下来了,以一个求职者的视角来看待这些简历都会无奈心烦,更别说招聘者了。所以新时代的简历应该具备独特性、新颖、与众不同并且不落窠臼。这里推荐使用ShareLatex,... Win10系统下安装编辑器之神(The God of Editor)Vim并且构建Python生态开发环境(2020年最新攻略) https://v3u.cn/a_id_160 Sat, 04 Jul 2020 00:00:00 +0000 https://v3u.cn/a_id_160 众神殿内,依次坐着Editplus、Atom、Sublime、Vscode、JetBrains家族、Comodo等等一众编辑器界的大佬们,偌大的殿堂内几无立锥之地,然而在殿内的金漆雕龙宝座上,端坐着一位睥睨众生的王者,那就是被称之为编辑器之神的Vim,作为一个有着30余年历史的老牌神器,没有任何编辑器可以和它媲美,其时江湖有云:神编Vim不会玩,纵称大神也枉然。Vim在1976年发布,奉行Unix传统的“Doonethinganddoitwell”哲学,每个程序只做一件事但求做到最好,通过程序之间的配合得到强大的功能,其两种模式(Normal/Insert)的玄妙变换,幻化出各种组合的炫酷用法... 当我们谈论算法我们在谈论什么:由疫情核酸检测想到的分治算法(Divide-and-Conquer) https://v3u.cn/a_id_159 Mon, 29 Jun 2020 00:00:00 +0000 https://v3u.cn/a_id_159 北京的疫情一波未平一波又起,由此看来,战“疫”将是一场旷日持久的战争,绝不能掉以轻心、轻易言胜。病毒随时都会死灰复燃,以生命为代价换来的经验教训值得我们每一个人久久深思。笔者所在的小区也开始组织居民批量进行核酸检测,本以为会是一幅摩肩接踵,水泄不通的场景,却出人意料的井然有序、有层有次,效率非常高。原来检疫部门采取了一种特别的策略:每五个人用一组试剂盒,进行快筛,分分钟搞定了几百人的社区检测。这里解释一下病毒核酸检测的原理,检测人员提取小区居民的鼻腔拭子或者咽拭子(就是用一根棉签在咽喉处或者鼻腔深处刮取一些分泌物),然后将该棉签放入试剂盒,以病毒独特的基因序列检测靶标,通过PCR扩增,使我们选... 后端Python3+Flask结合Socket.io配合前端Vue2.0实现简单全双工在线客服系统 https://v3u.cn/a_id_158 Wed, 24 Jun 2020 00:00:00 +0000 https://v3u.cn/a_id_158 在之前的一篇文章中:为美多商城(Django2.0.4)添加基于websocket的实时通信,主动推送,聊天室及客服系统,详细介绍了websocket协议以及结合Django如何实现各种功能,本次我们尝试采用Socket.io这个库和Flask来配合使用,完成一个简易的在线客服聊天系统,看看二者有什么区别。Socket.IO就是一个封装了Websocket、基于Node的JavaScript框架,包含client的JavaScript和server的Node(现在也支持python,golang等语言)。其屏蔽了所有底层细节,让顶层调用非常简单,另外,Socket.IO还有一个非常重要的好处。... Python3+Django2集成PayPal(贝宝)跨境支付三方接口以及订单查询和退款业务 https://v3u.cn/a_id_157 Sun, 14 Jun 2020 00:00:00 +0000 https://v3u.cn/a_id_157 如果您所在的公司涉及外贸或者跨境支付业务,那一定听说过大名鼎鼎的PayPal,总的来说,PayPal在跨国贸易里的优势还是比较大的,作为一种外贸支付方式,目前在国际贸易支付服务中倍受亿万用户追捧,是全球商户和消费者最受欢迎的电子支付方式之一,在跨境交易中有着超过90%的卖家和超过85%的买家认可并正在使用PayPal电子支付业务。当然,PayPal国际业务体量如此惊人,肯定不是毫无原因的。PayPal支付的优势就是其业务网络遍布全球。目前PayPal的庞大网络覆盖了全球200多个国家,可提供20多种语言服务,并接受100多种货币付款和56种货币提现。同时,还允许在账户中持有25种货币余额。换句... Win10系统下搭建Go lang开发环境更换国内源并且体验宇宙最快框架Iris https://v3u.cn/a_id_156 Fri, 12 Jun 2020 00:00:00 +0000 https://v3u.cn/a_id_156 最近有同学开始尝试接触Golang,拥抱新技术永远都会是一个好习惯,之前的一篇文章介绍了如何在Macos系统下配置Golang开发环境,这次我们在Win10系统下进行配置,并且更换国内的安装源,最后再和“全宇宙最快的web框架”--Iris亲密接触一下,对于Iris可能很多朋友并不熟悉,一般Golang在web开发领域相对著名的框架比如Beego或者Gin都名声在外,这里推荐Iris的原因也并不是因为它源于古希腊女神(彩虹女神)的炫酷名字,而是因为它在goroutine的加持下强大的Gohttpserver的性能。首先进入网站下载win10安装包:https://studygolang.com... 说起分布式自增ID只知道UUID?SnowFlake(雪花)算法了解一下(Python3.0实现) https://v3u.cn/a_id_155 Thu, 11 Jun 2020 00:00:00 +0000 https://v3u.cn/a_id_155 但凡说起分布式系统,我们肯定会对一些海量级的业务进行分拆,比如:用户表,订单表。因为数据量巨大一张表完全无法支撑,就会对其进行分库分表。但是一旦涉及到分库分表,就会引申出分布式系统中唯一主键ID的生成问题,当我们使用mysql的自增长主键(auto_increment)时,充分感受到了它的好处:整个系统ID唯一,ID是数字类型,而且是趋势递增的,ID简短,查询效率快,在分布式系统中显然由于单点问题无法使用mysql自增长了,此时需要别的解决方案来支撑分布式业务。首先映入脑海的一定是uuid>>>importuuid>>&am... Python3+Django2.0.4三方社交账号接入Gitee.com(码云) https://v3u.cn/a_id_154 Mon, 01 Jun 2020 00:00:00 +0000 https://v3u.cn/a_id_154 码云大家都耳熟能详了,国内版的github,其三方登录的接入方式也完全照搬github经典的OAuth2逻辑。首先注册码云的账号,随后在应用管理页面https://gitee.com/oauth/applications,新建三方应用:这里创建之后可以获取到clinet_id和client_screct图片logo可以不上传,但是应用域名和回调网址必须填写,需要注意的是必须要写完整网址也就是必须带上http或者https随后的流程可以参照官方文档:https://gitee.com/api/v5/oauth_doc#/第一步,通过浏览器或Webview将用户引导到码云三方认证页面上(GET请求... Win10系统下使用Django2.0.4+Celery4.4.2+Redis来实现异步任务队列以及定时(周期)任务(2020年最新攻略) https://v3u.cn/a_id_153 Tue, 26 May 2020 00:00:00 +0000 https://v3u.cn/a_id_153 首先明确一点,celery4.1+的官方文档已经详细说明,该版本之后不需要引入依赖django-celery这个库了,直接用celery本身就可以了,就在去年年初的一篇文章python3.7.2+Django2.0.4使用django-celery遇到的那些坑,中提到的一些bug,在今年早已不复存在,所以技术更新频率越来越快,本文详细阐述用新版Celery(4.4.2)来实现。关于celery的底层原理这里就不赘述了,简单的流程图就可以一图以蔽之安装对应的库pip3installcelery==4.4.2pip3installeventlet==0.25.2pip3installDjango=... Python3利用Twilio(国际)以及腾讯云服务(国内)免费发送手机短信 https://v3u.cn/a_id_152 Mon, 25 May 2020 00:00:00 +0000 https://v3u.cn/a_id_152 短信服务验证服务已经不是什么新鲜事了,但是免费的手机短信服务却不多见,本次利用Python3.0基于Twilio和腾讯云服务分别来体验一下国际短信和国内短信接口。首先,注册Twilio:https://www.twilio.com/注册成功后,获取ACCOUNTSID和AUTHTOKEN,一会要用到安装依赖的库pip3installtwilio随后编写发送脚本#导包导入客户端fromtwilio.restimportClient#定义短信sidaccount_sid='你的sid'#定义秘钥auth_token='你的秘钥'#定义客户端对象client=Client(account_sid,a... 如何应对外包公司(文思海辉)的Python后端面试 https://v3u.cn/a_id_151 Wed, 06 May 2020 00:00:00 +0000 https://v3u.cn/a_id_151 最近春招如火如荼,我接触到的几位同学也纷纷去市场里试了试水,不得不说由于疫情的影响,导致目前中等水平的开发者择业有了些许困难,毕竟不是所有人都能去一二线的大厂,有的时候海浪过大,我们不得不收起风帆,卧薪尝胆,入港蛰伏,所以我们可以把目光投向一些相对要求不是特别高的岗位,比如外包岗,当然了业内其实对外包公司有一些偏见,评价不高。客观的说,外包公司确实有一些不尽如人意的地方,但是其实也有一些好处不能忽略:比如接触的项目多,接触的人多,积累的经验快,适合想积累经验的人,同时有进入甲方的机会,如果业务做得不错,有一定机会能进入甲方公司,一般甲方如果是大厂的话直接进不去但通过外包进去后有一定概率能转甲方... 流量如何才能变现?实际测试谷歌广告联盟(Google Adsense)的广告效果以及如何优化相关代码 https://v3u.cn/a_id_150 Mon, 04 May 2020 00:00:00 +0000 https://v3u.cn/a_id_150 2010年,谷歌正式退出中国市场,无数人扼腕叹息,如今十年过去了,谷歌还有两条重要的业务线并没有完全退出,一个是页面统计业务(GoogleAnalytics),另外一个则是谷歌广告联盟(GoogleAdsense),说起广告联盟,玩儿过网站的朋友应该并不陌生,对于中小型站长、博主来说,要想通过网站的流量取得一些收入,除了和一些线下线上厂商谈包月广告位,更多的可能就是投放广告联盟广告了。但随着网络广告的不断发展,广告形式有了很大的变化,出现了CPC、CPS、CPA、CPV等众多广告类型。CPC—英文全称CostPerClick;CostPerThousandClick-Through。CPC是一... win10系统下把玩折腾DockerToolBox以及更换国内镜像源(各种神坑) https://v3u.cn/a_id_149 Mon, 20 Apr 2020 00:00:00 +0000 https://v3u.cn/a_id_149 2020年,这年头如果出去面试和面试官不聊几句Docker,都不好意思说自己是搞开发的。之前玩儿Docker都是在Mac系统里,没碰到过什么大问题,不过Docker这种容器技术本身就对Unix内核的系统天生友好,毕竟人家身体里流淌着linux的纯血基因,但是Docker对于Windows系统就显得不那么平易近人了,对待win10用户就有点矫情了,除了要求必须是64位系统以外,还必须要求系统版本是专业版,而家庭版用户想要一亲芳泽,还得借助Dockertoolbox这样的工具,所以这里作为win10家庭版用户的我们就依托dockertoolbox来感受一下docker的魅力。首先要明确一点dock... Python3.7将普通图片(png)转换为SVG图片格式并且让你的网站Logo(图标)从此”动”起来 https://v3u.cn/a_id_148 Sat, 18 Apr 2020 00:00:00 +0000 https://v3u.cn/a_id_148 在之前的几篇文章中,介绍了业界中比较火爆的图片技术SVG(ScalableVectorGraphics),比如Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript来打造属于自己的个性化社交分享系统,我们可以使用svg来打造精美炫酷的分享小图标(icon),这一次我们使用python来将普通的静态的网站logo图片转换为带路径(path)的svg图片,这样就可以让网站logo能够变成动态的,作为一名不折腾不舒服斯基,一枚炫酷自带动画的网站logo自然能够满足我们的折腾欲,同时亦能击中我们的虚荣心。首先第一步,先要将静态图做一步转换,以本站的logo作为例子,原... Python3.7配合Django2.0来调用钉钉(dingding)在线api实时监测员工考勤打卡情况 https://v3u.cn/a_id_147 Sun, 12 Apr 2020 00:00:00 +0000 https://v3u.cn/a_id_147 新冠疫情期间,大多数公司为了避免交叉感染都或多或少的采用了远程办公的方式,这显然是一个明智的选择,基本上钉钉(dingding)作为一个远程办公平台来用的话,虽然差强人意,但是奈何市面上没有啥更好的选择,矬子里拔将军,也还是可以凑合用的,不过远程办公有个问题,就是每天需要检查员工的考勤,居家办公虽然灵活,但是大家究竟有没有办公,则是另外一回事,钉钉提供的解决方案就是考勤在线打卡功能,但是检查出勤钉钉在移动端就有点费劲,需要在钉钉app里点击至少5次,还不能实时刷新,pc端的钉钉oa系统做的更烂,还不如移动端来得方便,另外如果你在一家上千人的企业里,这家企业有大大小小几十个部门,你又非常倒霉的担... 基于阿里云直播实现视频推流(ffmpeg)/拉流(Django2.0)以及在线视频直播播放(支持http/https)功能 https://v3u.cn/a_id_146 Wed, 08 Apr 2020 00:00:00 +0000 https://v3u.cn/a_id_146 由于5g网络的光速推广,视频业务又被推上了风口浪尖,在2019年初我们还在谈论照片,短视频等关键字,而进入2020年,我们津津乐道的就只有视频,视频,还是视频,普通人拿起手机做直播早已不是奢望,去年我曾经写了一篇文章:利用Docker挂载Nginx-rtmp(服务器直播流分发)+FFmpeg(推流)+Vue.js结合Video.js(播放器流播放)来实现实时网络直播,这篇攻略依托docker的便捷性,自主搭建了一个网络直播平台,只不过受限于个人服务器的带宽和配置,如果真的做起万人直播业务还是力不从心,所以本次我们尝试使用套路云,不好意思说错了,是阿里云(阿里云的套路是真的顶),我们利用阿里云来... 一抹凝重的灰色(css3)滤镜(filter)彰显仪式感,整站去色(黑白色)以示哀悼 https://v3u.cn/a_id_145 Mon, 06 Apr 2020 00:00:00 +0000 https://v3u.cn/a_id_145 2020年4月4日,几乎所有主流媒体的线上网站网易、搜狐、百度等的配色方案统一切换为灰色,比以往多了一分肃穆,往日的清明节只是一个不痛不痒的三日假期而已,而今年的清明注定不同,原因有三:一是临近清明这一传统哀思、祭奠先辈的节日。二是为国家事业牺牲的先烈,包括近期西昌救火及因新冠病毒牺牲的英雄们表示致敬。三是灰色给人稳重安定感,灰色是我们因哀思的一种沉积,更是蕴意着我们沉积过后,秉承先烈意志的一种奋发有为。当然了,也有的人认为这不过是一种形式主义,形式大于内容,如果不切换为灰色滤镜配色,也并不代表内心没有寄托哀思,其实呢,人生是需要仪式感的,人之以所以能为人,就是人类是有情感,智力,会制造和使用... 回忆与前端大神司徒正美(钟钦成)的二三事与大龄程序员猝死问题 https://v3u.cn/a_id_144 Fri, 03 Apr 2020 00:00:00 +0000 https://v3u.cn/a_id_144 新冠病毒肆虐之际惊闻噩耗,前端大神司徒正美因病去世,这是前端界的损失,也是整个业界的损失,他在前端框架方面造诣颇深,涉猎多种语言与设计模式,如今突然撒手而去,令人唏嘘,我们只能期望他是遁入了二次元世界,算法泯灭,精神的归精神,能量的归能量。我与司徒正美相识大概是在8年前,其时我刚刚入职优酷移动端团队,除了接手后端接口业务还要负责部分后台大CMS系统的功能开发,没错,当时优酷后台大CMS系统是由RubyonRails来驱动的,我入职之后还一度非常纳闷,为啥接口用tornado而后台居然用Rails,在晨会的时候还差点当着当时优酷移动端老大陈翌的面质疑这个问题。而面试官在面试的时候也对Ruby只字... Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript来打造属于自己的个性化社交分享系统 https://v3u.cn/a_id_143 Thu, 02 Apr 2020 00:00:00 +0000 https://v3u.cn/a_id_143 每一个应用程序,其实都会有分享的需求,比如一键分享一篇文章或者一些活动到微博或者微信亦或者是twitter等社交平台,因为人类是社交动物,而社交分享能够满足马斯洛需求金字塔情感和归属的需求以及受尊重的需求。另外网页的社交分享功能不仅可以满足阅读者,同时,对于网络应用本身,也可以相应的增加该网站的外部链接,比如微博豆瓣等线上粘性用户非常多的社交平台,如果是twitter或者facebook则可以带来一部分来自于国外的流量,对于网络平台来说,这样做即可以分发流量又可以引流导流,一箭双雕,一举而多得。但是如果使用普通的按钮或者图片来制作分享按钮未免太过单调,这里推荐使用iconfront,那么ico... python3.7爬虫:使用Selenium带Cookie登录并且模拟进行表单上传文件 https://v3u.cn/a_id_142 Sat, 28 Mar 2020 00:00:00 +0000 https://v3u.cn/a_id_142 前文再续,书接上一回,之前一篇文章我们尝试用百度api智能识别在线验证码进行模拟登录:Python3.7爬虫:实时api(百度ai)检测验证码模拟登录(Selenium)页面,这回老板又发话了,编辑利用脚本虽然登录成功了,但是有一些表单还是得手动上传,希望能改造成自动化流程。说实话,没毛病,机器能干的事,就没必要麻烦人了,拿人钱财,替人办事,开干。首先理清思路,没必要每次登录都去实时监测识别登录页面的验证码,而是反过来想,当我们登录成功了,必然在cookie里留下标识符比如token之类的,那么我们直接带着这些cookie去请求页面,就可以在cookie有效期内随时登录这个系统了:https:... Python3.7+Django2.0.4配合Mongodb打造高性能高扩展标签云存储方案 https://v3u.cn/a_id_141 Mon, 23 Mar 2020 00:00:00 +0000 https://v3u.cn/a_id_141 书接上回,之前有一篇文章提到了标签云系统的构建:Python3.7+jieba(结巴分词)配合Wordcloud2.js来构造网站标签云(关键词集合),但是这篇只是浅显的说明了一下如何进行切词以及前端如何使用wordcloud2.js进行前端展示,本次主要讨论下标签分词切出来之后,如何进行存储。假设我们目前文章-标签体系的需求是这样:每篇文章都具有唯一的标题、描述以及URL。每篇文章都具有一个或多个标签。每篇文章都具有作者的名称,以及喜欢每篇文章都有用户的评论,用户名、消息、日期时间以及评论的喜欢度。每篇文章都可以有0个或多个评论。那么如果使用关系型数据库来设计,比较简单的设计方案可以是这样:... python3.7+Django2.0.4配合vue.js2.0实现又拍云(upyun.cm)存储的异步拖拽文件上传功能 https://v3u.cn/a_id_140 Sat, 21 Mar 2020 00:00:00 +0000 https://v3u.cn/a_id_140 在之前的几篇文章里阐述过关于七牛云云存储文件上传的一些操作:python3.7+Vue.js2.0+Django2.0.4异步前端通过api上传文件到七牛云云端存储;使用Tornado配合七牛云存储api来异步切分上传文件,得益于七牛云完备的文档体系,没遇到什么大坑,现在来介绍一下业内和七牛云齐名的云服务平台又拍云,本站的全球cdn服务就是使用又拍云:关于又拍云免费cdn全网加速服务的长期评测(各种踩坑),因为又拍云的免费流量比七牛云多出大概5g左右,当然了得加入一个所谓的又拍云联盟:https://www.upyun.com/league,本次文章记录一下使用python3.7+Django... 利用Css3样式属性Cursor来更换自定义个性化鼠标指针(光标) https://v3u.cn/a_id_139 Tue, 17 Mar 2020 00:00:00 +0000 https://v3u.cn/a_id_139 现而今,我们纵向的回顾整个大前端的历史,不难发现,人们对前端的审美要求越来越高,越来越严苛,与此同时,人们对追求美的体验是也极致的,从理性到感性,从平面到几何,从现实到虚拟,所以从某种角度来说,作为前端工程师,他们所追求的东西往往和人类软件核心理念南辕北辙,因为人类的终极追求是个性,绝不是共性,换句话说,大家都一样就不好玩儿了。那么作为web前端,追求个性的手段手段之一就是鼠标指针的更换,早在css2时代,Cursor属性就可以对象鼠标指针光标进行控制,可以根据自身需要选择设置鼠标指针样式,代码如下:<head><title>cursor... Python3.7+jieba(结巴分词)配合Wordcloud2.js来构造网站标签云(关键词集合) https://v3u.cn/a_id_138 Sat, 14 Mar 2020 00:00:00 +0000 https://v3u.cn/a_id_138 其实很早以前就想搞一套完备的标签云架构了,迫于没有时间(其实就是懒),一直就没有弄出来完整的代码,说到底标签对于网站来说还是很重要的,它能够对一件事物产生标志性描述,通常都会采用相关性很强的关键字,这样不仅便于检索和分类,同时对网站的内链体系也是有促进作用的。最近疫情的关系一直在家里呆着,闲暇时和一些学生聊天的时候,人家问:你说你一直在写博客,那你到底在写一些什么内容的文章呢?我竟然一时语塞,于是搞出来下面这种的标签云,下回被问同样的问题时,就可以展示一下了。和传统的在线博客标签云最大的区别在于,这些标签并不是我手动打上去的,因为时间有限,每写一篇文章就自己提取很多关键字出来,还得挨个入库,这... 使用Python3.7+Tornado5.1集成新浪微博三方登录(无需企业资质) https://v3u.cn/a_id_137 Wed, 11 Mar 2020 00:00:00 +0000 https://v3u.cn/a_id_137 新浪微博:山寨版的twitter,各种粉丝的集散地,天朝人民的最爱,基本上网民都人手一个微博账号,所以使用新浪微博账号进行三方登录来提高用户登录体验就显得尤为重要,本次使用Python3+Tornado5来集成微博登录,记录一下,坑还是不少的。首先注册微博开放平台:https://open.weibo.com/选择微链接-》网站接入=>立即接入新建一个应用应用创建成功后,会立即跳转审核页面,需要填写一些资质,用来进行审核,其实这些审核字段都不用搭理,应用压根就不需要通过审核只需要拿到appkey和appsecret即可,然后立即点击高级信息,填写回调网址需要注意一点,目前新浪对1... 使用Python3.7配合协同过滤算法(base on user,基于人)构建一套简单的精准推荐系统(个性化推荐) https://v3u.cn/a_id_136 Tue, 10 Mar 2020 00:00:00 +0000 https://v3u.cn/a_id_136 时至2020年,个性化推荐可谓风生水起,Youtube,Netflix,甚至于Pornhub,这些在互联网上叱咤风云的流媒体大鳄无一不靠推荐系统吸引流量变现,一些电商系统也纷纷利用精准推荐来获利,比如Amzon和Shopfiy等等,精准推荐用事实告诉我们,流媒体和商品不仅仅以内容的传播,它还能是一种交流沟通的方式。那么如何使用python语法构造一套属于我们自己的推荐系统呢,这里推荐协同过滤算法,它隶属于启发式推荐算法(Memory-basedalgorithms),这种推荐算法易于实现,并且推荐结果的可解释性强,其中我们使用基于用户的协同过滤(User-basedcollaborativef... Mac os:将Homebrew的下载源换成国内镜像增加下载速度(阿里云镜像) https://v3u.cn/a_id_135 Sun, 08 Mar 2020 00:00:00 +0000 https://v3u.cn/a_id_135 可能所有的mac用户都遇到过下面这种操蛋情况,在网络环境不太好的时候,你满怀期望的敲下brewinstall应用名称,静静的等待安装结果时,Homebrew在Updating的地方卡死了,真是令人沮丧,当然了,这不是Homebrew的错,Homebrew是一款MacOS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。Homebrew主要分两部分:gitrepo(位于GitHub)和二进制bottles,这两个网站在国内访问起来都慢的可以。接下来操作一下如何使用阿里云来加速这两部分的下... Python3.7爬虫:实时api(百度ai)检测验证码模拟登录(Selenium)页面 https://v3u.cn/a_id_134 Thu, 05 Mar 2020 00:00:00 +0000 https://v3u.cn/a_id_134 今天有同学提出了一个需求,老板让自动登录这个页面:https://www.dianxiaomi.com/index.htm,毫无疑问登录页面基本都会有在线验证码,要破解这个验证码当然不是啥难事,诚然可以自己去训练模型,然而大量的训练集测试数据还得自己去打码,说白了,不值当,有现成的接口可以用,何乐而不为,于是我们向万恶的百度伸出了魔爪。首先申请百度api开发平台:https://cloud.baidu.com/随后在人工智能-》文字识别模块里建立一个应用建立成功后,会分配给你一个key和secret只不过这个接口免费版的每秒最多只能请求两次,一天有500次的请求机会这里推荐使用高精度的接口,普... 使用Python3.7+Django2.0.4配合vue.js2.0的组件递归来实现无限级分类(递归层级结构) https://v3u.cn/a_id_133 Tue, 03 Mar 2020 00:00:00 +0000 https://v3u.cn/a_id_133 所谓的无限极分类是啥?其实简单点说就是一个人类可以繁衍出多个后代,然后一个后代又可以分另外多个后代这样无限繁衍下去(可以想象神奇动物在哪里2里面莱斯特兰奇的家族族谱),就好象linux系统你可以新建一个文件夹,然后在这个文件夹里又可以建一些个文件夹,在文件夹底下还可以建一些文件夹一样,随后使用tree命令就可以查看文件夹目录层级。那么这种层级结构也成为树结构在日常的开发需求里也是很常见的,比如美多商城系统的商品分类,课程的目录章节,以及以及论坛里的帖子回复等等,本次我们后台利用Django来写一个能够返回层级结构数据的接口,接口将该数据以json的形式返回前端,前端使用vue的组件递归来展示数... 使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略) https://v3u.cn/a_id_132 Sat, 29 Feb 2020 00:00:00 +0000 https://v3u.cn/a_id_132 最近疫情比较严重,很多公司依靠阿里旗下的办公软件钉钉来进行远程办公,当然了,钉钉这个产品真的是让人一言难尽,要多难用有多难用,真的让人觉得阿里的pm都是脑残才会设计出这种脑残产品,不过吐槽归吐槽,该用还得用,虽然钉钉别的功能很鸡肋,但是机器人这个功能还是让人眼前一亮,属于比较极客的功能,它可以将第三方服务的信息聚合到钉钉群中,实现信息的自动化同步,例如:通过聚合Github、Gitlab等源码管理服务,实现源码更新同步;通过聚合Trello、JIRA等项目协调服务,实现项目信息同步;同事,支持Webhook协议的自定义接入,支持更多可能性,例如:将运维报警提醒、自动化测试的结果报告提醒、工作、... win10+sublime3配置python3.7和vue2.0前后端分离项目以及sublime3最新注册码破解 https://v3u.cn/a_id_131 Wed, 26 Feb 2020 00:00:00 +0000 https://v3u.cn/a_id_131 最近一直在用mac下的虚拟机运行win10系统,由于在线人数过多,直播授课的时候使用vscode的时候内存暴涨,于是考虑切换回sublime3,毕竟编辑器要比ide要轻量的多,在此记录一下整个流程。首先下载,sublime3软件安装包:https://www.sublimetext.com/安装好后,安装python3.7,下载地址:https://www.python.org/,由于我之前已经安装过所以不赘述了,没有安装过的同学别忘了安装好以后在win10下要配置环境变量编辑器和Python全都安装完成后,就是在sublime内配置python的开发环境1:配置编译环境打开sublime,依... 使用python3.7+Vue.js2.0+Django2.0.4异步前端通过api上传文件到七牛云云端存储 https://v3u.cn/a_id_130 Mon, 24 Feb 2020 00:00:00 +0000 https://v3u.cn/a_id_130 之前一篇文章是通过普通js+tornado来上传七牛云:使用Tornado配合七牛云存储api来异步切分上传文件,本次使用vue+django来进行异步上传,因为毕竟vue.js才是目前的前端的主流。首先注册七牛云:qiniu.com,进入你的七牛云账号,打开秘钥页,记录下你的ak和sk随后新建一个云存储空间,这里空间名字一定要记录一下:此时我们用django写一个获取uptoken的接口,使用drf框架来写,注意别忘了安装七牛云扩展pipinstallqiniu#七牛云tokenfromqiniuimportAuthclassQiNiu(APIView):defget(self,reques... 在Centos7上将Apache(httpd)切换为Nginx的过程记录 https://v3u.cn/a_id_129 Sun, 16 Feb 2020 00:00:00 +0000 https://v3u.cn/a_id_129 近期要上线几个基于tornado+motor的移动端接口服务,众所周知,Apache和tornado天生八字不合,尤其apache对python3尤为的不友好,tornado和nginx才是木石前盟,另外由于apache目前系统占用确实比较高,不光进程数多,httpd竟然占用了200多M,太庞大,决定换为较轻量级,高并发的nginx。如上图所示:系统也就2g,除了mysql占用的100M,httpd占了1/2还多首先由于apache和nginx默认都是监听80端口,所以首先要停止apache服务(为了保险起见,只是停止服务,不要卸载)systemctlstophttpd第二步,安装nginx#... 关于又拍云免费cdn全网加速服务的长期评测(各种踩坑) https://v3u.cn/a_id_128 Sun, 26 Jan 2020 00:00:00 +0000 https://v3u.cn/a_id_128 之前一篇文章阐述了如何在前端进行网站优化:具体谈谈如何优化前端性能的总结,其中一条重要的优化手段是cdn加速,所谓cdn加速就是采用更多的缓存服务器(CDN边缘节点),布放在用户访问相对集中的地区或网络中。当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求在写那篇文章的时候,我本人还未实际使用过cdn加速,也就是说还停留在理论阶段,正所谓实践才是检验真理的唯一标准,本次我们就实际测试一下cdn加速,只不过这次我们使用又拍云的服务,又拍云每个月可以为用户免费提供15g的流量,比七牛云要多出5g,同时之前的一篇文章我们已经使用七牛云用来存储静态图片... 简短截说阐述redis中事务(Redis Transactions)的使用 https://v3u.cn/a_id_127 Sun, 12 Jan 2020 00:00:00 +0000 https://v3u.cn/a_id_127 我们知道,在关系型数据库中,比如mysql,如果要使用事务,首先向数据库服务器发送BEGIN,然后执行各个相互一致的写操作和读操作,最后,用户可以选择发送COMMIT来确认之前所做的修改,或者发送ROLLBACK来放弃那些修改。同样,Redis中也有简单的方法处理一连串相互一致的读操作和写操作。首先是以MULTI命令开始事务,后续跟着一连串命令,最后以EXEC结束事务或者以DISCARD命令撤销所有命令并结束事务。但是redis事务和mysql事务最重要的一点区别是,redis事务不管指令正确或者错误,都会执行,中途遇见错误指令也会继续执行后面的指令,Redis并没有像mysql那样的事务回滚... 使用python3.7和opencv4.1来实现人脸识别和人脸特征比对以及模型训练 https://v3u.cn/a_id_126 Thu, 02 Jan 2020 00:00:00 +0000 https://v3u.cn/a_id_126 OpenCV4.1已经发布将近一年了,其人脸识别速度和性能有了一定的提高,这里我们使用opencv来做一个实时活体面部识别的demo首先安装一些依赖的库pipinstallopencv-pythonpipinstallopencv-contrib-pythonpipinstallnumpypipinstallpillow需要注意一点,最好将pip设置国内的阿里云的源,否则安装会很慢win10在用户目录下创建一个pip文件夹,然后在pip文件夹内创建一个pip.ini文件,文件内容如下[global]trusted-host=mirrors.aliyun.comindex-url=http://... 基于Vue.js2.6结合h5来实现视频播放画中画技术(Picture-in-Picture) https://v3u.cn/a_id_125 Wed, 25 Dec 2019 00:00:00 +0000 https://v3u.cn/a_id_125 在开发基于vue.js的在线视频教育平台的时候,我们会注意一个小问题,就是如果用户在观看播放视频的同时,也会往下拖动窗口浏览一些评论,这样视频就会被滚动条覆盖,导致用户无法在浏览评论的同时观看视频,同理,如果想边刷微博边追剧怎么办?想边聊微信边看球赛怎么办?目前我们可以用h5的技术来解决这个问题,支持HTML5<video>播放时候Picture-in-Picture,也就是俗称的画中画技术,也就是很多视频网站看评论时候,播放视频变小挂在右下角的这种交互技术。先看效果:可以看到,当触发了画中画特效,网站右下角就会出现一个小型的视频播放器,它能够浮动跟踪于窗口,这样就... 使用Django2.0.4集成钉钉第三方扫码登录 https://v3u.cn/a_id_124 Sat, 21 Dec 2019 00:00:00 +0000 https://v3u.cn/a_id_124 钉钉作为阿里旗下的一款免费移动通讯软件,受众群体越来越多,这里我们使用Django来集成一下钉钉的三方账号登录,首先注册钉钉开发平台:https://open-dev.dingtalk.com/在移动应用中选择登录创建一个网站应用,其中有用的信息是appid,appsecret,还有回调网址随后,查看官方文档,查看如何构造登录url:https://ding-doc.dingtalk.com/doc#/serverapi2/kymkv6这里我们用django的视图来操作#构造钉钉登录urldefding_url(request):appid='dingoaukgkwqknzjvamdqh're... 使用异步非阻塞框架Tornado配合七牛云存储Api来异步切分上传文件 https://v3u.cn/a_id_123 Sun, 15 Dec 2019 00:00:00 +0000 https://v3u.cn/a_id_123 之前写了几篇关于FastDfs分布式存储的文章:python3.7.3操作FastDfs来进行文件操作,其实市面上关于云存储的第三方服务比比皆是,最著名的无疑就是七牛云存储,本次我们将演示用tornado配合七牛云来进行文件的云存储操作。在做七牛云的文件上传时,很多人有一个误区,就是以为是前端先上传到后台服务器,然后后台服务器再将文件上传到七牛云,这个逻辑本身没有问题,但是会遇到一个问题,如果是后台对接七牛,出一个接口,前端调用接口,先将图片传到后台,然后后台再上传七牛云,用的过程中发现,文件小的情况下还好,文件一旦到了几十兆甚至几百兆的时候就很慢,前端上传图片到后台需要一定时间,后端上传到七... 为你的网站加上live2d的动态小挂件,博君一晒 https://v3u.cn/a_id_122 Thu, 12 Dec 2019 00:00:00 +0000 https://v3u.cn/a_id_122 喜欢二次元的朋友一定对大名鼎鼎的live2d技术并不陌生,live2D是一种应用于电子游戏的绘图渲染技术,技术由日本Cybernoids公司开发,通过一系列的连续图像和人物建模来生成一种类似三维模型的二维图像。可以看到本站右下角出现了一只可爱的小喵可以看到这只猫会跟着你的鼠标运动,有着伪3D的感觉,这种技术的核心就是明明是2D平面设计风格,却有3D行为交互的效果就是live2d值得一提的是Live2D游戏也风靡一时,比较著名的有《梦幻俱乐部》(DREAMCCLUB),其在android端首次使用live2d技术,可以说有着里程碑的意义,得到了业界的一致好评。live2d官方提供了很多平台的SD... 尝试开发微信公众号消息推送功能并且和小程序关联 https://v3u.cn/a_id_121 Sun, 10 Nov 2019 00:00:00 +0000 https://v3u.cn/a_id_121 之前写了几篇关于微信小程序的开发实践,总的来说没啥难度,感兴趣的请移步:使用Mpvue配合Weui开发面试题题库微信小程序,并且发布到正式环境,这一次我们来尝试开发一下微信公众号,那么公众号和小程序到底有什么区别呢?首先定位不同公众号服务于营销与信息传递,小程序面向产品与服务。公众号主要用于信息的传递实现人与信息的连接,借助H5能够实现简单的交互,主要以营销和信息传递为主简单的服务为辅,而小程序从功能上与公众号有严格区分(不支持关注、消息推送等营销手段),一方面使得产品与服务不至于淹没在公众号营销信息中,另一方支持公众号、朋友圈、群与小程序之间的互动与导流,使得开发者专心做产品与服务,从而为微... 在半小时内从无到有开发并调试一款Chrome扩展(Chrome插件/谷歌浏览器插件) https://v3u.cn/a_id_120 Tue, 05 Nov 2019 00:00:00 +0000 https://v3u.cn/a_id_120 就在不久之前,我们目前这个毕业班的班长那日同学和我说,他正在公司开发Chrome扩展,看起来很高大上的技术,实际开发却非常简单,这引起了我非常浓厚的兴趣,正所谓技不压身,检验自身技术的手段之一就是拥抱新事物,这一次我们尝试在半小时内开发一款Chrome扩展,因为之前我们做了一个微信小程序的在线面试题题库的项目,所以正好利用这个题库将面试题平移到Chrome扩展上面。Chrome插件其实和一个普通web应用一样都是由html+css+js经过zip打包组成的,插件可以使用Chrome提供的浏览器API,增强浏扩展览器的功能。Chrome插件通常是.crx后缀的文件,通过谷歌网上应用商店下载或者在... 关于微信小程序体验版获取不到openId的问题 https://v3u.cn/a_id_119 Fri, 01 Nov 2019 00:00:00 +0000 https://v3u.cn/a_id_119 我们知道openid是微信用户验证的重要标识,支付功能严重依赖这个东西,之前我们做微信支付的时候是通过在微信客户端直接调用官方接口,通过传code参数来调用,下面这样:getOpenId(){//获取用户的openidlet_this=this;wx.login({success(res){if(res.code){//发起网络请求wx.request({url:'https://api.weixin.qq.com/sns/jscode2session',data:{appid:appId,//开发者appidsecret:secret,//开发者AppSecret(小程序密钥)grant_t... 在Mac上用手机抓包软件Charles抓取微信小程序中的高清无水印视频 https://v3u.cn/a_id_118 Tue, 29 Oct 2019 00:00:00 +0000 https://v3u.cn/a_id_118 手机抓包是一名测试工程师常备的技能,比如我想查看一个接口请求的参数、返回值,还有移动设备上的http请求、https请求,这一次的背景是我们想要在app端和小程序端抓取一些视频,这里用腾讯视频作为例子,使用mac系统的Charles软件(有点类似win系统中的fiddler,使用方式上大同小异)来进行视频接口与地址的抓包和嗅探。同时抓包工具也有利于线上生产环境问题的分析,前几天有个做服务端的同学跟我说他不用抓包工具,遇到问题直接debug代码,那我问他,如果线上服务的话,你怎么调?在实际项目中,没有遇到跟客户端相互扯皮的事情吗?客户端说他没问题,服务端也说他没问题,到底谁有问题?这时候没必要相... 使用Docker-compose搭建nginx-keepalived双机热备来实现高可用nginx集群 https://v3u.cn/a_id_117 Fri, 18 Oct 2019 00:00:00 +0000 https://v3u.cn/a_id_117 最近同学出去面试经常会被问到一个问题。面试官:你说你们公司使用nginx反向代理tornado,部署了多少多少台机器,好像很牛逼的样子,但是我问你,如果主机也就是部署了nginx那台机器并发过大导致宕机了怎么办?答曰:不考虑带宽峰值的话,比较新的CPU跑nginx单核每秒能接近2万请求,而且nginx如果纯做HTTP转发的话,Nginx的性能高到恐怖,会挂掉很不科学。。。。面试官:好吧,算你会忽悠,那如果插头被扫地大妈踢掉了怎么办,因为没电导致服务器宕机答曰:阿里云机房会断电。。。你特么在逗我吧。。其实负责转发的主机宕机概率很小,但是绝对不是没有,任何事都不是绝对,所谓的高可用架构就是体现在容... 使用Mpvue配合Weui开发面试题题库微信小程序,并且发布到正式环境 https://v3u.cn/a_id_116 Mon, 14 Oct 2019 00:00:00 +0000 https://v3u.cn/a_id_116 之前的一篇文章详细阐述了微信小程序开发的准备和入门以及环境搭建,这一次我们介绍如何将微信小程序如何上线,同时配合weui美化界面。本次做的微信小程序项目是一个类似在线题库的功能,面试者可以通过小程序来检索笔试题,同时用户输入关键词时同步监听输入行为,不需要点击就可以获取知识要点,后台采用tornado+mongodb+mortor的组合实现异步非阻塞的接口。首先weui是腾讯团队为微信小程序设计的一款皮肤,可以提高用户视觉体验,可以在官网下载weui.css:https://github.com/Tencent/weui-wxss/,将下载的weui.css放在小程序项目的src目录下,然后打... 使用Docker-compose来封装celery4.1+rabbitmq3.7服务,实现微服务架构 https://v3u.cn/a_id_115 Sat, 28 Sep 2019 00:00:00 +0000 https://v3u.cn/a_id_115 大家都知道,Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,在之前的一篇文章中:python3.7+Tornado5.1.1+Celery3.1+Rabbitmq3.7.16实现异步队列任务详细阐述了如何进行安装部署和使用,但是过程太繁琐了,先得安装Erlang,再安装rabbitmq,然后各种配置,最后由于async关键字问题还得去修改三方库的源码,其实我们可以通过docker来将celery服务封装成镜像,如此一来,以后再使用celery或者别的系统依赖celery,我们只需要将该镜像以容器的形式跑服务即可,不需要繁琐的配置与安装。首先新建celery_with_docke... 利用CSS3自定义属性来为网站添加“暗黑模式”(暗色模式/DarkMode) https://v3u.cn/a_id_114 Sun, 22 Sep 2019 00:00:00 +0000 https://v3u.cn/a_id_114 究竟什么是暗黑模式?这个概念起初来源于macOS系统,该系统的mojave版本为用户提供两个主题皮肤,即浅色和深色的皮肤。自从有了这个概念之后,很多网站和系统都会用户提供了相应的两套肤色,便于用户根据自己的习惯或爱好进行切换从科学的角度讲,低对比度的暗色可以降低屏幕对视网膜的刺激,同时还可以让电子设备更加省电。在过往的印象之中,最早实现类似的效果,一般都是通过JavaScript来更换Web页面或Web应用程序主题皮肤的.css文件,但是对于维护多套样式是较为痛苦的,特别当你要为你的产品提供更多的皮肤的时候更为堪忧。这个时候你可以借助类似Sass这样的处理器来维护你的主题样式,声明好变量,然后... Python3的原生协程(Async/Await)和Tornado异步非阻塞 https://v3u.cn/a_id_113 Fri, 20 Sep 2019 00:00:00 +0000 https://v3u.cn/a_id_113 我们知道在程序在执行IO密集型任务的时候,程序会因为等待IO而阻塞,而协程作为一种用户态的轻量级线程,可以帮我们解决这个问题。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存,在调度回来的时候,恢复先前保存的寄存器上下文和栈。因此协程能保留上一次调用时的状态,即所有局部状态的一个特定组合说人话:说白了就是,当协程遇到io操作而阻塞时,立即切换到别的任务,如果操作完成则进行回调返回执行结果,提高了效率,同时这样也可以充分利用CPU和其他资源,这就是异步协程的优势,并且协程本质上是个单进程,相对于多进程来说,无需进程间上下文切换的开销,无需原子操作锁定及同步的开销,编程模型也... mpvue1.0+python3.7+Django2.0.4实现微信小程序的支付功能 https://v3u.cn/a_id_112 Sun, 15 Sep 2019 00:00:00 +0000 https://v3u.cn/a_id_112 其实微信支付有很多种形式,刷脸,扫码,APP支付,小程序支付等,这边只说明小程序支付的实现,不过原理上都大同小异。首先,需要注册微信公众号平台https://mp.weixin.qq.com,并且开通微信支付功能,随后将你的小程序关联一个微信商户:pay.weixin.qq.com,这一系列申请下来之后,你手中需要有微信小程序appid,微信小程序秘钥,商户号,以及商户秘钥,这四个关键的支付配置变量。然后大体流程分两步:1在自己的后台服务器上访问微信提供的接口,拿到预支付交易会话标识prepay_id、微信返回的随机字符串nonce_str,这两个参数是要返回给自己的小程序的,小程序在调起微信... 基于python3.7利用Motor来异步读写Mongodb提高效率 https://v3u.cn/a_id_111 Fri, 06 Sep 2019 00:00:00 +0000 https://v3u.cn/a_id_111 如果使用Python做大型海量数据批量任务时,并且backend用mongodb做数据储存时,常常面临大量读写数据库的情况。尤其是大量更新任务,由于不能批量操作,我们知道pymongo是同步任务机制,相当耗时。如果采用多线程、多进程的方案确实有效,但编写麻烦、消耗系统资源大(pymongo还不允许fork线程中共用连接)。这里主要瓶颈在于IO,使用单线程异步操作就会效果很好。Motor是一个异步mongodbdriver,支持异步读写mongodb。它通常用在基于Tornado的异步web服务器中。Motor同时支持使用asyncio(Python3.4以上标准库)作为异步模型,使用起来十分方... 基于Docker-compose搭建Redis高可用集群-哨兵模式(Redis-Sentinel) https://v3u.cn/a_id_110 Wed, 04 Sep 2019 00:00:00 +0000 https://v3u.cn/a_id_110 我们知道,Redis的集群方案大致有三种:1)rediscluster集群方案;2)master/slave主从方案;3)哨兵模式来进行主从替换以及故障恢复。sentinel系统可以监视一个或者多个redismaster服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务升级为master服务替代已下线的master服务继续处理请求。同样,我们使用docker进行搭建新建一个mkdirredis-sentinel文件夹进入项目文件夹cdredis-sentinel,再建立一个sentinel专门来存放哨兵脚本,然后cdsentinel建立... 使用flex弹性布局来为微信小程序写自适应页面 https://v3u.cn/a_id_109 Tue, 03 Sep 2019 00:00:00 +0000 https://v3u.cn/a_id_109 我们知道,写习惯了前端的人,一般切图后布局页面的话,上手最习惯的是基于盒子模型的浮动布局,依赖display属性+position属性+float属性,但是浮动布局有一些致命的小问题,比如垂直居中比较费劲,比如著名的float坍塌问题,另外有些极端情况下,还得使用模型+clear:both来手动清除浮动,比较麻烦。于是,W3C提出了一种新的方案----Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能,本人在微信小程序页面中尝试了一下弹性布局,个人感觉是:简直太好用了。Flex是FlexibleBox的缩写,意为&... 在centos7.6上利用docker-compose统一管理容器和服务 https://v3u.cn/a_id_108 Mon, 02 Sep 2019 00:00:00 +0000 https://v3u.cn/a_id_108 众所周知,一个大型的Docker容器组成的微服务应用中,容器的数量是非常巨大的,如果依赖传统的人工配置方式进行维护,对于开发和运维来说简直就是噩梦。docker-compose的出现正是为了解决这个问题。docker-compose是一个用于定义和运行多容器Docker应用的工具,只需要一个Compose的配置文件和一个简单的命令就可以创建并运行应用所需的所有容器。在配置文件中,所有容器通过services来定义,并使用docker-compose命令启动或停止容器以及所有依赖容器。如何安装请参照这篇文章:在Centos7.6上部署Docker环境以及安装docker-compose我们的目标... 关于Python3异步非阻塞Web框架Tornado:真实的异步和虚假的异步 https://v3u.cn/a_id_107 Sun, 01 Sep 2019 00:00:00 +0000 https://v3u.cn/a_id_107 我们知道Tornado优秀的大并发处理能力得益于它的webserver从底层开始就自己实现了一整套基于epoll的单线程异步架构,其他web框架比如Django或者Flask的自带server基本是基于wsgi写的简单服务器,并没有自己实现底层结构。而tornado.ioloop就是tornadowebserver最底层的实现。ioloop的实现基于epoll,那么什么是epoll?epoll是Linux内核为处理大批量文件描述符而作了改进的poll/select。那么到底什么是poll/select?socket通信时的服务端,当它接受(accept)一个连接并建立通信后(connectio... 使用python3和高性能全文检索引擎Redisearch进行交互 https://v3u.cn/a_id_106 Fri, 30 Aug 2019 00:00:00 +0000 https://v3u.cn/a_id_106 上一篇介绍了一款高性能全文检索引擎Redisearch,它不仅性能强劲,部署也方便,这里介绍一下如何用python客户端和它进行交互。使用redisearch-python:https://github.com/RediSearch/redisearch-py首先,安装pip3installredisearch基本操作:fromredisearchimportClient,TextField#Creatingaclientwithagivenindexnameclient=Client('myIndex',host='localhost',port='6666')#Creatingtheind... 平民版的Elasticsearch?使用Redisearch实现的全文检索功能服务 https://v3u.cn/a_id_105 Thu, 29 Aug 2019 00:00:00 +0000 https://v3u.cn/a_id_105 “检索”是很多产品中无法绕开的一个功能模块,当数据量小的时候可以使用模糊查询等操作凑合一下,但是当面临海量数据和高并发的时候,业界常用elasticsearch和lucene等方案,但是elasticsearch对运行时内存有着最低限额,其运行时大小推荐2G以上的内存空间,并且需要额外的磁盘空间做持久化存储。其实mongoDB内置的正则匹配搜索文本以及自带的text索引和search关键字也是一套靠谱的解决方案,但是这一次我们带来一种更加高效经济的文本检索方案:Redisearch下图是elasticsearch和redisearch的性能对比RedisModules是redis4.0引入的一... 9012年,您真的需要Thrift这样一个RPC微服务框架来拯救一下传统HTTP接口(api)了 https://v3u.cn/a_id_104 Tue, 27 Aug 2019 00:00:00 +0000 https://v3u.cn/a_id_104 目前市面上类似Django的drf框架基于json的http接口解决方案大行其道,人们也热衷于在接口不多、系统与系统交互较少的情况下使用它,http接口的优点就是简单、直接、开发方便,门槛低,利用现成的http协议进行传输。但是事情往往有两面,如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先就是长链接,不必每次通信都要像http一样去3次握手4次挥手,减少了网络开销;其次就是RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作。第三个来说就是安全性。最后就是最近流行的服务化架构、服务化治理,RP... 使用基于mpvue的框架开发微信小程序(搭建环境) https://v3u.cn/a_id_103 Mon, 26 Aug 2019 00:00:00 +0000 https://v3u.cn/a_id_103 美团很早就开源了mpvue这个项目,如此看来,美团可不仅仅是一家团购网站,真正的技术驱动型企业,使得我们多了一种用来开发微信小程序的框架选项。由于mpvue框架是完全基于Vue框架的(重写了其runtime和compiler),因此在用法上面是高度和Vue一致的(某些功能由于受限于小程序环境本身的原因而不能使用,但是瑕不掩瑜),这给使用过Vue开发Web应用的前端开发者提供了极低的门槛来开发小程序。搭建所需的软件环境,首先mpvue是基于vue.js,同时也需要vue-cli脚手架,注意一点:你的node环境版本必须大于9.0,否则会出现和新版mpvue不兼容的情况,首先去微信公众号平台注册开... 在centos7.6上部署前后端分离项目Nginx反向代理vue.js2.6+Tornado5.1.1,使用supervisor统一管理服务 https://v3u.cn/a_id_102 Thu, 22 Aug 2019 00:00:00 +0000 https://v3u.cn/a_id_102 这一次使用vue.js+tornado的组合来部署前后端分离的web项目,vue.js不用说了,前端当红炸子鸡,泛用性非常广,无论是单页应用,还是混合式开发app,亦或是微信小程序开发,样样得心应手,tornado最近的风头有点被新锐框架sanic抢走了,但是作为老牌的异步非阻塞框架,其内置了支持epoll/kqueue等高效网络库,而具备了处理高并发的能力并且开发效率也不低,这一次tornado作为承载后端压力的角色。首先部署前端,将测试好的vue.js2.6项目打包,值得一提的是,在生产环境并不需要node.js服务,因为利用vue.js的特性可以对前端页面进行打包,使其成为一个纯静态页包... 在Centos7.6上部署Docker环境以及安装docker-compose https://v3u.cn/a_id_101 Wed, 21 Aug 2019 00:00:00 +0000 https://v3u.cn/a_id_101 毫无疑问,Docker目前是现阶段最为火爆的容器技术了,它在业务解耦和拆分业务层面有着不可忽视的作用,而使用DockerCompose可以轻松、高效的管理容器,它是一个用于定义和运行多容器Docker的应用程序工具,这里记录一下如何在centos7.6上部署Docker以及docker-compose。#升级yumsudoyumupdate#卸载旧版本dockersudoyumremovedockerdocker-commondocker-selinuxdocker-engine#安装依赖sudoyuminstall-yyum-utilsdevice-mapper-persistent-dat... 利用基于Python的Pelican打造一个自己的个人纯静态网站 https://v3u.cn/a_id_100 Thu, 08 Aug 2019 00:00:00 +0000 https://v3u.cn/a_id_100 其实呢这么多年以来我一直建议每个有技术追求的开发者都要有写技术博客记笔记的良好习惯,一来可以积累知识,二来可以帮助别人,三来可以把开发中遇到的问题记录用来自省,第四可以通过交换友链来结识更多的技术领域的同仁。之前我曾经写过两篇相似的文章用来快速搭建个人网站,一款基于golang:利用基于GoLang的Hugo配合nginx来打造属于自己的纯静态博客系统另外一款基于node.js:使用Hexo建立一个轻量、简易、高逼格的博客,这一次带来一款基于python的静态网页生成器Pelican,它是一位法国开发者开发的,非常好用,它的每一篇文章会事先渲染成HTML静态文件,访问速度非常快首先安装pelc... python3.7+Tornado5.1.1+Celery3.1+Rabbitmq3.7.16实现异步队列任务 https://v3u.cn/a_id_99 Wed, 31 Jul 2019 00:00:00 +0000 https://v3u.cn/a_id_99 在之前的一篇文章中提到了用Django+Celery+Redis实现了异步任务队列,只不过消息中间件使用了redis,redis作为消息中间件可谓是差强人意,功能和性能上都不如Rabbitmq,所以本次使用tornado框架结合celery,同时消息中间件使用Rabbitmq来实现异步发邮件,并且使用flower来监控任务队列。首先安装rabbitmqMacos直接运行brew命令安装#安装服务brewinstallrabbitmq#启动服务brewservicesstartrabbitmqWin10系统就要下载安装包进行安装了,由于rabbitmq是基于erlang的,所以要首先安装erla... 用户认证(Authentication)进化之路:由Basic Auth到Oauth2再到jwt https://v3u.cn/a_id_98 Tue, 16 Jul 2019 00:00:00 +0000 https://v3u.cn/a_id_98 用户认证是一个在web开发中亘古不变的话题,因为无论是什么系统,什么架构,什么平台,安全性是一个永远也绕不开的问题在HTTP中,基本认证(Basicaccessauthentication)是一种用来允许网页浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。虽然基本认证非常容易实现,但该方案创建在以下的假设的基础上,即:客户端和服务器主机之间的连接是安全可信的。特别是,如果没有使用SSL/TLS(https)这样的传输层安全的协议,那么以明文传输的密钥和口令很容易被拦截。该方案也同样没有对服务器返回的信息提供保护。  现存的浏览... python花式读取大文件(10g/50g/1t)遇到的性能问题(面试向) https://v3u.cn/a_id_97 Fri, 12 Jul 2019 00:00:00 +0000 https://v3u.cn/a_id_97 最近无论是面试还是笔试,有一个高频问题始终阴魂不散,那就是给一个大文件,至少超过10g,在内存有限的情况下(低于2g),该以什么姿势读它?所有人都知道,用python读文件有一套”标准流程“:defretrun_count(fname):"""计算文件有多少行"""count=0withopen(fname)asfile:forlineinfile:count+=1returncount为什么这种文件读取方式会成为标准?这是因为它有两个好处:with上下文管理器会自动关闭打开的文件描述符在迭代文件对象时,内容是一行一行返回的,不会占用... 使用python将word文档和pdf电子书进行格式互转(兼容Windows/Linux) https://v3u.cn/a_id_96 Wed, 10 Jul 2019 00:00:00 +0000 https://v3u.cn/a_id_96 一些重要文档格式之间的互转在目前显得尤为重要,pdf作为通用格式在现在各个平台上兼容性是最好的,所以写python脚本将这些word文档批量转换pdf是最好的解决方案。由于windows系统对于word文档有天然的兼容性优势,所以转换起来很简单,普遍上是通过comtypes模块。pip3installcomtypesfromcomtypes.clientimportCreateObjectimportosdefwd_to_pdf(folder):#获取指定目录下面的所有文件files=os.listdir(folder)#获取word类型的文件放到一个列表里面wdfiles=[fforfinf... 搞清楚系统到底怎样支撑高并发以及架构图的绘制(面试向) https://v3u.cn/a_id_95 Tue, 02 Jul 2019 00:00:00 +0000 https://v3u.cn/a_id_95 大多数人面试的时候经常会被问到:你简历上有高负载高并发的经验,那到底你的系统是怎样设计的?如果没有过相关的项目经验,大多数同学被问到这个问题压根儿没什么思路去回答,不知道从什么地方说起,其实,就算没有相关的经验,只要事先编好话术,搞清楚架构图,回答此类问题也还是可以滴水不漏的。首先,在脑子里虚拟一个大用户量背景下的场景,如果我们手头有几台4核8g的服务器,假设一个平台用户量是500万。此时日活用户是50万,日访问量在600-700万左右,高峰期对系统每秒请求是500/s。然后对数据库的每秒请求数量是1500/s,这个时候会怎么样呢?如果系统内处理的是较为复杂的一些业务逻辑,是那种重业务逻辑的系... 彻底弄清楚session,cookie,sessionStorage,localStorage的区别及应用场景(面试向) https://v3u.cn/a_id_94 Tue, 02 Jul 2019 00:00:00 +0000 https://v3u.cn/a_id_94 客户端状态保持是一个老生常谈的问题了,归根结底追踪浏览器的用户身份及其相关数据无非就是以下四种方式:session,cookie,sessionStorage,localStorage首先cookie和session:Cookie机制:如果不在浏览器中设置过期时间,cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称会话cookie。如果在浏览器中设置了cookie的过期时间,cookie被保存在硬盘中,关闭浏览器后,cookie数据仍然存在,直到过期时间结束才消失。Cookie是服务器发给客户端的特殊信息,cookie是以文本的方式保存在客户端,每次请求时都带上它S... 使用Hexo建立一个轻量、简易、高逼格的博客 https://v3u.cn/a_id_93 Tue, 25 Jun 2019 00:00:00 +0000 https://v3u.cn/a_id_93 在之前的一篇文章中,介绍了如何使用Hugo在三分钟之内建立一个简单的个人博客系统,它是基于golang的,其实,市面上还有一款类似的静态页生成器,就是Hexo读音/hækso/,它是基于node.js的,和Hugo一样,Hexo正常来说,不需要部署到我们的服务器上,我们的服务器上保存的,其实是基于在hexo通过markdown编写的文章,然后hexo帮我们生成静态的html页面,然后,将生成的html上传到我们的服务器。简而言之:hexo是个静态页面生成、上传的工具。首先安装Hexo,在此之前,请确保电脑里已经安装好新版的node.jsnpminstall-ghexo-cli如果感觉安装速度比... python3的单元测试模块mock与性能测试模块cProfile https://v3u.cn/a_id_92 Fri, 14 Jun 2019 00:00:00 +0000 https://v3u.cn/a_id_92 我们知道写完了代码需要自己跑一跑进行测试,一个写好的程序如果连测试都没有就上到生产环境是不敢想象的,这么做的人不是太自信就是太无知。传统测试无非就是自己运行一下程序查看结果,或者前后端服务进行联调,这里要说的是走正规流程的单元测试,那到底什么是单元测试呢?顾名思义,只测试当前单元的程序或者代码,也可以理解当前模块的代码块,单元测试假设所有的内部或外部的依赖应该是稳定的,已经在别处进行测试过的.使用mock就可以对外部依赖组件实现进行模拟并且替换掉,从而使得单元测试将焦点只放在当前的单元功能。简单地说,mock就是帮我们解决测试依赖的一个模块,在Python3中,mock已经被集成到了unitt... 关于mysql联合索引的最左前缀原则以及b+tree https://v3u.cn/a_id_91 Mon, 10 Jun 2019 00:00:00 +0000 https://v3u.cn/a_id_91 软件版本mysql5.7根据官网的文档https://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html查询条件要符合最左原则才能使用到索引首先说说联合索引的好处:覆盖索引,这一点是最重要的,众所周知非主键索引会先查到主键索引的值再从主键索引上拿到想要的值,这样多一次查询索引下推。但是覆盖索引可以直接在非主键索引上拿到相应的值,减少一次查询。在一张大表中如果有(a,b,c)联合索引就等于同时加上了(a)(ab)(abc)三个索引减少了存储上的一部分的开销和操作开销梯度漏斗,比如select*fromtwherea=1andb... 在Mac下使用MindMaster画思维导图(脑图) https://v3u.cn/a_id_90 Thu, 06 Jun 2019 00:00:00 +0000 https://v3u.cn/a_id_90 众所周知,老牌的脑图软件是xmind,这里我们使用MindMaster,二者有什么异同呢?相同点:都是国产软件,都分为国内版和国外版本,都有免费版和付费版。在功能方面相同点较多,比如插入节点、关系线、标注。拖拽操作、内置图标、备注、幻灯片演示、甘特图、自动排版、云存储等功能。并且同样支持Windows、mac和Linux系统。不同点:1、MindMaster偏office风格、界面极简、自由、清爽;XMind偏Eclipse风格,界面图标精美。2、MindMaster支持导入导出MindManager、XMind格式、亿图图示的格式;XMind没有这么多。3、MindMaster支持黑色皮肤(... 在Centos下对Tornado的性能进行测试(Stress Testing) https://v3u.cn/a_id_89 Tue, 04 Jun 2019 00:00:00 +0000 https://v3u.cn/a_id_89 在之前的一篇文章中,我们在1g1核的惨淡硬件环境下,对uwsgi+django和gunicorn+django的后端服务进行性能测试,得出结论单台django在简单读库操作下只能抗住大约200左右的并发:在Centos下使用Siege对Django服务进行压力测试这一次,我们在相同的背景下,对三大框架中,以性能著称于世的Tornado进行并发测试,看看它的性能到底有多高。Tornado是一个用Python编写的异步HTTP服务器,同时也是一个web开发框架。Tornado优秀的大并发处理能力得益于它的webserver从底层开始就自己实现了一整套基于epoll的单线程异步架构。那么,到底啥是特... 在Mac os 下配置Go lang 开发环境 https://v3u.cn/a_id_88 Sun, 02 Jun 2019 00:00:00 +0000 https://v3u.cn/a_id_88 首先,下载安装包,国内可以在这上面下载https://studygolang.com/dl目前的稳定版是go1.12.5.darwin-amd64.pkg下载安装后,配置环境变量vim~/.bash_profile在文件内最后加入#EnablethegomodulesfeatureexportGO111MODULE="on"#SettheGOPROXYenvironmentvariableexportGOPROXY="https://mirrors.aliyun.com/goproxy/"GOROOT=/usr/local/goexportGOROOTe... 在Centos下使用Siege对Django服务进行压力测试(Stress Testing) https://v3u.cn/a_id_87 Fri, 31 May 2019 00:00:00 +0000 https://v3u.cn/a_id_87 Siege是linux下的一个web系统的压力测试工具,支持多链接,支持get和post请求,可以对web系统进行多并发下持续请求的压力测试。今天我们就使用Siege来对Django进行一次压力测试,看看单台Django服务到底能抗住多少的并发数。首先安装Siegewgethttp://download.joedog.org/siege/siege-3.0.8.tar.gztarzxvfsiege-3.0.8.tar.gzcdsiege-3.0.8./configuremakemakeinstall验证安装结果:输入siege-V如果输出了版本号就代表安装没问题Siege命令常用参数-c200... 具体谈谈如何优化前端性能的总结 https://v3u.cn/a_id_86 Thu, 30 May 2019 00:00:00 +0000 https://v3u.cn/a_id_86 前端是庞杂的,包括HTML、CSS、Javascript、Image、Video等等各种各样的资源。前端优化是复杂的,针对方方面面的资源都有不同的方式。那么,前端优化的目的是什么?从用户角度而言,优化能够让页面加载得更快、对用户的操作响应得更及时,能够给用户提供更为友好的体验。  从服务商角度而言,优化能够减少页面请求数、或者减小请求所占带宽,能够节省可观的资源。  总之,说白了,恰当的优化不仅能够改善站点的用户体验并且能够节省相当的资源利用,就是又让用户用的爽,又省了钱。1.使用cdn加速,网站上静态资源即css、js全都使用cdn分发,图片亦然。具体来说,CDN就是采用更多的缓存服务器(C... 在阿里云Centos7.6上面配置Mysql主从数据库(master/slave),实现读写分离 https://v3u.cn/a_id_85 Wed, 29 May 2019 00:00:00 +0000 https://v3u.cn/a_id_85 在之前的一篇文章中,阐述了如何在高并发高负载的场景下使用nginx做后台服务的负载均衡:在阿里云Centos上配置nginx+uwsgi+负载均衡配置,但是不要以为这样做了就是一劳永逸的,到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器负载,如此多的数据库连接操作,数据库必然会崩溃,数据库如果宕机的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的连接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:redis,如果资金丰厚的话,必然会想到架设mysql服务集群,来分担主数据库的压力。今天总结一下利用MySQL主从配置,实现读写分离,减轻数... 在阿里云Centos7.6上利用docker搭建Jenkins来自动化部署Django项目 https://v3u.cn/a_id_84 Tue, 28 May 2019 00:00:00 +0000 https://v3u.cn/a_id_84 一般情况下,将一个项目部署到生产环境的流程如下:需求分析—原型设计—开发代码—内网部署-提交测试—确认上线—备份数据—外网更新-最终测试,如果发现外网部署的代码有异常,需要及时回滚。整个过程相当复杂而漫长,其中还需要输入不少的命令,比如上传代码,git的拉取或者合并分支等等。Jenkins是目前非常流行的一款持续集成工具,可以帮助大家把更新后的代码自动部署到服务器上运行,整个流程非常自动化,你可以理解为部署命令操作的可视化界面。Jenkins主要有三种安装方式下载官方war包,放到tomcat中直接运行。yum安装。使用官方docker镜像。毫无疑问,既然有docker这么简单方便的工具,就没... 在阿里云Centos7.6上面部署基于redis的分布式爬虫scrapy-redis https://v3u.cn/a_id_83 Mon, 27 May 2019 00:00:00 +0000 https://v3u.cn/a_id_83 Scrapy是一个比较好用的Python爬虫框架,你只需要编写几个组件就可以实现网页数据的爬取。但是当我们要爬取的页面非常多的时候,单个服务器的处理能力就不能满足我们的需求了(无论是处理速度还是网络请求的并发数),这时候分布式爬虫的优势就显现出来。而Scrapy-Redis则是一个基于Redis的Scrapy分布式组件。它利用Redis对用于爬取的请求(Requests)进行存储和调度(Schedule),并对爬取产生的项目(items)存储以供后续处理使用。scrapy-redi重写了scrapy一些比较关键的代码,将scrapy变成一个可以在多个主机上同时运行的分布式爬虫。说白了,就是使用... 使用基于Vue.js和Hbuilder的混合模式移动开发打造属于自己的移动app https://v3u.cn/a_id_82 Sun, 26 May 2019 00:00:00 +0000 https://v3u.cn/a_id_82 近几年,混合模式移动应用的概念甚嚣尘上,受到了一些中小型企业的青睐,究其原因,混合模式开发可以比传统移动开发节约大量的开发成本和人力成本。HybridApp(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“NativeApp良好用户交互体验的优势”和“WebApp跨平台开发的优势”。说白了,如果走传统移动开发路线,公司业务覆盖多端,那么每个平台势必要请一个专属开发人员,安卓要请一个前端开发,ios同理,那么人力成本则进行了翻倍,同时,如果多端使用不同的代码,当有功能上的修改或者维护时,成本也是不可想象的。试想如果开发者编写一套代码,可编译到iOS、And... 利用基于Go Lang的Hugo配合nginx来打造属于自己的纯静态博客系统 https://v3u.cn/a_id_81 Thu, 23 May 2019 00:00:00 +0000 https://v3u.cn/a_id_81 Golang无疑是目前的当红炸子鸡,极大地提高了后端编程的效率,同时有着极高的性能。借助Go语言我们可以用同步的方式写出高并发的服务端软件,同时,Go语言也是云原生第一语言,Docker,Kubernetes等等著名的项目都是使用Go语言实现的。Hugo是基于Go语言的静态网站生成器。什么是静态网站生成器?顾名思义,就是以最快的速度生成一个高可用的web页面,我们知道Django作为一款非常流行的框架被广泛应用,但是部署起来实在是太麻烦了,各种命令各种配置,动态页面必然要涉及数据库的配置和操作,另外只要涉及数据库操作,你就不得不考虑sql注入等一系列的安全因素。而纯静态页面则没有这个烦恼,如果... 在阿里云服务器上使用Nginx部署https协议的网站 https://v3u.cn/a_id_80 Tue, 21 May 2019 00:00:00 +0000 https://v3u.cn/a_id_80 之前写过一篇文章是在阿里云服务器上用Apache切换https协议:将博客迁移阿里云并且切换成https解析的过程这一次,换成使用Nginx来部署,相比之下,比Apache的配置要简单一些如何申请SSL证书就按下不表了,非常简单,目前阿里云和腾讯云都免费提供一年的证书服务,区别就是腾讯云不需要域名在腾讯,而阿里云只有域名在阿里旗下才提供。申请域名证书成功后,下载压缩包,一定要选择Nginx的证书类型,解压后得到一个key文件一个pem文件,将这两个文件上传到服务器的root目录然后打开nginx配置文件vim/etc/nginx/conf.d/default.conf同时添加http和http... python3.7.3操作FastDfs来进行文件操作 https://v3u.cn/a_id_79 Mon, 20 May 2019 00:00:00 +0000 https://v3u.cn/a_id_79 在之前的一篇文章中:利用Docker来搭建分布式文件系统FastDfs,我们已经搭建好了FastDfs分布式文件系统,并且已经可以通过命令进行上传操作,那么如何使用python来上传文件呢?很简单,还是利用docker的特性,我们知道docker的-v参数,可以自动挂载宿主机的文件件到容器中去,这样宿主和容器就可以进行无障碍的文件共享,我们通过-v参数,把宿主机的root目录自动挂载到docker容器中的/var/root目录中去。dockerrun-d--network=host--nametracker-v/root:/var/rootdelron/fastdfstrackerdocker... 利用Docker来搭建分布式文件系统FastDfs https://v3u.cn/a_id_78 Sun, 19 May 2019 00:00:00 +0000 https://v3u.cn/a_id_78 对于文件存储来说,一般情况下简单的处理就是在Django配置文件中配置存储目录,按照规则对文件进行上传或者下载。实际上,当文件较少的时候,Django是可以应付的过来的。但当文件以海量形式出现的时候,Django就并不是那么好用了,于是FastDFS应运而出。FastDFS是一个开源的分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。可以说它就是为互联网而生,为大数据而生的。FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage... 在阿里云Centos上配置nginx+uwsgi+负载均衡配置 https://v3u.cn/a_id_77 Fri, 17 May 2019 00:00:00 +0000 https://v3u.cn/a_id_77 负载均衡在服务端开发中算是一个比较重要的特性。因为Nginx除了作为常规的Web服务器外,还会被大规模的用于反向代理后端,Nginx的异步框架可以处理很大的并发请求,把这些并发请求hold住之后就可以分发给后台服务端(backendservers,后面简称backend)来做复杂的计算、处理和响应,并且在业务量增加的时候可以方便地扩容后台服务器。说白了就是,随着业务和用户规模的增长,仅仅一台服务器无法肩负起高并发的响应,所以需要两台以上的服务器共同分担压力,而分担压力的媒介就是万能的Nginx。首先,利用wsgi在不同的端口上起两个Django服务,比如8002和8003然后修改nginx网站... 在阿里云Centos7.6上部署Supervisor来监控和操作各类服务 https://v3u.cn/a_id_76 Fri, 17 May 2019 00:00:00 +0000 https://v3u.cn/a_id_76 Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。说白了,它真正有用的功能是俩个将非daemon(守护进程)程序变成deamon方式运行对程序进行监控,当程序退出时,可以自动拉起程序。但是它无法控制本身就是daemon的服务。安装Supervisoryuminst... 利用Docker挂载Nginx-rtmp(服务器直播流分发)+FFmpeg(推流)+Vue.js结合Video.js(播放器流播放)来实现实时网络直播 https://v3u.cn/a_id_75 Thu, 16 May 2019 00:00:00 +0000 https://v3u.cn/a_id_75 众所周知,在视频直播领域,有不同的商家提供各种的商业解决方案,其中比较靠谱的服务商有阿里云直播,腾讯云直播,以及又拍云和网易云的有偿直播服务,服务包括软硬件设备,摄像机,编码器,流媒体服务器等。但是其高昂的费用以及较高的准入门槛让许多个人和小型企业望而却步,本文要讲解的是如何使用nginx-rtmp搭建直播服务器,配合FFmpeg推流,在网页端vue.js作为载体利用video.js作为流播放器,打造一套可用的在线视频直播方案。视频直播的流程可以分为如下几步:采集—>处理—>编码和封装—>推流到服务器—>服务器流分发—>播放... Python3利用ffmpeg针对视频进行一些操作 https://v3u.cn/a_id_74 Wed, 15 May 2019 00:00:00 +0000 https://v3u.cn/a_id_74 FFmpeg是个啥?FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。首先去官网https://www.ffmpeg.org/download.html下载windows下的压缩包解压缩后,配置一下环境变量输入命令查看版本ffmpeg-version安装ffmpeg的python扩展,该扩展可以让你直接在python脚本中直接调用,而不需要单独运行命令pipinstallffmpeg-python需要注意一点的是,有的情况调用该库会报错,这时需要将python安装目录下Lib文件夹的... 在阿里云centos7.6上部署vue.js2.6前端应用 https://v3u.cn/a_id_73 Tue, 07 May 2019 00:00:00 +0000 https://v3u.cn/a_id_73 在之前的一篇文章中详细阐述了如何部署Nginx代理uwsgi+django后台服务,现在轮到部署前端应用vue.js了,vue.js的好处就不多说了,其作为一个轻巧、高性能、可组件化的MVVM库,学习成本要比React要低,性能比脏检查的AngularJS不知道高到哪里去了。本文介绍如何在centos上部署vue.js应用。建立一个简单的vue.js脚手架项目的完整命令//安装cnpmnpminstall-gcnpm--registry=https://registry.npm.taobao.orgcnpminstallwebpack-gcnpminstallvue-cli-g//打开要创建的... 在阿里云Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4 https://v3u.cn/a_id_72 Sun, 05 May 2019 00:00:00 +0000 https://v3u.cn/a_id_72 一直以来想写一篇完整的在阿里云服务器上部署Django服务结合uwsgi,并且通过nginx做反向代理。因为网上的攻略鱼龙混杂,加上技术不断更新,一些年代久远的文章很容易让人在部署的过程中掉坑里,无法自拔,所以本篇文章以最新的阿里云服务器centos7.6为背景,完全阐述如何部署,亲测可用,其实要说难点完全没有,只要按部就班,就不会有问题。当你购买了阿里云的ecs,涉及ecs的有两个密码,一定要搞清楚,一个密码是远程链接密码,也就是通过浏览器连接服务器的密码,另外一个是实例密码,这个密码就是ecs的root密码,一般情况下,我们经常用到的是实例密码。与此同时,需要设置一下安全组策略,将一些必要... Python版(3.7.2)支付宝(Alipay)退款(refund)接口的开发 https://v3u.cn/a_id_71 Fri, 03 May 2019 00:00:00 +0000 https://v3u.cn/a_id_71 在之前的文章中介绍了如何编写支付宝支付接口Python3.7.2+Django2.0.4美多商城集成最新版支付宝支付接口(2019.04)匆忙之中只考虑了支付,其实当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,支付宝将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上。交易超过约定时间(签约时设置的可退款时间)的订单无法进行退款支付宝退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。一笔退款失败后重新提交,要采用原来的退款单号。总退款金额不能超过用户实际支付金额。那么根据支付宝的官... 在Mac和Linux以及Windows下删除pip安装包缓存用以节约空间 https://v3u.cn/a_id_70 Fri, 03 May 2019 00:00:00 +0000 https://v3u.cn/a_id_70 首先,如果你的pip版本在6.0以上的话,可以在安装软件的时候加上–-no-cache-dir来选择不缓存,所以建议将pip升级到最新版本pip3install--upgradepip如果你已经用pip安装过不少软件,并且没有选择不缓存的话,可以用下面的命令来删除缓存#LinuxandUnixrm-rf~/.cache/pip#MacOsrm-rf~/Library/Caches/pip#Windowsrd/s/q%LocalAppData%/pipCache一定要注意文件目录不要打错了,因为删除命令是危险而不可逆的。... 利用vue.js双向绑定机制和vue-resource在前端异步上传文件 https://v3u.cn/a_id_69 Tue, 30 Apr 2019 00:00:00 +0000 https://v3u.cn/a_id_69 之前介绍了一个基于jquery的uploadify插件,可以用来上传文件:Django2.0.4+Uploadify3.0(h5版)实现多文件异步上传和删除但毕竟这是面向过程基于节点的插件,如果前端使用vue.js的脚手架,就要入乡随俗,利用vue.js自带的vue-resource来实现异步上传视频文件首先安装vue-resource没必要全局安装,所以只在需要用到的项目中安装即可cnpminstallvue-resource--save然后在入口文件main.js中引入并且声明使用//引入resourceimportVueResourcefrom'vue-resource'//声明使用Vu... 解决Django2.0.4+kindeditor4.11 跨域上传文件的问题 https://v3u.cn/a_id_68 Thu, 18 Apr 2019 00:00:00 +0000 https://v3u.cn/a_id_68 在之前的一篇文章中介绍了如何将富文本kindeditor结合到django中:Django2.0.4结合KindEditor4.1.11富文本编辑器在同域环境中是没有问题的,换句话说,也就是上传接口如果部署在前端页面同一个域名下是没有问题的,然而美多商城的系统架构是前后端分离,前端页面是vue.js服务,后端接口是django服务,分别部署在不同的服务器上,如果在vue.sj页面中想要使用kindeditor中的上传文件功能,跨域请求django的接口就会报错。本文解决在跨域情况下使用kindeditor的上传文件功能,解决思路就是用重定向方法来伪造成同域环境在前端项目中,建立一个redire... 为美多商城(Django2.0.4)添加基于websocket的实时通信,主动推送,聊天室及客服系统 https://v3u.cn/a_id_67 Wed, 17 Apr 2019 00:00:00 +0000 https://v3u.cn/a_id_67 websocket是个啥?webSocket是一种在单个TCP连接上进行全双工通信的协议webSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocketAPI中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输现在,很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是... 在vscode中为Django配置专属的语法检测提醒,防止误报语法错误 https://v3u.cn/a_id_66 Tue, 16 Apr 2019 00:00:00 +0000 https://v3u.cn/a_id_66 Python插件中默认使用pylint用来检测python代码的书写是否有错误和是否符合良好的编码习惯。Python官网(https://www.python.org/dev/peps/pep-0008/)专门有版块介绍推荐的python代码习惯,比如类,函数等的命名规则,遵守这些规则可以使自己的代码更加简明和易读。然而pylint在面对django框架时表现的有些不足,因为django使用了大量的元编程(metaprograming)思想以及鸭子模型,以至于在程序运行时会修改不少对象的属性和行为,但是这样给pylint这样的语法检测程序带来了比较大的困难。典型的就是集成了django.db.... 使用ApacheBench来对美多商城的秒杀功能进行高并发压力测试 https://v3u.cn/a_id_65 Fri, 12 Apr 2019 00:00:00 +0000 https://v3u.cn/a_id_65 秒杀功能众所周知,低廉的价格会引来很多用户趋之若鹜的争抢点击,导致一系列的服务器负载问题,服务器负载太大而影响程序效率也是很常见的,Apache服务器自带有一个叫AB(ApacheBench)的工具,可以对服务器进行负载测试同时美多商城的秒杀功能也会被高负载影响,从而导致超卖现象安装xampp软件进入c:/xampp/apache/bin基本用法:ab-n全部请求数-c并发数测试url可以将ab.exe加入系统环境变量;或直接切换置ab目录执行。如:C:WindowsSystem32>cdC:xamppapachebin关于秒杀很好理解,就是每一个用户抢到商品之后,库存进行递减操... Python3.7.2+Django2.0.4 美多商城集成最新版支付宝支付接口(2019.04) https://v3u.cn/a_id_64 Wed, 10 Apr 2019 00:00:00 +0000 https://v3u.cn/a_id_64   最新版支付宝算法的改变就是RSA升级了RSA2,长度推荐2048,其他的逻辑变化不大,关于秘钥的生成在之前的一篇文章已经有所介绍  在Mac系统下生成新版支付宝(2019年4月)支付接口私钥和公钥  在Django中集成支付接口的前置操作就是需要安装pycryptodome  pip3install-ihttps://pypi.douban.com/simplepycryptodome  然后将之前生成好的私钥和公钥(注意这里的公钥是指支付宝公钥),放入到项目目录中去        文档地址:https://docs.open.alipay.com/api  然后根据支付宝官网文档写一个支... 处理Centos6和Centos7下,python3处理中文的神坑 https://v3u.cn/a_id_63 Wed, 10 Apr 2019 00:00:00 +0000 https://v3u.cn/a_id_63 在一个阿里云的ecs服务器上,安装了centos6.5,然后部署Django2.0.4+python3.7.2,处理编码格式为UTF-8的HTTP请求,但奇怪的发现,将bytes类型的请求内容decode的时候会报解码错误UnicodeDecodeError:'ascii'codeccan'tdecodebyte0xe4inposition0:ordinalnotinrange(128)同样的程序,在windowsMacoscentos5.5都没问题网上一般的解决方案无非就是load(sys)或者代码加上#--coding:utf-8--这种,但这是python2时代的解决方案,完全不起作用还... 在Mac系统下生成新版支付宝(2019年4月)支付接口私钥和公钥 https://v3u.cn/a_id_61 Tue, 09 Apr 2019 00:00:00 +0000 https://v3u.cn/a_id_61 在做美多商城三方支付业务时,需要连入支付宝支付接口,众所周知,支付宝支付采用了RSA加密签名的安全通信机制,开发者可以通过支付宝的公钥验证消息的来源,同时使用自己的私钥进行信息加密。RSA算法及数字签名机制是服务窗平台与开发者网关安全通信的基础。关于数字签名机制无非就是下面这四步,归根结底就是为了提高安全性,毕竟涉及钱了,马虎不得:第一、发方首先有一个公钥/私钥对,它将要签名的报文作为一个单向散列函数的输入,产生一个定长的散列码,一般称为消息摘要。第二、使用发放的私钥对散列码进行加密生成签名。将报文和签名一同发出去。第三、收方用和发放一样的散列函数对报文运算生成一个散列码,同时用发放的公钥对签... Mac系统下,让Iterm 4 来记住常用的登录账号和密码 https://v3u.cn/a_id_60 Wed, 03 Apr 2019 00:00:00 +0000 https://v3u.cn/a_id_60   经常在Mac下使用Iterm4的朋友肯定遇见过这种情况,每次连接某个远程服务器总是要一遍遍的敲用户名、密码。那么能不能像Windows的软件一样,可以直接让软件记住。每次只要点击一下,就直接ssh到远程服务器上面去了,答案当然是可以了,这里推荐使用expect脚本来实现。  #!/usr/bin/expect  settimeout30  spawnssh-p[lindex$argv0][lindex$argv1]@[lindex$argv2]&a... Django2.0.4 结合 KindEditor 4.1.11 富文本编辑器 https://v3u.cn/a_id_59 Tue, 02 Apr 2019 00:00:00 +0000 https://v3u.cn/a_id_59   KindEditor是一款还不错的开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器。之所以推荐这一款编辑器,是因为它非常的轻量化,也不需要安装,从而耦合度非常低,无论是使用表单提交内容还是异步提交,都非常方便,这里简单介绍一下如何在Django2.0.4中使用这款富文本编辑器。  首先在官网下载文件http://kindeditor.net/down.php  解压后,删除掉一些没有... 关于win下面Celery服务报 Process 'Worker' exited with 'exitcode 1' [duplicate] https://v3u.cn/a_id_57 Tue, 26 Mar 2019 00:00:00 +0000 https://v3u.cn/a_id_57 使用Celery服务运行异步任务或者定时任务的时候,服务虽然起了,但是会报错:CeleryProcess'Worker'exitedwith'exitcode1'[duplicate]导致任务并未运行。经过搜索可以定位到问题所在,是因为celery依赖库billiard版本过低,导致任务发生了阻塞,所以最好的解决方案就是升级billiard执行pipinstall--upgradebilliard官方的解释是,billiard最好>=3.5,所以如果不放心的话,还是指定版本号安装比较好... Django2.0.4+Uploadify3.0(h5版) 实现多文件异步上传和删除 https://v3u.cn/a_id_56 Mon, 25 Mar 2019 00:00:00 +0000 https://v3u.cn/a_id_56   已经9012年了,如果你的网站还通过传统表单上传文件的话,那你简直low到爆了,也别干什么web开发了,直接面壁去吧。  本文基于Uploadify异步上传控件来实现多文件异步上传的无刷新机制,用来提高效率和用户体验,由于uploadify基于jquery,所以确保已经引入了稳定版的Jquery,另外需要说明的是,uploadify分为flash版和h5版,鉴于flash早就已经被淘汰了,所以h5才是我们的选择,但是h5版居然需要收费,下一个要五美刀,我们当然不能当冤大头,可以考虑去下载一个免费的山寨开源版:https... 使用python3.7.2 实现大名鼎鼎的Elo Score等级分制度 https://v3u.cn/a_id_55 Mon, 25 Mar 2019 00:00:00 +0000 https://v3u.cn/a_id_55   在年度影片《社交网络》中,影片开场,马克扎克伯克和他的女朋友在酒馆里因为琐事分手,气急败坏的他回到了宿舍,在舍友的鼓励和帮助下,充分发挥了作为技术天才的动手能力,做出了Facemash网站,对大学女生的相貌进行分级打分,结果网站访问流量过大,直接把大学网络都搞宕机了。而Facemask就是著名的FaceBook的前身,Facemask大受欢迎的关键就在于扎克伯格的同学爱德华多(他也是facebook的联合创始人之一)写在窗户上的排名公式    这个公式就是鼎鼎有名的ELO等级分制度&... python3.7.2+Django2.0.4 使用django-celery遇到的那些坑 https://v3u.cn/a_id_54 Wed, 20 Mar 2019 00:00:00 +0000 https://v3u.cn/a_id_54   1首先为啥要用celery    因为在DjangoWeb平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务。与此同时,celery除了异步任务,还可以开启定时任务,方便调度。  2安装需要的软件包    pipinstallcelerypipinstallcelery-with-redispipinsta... Home Brew 常用命令总结 https://v3u.cn/a_id_52 Sat, 16 Mar 2019 00:00:00 +0000 https://v3u.cn/a_id_52 HomeBrew是基于Ruby的一款软件管理器,非常好用,有点类似python的pip,这里总结一下常用的命令,以备不时之需。安装软件:brewinstall软件名,例:brewinstallwget搜索软件:brewsearch软件名,例:brewsearchwget卸载软件:brewuninstall软件名,例:brewuninstallwget更新所有软件:brewupdate更新具体软件:brewupgrade软件名,例:brewupgradegit显示已安装软件:brewlist查看软件信息:brewinfo/home软件名,例:brewinfogit/brewhomegit显示包依... Mac 安装和配置Mongodb https://v3u.cn/a_id_51 Sun, 17 Mar 2019 00:00:00 +0000 https://v3u.cn/a_id_51 在mac下安装Mongodb同样不推荐编译安装,推荐使用Homebrew1升级brewbrewupdate2安装mongo这里需要注意一点,brew的mongo安装依赖python2.7,所以默认的python环境变量最好不要动,如果想用python3.7.2最好使用python3的软连接brewinstallmongodb3安装成功后,可以使用两种方式启动mongo服务brewservicesstartmongodbmongod--config/usr/local/etc/mongod.conf4使用brew默认下载地址为/usr/local/Cellar/下的mongodb文件夹至此,安装... Mac使用Home Brew来安装redis,并设置守护进程 https://v3u.cn/a_id_50 Sun, 17 Mar 2019 00:00:00 +0000 https://v3u.cn/a_id_50 1首先,先升级你本机的Homebrewbrewupdate2安装redisbrewinstallredis3安装成功后,redis配置路径是/usr/local/etc/redis.conf4启动redis服务redis-server5可以设置守护进程将daemonize配置改成yes,默认值是no6将redis服务设置系统开机自启ln-f/usr/local/Cellar/redis/2.8.13/homebrew.mxcl.redis.plist~/Library/LaunchAgents/launchctlload~/Library/LaunchAgents/homebrew.mxcl.... 关于Django2.0跨域问题 https://v3u.cn/a_id_49 Tue, 05 Mar 2019 00:00:00 +0000 https://v3u.cn/a_id_49 首先,明确一个问题,就是跨域需要服务端支持才行,而不是靠前端修改代码可以解决的,无论你用jqueryaxiosfetch都是如此。这里介绍一下,如果使用的是Django2.0本身作为web服务端,该如何处理跨域请求问题。1安装插件pipinstalldjango-cors-headers2编辑配置文件(settings.py)INSTALLED_APPS=['''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''corsheaders',]MIDDLEWARE=['django.middleware.security.Secur... 关于mac系统中进入mysql遇到 Access denied for user 'root'@'localhost' (using password: YES)解决方案 https://v3u.cn/a_id_48 Fri, 15 Feb 2019 00:00:00 +0000 https://v3u.cn/a_id_48 Accessdeniedforuser'root'@'localhost'(usingpassword:YES)useringpassword:YES其实不用怀疑,密码输入正确,既然不是密码的问题那就是mysql服务出问题了,具体解决流程如下:1)Stopmysql(Killmysqlprocessorrunfollowingcommand)停止mysql服务sudo/usr/local/mysql/support-files/mysql.serverstop2)Startitinsafemode用安全模式进入mysql这一步可以看成是不输入密码就进入mysql命令行sudomysqld_sa... 我在优酷这几年(大误) https://v3u.cn/a_id_47 Tue, 15 Aug 2017 00:00:00 +0000 https://v3u.cn/a_id_47 我在优酷这几年2012年初,春寒料峭,我刚从中进名车离职,无意中看到了优酷在豆瓣上发布的招聘信息,python后台开发,当时使用python的公司还很少,但是我知道这是我的机会必须抓住。第一次走进中关村的中钢大厦,面试出人意料的顺利,虽然薪资并不算太高,但是对于当时我这样一个python初学者来说,也算是一份满意的工作了,当二面结束我走出大楼的时候,我绝对不会想到我将在这座大楼度过将近六年的时光。一开始的一两年说实话工作相当轻松,在优酷的移动后台负责cms和接口的开发,印象中很少加班,团队氛围也不错,每周都有技术分享,这是非常充实的两年,技术上得到了提升,眼界也开阔了起来,太多的第一次,第一次... flask SQLAlchemy 的安装和基础应用 https://v3u.cn/a_id_46 Sun, 23 Dec 2018 00:00:00 +0000 https://v3u.cn/a_id_46 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在DBAPI之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。安装命令pipinstallflask-sqlalchemy注意sqlalchemy依赖于pymysql模块,确保pymysql被正确安装pipinstallpymysql#导入第三方连接库sql点金术fromflask_sqlalchemyimportSQLAlchemy#建立对象app=Flask(__name__)#载入配置文件app.config.from_pyfile('config.i... Flask 在虚拟环境之中做开发 https://v3u.cn/a_id_45 Mon, 17 Dec 2018 00:00:00 +0000 https://v3u.cn/a_id_45 虚拟环境可以搭建独立的python运行环境,使得单个项目的运行环境与其它项目互不影响比如一些项目基于python2.0,而另外一些项目却基于python3.0,同时这些项目必须在同一台服务器上部署,使用virtualenv就可以完美解决这个问题虚拟环境安装命令pipinstallvirtualenv进入项目安装虚拟目录的命令virtualenvvenv激活虚拟环境activate离开虚拟环境deactivate... Flask最新版本的中文翻译手册 https://v3u.cn/a_id_44 Tue, 11 Dec 2018 00:00:00 +0000 https://v3u.cn/a_id_44 一个最小的应用一个最小的Flask应用如下:fromflaskimportFlaskapp=Flask(__name__)@app.route('/')defhello_world():return'Hello,World!'Flask作为一个经典的轻量级框架无论在国外还是国内都十分流行,这里记录一下新版的中文翻译手册,留作备用https://dormousehole.readthedocs.io/en/latest/quickstart.html... 六年弹指一挥间,没有不散的宴席,感恩 https://v3u.cn/a_id_43 Fri, 29 Sep 2017 00:00:00 +0000 https://v3u.cn/a_id_43 在这里奋斗了快六年,憧憬过也迷茫过,学习了很多也经历了很多,感谢同事们忍受我的臭脾气,是时候重新出发了,青山不改,绿水长流,人生何处不相逢,有缘江湖再见。... Mysql 对于出现保留关键字的情况要使用双撇号 https://v3u.cn/a_id_42 Sat, 15 Oct 2016 00:00:00 +0000 https://v3u.cn/a_id_42 今天在操作数据库往表中插入数据时,表中有个key字段,怎么添加都不行,总是报错。key是mysql关键字insertintotb_config(key,val)values('vm.0.8','192.168.137.188:9080');一直报错。修改为key二端加撇号(`)insertintotb_config(`key`,val)values('vm.0.8','192.168.137.188:9080');... git版本控制图形化界面推荐 https://v3u.cn/a_id_41 Tue, 13 Sep 2016 00:00:00 +0000 https://v3u.cn/a_id_41 其实呢,有点不太理解为什么有很多人喜欢在命令行下敲命令,尤其是日常工作中使用频率蛮高的git,拉取,合并,切换分支什么的要打很多命令,手速很快的情况下还容易敲错命令导致误操作,推荐一个我日常使用的git图形化界面工具:SourceTree,非常的轻量化,有非常简单,合并拉取提交什么的只要轻触两下触摸板就搞定了,效率上比敲命令行不知道高到哪里去了,自动化流程就是好啊。... 在mac上配置rails开发环境 https://v3u.cn/a_id_40 Fri, 19 Jun 2015 00:00:00 +0000 https://v3u.cn/a_id_40 首先,安装home-brew,并且升级到最新的版本,值得一提的是home-brew个人感觉比port要好用,安装软件也方便一点。ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"随后brewupdate升级到最新做完上面这一步之后,开始设置gem源,需要说明一下的是,淘宝的gem源早在好几年前就没人维护了,但是网上一大堆的攻略都还在推荐淘宝的源,目前唯一靠谱的gem源就是rubychina提供的,推荐使用:gems.ruby-china.org2020年最... Django通过xlwt用文件流的方式下载excel文档 https://v3u.cn/a_id_39 Mon, 24 Apr 2017 00:00:00 +0000 https://v3u.cn/a_id_39 通过文件流的方式直接在浏览器下载可以节省服务器的硬盘空间,也比较方便快捷importxlwtimportStringIOimportweburls=('/rim_request','rim_request','/rim_export','rim_export','/(.*)','index')classrim_export:#render=web.template.render('adsl')defGET(self):web.header('Content-type','application/vnd.ms-excel')#指定返回的类型web.header('Transfer-Encodin... 利用grunt插件来压缩js和css文件用来减少http请求,提高页面效率 https://v3u.cn/a_id_38 Tue, 20 Feb 2018 00:00:00 +0000 https://v3u.cn/a_id_38 1.安装nodejshttp://nodejs.org/2.安装各自的nodepackagejs我用的是UglifyJSgithub地址:https://github.com/mishoo/UglifyJScss我用的是clean-cssgithub地址:https://github.com/GoalSmashers/clean-css图片用的是node-smushitgithub地址:https://github.com/colorhook/node-smushit3.编写代码varfs=require('fs');varjsp=require("uglify-js").... 将博客迁移阿里云并且切换成https解析的过程 https://v3u.cn/a_id_37 Sat, 20 Jan 2018 00:00:00 +0000 https://v3u.cn/a_id_37   过年了,既然https是大势所趋,所以我也要将技术博客切换成https,同时迁移到国内的阿里云服务器上,这样网站会更加的稳定并且速度更快,怎么买服务器和备案就按下不表了,网上有一大堆的教程,最关键其实是阿里云并没有免费的ssl证书,去各大网站上查了一圈,只有腾讯云有免费的一年期ssl的证书,去腾讯云申请一下就可以了,然后将证书下载下来,并且解压后有三个文件,将这三个文件上传到服务器上。  修改apache服务器的httpd.conf配置文件添加  <IfModuless... python的dict中key为变量的使用技巧 https://v3u.cn/a_id_36 Sun, 22 Mar 2015 00:00:00 +0000 https://v3u.cn/a_id_36 有的时候,一些代码中需要用到的变量并不是写在代码里或者配置文件中,而是直接写在文件里,比如.thrift文件配置之类的,这时候当我们定义字典时,key有时候就不是定义好的值,而是文件中的变量,使用下面的技巧就可以反向直接使用变量而调用valueval='aaa'_tc={val:'身份证'}print_tc['aaa']... 千万不要把涉及公司业务的代码上传github https://v3u.cn/a_id_35 Thu, 19 Feb 2015 00:00:00 +0000 https://v3u.cn/a_id_35 千万不要把涉及公司业务的代码上传github,得了不说了,面壁去了... 嘿,五年了 https://v3u.cn/a_id_34 Thu, 28 Jul 2016 00:00:00 +0000 https://v3u.cn/a_id_34 嘿,五年了,不知不觉... Mac快捷键记录 https://v3u.cn/a_id_33 Mon, 04 Mar 2013 00:00:00 +0000 https://v3u.cn/a_id_33 效率利器:常用的快捷键符号说明:⌘-command,⌃-control,⇧-shift,⌥-option,⌫-delete常用的快捷键列举如下:代码相关:⌘+c,v,x,z,a:复制、粘贴、剪切、撤销、全选⌘+←,→:跳转至行首部、跳转至行尾⌘+⌫:删除至行首⌥+←,→:左跳一个单词、右跳一个单词⌥+⌫:删除一个单词日常操作:⌘+n,t,tab:新建窗口、新建Tab,切换Tab⌘+w,h,q:关闭窗口、隐藏程序、退出程序⌃⌘+f:进入全屏模式⌘+option+esc:强制退出程序(第一次打开webstorm会需要的)⌘+space:打开spotlight搜索触摸板:默认鼠标左击:单指单击滚动:... Mac上,python多版本共存(非切换) https://v3u.cn/a_id_32 Sat, 08 Apr 2017 00:00:00 +0000 https://v3u.cn/a_id_32 最近需求是要抓取线上视频,要用到you-get,一看wiki,干,要用到3.0,一直是2.7的忠实拥趸,又不想来回切换版本太麻烦,能不能共存呢?答案当然是可以啦,命令如下,以后想用3.0,直接在命令行下打/python3就可以啦,美滋滋#wgethttps://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz#mkdir/usr/local/python3#tar-zxvfPython-3.7.3.tgz#cdPython-3.7.3#./configure--prefix=/usr/local/python3#sudomakeinstall#l... shell脚本知识记录 https://v3u.cn/a_id_31 Fri, 08 Jun 2012 00:00:00 +0000 https://v3u.cn/a_id_31 先来简单的看一下变量定义的规则在Shell中,使用变量之前不需要事先声明,只是通过使用它们来创建它们;在默认情况下,所有变量都被看做是字符串,并以字符串来存储;Shell变量是区分大小写的;在赋值变量的时候等号两端不能有空格-_-定义了变量之后,一定要加上$符号才能使用#!/bin/bashVAR1=HELLOVAR2=MYNAMEVAR3="MYAGE"VAR4=ISechoVAR1#error能输出但不是输出该变量echo$VAR1#ok正常读取变量并打印echo$VAR2#error定义变量的值用空格隔开了echo$VAR3#ok作为一整个字符串echo$VAR4#e... Mac 上安装 Scrapy 报错,Operation not permitted https://v3u.cn/a_id_30 Sun, 23 Oct 2016 00:00:00 +0000 https://v3u.cn/a_id_30 这个问题在OSXElCapitan普遍存在,后面会说明原因。前几天在Mac上安装Scrapy,按照官方文档的步骤使用pip安装scrapy后报一个权限错误OSError:[Errno1]Operationnotpermitted:'/var/folders/6t/h404bjcd5tb_4q86tpv_251rv_0h0j/T/pip-sYsqDS-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'看起来像是一个普通的权限问题,... Mac上配置 Selenium Webdriver https://v3u.cn/a_id_29 Sun, 13 Nov 2016 00:00:00 +0000 https://v3u.cn/a_id_29 确认Chrome的安装路径Terminal执行命令/Applications/GoogleChrome.app/Contents/MacOS/GoogleChrome应当能够正常启动Chrome浏览器。如果没有,需要ln-s创建GoogleChrome二进制命令的软连接,或者reinstall将chromedriver放在/usr/bin目录官网下载地址,下载后执行sudocp~/Downloads/chromedriver/usr/bin/或者直接执行brewinstallchromedriver记得加上依赖<dependency><groupId&... 如何在Mac OS上安装pytest、setuptools、wget https://v3u.cn/a_id_28 Fri, 01 May 2015 00:00:00 +0000 https://v3u.cn/a_id_28 本文主要介绍如何在MacOS上安装pytest,以自己实际安装为例。同时补充介绍了MacOS上安装setuptools和MacOS上安装wget的方法MacOS上安装pytest由于MacOS上自带python2.7,已是目标版本,不需要更新了,在此基础上介绍安装pytest的主要步骤:安装pip,在终端中输入:sudoeasy_installpip接着安装pytest:sudopipinstall-Upytest测试是否安装成功:py.test--version在安装过程中遇到了一些问题,主要问题有wget方法不能用MacOS上安装setuptools可以参考https://pypi.pyt... OS X 10.11 El Capitan 如何升级系统预装python https://v3u.cn/a_id_27 Sat, 17 Oct 2015 00:00:00 +0000 https://v3u.cn/a_id_27 最近升级OSX到ElCapitan。发现mvn、Python的配置几乎全部失效了。直接上解决方案安装homebrewruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"安装Python3使用homebrew进行下载:brewinstallpython3建立新的命令符号链接#进入/usr/local/bincd/usr/local/bin#创建新的命令符号链接ln-s/usr/local/Cellar/python3/3.4.3_2/bin/python3/u... vim中实现python代码自动完成功能 https://v3u.cn/a_id_26 Thu, 02 Aug 2012 00:00:00 +0000 https://v3u.cn/a_id_26 在/usr/share/vim/vim73/autoload目录中检查是否存在python3complete.vim或pythoncomplete.vim文件,如果存在,则直接在用户目录中.vimrc进行配置例如root用户,在/root/.vimrc中添加:filetypepluginonautocmdFileTypepythonsetomnifunc=pythoncomplete#Complete现在你可以试试啦importsysprintsys.此时,按下Ctrl+x,Ctrl+o,就能看到提示列表框,以及对应的docstring.Ctrl+n,Ctrl+p来上下选择ESC来取消提示框。... 倒霉,最好不要使用Mac系统默认下的python https://v3u.cn/a_id_25 Thu, 15 Mar 2012 00:00:00 +0000 https://v3u.cn/a_id_25 最近,用Mac系统开发了一阵以后,一些软件开始崩溃,找了一下原因,原来是我乱升级系统包导致的,我们都知道,OSX系统默认是开发者友好的,python当然必须系统自带的。但是网上又有很多教程,如何在mac系统中安另一个python,原因就是系统自带的python运行运行普通脚本没问题,但是真的开发python项目是有点问题的。系统自带的python可能会版本偏低,这个如果大家都是用最新系统应该都没啥问题了。系统升级的时候,可能会导致已经安装的python包消失。最后也是最重要一点,系统python默认安装了一些pythonpackages,导致我们自己安装升级这些库的时候很困难。系统python... 发现一个好东西: Anaconda https://v3u.cn/a_id_24 Sun, 11 Mar 2012 00:00:00 +0000 https://v3u.cn/a_id_24 linux和mac都自带python,所以配置起来相对简单,但是windows就不行了,配置起来麻烦的紧,所以我就像win下面有没有想php集成环境xampp这种非常简单直接安装就能使用的软件呢?答案就是Anaconda,虽然它也支持mac和linux,但是我个人建议还是只在win下面使用就好了,确实非常方便,点赞... centos安装python2.7 https://v3u.cn/a_id_23 Wed, 01 Feb 2012 00:00:00 +0000 https://v3u.cn/a_id_23 一般centos系统自带的Python是2.6.6版本,由于版本太老有些好用的模块及功能需要Python2.7才支持。简单写一下如何升级Python2.6到Python2.7并能同步使用pip,以及通过pip安装Django。踩过不少坑,总结了下,按下面步骤逐步安装不然会有报错。1、安装opensslopenssl-devel如果没安装后面用pip安装软件包的时候可能会提示错误“pipisconfiguredwithlocationsthatrequireTLS/SSL,howeverthesslmoduleinPythonisnotavail”yum-yopensslopenssl-deve... 一个sql查询排序小技巧 https://v3u.cn/a_id_22 Mon, 24 Jul 2017 00:00:00 +0000 https://v3u.cn/a_id_22 如果你想做分段统计比如SELECTCASEWHEN(num=0)THEN'0'WHEN(age>0ANDage<=10)THEN'10'WHEN(age>100ANDage<=200)THEN'100'ELSE'>200'ENDasnum这样的情况,如果用别名排序的话,数据库字符串排序会变成乱序,导致难以浏览,所以可以在别名上加前缀,这样就可以通过首字母排序了,比如SELECTCASEWHEN(num=0)THEN'a.0'WHEN(age>0ANDage<=10)THEN'b.10'WHEN(a... 关于mysql表引擎的问题 https://v3u.cn/a_id_21 Sat, 10 Sep 2016 00:00:00 +0000 https://v3u.cn/a_id_21 如果是查询比较多尽量用MyISAM速度要快一点想要读写分离的话,还是做主从表比较靠谱一点,因为innodb同时读写的话也会锁表... mysql终端查看中文乱码问题 https://v3u.cn/a_id_20 Fri, 20 Feb 2015 00:00:00 +0000 https://v3u.cn/a_id_20 p.p1{margin:0.0px0.0px0.0px0.0px;font:12.0pxCourier;color:#000000}在终端里要先执行setnamesutf8;记录一下... 说说各种居中 https://v3u.cn/a_id_19 Fri, 23 Jun 2017 00:00:00 +0000 https://v3u.cn/a_id_19 单行居中div{height:26px;line-height:26px;overflow:hidden;text-align:center;}1.同时支持块级和内联极元素2.只能支持单行垂直居中,并且不支持标签多行居中div{padding:10px0;text-align:center;}1.同时支持块级和内联极元素2.支持非文本标签,但不能设定容器的高度绝对定位居中div{margin:auto;position:absolute;left:0;top:0;right:0;bottom:0;/**可以设定高度、宽度**/}1.毫无疑问,绝对定位居中是本人最喜欢、使用次数最多的居中方式。通... FLOAT坍塌原理及解决方案 https://v3u.cn/a_id_18 Tue, 15 Aug 2017 00:00:00 +0000 https://v3u.cn/a_id_18 什么叫float坍塌?先看一段简单的代码<divclass="parent-container"><divclass="left-container"></div><divclass="right-container"></div></div>.parent-container{width:400px;border:5pxsolid#FF6B5B;}.left-cont... rem在响应式布局中的应用 https://v3u.cn/a_id_17 Sun, 09 Jul 2017 00:00:00 +0000 https://v3u.cn/a_id_17 rem在响应式布局中的应用最近做了一些响应式的页面,遇到了一些问题,想了些解决方法,在这里总结一下。目前响应式的主流实现方式是百分比布局,加上媒体查询@mediascreen。关于媒体查询还有媒体查询的一些兼容性问题,网上介绍的很多其实响应式布局中主要困扰我们的问题还是元素的等比缩放。目前的元素的等比缩放主要有以下两种解决方案。实现等比缩放的一些方案1.利用img元素的等比缩放特点这种情况最为常见,只需要百分比设置img元素的宽度,img元素的高度就会随着宽度等比缩放。这也是我们在响应式界面中遇到的最主要的场景。基本上如果是图片都会下意识的用img来引入,即使是背景图片也常用这种方式来撑开父元... 自适应与响应式的异同 https://v3u.cn/a_id_16 Fri, 27 Jan 2017 00:00:00 +0000 https://v3u.cn/a_id_16 目前非常流行自适应设计与响应式设计,而且经常让人混淆,自适应设计不应与自适应布局混为一谈,它们是完全不一样的概念。在这先说明下这两者的异同:自从移动终端飞速发展以来,各种各样的机型突飞猛进,很多网站的解决方法,是为不同的设备提供不同的网页,比如专门提供一个mobile版本,或者iPhone/iPad版本。这样做固然保证了效果,但是比较麻烦,同时要维护好几个版本,而且如果一个网站有多个portal(入口),会大大增加架构设计的复杂度。于是,很早就有人设想,能不能"一次设计,普遍适用",让同一张网页自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局(layout)?2010年,... 移动布局方案(转载) https://v3u.cn/a_id_15 Wed, 22 Mar 2017 00:00:00 +0000 https://v3u.cn/a_id_15 layoutviewport和visualviewport移动端浏览器和PC最大的不同在于大小(废话==),那么怎样让网页友好的展示在移动端呢。很显然的,如果不做任何处理,很多页面的展示必然会乱掉。Apple也发现了这个问题,并定义了一个viewportmeta标签,用来创建一个虚拟的**layoutviewport**(布局视图),这个视图的分辨率接近pc,Apple将其定义为**980px**,其他厂商可能不同,感兴趣的可以自己写页面测试下。这就很好的解决了早期的页面在手机上显示的问题,由于两者之间的宽度趋近,只需要像在PC上那样渲染页面就行,原有的页面布局不会错乱。layoutviewp... 关于响应式设计最新的适配方案 https://v3u.cn/a_id_14 Wed, 12 Jul 2017 00:00:00 +0000 https://v3u.cn/a_id_14 截至目前最靠谱的响应式设计讨论https://www.w3cplus.com/css/vw-for-layout.html记录一下... 响应式设计笔记 https://v3u.cn/a_id_13 Tue, 21 Feb 2017 00:00:00 +0000 https://v3u.cn/a_id_13 HTML4和CSS2目前支持为不同的媒体类型设定专有的样式表。比如,一个页面在屏幕上显示时使用无衬线字体,而在打印时则使用衬线字体。screen和print是两种已定义的媒体类型。媒体查询让样式表有更强的针对性,扩展了媒体类型的功能。下面的css是应用在宽度小于等于960px的屏幕上:@mediascreenand(max-width:960px){body{background-color:red;}}此外,可以通过标签的media属性为样式表指定设备类型(如显示屏或打印机)。具体说来,就是在HTML页面的标签中插入一个如下面代码片段所示的link标签:<linkrel=&qu... 响应式设计之子元素的数目检测 https://v3u.cn/a_id_12 Sun, 09 Oct 2016 00:00:00 +0000 https://v3u.cn/a_id_12 在响应式设计中,通用做法是根据屏幕尺寸,显示不用的样式。如果碰到需求,希望根据子节点的个数,显示不同的样式呢?<ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>js判断js判断,比较简单,使用场景... 关于控件checkbox选择器的问题 https://v3u.cn/a_id_11 Mon, 27 Apr 2015 00:00:00 +0000 https://v3u.cn/a_id_11 对控件操作一般人喜欢用jquery,但是如果项目里面集成了过多的js库,容易产生各种莫名其妙科学无法解释的玄幻事件(懂的自然懂),所以基础操作我个人还是建议用原声js,比如操作checkbox<inputtype="checkbox"onclick="checkAll(this,'NewMainVideoCheckbox1')">functioncheckAll(e,name){varitems=document.getElementsByName(name);for(vari=0;i<items.length;... 禁止爬虫爬你的页面 https://v3u.cn/a_id_10 Sun, 21 Apr 2013 00:00:00 +0000 https://v3u.cn/a_id_10 众所周知,使用robots.txt文件可以对爬虫能否爬页面进行声明,但是这只是一个“君子协定”,有人遵守也有人不遵守,所以还需要对页面进行一个声明,加入meta代码<metaname="robots"content="noindex">这样才能有效的对爬虫进行封禁,例如本站就是如此,但是这是一个双刃剑,禁止爬虫的同时,SEO就不那么友好了... Python 检测成员函数、成员变量是否存在的方法 https://v3u.cn/a_id_9 Thu, 18 Jul 2013 00:00:00 +0000 https://v3u.cn/a_id_9 如下为测试用例:#定义一个类>>>classA:...def__init__(self):...self.name='sunyi'...deffun1(self):...print"fun1"...#创建对象a>>>a=A()#检测是否存在属性name>>>hasattr(a,"name")True>>>hasattr(a,"age")False#检测是否存在函数fun... python绘图显示中文字体的解决方案 https://v3u.cn/a_id_8 Tue, 27 Dec 2016 00:00:00 +0000 https://v3u.cn/a_id_8 importmatplotlib.pyplotaspltimportmatplotlibasmpl'''mpl.rcParams['font.sans-serif']=['FangSong']设置中文字体的方法mac不适用,windows应该可以'''font=mpl.font_manager.FontProperties(fname='/System/Library/Fonts/STHeitiLight.ttc')#不设置中文字体会显示成方块,图表显示的中文必须为unicode格式,将字体文件重命名为font,STHeitiLight为mac的黑体mpl.rcParams['axes.uni... python操作excel https://v3u.cn/a_id_7 Sat, 13 Apr 2013 00:00:00 +0000 https://v3u.cn/a_id_7 日常工作中,我们一般会将数据导入到csv文件,方便传来传去互相使用,而csv文件有很多致命缺点,比如乱码问题,比如分隔符问题,win下面是逗号而mac下面则是分号,令人很恼火,所以我个人推荐还是导出excel比较好一点,跨平台跨系统都不会出问题,也不会出现乱码问题,使用的模块是openpyxl,记录一下... 15个在github上最受欢迎的py框架,记录一下 https://v3u.cn/a_id_6 Sat, 13 Sep 2014 00:00:00 +0000 https://v3u.cn/a_id_6 1.Django:PythonWeb应用开发框架Django应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响。Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。2.Diesel:基于Greenlet的事件I/O框架Diesel提供一个整洁的API来编写网络客户端和服务器。支持TCP和UDP。3.Flask:一个用Python编写的轻量级Web应用框架Flask是一个使用Python编写的轻量级Web应用框架。基于WerkzeugWSGI工具箱和Jinja2模板引擎。Flas... Python 的 MySQLdb 模块的 autocommit https://v3u.cn/a_id_5 Sun, 20 May 2012 00:00:00 +0000 https://v3u.cn/a_id_5 最初在使用python读写数据库的时候,发现select语句可以读取到数据,insert语句执行后,数据库中却没有数据。将sql语句在mysql命令行直接执行是完全没有问题的,为什么使用MySQLdb执行insert语句会没有数据呢?看起来像是没有提交,立刻想到了mysql的autocommit,是不是没有提交事务?想到后立刻进行了验证,在执行insert语句后,又加了一行程序提交事务:connection.commit()。果然,insert语句生效了,数据库中有了数据。为了进一步证实MySQLdb模块会将autocommit功能关闭,看了mysql的日志,发现有setautocommit=... 代码检查工具 https://v3u.cn/a_id_4 Tue, 20 Mar 2012 00:00:00 +0000 https://v3u.cn/a_id_4 python哪儿都好,但是缩进太多,嵌套过多容易产生难以检查的语法错误,所以我们需要一款静态检查软件这里引入一个静态检查利器:flake8.flake8介绍它是以下三工具的包装:PyFlakes:python源码检查:多余import;重复定义函数;变量名冲突...Pep8:代码风格检查NedBatchelder’sMcCabescript:代码复杂度检查三大功能:python代码风格检查,使工程项目满足良好的代码风格,容易发现问题。一些基本的代码检查。git集成flake8使用安装:pipinstallflake8检查:flake8[python源码目录或文件]忽略规则接触,主要有两种方式:... 一个用来装逼的利器 https://v3u.cn/a_id_3 Thu, 01 Mar 2012 00:00:00 +0000 https://v3u.cn/a_id_3 termcolor是一个python包,可以改变控制台输出的颜色,支持各种terminal(WINDOWS的cmd.exe除外)。它支持下列的文字颜色:grey,red,green,yellow,blue,magenta,cyan,white支持下列的背景高亮:on_grey,on_red,on_green,on_yellow,on_blue,on_magenta,on_cyan,on_white支持下列属性:bold,dark,underline,blink,reverse,concealed主流terminal对属性的支持如下:Terminalbolddarkunderlineblinkr... python 字典遍历方法性能对比 https://v3u.cn/a_id_2 Thu, 23 Feb 2012 00:00:00 +0000 https://v3u.cn/a_id_2 最近项目中使用到了dict的遍历,笔者写了几年的python,大多数都是使用dict.keys()的遍历方式。无奈项目执行过程中当dict中的元素上千万的时候,两层for循环性能实在是扛不住,于是测试了一下几种遍历方法的性能importtimeitDICT_SIZE=5000testDict=dict()foriinrange(DICT_SIZE):testDict[i]=iassertlen(testDict)==DICT_SIZEdeftest1():forkintestDict.keys():key=kvalue=testDict[k]deftest2():forkintestDict:... Python在import时遇到的惨案 https://v3u.cn/a_id_1 Mon, 20 Feb 2012 00:00:00 +0000 https://v3u.cn/a_id_1 最近使用基于python语言的django框架开发web相关的应用,但是在访问页面的时候会不定时的报错,import导入报错经过近1个月的观察发现有这么几个特性:不知道什么时候会触发,但是一旦触发,就一直存在这个问题只要重启web服务或者调试问题马上就能解决。咋一看:难道是django框架不稳定?不要轻易怀疑框架的问题,绝大多数情况下是自己的问题。查看一下__import__的描述:__import__(name[,globals[,locals[,fromlist[,level]]]])NoteThisisanadvancedfunctionthatisnotneededineveryday...