VMware 虚拟机安装 Mac OS 和 Xcode 的过程

最近要上iOS开发技术这门课,但我没有苹果电脑,机房也不让我们用,只能在自己的电脑上装苹果系统。双系统的安装比较复杂,稳定性也不好,还是用最稳妥的在虚拟机上安装的方法。 首先下载安装最新版的VMware Workstation Player(写文章时最新的版本是15),网址如下:https://www.vmware.com/cn/products/workstation-player/workstation-player-evaluation.html 个人使用这款软件是免费的,免去了网上一些死板教程下收费版的VMware Workstation Pro还要破解的过程。 可以先打开VMware Workstation Player看一下,点击创建新虚拟机-稍后安装操作系统,可以看到是没有Mac OS的选项的。 我们还需要下载一个解锁工具,下载地址如下:https://github.com/DrDonk/unlocker/releases,这个网站中的内容应该是在不断更新,找最新版本的zip包下载(写文章时最新的版本是3.0.2),解压之后用管理员身份运行win-install.cmd文....

阅读全文 »

了不起的 VSCode

VSCode是目前我心目中最好用的编辑器了。我们暂且不谈论Linux系统上的编辑器,在那边,Vim是绝对的王者,如果一定要说有竞争对手的话,Emacs也能算一个。从我个人的经历来说,在我上中学的年代,一个主流的编辑器叫做UltraEdit,这个编辑器功能很强大,但要收费,价格还不便宜。当时对于UltraEdit的替代品叫NotePad++,这个编辑器是免费的,启动速度也非常快,但是界面实在不怎么好看。之后是个编辑器混战的时代,Sublime、Atom、Webstorm等等各种编辑器的拥趸纷纷说自己的编辑器有多好,直到VSCode横空出世。目前VSCode已经是使用人数最多的编辑器,一张去年的统计数据如图: 这张图表上其他的编辑器的“年纪”基本上都比VSCode大,但却被它打败了。 而从目前各个程序员社区的反馈情况来看,VSCode的使用人数还在不断增长,因此今年VSCode的份额一定比去年还要高,稳稳占据第一的位置。可以说这是微软这几年来做得最成功的一个软件项目。 我们说人的使用习惯是很重要的因素,除非另一个工具特别好用,否则不会改变自己的习惯去使用新的工具。 VSCode到底好在哪....

阅读全文 »

Swift 中不同窗体的切换和传递数据 (segue 的用法)

废话不多说,直接进入正题 首先在storyboard中新建一个ViewController,再新建一个名为NewViewController的cocoa touch class文件,继承UIViewController,将新建的ViewController绑定到NewViewController类上。现在storyboard中就有两个ViewController了。如图: 之后设计窗体上的控件,在第一个窗体(称为窗体A)内放一个标签和一个按钮,在第二个窗体(称为窗体B)内放一个输入框和按钮。将标签和输入框的outlet绑定到swift文件中,为两个按钮分别添加各自的监听事件。如图: 我们的目标是点击窗体A的按钮能够跳转到窗体B,同时窗体B输入框中的内容变成窗体A标签内的文字,在修改输入框中的内容,再点击按钮,能够跳转回窗体A,同时窗体A标签中的内容变成在窗体B的输入框中修改的内容。 我们选中第一个窗体上方三个按钮中的第一个按钮,用拖拽的方式拖到第二个窗体,并在弹出来的选项中选择show detail。如图 之后就可以看到两个窗体之间新增了一条连接线 选中这条连接线,设置....

阅读全文 »

Docker 新手心得

