首页
Search
1
解决visual studio code (vscode)安装时没有选择安装路径问题
138 阅读
2
Linux 下 Bash 脚本 bad interpreter 报错的解决方法
131 阅读
3
Arch Linux 下解决 KDE Plasma Discover 的 Unable to load applications 错误
107 阅读
4
如何在 Clash for Windows 上配置服务
77 阅读
5
Uniapp如何引入自定义样式文件
75 阅读
clash
服务器
javascript
全部
游戏资讯
登录
Search
加速器之家
累计撰写
1,061
篇文章
累计收到
0
条评论
首页
栏目
clash
服务器
javascript
全部
游戏资讯
页面
搜索到
624
篇与
的结果
2024-10-21
Mercurial的使用心得
1. 本人接触版本控制的历史 # 在很久很久以前,我们是怎么进行版本控制的呢,当我们工作到某个阶段后,就把此时的项目存为一个文件夹(A),然后再从这儿复制出一份(B)接着修改,而存储的那个文件夹(A)就是我们打的版本号,当我们把B改动到某个阶段后再打一个版本,然后从这个版本里衍生出一个C,一直衍生下去......。如果我们在某个版本改坏了的话,我们再从上个版本复制出一份接着修改。本人小蚊当时在学校的时候对版本控制了解的不深,就是用的这种方式进行版本控制的,这种手动进行版本控制的一个坏处就是:我们不知道每两个版本的差异在哪儿,都修改了哪些文件,只能说是这个版本比上个版本多了几个功能,可是文件的差异在哪儿,就不好对比了。不过后来在工作中遇到了SVN,这种情况就改善了很多。当时小蚊使用SVN时,每次我要对某个项目的代码进行改动时,都先从服务器上down下一份代码来,然后开始修改。因为本地的代码已经很老了,如果其他人也提交了代码的话,我再用我本地的老代码进行提交,就可能出现代码覆盖或文件冲突的情况。刚开始使用时都没有写改动信息,后来发现同事会在项目里弄一个changelog.txt来保存每次的修改,然后我也跟着学。可是后来发现原来SVN本身就有记录改动日志的功能,从这儿之后才算是开始步入正轨,真正地接触到了版本控制系统。当我开始接触github时,慢慢地使用上了git这个版本控制系统,可是因为是项目只有自己在改,也没有学习到很多。后来换了新工作之后,新公司使用的是mercurial作为版本控制系统,在工作中学习到了很多分布式版本控制系统的知识。 2. mercurial的使用 # hg和git有着无数的相似之处,都是分布式版本控制,都是有分支。git我只是在提交自己的项目时使用,很多的东西还没用到,不过工作中使用的是hg,每天都在多人合作代码,常会遇到合并分支时出现文件冲突、推代码时出现多个相同的分支。什么是分支,分支是干什么用的?像以前传统时的那种版本控制系统,整个项目都是集中一个服务器上,任何的修改都是要先从整个服务器上拉取代码,修改完成后再上传上去,若在修改的期间,其他人也提交了代码,最后自己提交的时候可能会覆盖掉上一个人的改动;现在分布式版本控制系统的优势就是,一个分支就是一个代码库,你在该分支上进行的任何操作都不会影响到其他分支,如果把整个分支整坏了,或者想放弃这个分支,那么直接切回到default分支重新新建即可,在那个分支上所有的改动都被保留在了那个分支上。 3. hg常用命令 # hg clone rep 从rep的地址拉取代码hg status 查看当前仓库中的文件改动状态: M: 内容已改动; !(感叹号):版本库还在跟踪该文件,可是本地仓库已经丢失该文件 R:该文件从版本库中删除; ?(问号):本地仓库中新添加的文件,版本库里还没有该文件,需要使用hg add 文件名 添加到版本库中 A:该文件是新添加的 hg remove 文件名 版本系统不再跟踪该文件hg revert 文件名 恢复该文件状态是!(感叹号)的,需要进行二选一了,是该文件真需要删除了,还是被误删了;若真的需要删除,则使用hg remove 文件名,若被误删了则使用hg revert恢复该文件hg add . 将所有没有在版本控制系统的文件添加到控制系统中,hg add 文件名 是将某个文件添加到控制系统中 hg log 查看提交的历史信息hg commit 将本地的改动进行提交hg push 将改动推到远程的分支上hg merge 分支名 将其他分支的代码合并过来hg diff 查看改动,hg diff 文件名 查看该文件的改动 4. 使用过程中遇到的问题 # 当前分支拉取当前分支不用merge,直接hg pull -u 取消当前分支的修改回到最初状态时,hg update -C 切换到其他分支且不保留当前分支的修改时,hg update default -C 切换到其他分支且保留当前分支的修改时,hg update default 创建分支时要在default分支上进行创建,这样保证所有的分支没有瓜葛;若在其他的分支上直接创建分支时,则把上一个分支的修改保留了下来,不容易进行拆分;视情况而定 若第一次提交分支时,则使用hg push -b 当前分支名 --new-branch,若已经是第二次以上的提交了则使用hg push -b 当前分支名即可,当然,每次提交时都带着—new-branch也没错 多人合作时需要拉取别人的分支的代码,不要担心,别人的分支和default分支没有任何区别7.1 在default分支上拉取远程的代码并更新本地代码:hg pull -u(hg pull, hg update) 7.2 在default分支上新建自己的分支:hg branch 自己的分支名 7.3 合并他人的分支:hg merge 他人的分支名 7.4 将合并的先提交一下,不然一会儿自己的改动和刚拉取的他人的代码混到一起了:hg commit -m 'merge from xiaoming' 7.5 进行自己的改动,该修改的修改,该添加的添加,该删除的删除7.6 提交自己的修改:hg commit -m '改动原因或目的' 7.7 再拉取下远程的代码,在改动的过程中说不定已经有人更新default分支了,不合并的话,会把别人的提交弄丢:hg pull -u hg merge default hg commit -m 'merge from default'(若merge default时需要提交) 7.8 将自己的代码推送到远程代码库:hg push -b 自己的分支名 --new-branch 配置 .hg目录8.1 hgrc : hg的远程代码库地址 ,若远程地址改动了 ,不用从零开始在新的地址拉取,只需要在这个文件中可以修改地址即可[paths] default = ssh://https://www.github.com/wenzi0github/test 8.2 branch : 当前的分支 ,这个文件里存储着当前的分支名8.3 last-message.txt : 最后一次提交的信息,hg commit -m 'message' 合并分支时出现冲突或出现推代码时出现多个相同的分支(多头),怎么办?当我出现这个的状况时通常是使用sourceTree的这个可视化工具来解决的,sourceTree上安装kdiff3的插件,当合并时出现了冲突,能够很明显的看到文件的哪部分出现了冲突,然后应该选择哪个作为需要合并的部分;当出现多个相同的分支时,先使用hg up 分支切换到当前多个中,然后把其他相同的分支直接merge到这个分支上,然后再合并其他分支的代码。 如何在mac下配置kidff3?配置kdiff3的地方主要由两个:控制台和sourcetree。首先安装kdiff3,如果是直接打开的话,那么就直接把kidff3.app拖拽到应用程序的文件夹中。10.1 控制台配置kdiff3hg在控制台配置kdiff3是相当的简单,打开你的~/.hgrc文件(如果不存在则创建一个),然后添加下面的代码:[extdiff] cmd.kdiff3 = /Applications/kdiff3.app/Contents/MacOS/kdiff3 [merge-tools] kdiff3.args = $base $local $other -o $output 配置完成后,当你merge一个分支产生冲突时,kidff3会自动弹出,然后你就可以选择你需要的内容进行合并。10.2 sourcetree配置kidff3打开sourcetree->preferences->diff,然后在visual diff tool和merge tool中都选择kDiff3即可。 当有文件产生冲突时,选择这个文件->右键选择resolve conflicts->launch external merge tool ,就会弹出kDiff3。 5. 总结 # 当然,这里也只是个人经历的总结而已,依然还有很多的东西没有总结到位。
2024年10月21日
5 阅读
0 评论
0 点赞
2024-10-21
博客从github迁移到gitcafe上
之前的博客都是在 github 上写的,当然,网上有很多“如何在 github 上创建静态博客”的教程,这里就不多说了,我也是按照网上的教程在 github 上创建了自己的静态博客,然后还买了一个属于自己的域名 www.xiabingbao.com 。就这样,真正属于自己的博客就建立起来了。不过由于很多特殊的原因,我们访问 github 的速度并不是很快,我们就需要考虑把博客托管到国内的服务器上,正好 gitcafe 满足了我们的要求,他跟 github 几乎一模一样,而且也是基于 git 搭建起来的平台,依然可以使用 git 命令来管理我们的代码,上手非常简单容易。 GitCafe 已被coding收购! GitCafe 是一个基于代码托管服务打造的技术协作与分享平台,程序开发爱好者们可以通过使用代码版本控制系统 Git 来将他们所写的开源或商业项目的代码托管在 GitCafe 上,与其他程序员针对这些项目在线协作开发。两天前,GitCafe 结束了长达数月的 Alpha 封闭测试,发布了第一个 Beta 版本,现无需邀请码,所有人都能够开始注册使用 GitCafe 所提供的代码托管服务 不过现在也有很多代码托管的网站,比如开源中国、CSDN、Coding等等,我们可以根据自己的爱好和习惯选择一款更适合自己的。
2024年10月21日
5 阅读
0 评论
0 点赞
2024-10-21
javascript获取URL链接和js链接中的参数
1. js获取URL中的参数 # 我们经常会在javascript里使用到URL里传递过来的参数,比如进行一些判断或者新页面的跳转等;而且还有一种情况,虽然使用的情况不多见,但是也会遇到:比如在一个页面里引用了一个aaaaa.js文件的链接,这个链接里还带着一个参数referer,同时呢,aaaaa.js还要获取referer的值 网上有很多这样的例子,不过天下文章一大抄,他们的文章和样例都是一模一样的,解决不了我的问题。比如这个:function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } 我们能够发现代码里,解析的是window.location.search,可是如果我想从整个URL链接里获取到我想要的参数呢,这个就不灵了。因为正则表达式的特殊性,这里的格式只能是这样子的:'?referer=wenzi'(?必须带着)。因此若想从整个URL中解析出参数的话,那就得先把URL用 url.split("?") 拆成两部分,然后使用后半部分,同时拼上"?"。就可以使用这个方法了。不过这里我们有一个简单的方法,可是网上基本没有找到,就是修改正则表达式,以达到我们的要求,上面:function getQueryString(url, name) { var reg = new RegExp("(^|&|\\?)" + name + "=([^&]*)(&|$)", "i"); var r = url.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } 这个方法就能从完整的URL里获取参数。 2. js获取javascript链接中的参数 # 如果我们某个js文件是收集性质的,或者需要区别不同地方引用的js,我们就要解析这个文件里带的参数,比如上面链接中的referer。在这里我实现的方式的前提是:script标签是阻塞加载的,而且,我们是首先获取script里的URL,然后再解析URL里的参数!getCurrentScript : function(name){ var i = 0, result = null, script, scripts, url, reg, r; // firefox支持currentScript属性 if( document.currentScript ){ script = document.currentScript } else{ // 正常情况下,在页面加载时,当前js文件的script标签始终是最后一个 scripts = document.getElementsByTagName( 'script' ) script = scripts[ scripts.length - 1 ] } url = script.hasAttribute ? script.src : script.getAttribute( 'src', 4 ); return url; } 获取到URL后再使用上面的方式解析出referer的值就行了。
2024年10月21日
3 阅读
0 评论
0 点赞
2024-10-21
javascript实现一个简单的广告位
一般广告位的实现都是一个独立的模块,哪里需要添加广告位,就把这个广告位插在哪里;而这个广告位通常都是由一个 js 链接导入的。在这段广告位的 js 代码里,主要的功能点有: 代码采用闭包的方式,防止变量污染全局; 采用可配置项的方式进行调用:可以配置广告展示的开始时间、结束时间、广告位的宽和高; jumeiForU.init({ start: '2015/02/01 00:00', end: '2016/01/01 00:00', width: 400, height: 400, }); 每次刷新页面均采用随机数的方式进行广告的展示;如果想要进行顺序循环展示的话,那就得读写 cookie 了; 读取引用该 js 链接中所带的参数,比如下面的广告链接,我们能够获取到 referer 参数的值。关于这个功能的实现,可以参考我的上篇文章【javascript 获取 URL 链接和 js 链接中的参数】: 以下放出代码,大家可进行参考,欢迎批评建议:(function () { var jumeiForU = { // 初始化 init: function (_config) { this.config = this.extend(this.config, _config); this.show(); }, // 广告展示及跳转链接 data: [ { title: '九朵云祛斑霜', img: 'http://p0.jmstatic.com/g/300x250/ht150122p854446t1.jpg', url: 'http://www.jumeiglobal.com/deal/ht150122p854446t1.html?referer=', }, { title: 'Guerisson奇迹马油24K金面膜贴', img: 'http://p0.jmstatic.com/g/300x250/ht150122p1293256t1.jpg', url: 'http://www.jumeiglobal.com/deal/ht150122p1293256t1.html?referer=', }, { title: 'Its-skin晶钻蜗牛面膜', img: 'http://p0.jmstatic.com/g/300x250/ht150122p818496t1.jpg', url: 'http://www.jumeiglobal.com/deal/ht150122p818636t1.html?referer=', }, { title: '九朵云美白祛斑气垫BB霜', img: 'http://p0.jmstatic.com/g/300x250/ht150122p1293254t1.jpg', url: 'http://www.jumeiglobal.com/deal/ht150122p1293254t1.html?referer=', }, { title: '可莱丝NMF水库针剂睡眠面膜5片', img: 'http://p0.jmstatic.com/g/300x250/ht150122p1312153t1.jpg', url: 'http://www.jumeiglobal.com/deal/ht150122p1312153t1.html?referer=', }, { title: '猪皮面膜', img: 'http://p0.jmstatic.com/g/300x250/ht150122p1254465t1.jpg', url: 'http://www.jumeiglobal.com/deal/ht150122p1254465t1.html?referer=', }, { title: '奇迹马油精华套装', img: 'http://p0.jmstatic.com/g/300x250/ht150122p1293257t1.jpg', url: 'http://www.jumeiglobal.com/deal/ht150122p1293257t1.html?referer=', }, { title: '九朵云美白祛斑套组', img: 'http://p0.jmstatic.com/g/300x250/ht150122p1293255t1.jpg', url: 'http://www.jumeiglobal.com/deal/ht150122p1293255t1.html?referer=', }, { title: '晶钻蜗牛修护睡眠面膜', img: 'http://p0.jmstatic.com/g/300x250/ht150122p818636t1.jpg', url: 'http://www.jumeiglobal.com/deal/ht150122p818496t1.html?referer=', }, { title: 'skin1004僵尸面膜', img: 'http://p0.jmstatic.com/g/300x250/ht150122p1265333t1.jpg', url: 'http://www.jumeiglobal.com/deal/ht150122p1265333t1.html?referer=', }, ], // 配置 config: { start: '2015/01/01 00:00', end: '2030/01/01 00:00', width: 300, height: 250, }, // 广告展示 show: function () { var nowtime = new Date().getTime(), starttime = new Date(this.config.start).getTime(), endtime = new Date(this.config.end).getTime(), random = this.getRandom(), referer = this.getCurrentScript('referer'); if (nowtime >= starttime && nowtime < endtime) { document.write( '' ); } }, // 返回当前需要展示的广告代号 getRandom: function () { return Math.floor(Math.random() * this.data.length); }, extend: function (destination, source) { for (var property in source) { destination[property] = source[property]; } return destination; }, // 获取referer的值 getCurrentScript: function (name) { var i = 0, result = null, script, scripts, url, reg, r; // firefox支持currentScript属性 if (document.currentScript) { script = document.currentScript; } else { // 正常情况下,在页面加载时,当前js文件的script标签始终是最后一个 scripts = document.getElementsByTagName('script'); script = scripts[scripts.length - 1]; } url = script.hasAttribute ? script.src : script.getAttribute('src', 4); reg = new RegExp('(^|&|\\?)' + name + '=([^&]*)(&|$)', 'i'); r = url.substr(1).match(reg); if (r !== null && r !== '') { result = decodeURIComponent(r[2]); } return result === '' ? null : result; }, }; jumeiForU.init(); })(window);
2024年10月21日
5 阅读
0 评论
0 点赞
2024-10-21
如何提升alexa的排名(一)
在开始之前,我先简单说几句。alexa排名对网站有没有用,大伙心里最清楚。除非你做的是企业网站或者你不用靠合作有足够的钱往里砸,否则你肯定会或多或少遭遇到alexa排名的潜规则。我遇到这样的事,一个排名10W的站,找一些排名5W左右的网站谈合作,对方要么爱理不理,要么态度很霸道;但三个月后,同样的网站,排名变成了2W,再去找这些网站谈,对方的态度完全变了,客气得不行。这不能怪网站、站长太“势利”,而是在不能有效地评估一个网站的大环境下,alexa排名成了惟一的通行评判标准。由此一来,至少在相当长的时间内,alexa排名对于中小站长来说,都是很重要的一个参考标准。言归正传,在我看来,alexa排名的提升不难,找对了方法,坚持执行下去,就能得到一个理想的排名。而对于专职做网站的站长来说,20W,甚至15W,是一个底线。也就说,即便网站IP很少、PV也不高,只要能够保证有一定的时间(3个小时左右)能花在网站上,alexa排名就肯定能达到20W或者15W。然后,10W是个坎,能不能迈过这个坎,就要看网站的内容如何、是否有简单的推广、有没有忠实的用户等。紧接着,5W、3W和1W是网站的三个阶段。在同一个阶段内的网站,基本可认定实力大致相当。那究竟怎么操作,才能得到理想的排名呢?原则上影响alexa排名有两个因素,第一,带工具条浏览网站的浏览数;第二,带工具条浏览网站的独立用户数。但在实际操作过程中又会涉及到另外两个因数,即带工具条用户在网站的停留时间和单个页面的停留时间。详细说来,对于排名50W开外的网站,站长安好工具条之后,每天认真浏览网站(注意是浏览,而不是走马观花那样的刷)2个小时,不出一个星期,当日排名就能至少前进20W。这样坚持一个月,网站的综合排名至少能前进20W。而仅仅是这么简单的操作,有好多站长试过之后,向我反馈,说根本没用。我问了其中的几个,有一个说他每天浏览网站至少5个小时,可排名没任何变化;我再一打听,他那五个小时基本上都在网上找内容、而在他自己网站上产生的带工具条浏览量不到50,这样有效果才怪。还有一个网站,说他网站每天带工具条的浏览量在1W以上,可排名不升反降。我帮他分析后发现,他是按键精灵刷的PV,刷的太频繁,结果被alexa屏蔽了。所以,我想说的是,和做网站一样,alexa排名的提升也是个体力活,投机取巧是会出问题的。现在做网站“一劳永逸”的时代已经过去了,必须踏踏实实的用心耕耘。最后,我根据这两个月来就聊网的实战经验,总结出一点心得,与大家分享。就聊网开始更新是1月21日,更新频率是大约10篇/天,推广主要是在豆瓣、冬瓜、抽屉等分享内的网站。截止今天,就聊网的alexa排名是57330,虽然春节的时候由于间断更新导致排名略有下降,但总体情况还算可以。我还监测了同期的一些网站,只有一个网站(掘图志)排名上升的比就聊网快。结合就聊网的实战,我的心得如下: 必须保证工具条的正常下载、安装和运行(春节在家,没上网,就聊网流量不小,但都是没有工具条的,结果那几天的alexa当日排名竟然跌出了50W)。 每天网站带工具条的浏览量不得少于500。就聊网虽然更新量少,但后来加上了图片,每天更新完,审完评论,我就会自己看图片,认真看,发现bug就去调模板……总之,想方设法保证每天的浏览量。 有意识地增加“忠实用户”的alexa工具条安装数。前期就是找那些关系好的朋友,要求他们安个alexa工具条。这样多安一个工具条,他们在浏览就聊网的时候,就会为就聊网的alexa排名做出一份贡献。积少成多,所以就聊网的alexa排名上升得很快,也很稳定。 多与站长交流。一般站长都是安了工具条的,多交流多互动,对网站的alexa排名很有帮助。 在网站进了10W名以后,就要考虑推广的问题了。因为如果IP有限,alexa排名上升到一定程度之后,就会停滞不前了。由于就聊网主要是收集创意类视频和图片的,所以就选择了在豆瓣推广,后来又在抽屉、冬瓜等新兴的掘客分享类网站推广。 以上是一些简单的分享,如果大家对alexa排名的提升感兴趣,可以给博主留言,一起交流,共同提高。
2024年10月21日
5 阅读
0 评论
0 点赞
1
...
7
8
9
...
125