说实话,我之前对于Docker的印象并不算太好,觉得这又是一个赶时髦的技术,过不了多久热度就会过去的。不过这学期选了一门企业级服务器导论的课中讲到了关于Docker的内容,而且现在Solo也大力推荐使用Docker进行部署,让我感觉不了解一点关于它的知识好像不太合适。于是就学习了一些相关的内容,并做了一些简单的实践。 首先,我一开始只知道Docker是把不同的软件隔离在不同的容器中运行,但是并不知道这样的意义何在。我觉得从我们个人计算机的使用角度来看,不同的软件在操作系统中同时运行并没有什么问题啊,就算是我在阿里云(算是服务器了)里面部署的网站,也是一堆软件直接装在一个操作系统上,运行也非常正常,为啥还要专门装到Docker里面隔离开来,简直就是莫名其妙嘛。之后在企业级服务器上老师讲了企业级应用的部署发展史,才终于明白Docker的意义。课上老师说到最早的时候企业级应用在服务器中的部署和个人计算机中应用的运行差不多,都是一大堆软件同时运行在一个操作系统上。但是后来有人发现这样非常不安全,一但黑客攻破了其中一个软件,他就有可能从这个软件出发获取到整个操作系统的权限,从而控制服务器上的所有....

阅读全文 »

外文资料翻译——The Semantic Web(语义网)

译者注:这篇文章是万维网之父蒂姆·伯纳斯·李于2001年发表于《科学美国人》杂志上的文章。在文章中作者阐述了一种新的网络构想,即语义网,它不仅仅能让人阅读网页中的内容,还能让机器理解网页中的含义。目前网络上暂时没有找到这篇文章的完整中文版。一些语句因为两种语言表达方式的差异可能不太通顺,请大家多多包涵。 语义网 一种对计算机发展有深远意义的新的Web内容形式,可能产生新的知识革命 by TIM BERNERS-LEE, JAMES HENDLER and ORA LASSILAo:p 当电话响起时,音箱里正在播放披头士的《We Can Work It Out》。皮特接起电话时,电话通过向所有拥有音量控制功能的本地设备发送了消息以调低音量。他的妹妹露西从诊所向他打来了电话,说道:“妈妈需要去医院看专科医生,之后需要接受一系列的治疗。每隔两周,我要让我的代理(agent)(译者注:agent这词在后面多次用到,感觉翻译成代理并不太贴近,但也暂时想不到更好的表述)去进行预约。”皮特立即同意承担司机的工作。在诊所,露西通过她的手持浏览器对语义网代理下达指令。代理很快从医生的代理那里得到了关于....

阅读全文 »

使用 Vue+axios+Echarts 绘制关系图遇到的坑

最近做毕设,后端采用的是Spring boot,通过Neo4jRepository从neo4j中获取数据,前端框架是Vue,通过axios请求后端数据,并处理成符合Echarts规范的数据格式,之后Echarts进行渲染。在前端渲染数据的过程中遇到好多坑。 首先是如何对后端返回的数据进行处理。后端返回的数据格式是这样的: [ { "id": 1, "name": "CSS" }, { "id": 2, "name": "Javascript", "derives": [ { "id": 3, "name": "Vue.js" } ] }, { "id": 3, "name": "Vue.js" }, { "id": 171, "name": "前端技术", "includes": [ { "id": 1, "name": "CSS" }, { "id": 2, "name": "Javascript", "derives": [ { "id": 3, "name": "Vue.js" } ] }, { "id": 172, "name": "HTML", } ] }, { "id": ....

阅读全文 »

搞懂逻辑覆盖

逻辑覆盖 逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖 分为以下几种 语句覆盖 Statement coverage 判定覆盖 Decision coverage 条件覆盖 Condition coverage 条件/判定覆盖 Condition/decision coverage 条件组合覆盖 Condition combination coverage 路径覆盖 Path coverage 例子 Path: L1(a → c → e) L2(a → b → d) L3(a → b → e) L4(a → c → d) 语句覆盖 Statement coverage 语句覆盖的要求是使所有可执行语句至少执行一次 以上图为例,所有的可执行语句都在L1上,只要选取一个用例A=2,B=0,x=3即可满足语句覆盖 判定覆盖 Decision coverage 使每个判定获得一种可能的结果至少一次。 选取用例 A=2,B=0,x=3 覆盖了L1 A=1,B=1,x=1 覆盖了L2 使每个判定的结果都获得了一次 条件覆盖 Cond....

阅读全文 »

使用 Gitalk 实现静态页面评论的功能 有更新!

使用静态页面的理由 本人在Github上使用github.io部署了一个静态主页,地址是http://aopstudio.github.io,用于存放一些笔记文件。虽然静态页面功能少,自动化程度低,不过github.io的优点在于页面完全随自己设计,html,css和javascript全部随由自己安排,同时不需要自己的服务器资源。而且不少Github用户都会设置github.io作为自己的展示页面,也算是一个潮流。 更大的理由——Markdown Preview Enhanced插件太强大。。。 我使用的Markdown写作工具是VS code搭配其中的Markdown Preview Enhanced插件,功能相当强大,尤其是其中的脚本语言画图像的功能让我爱不释手。在该插件内可以使用脚本语言(比如DOT语言)画出矢量图,包含流程图、时序图、有向图、无向图等等,目前我还没有发现其他Markdown渲染工具可以达到相同的功能。Github中的Markdown语言据说是对原生Markdown进行了功能增强,但是连$\TeX$公式都不支持,和MPE插件比起来更是差了十万八千里(这里要夸一下....

阅读全文 »

使用 nginx 和 tomcat 配置反向代理和动静分离

背景 本人主修的编程语言是Java语言,因此最开始接触的Web开发也是JSP技术。使用Java开发的Web应用需要部署在专门的服务器程序上运行,比如Tomcat。但是一般很少会有人将Tomcat作为用户直接访问的服务器的,一般都是使用nginx或者Apache进行反向代理。我使用的是nginx。nginx是一个俄罗斯程序员开发的服务器程序,它本身只能提供静态资源的服务,但它的优点在于并发访问量可以达到非常大的水平。 反向代理的优点 反向代理的主要优点是提高并发访问数。单独一个Tomcat服务器能提供的并发访问数不高,如果在主机上部署多个Tomcat服务器,使用nginx进行反向代理,动态调整用户的请求到不同的Tomcat服务器(这个过程称为负载均衡),就可以使并发访问量和单个Tomcat服务器相比得到成倍的提升。 动静资源分离也常常和反向代理在一起被提起,比如你部署了一个Java Web应用,这是一个动态资源,需要Tomcat提供服务(由反向代理实现),但你的网站上同时还有其他的比如纯HTML的网页、图片等等静态资源,这些静态资源就可以由nginx直接提供给访问者,减少了调用Tomca....

阅读全文 »

使用 particles.js 实现网页背景粒子特效

得知途径 B3log提供了两套博客系统,一个是用Java开发的,叫做Solo,我也是在网上搜索Java博客系统时发现了它,之后才了解了B3log;还有一个是用Go语言开发的,叫做Pipe.其中Solo是需要自己在自己的云主机上搭建的,而Pipe可以选择自己搭建,也可以使用B3log搭建好的服务. 在Pipe的主页,背景使用了一个非常酷炫的粒子特效,而且还能和鼠标指针互动。 我最近正好在学习网页制作,就想着如果能把这个背景放到我自己的网页上就好了。一般这种效果不会是网页开发者自己写的,而是去调用一些别人写好的js或者css文件来完成。我在Pipe的主页点击右键,选择检查,界面变成下图 可以看到果然有一个叫做particles-js-canvas-el,那么基本可以确定这个效果就是由particles.js实现的。去百度搜索particles.js,果然找到了相关的资料。 基本配置 到官网下载paritcles.js的文件包,解压之后里面有一个demo文件夹。我们将该文件夹复制出来,并对该文件夹中的文件进行修改即可。 该文件夹中有一个index.html文件,我们打开它,找到其中的 &....

阅读全文 »