一般来说,登录注册jsp验证码代码这些代码用什么方式写好

C#创建数据库用window验证登陆用代码怎么写啊_百度知道
C#创建数据库用window验证登陆用代码怎么写啊
提问者采纳
pass 是需要验证的密码.CreateCommand()。.InitialCatalog = &/databasename&quot。;
sqlsb.ExecuteReader().IntegratedSecurity = true,都是windows认证;,只要是看连接串中IntegratedSecurity 如果为true。;
and password = 'mssql&quot。
SqlCommand sqlComm =&+pass+&quot,否则失败;&#47.Close();;
using (SqlConnection conn = new SqlConnection())
SqlConnectionStringBuilder sqlsb = new SqlConnectionStringBuilder();
sqlC。是使用C# 查数据的基本操作;+user+&&
&quot。。.ConnectionS
while (dr.Read())
/&quot。验证成功;打开连接。user是需要验证的用户名;。
string user = &quot.ConnectionString = sqlsb。;\。使用的是windows验证;
string pass = &select * from user where user = ''如果走进来了 表示查到了.DataSource = &quot.Open();.CommandText = &
SqlDataReader dr = sqlComm.\
/'&quot下面的代码就是个简单的例子;
dr。.Close()
提问者评价
其他类似问题
创建数据库的相关知识
其他3条回答
没那么写过...
连接字符串 即可。Data Source=(local);Initial Catalog=& + databaseName + &;Integrated Security=SSPI;
string sqlConnString = &Server=.\\SQLEDatabase=T integrated security=SSPI&; using (System.Data.SqlClient.SqlConnection conn = new SqlConnection(sqlConnString))
if (conn.State != ConnectionState.Open)
conn.Open();
}这就是用windows身份验证的方式连接。首先你的数据库应该设置为windows验证方式连接的注意连接字符串string sqlConnString = &Server=.\\SQLEDatabase=T integrated security=SSPI&;这里的Server 是数据库所在的服务器名,我这里以vs2008自带的sql2005数据库为例子Database是数据库名,我这里以Test为例子,这两项需要根据你自己的情况做修改。如果不用windows验证方式,那么连接字符串改一下就行了。改成string sqlConnString = &Server=.\\SQLEDatabase=T uid=pwd=ln881205&;uid和pwd账号密码你自己知道
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用vb.net写的验证码识别代码
发布者:vbfans
发布日期: 10:24:22 &&更新日期: 10:24:22
阅读次数:3632
评分:4.80
介绍:许多自动发贴、自动登录程序都涉及到验证码的识别,本文提供了一个很简单用vb.net写的验证码识别代码。
许多自动发贴、自动登录程序都涉及到验证码的识别,本文提供了一个很简单用vb.net写的验证码识别代码,代码质量不是太高,而且去噪部分算法很不好,但识别现在网站上的图形验证码已经够用了。比起前段时间给别人做的自动投票系统中用的一个带有相当强大的图形处理类的ocr来识别和去噪相比就差太远了,但仍旧可以作为基础参考!
下面是具体的源代码:
Imports System
Imports System.Text
Imports System.Data
Imports System.Data.OleDb
Imports System.Drawing
Imports System.Drawing.Graphics
Public Class CrackImage
Private ConnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=AData Source=Learn.mdb"
Private resultNumber As String
Private rsultStudy As Boolean = False
Public Sub New(ByVal SrcImage As Bitmap)
GetImageNumber = GetIamgeResultNumber(GetNewIamge(SrcImage))
Public Sub New(ByVal SrcImagePath As String, ByVal StudyNumber As String)
rsultStudy = StudyCode(SrcImagePath, StudyNumber)
Public Property GetImageNumber() As String
Return resultNumber
Set(ByVal Value As String)
resultNumber = Value
End Property
Public Property GetStudyImageResult() As Boolean
Return rsultStudy
Set(ByVal Value As Boolean)
rsultStudy = Value
End Property
'处理新图片
Private Function GetNewIamge(ByVal srcBitBmpImage As Bitmap) As Bitmap
'建立临时表
Dim myDataTable As New DataTable
Dim myCol2 As New DataColumn
myCol2.DataType = System.Type.GetType("System.Int32")
myCol2.ColumnName = "RgbValue"
myDataTable.Columns.Add(myCol2)
Dim myCol3 As New DataColumn
myCol3.DataType = System.Type.GetType("System.Int32")
myCol3.ColumnName = "RgbCount"
myDataTable.Columns.Add(myCol3)
Dim img As Bitmap = srcBitBmpImage
Dim x, y As Integer
'遍历所有点,存储每点的颜色代码,并对各种颜色进行统计 (这些代码可以不要,直接将图转化成黑白只剩下噪点和感染线条)
For x = 0 To img.Width - 1
For y = 0 To img.Height - 1
Dim Found As Boolean = False
If myDataTable.Rows.Count & 0 Then
For k As Integer = 0 To myDataTable.Rows.Count - 1
If myDataTable.Rows(k).Item("RgbValue") = img.GetPixel(x, y).ToArgb Then
myDataTable.Rows(k).Item("RgbCount") += 1
Found = True
If Found = False Then
Dim myRow As DataRow
myRow = myDataTable.NewRow()
myRow.Item("RgbValue") = img.GetPixel(x, y).ToArgb
myRow.Item("RgbCount") = 1
myDataTable.Rows.Add(myRow)
'获取背景色码
'象素点出现最多的就视为背景色
Dim intMaxRgbValue As Integer = 0
If myDataTable.Rows.Count & 0 Then
myDataTable.DefaultView.Sort = "RgbCount DESC"
intMaxRgbValue = myDataTable.DefaultView.Item(0).Item("RgbValue")
'勾画数字轮廓
For x = 0 To img.Width - 1
For y = 0 To img.Height - 1
Dim x1, y1 As Integer 'x1和y1记录的是相对当前象素的上一个象素的坐标
If x = 0 Then
x1 = x - 1
If y = 0 Then
y1 = y - 1
Dim x2, y2 As Integer 'x2和y2记录的是相对当前象素下一个象素的坐标
If x = img.Width - 1 Then
x2 = img.Width - 1
x2 = x + 1
If y = img.Height - 1 Then
y2 = img.Height - 1
y2 = y + 1
'都是普通的去噪手法,去噪成黑白色,这里是去噪成黑黄 色
If img.GetPixel(x2, y).ToArgb = intMaxRgbValue Or img.GetPixel(x1, y).ToArgb = intMaxRgbValue Then
img.SetPixel(x, y, Color.Black)
ElseIf img.GetPixel(x, y).ToArgb && intMaxRgbValue Then
img.SetPixel(x, y, Color.Yellow)
img.SetPixel(x, y, Color.Black)
Return img
End Function
'获取处理后的数字
Private Function GetIamgeResultNumber(ByVal srcNewImg As Bitmap) As String
Dim RawData As New StringBuilder
'设置分割大小
Dim imgNewWidth As Integer = 16
Dim imgNewHeight As Integer = 13
Dim imgNew As New Bitmap(srcNewImg)
Dim x, y As Integer
Dim result As String = ""
Dim ImageSplitWidth As Integer = imgNew.Width - imgNewWidth
For m As Integer = 0 To ImageSplitWidth Step imgNewWidth
Dim Rc As New Rectangle(m, 0, imgNewWidth, imgNewHeight)
Dim B As Bitmap
B = imgNew.Clone(Rc, imgNew.PixelFormat)
'对比分割的颜色,黑色取1,其他取0,就此生成特征码
For x = 0 To imgNewWidth - 1
For y = 0 To imgNewHeight - 1
If B.GetPixel(x, y).ToArgb && Color.Black.ToArgb Then
RawData.Append("1")
RawData.Append("0")
result += GetIamgeRawToNumber(RawData.ToString)
RawData.Replace("0", "").Replace("1", "")
Return result
End Function
'学习新图片
Private Function StudyCode(ByVal srcImage As String, ByVal objNumber As String) As Boolean
If objNumber = "" Or objNumber.Length & 4 Then Exit Function
Dim RawData As New StringBuilder
Dim imgNewWidth As Integer = 16
Dim imgNewHeight As Integer = 13
Dim p As Integer = 0
Dim x, y As Integer
Dim srcBitbmp As New Bitmap(srcImage)
Dim imgNew As Bitmap = GetNewIamge(srcBitbmp)
'分割图片并保存学习代码
Dim ImageSplitWidth As Integer = imgNew.Width - imgNewWidth
For m As Integer = 0 To ImageSplitWidth Step imgNewWidth
Dim CurNumber As String
CurNumber = objNumber.Substring(p, 1)
If CurNumber && "." Then
Dim Rc As New Rectangle(m, 0, imgNewWidth, imgNewHeight)
Dim B As Bitmap
B = imgNew.Clone(Rc, imgNew.PixelFormat)
For x = 0 To imgNewWidth - 1
For y = 0 To imgNewHeight - 1
If B.GetPixel(x, y).ToArgb && Color.Black.ToArgb Then
RawData.Append("1")
RawData.Append("0")
SaveImageRaw(objNumber.Substring(p, 1), RawData.ToString)
RawData.Replace("0", "").Replace("1", "")
Return True
End Function
'获取图片Raw数据
Private Function GetIamgeRawToNumber(ByVal strRaw As String) As String
Dim conn As New OleDbConnection(ConnStr)
Dim comm As New OleDbCommand
Dim reader As OleDbDataReader
Dim myDataTable As New DataTable
Dim myCol1 As New DataColumn
myCol1.DataType = System.Type.GetType("System.Int32")
myCol1.ColumnName = "MatchNumber"
myDataTable.Columns.Add(myCol1)
Dim myCol2 As New DataColumn
myCol2.DataType = System.Type.GetType("System.Int32")
myCol2.ColumnName = "MatchCount"
myDataTable.Columns.Add(myCol2)
mandText = "select LearnCharacter,Eigenvalue from tbLearn"
conn.Open()
comm.Connection = conn
reader = comm.ExecuteReader
If reader.HasRows Then
While reader.Read
Dim myRow As DataRow
myRow = myDataTable.NewRow()
myRow.Item("MatchNumber") = reader.Item(0)
myRow.Item("MatchCount") = CompareRaw(reader.Item(1), strRaw)
myDataTable.Rows.Add(myRow)
conn.Close()
Dim reuslt As String = ""
If myDataTable.Rows.Count & 0 Then
myDataTable.DefaultView.Sort = "MatchCount DESC"
reuslt = myDataTable.DefaultView.Item(0).Item("MatchNumber")
Return reuslt
End Function
'比较图片Raw数据
Private Function CompareRaw(ByVal strDataBaseRaw As String, ByVal strObjRaw As String) As Integer
Dim intRawLen As Integer = strDataBaseRaw.Length
Dim MatchCount As Integer = 0
For i As Integer = 0 To intRawLen - 1
If strDataBaseRaw.Substring(i, 1) = strObjRaw.Substring(i, 1) Then
MatchCount += 1
Return MatchCount
End Function
'保存图片Raw数据
Private Sub SaveImageRaw(ByVal strNumber As String, ByVal strRaw As String)
Dim conn As New OleDbConnection(ConnStr)
Dim comm As New OleDbCommand
mandText = "insert into tbLearn(LearnCharacter,Eigenvalue) values ('" + strNumber + "','" + strRaw + "')"
conn.Open()
comm.Connection = conn
comm.ExecuteNonQuery()
conn.Close()
提供代码主要有两个目的,一是供大家做个编程参考,二是提醒下要注意登陆入口的管理和管理员的密码安全性,只要我能有一定的几率正确识别图形验证码,就能通过向http包头中添加新的头信息,就能对管理员帐号进行暴力破解!&
免责声明:好库网所展示的信息由买卖双方自行提供,其真实性、准确性和合法性由信息发布人负责。好库网不提供任何保证,并不承担任何法律责任。您好,欢迎来到!请先或者
多?快?好?省
用其他账号登录:
[76613]求达人写一段PHP后台登陆验证代码,对高手来说简单
开始时间: 13:42:00
结束时间: 13:40:00
页面加载中...
该项目已圆满结束,悬赏金的80%已付与中标者。
求达人写一段PHP后台登陆验证代码,对高手来说简单
目标网站我有网站源码,但是后台无法登陆没有login文件夹。主要是少了login_action.php这个文件。详细资料见附件
补充说明:
增加数据库相关文件,此文件在网站根目录下面。文件名:mysql_class.php(已上传) [补充于 <font color=#0-8-3 14:23:17]补充附件: [补充于 <font color=#0-8-3 14:23:17]che.php这个文件是验证码获取的文件,会的自己写个,不会的就不用验证验证码了。 [补充于 <font color=#0-8-3 14:24:20]我看有些朋友发的东西是牛头不对马嘴。完全不看附件要求的。 [补充于 <font color=#0-8-3 14:41:33]
好评:100%
时间财富网提醒:  近期由于有人冒充雇主联系威客,叫威客先打款可以使威客中标,请大家警惕,千万不要上当受骗,真正的雇主是不会叫威客打款的。一一 更多行骗手段请查看
创意多 数百万专业人才提供创意解决方案
成本低 比线下交易价更低更安全方便
效果好 网上找创意,关注量大
无方案 可退款
满意后 再付款
¥300元 ¥300元 ¥100元 ¥120元 ¥100元 ¥50元 ¥150元 ¥1200元 ¥50元 ¥500元
提交时间:
提交时间:
提交时间:
评论加载中...
文明上网,理性发言
Copyright(&) 2012
All rights reserved.& & 总共需两个页面,register.php 和 verify.php& & 1. 用户注册表格 register.php& & 复制代码代码如下:& & & & & & & & 用户名:& & 密码:& & 电子邮件:& & & & & & & & & & 2. 创建用户数据表格 Users& & 复制代码代码如下:& & CREATE TABLE IF NOT EXISTS `users` (& & `id` int(11) NOT NULL auto_increment,& & `status` varchar(20) NOT NULL,& & `username` varchar(20) NOT NULL,& & `password` varchar(20) NOT NULL,& & `email` varchar(20) NOT NULL,& & `activationkey` varchar(100) NOT NULL,& & PRIMARY KEY&(`id`),& & UNIQUE KEY `username` (`username`),& & UNIQUE KEY `email` (`email`),& & UNIQUE KEY `activationkey` (`activationkey`)& & ) ENGINE=MyISAM&DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;& & 3. 创建验证码 用户注册信息存入数据表& & 我们使用状态‘verify' 来表示尚未激活的用户。& & 复制代码代码如下:& & $activationKey =&mt_rand() . mt_rand() . mt_rand() . mt_rand() . mt_rand();& & $username = mysql_real_escape_string($_POST[username]);& & $password = mysql_real_escape_string($_POST[password]);& & $email = mysql_real_escape_string($_POST[email]);& & $sql="INSERT INTO users (username, password, email, activationkey, status) VALUES ('$username', '$password', '$email', '$activationKey', 'verify')";& & 4. 发送验证码& & 复制代码代码如下:& & echo "An email has been sent to $_POST[email] with an activation key. Please check your mail to complete registration.";& & ##Send activation Email& & $to&&&&&= $_POST[email];& & $subject = "
Registration";& & $message = "Welcome to our website!\r\rYou, or someone using your email address, has completed registration . You can complete registration by clicking the following link:\r/verify.php?$activationKey\r\rIf this is an error, ignore this email and you will be removed from our mailing list.\r\rRegards,\
Team";& & $headers = 'From: noreply@ ' . "\r\n" .& & 'Reply-To: noreply@ ' . "\r\n" .& & 'X-Mailer: PHP/' . phpversion();& & mail($to, $subject, $message, $headers);& & 5. 验证激活代码 verify.php& & 如果验证码相同,则激活用户。& & 复制代码代码如下:& & $queryString = $_SERVER['QUERY_STRING'];& & $query = "SELECT * FROM users";& & $result = mysql_query($query) or die(mysql_error());& & while($row = mysql_fetch_array($result)){& & if ($queryString == $row["activationkey"]){& & echo "Congratulations!" . $row["username"] . " is now the proud new owner of
account.";& & $sql="UPDATE users SET activationkey = '', status='activated' WHERE (id = $row[id])";& & if (!mysql_query($sql)) {& & die('Error: ' . mysql_error());& & }& & // 到这里,用户已经完全激活了账号,你可以将页面跳转到登陆后的界面了& & }& & } // end of while& & 您可能感兴趣的文章:注册页面之前先验证用户名是否存在的php代码PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)php自动注册登录验证机制实现代码PHP学习笔记 用户注册模块用户类以及验证码类php 注册时输入信息验证器的实现详解& & QQ空间
百度搜藏更多& & Tags:Php Email 激活& & 复制链接收藏本文打印本文关闭本文返回首页& & 上一篇:PHP和.net中des加解密的实现方法& & 下一篇:php使用GeoIP库实例& & 相关文章PHPMYADMIN 简明安装教程 推荐php中的比较运算符详解php导出word格式数据的代码实例PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)PHP判断指定时间段的2个方法Windows下部署Apache+PHP+MySQL运行环境实战php获取目录所有文件并将结果保存到数组(实例)百度ping方法使用示例 自动ping百度php去除字符串换行符示例分享php共享内存段示例分享& & 文章评论& & 最 近 更 新& & PHP网页游戏学习之Xnova(ogame)源码解读(ThinkPHP令牌验证实例用Simple Excel导出xls实现方法深入phpMyAdmin的安装与配置的详细步骤Bo-Blog专用的给Windows服务器的IIS RewrPHP 提取图片img标记中的任意属性的简单实php下实现伪 url 的超简单方法[转]PHP字符串的连接的简单实例一个模仿oso的php论坛程序源码(之二)CI框架中集成CKEditor编辑器的教程& & 热 点 排 行& & php 变量定义方法简单PHP上传图片、删除图片实现代一个简单的PHP&MYSQL留言板源PHPExcel读取Excel文件的实现代码网页游戏开发入门教程二(游戏模php 购物车的例子[php] 我的微型论坛的简单教程[已PHP生成HTML静态页面实例代码php mysql数据库操作类php 网页游戏开发入门教程一(we
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.003 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益程序员有哪些借口可以让自己写出低质量的代码?
写出低质量的代码的特征包括但不限于:心安理得地写出低质量的代码最终写出了低质量代码却不在之后改善它自以为写出了质量很高但实际质量很低的代码低质量的特征包括但不限于:文件关系混乱注释过期、不明确或者没有文档过期、不明确或者没有架构乱设计过度设计不检查用户输入的错误情况不检查API或者函数返回的errorcode或者exception没有单元测试等自动化测试过程编译起来很难到处复制代码,公用的部分不整理成内部库
按投票排序
173 个回答
我很久很久以前曾经经历的一个公司特别傻比,人力资源和svn管理员不懂程序。作为服务端的主程序,一直以来都是代码精简,效率最优,没有冗余为毕生追求。突然我无意中发现了一个秘密,我的绩效居然不如几个公司刚招进来的新手。我每天刻苦努力,优化代码,让公司的服务端7*24稳稳跑在服务器上,还一心研究各种热切换,换来绩效考核好久没有优秀了。这究竟是为什么呢,后来好心人告诉我,人力资源说了,他们看了svn的日志记录,其他人工作很努力,每天提交很多代码,每天新编写很多很多代码文件,贡献了好多好多的劳动成果。而看看你这个号称技术排第一的家伙,根本就没干活嘛,3个月下来,你一共就写了这么十来个cpp和.h,每天改来改去就这么几个文件,还好多天差不多行数的位置回改,根本就一直在偷懒。我听完以后以后直接口吐鲜血,无语至极了。然后我就申请离职了,在那个公司剩下不多的日子了,我为了心安理得的拿最后2个月的工资,为了让老板知道其实我一直很努力,我在最后一个月更新了几千个文件,让服务端的内核稳定度下降了好几个档次,内存消耗上涨了好多个数量级,并且把容易读,容易后续扩展的部分,全部用c++最高级的模版进行扩展,同时删掉了我以前用汇编写的优化代码。嗯,我想以后这个公司估计会倒闭,我走了以后,再也没有人能维护这份代码了,估计3个月以后,我自己也搞不定了。然后我就离职了,离职之前老板大夸我厚道,最后一个月还给公司做了这么多的事情,别人走都是删代码,我居然还毫无保留的为公司做出贡献。然后我走了不到半年,公司就呵呵了。我想那是我此生唯一写垃圾代码写的心安理得的一次机会了。
每一个程序员在他的职业生涯中某一天都会突然获得开示,这种开示在通常某一个夜晚悄然降临,有时是以图灵本人托梦的形式出现。这一开示的主要内容如下:程序员是真正理解思维和逻辑真谛的人。非程序员是被蒙蔽的无知者。每一个程序员对于世界上其他程序员有着不可推卸的责任。每一个程序员都必须尽力维护程序员这一高贵种族的延续,并保证世界的命运控制在程序员手中,既不被无知者淹没,也不被机器智能取代。完成这一使命的唯一方式,是保证稳定地出产低质量,难以理解,修改和维护的代码。每一个负责任的程序员,他每一年的产出,必须为另外三个程序员制造一年的就业机会。唯此,程序员一族可生生不息,整个IT行业欣欣向荣。图灵大神在冥冥中微笑,他的纸带机将嗒嗒作响,直至永恒。
很显然这个SB的功能不会真的有人去用的。
“别想太多,先让代码work起来,大家都这么干的!”简直是神借口啊!------------------------------------------------------------------------------------------------------心安理得地写出低质量的代码亲,我是个傻逼来的,从来就没见过好代码或者根本不知道好代码长啥样子。我一直写烂代码,专注烂代码30年,挖坑挖到天荒地老。这不叫心安理得,而是天真无邪烂漫蠢!!!因为无知,所以不存在良心被谴责的问题。最终写出了低质量代码却不在之后改善它代码能work,我看不出有bug。喂喂,QA也测不出有bug啊。写单测浪费时间啦,我还有更多的代码要写。再说,这个东西也不好测试啊,别太认真啦。。。由于原因A,我那么烂,我根本就不知道我写的代码很烂啊啊啊啊!哦哦,还有还有,我今天已经加班到11点了啊,确实不想再clean up以前的mess了。哦哦哦!不对,那些烂代码是离职的大石君写的。太君,不是我的错啊,我只是带路的啊啊啊!综上所述:不知者不罪,我都不知道我的代码烂,那何来改善?或者,我加班加成狗,哪有时间改善?PS:有鉴于我实在太烂了,有可能越改越烂,化神奇为腐朽,而且还会引入更多的bug。不不不!QA会测出来的!我绝壁不能这么干!!!既然能work,就让它这样好了恩恩。
LZ真的觉得程序员写出低质量的代码是需要理由的吗?非也,大多数程序员只把写代码当作谋生的手段而已,上个班、领点钱。Because they do not care.写出高质量的代码,反而是需要理由的。
8月1日更新首先我要向大家检讨,这样恶意求赞的方法是不对的,所以如果大家觉得我说得故事没意思可以取消赞。 (⊙_⊙!) (啊喂!我说取消赞你就真取消赞啊, 酱紫还能愉快的答知乎上题目了吗?)---------------------------------------------------当我还是个实习僧的时候,我做了个项目,将在新加坡,台湾,马来西亚等地区分行上线。 一个小小实习僧就接了几百万美刀的项目啊!有多紧张多害怕你造吗???那种既喜欢又害怕的心情就跟便秘一样你造吗???满心欢喜颤抖着接过了User Requirement,洋洋洒洒的英文好鸡冻啊。然后我一个月不到完成了第一阶段的Coding,我蹦啊跳啊到老板面前,‘Samseng,请赐予我高级武功秘籍吧’ ‘纳尼?没、、没了?⊙﹏⊙b汗’满怀忐忑的上交了代码,(中间省略1万字打酱油的时间)莫名其妙就成功上线新加坡了。 台湾User Acceptance Testing 的时候,突然来问题了。 客户姓名还有地址栏很多繁体字显示不出来啊摔!台湾嗲妹(后来才知道是大妈,为毛大妈的声音都这么嗲啊摔!默默对着声音撸了无数管了让我以后如何面对啊)说,老湿,怎么这么不给力啊。我。。。。。。问题最后发现是,中文字录入的时候格式是ASCII,一个字符占2个字节,输出到目标系统的时候是UTF-8,一个字符占3个字节,但是设计的时候,没有考虑到(鄙视所谓Architect)全部规定长度20. 问题发现了,如何解决呢?台湾da嗲ma妹说,你介系统有bug啦,赶紧帮人家解决啦。我老板默默拿出用户签的设计书sign-off文档。台湾da嗲ma妹说,客户的名字都显示不出,客户都走了啦。我老板默默拿出用户签的用户需求sign-off文档。 台湾da嗲ma妹找到大老板,你们的人都不给伦家解决问题,真系讨厌啦大老板面无表情,烟雾弥漫中,若隐若现的声音传来,‘加钱’台湾da嗲ma妹只好找到我,老湿,你要给力啊老湿我。。。。 我想了个办法,超出20字符的我全部砍掉,强行把第19、20位字符赋空,于是顶多显示18/3 = 6个字。台湾da嗲ma妹说,不给力啊,老湿我。。。。那加钱吧。。。台湾da嗲ma妹以讯雷不及掩耳盗铃儿响叮当机立断章取义博云天鸡不可泄露之势说,’那就按你说的方法做吧,谢谢,再见!‘(喂喂,加点钱能死吗?话说你为什么不发嗲了啊。T_T)于是我瞒着老板给她写了这个fix。(台湾上线一片坎坷,差点最后上线失败的说)终于来到马来西亚了,这次换了个马来华人大叔。我说,大叔,你要做好准备,台湾出了很多问题的。大叔说,哦。我说,大叔,这些question description的邮件你拿去,他们都不肯加钱呢。大叔说,哦。我说,大叔,那马来西亚就和台湾一样,就这样放了?大叔说,哦。我说,大叔,你不考虑考虑加钱强化强化点么?大叔说,哦。我。。。。。。。。。然后,大叔转身找到马来技术部门自己开发了个类似的系统。。。。。。。。。。。。。。。我终于明白那个等咱有了钱,豆浆买2杯,喝一杯倒一杯的哏了。这边的项目都是先出钱再开始的,也就是说马来弄了2套一样的系统。。用一套,摆着鄙视一套。。后来我问大叔,你们为什么不给我加钱,要自己做一套呢?大叔说,你们,不能太惯。我。。。。。。。。---------------------------------------------------谢不邀这个问题我必须回答一下,我从上家公司离职前也写了不少低质量代码。原因倒不是我有多么不负责任,而是老板让我这样。事情是这样,走之前最后一个项目,本着好聚好散的态度,我以平常态度完成了代码,结果提交给老板审查的时候,老板说,你写这么复杂干嘛?给多少钱做多少事,并且你写这么复杂,以后谁来维护?把这些边路条件判断全删了,不用catch这些exception了,死就让他死了。到时候用户会加钱来增强功能的blabla于是,我走之前写了一段极简单毫无任何错误判断的代码。—————————————————如果赞过50我明天再分享几个奇葩案例给大家把,卖方市场强势的it领域就会诞生很多大家平时见不到的情况
产品经理是傻逼
「负责验收的领导都打好招呼了,到时候走个过场就行。反正项目经费到手之后这东西也不会有人真用,抓紧时间,两周之内完成。对了,首页做漂亮点。」
下面的内容原本并不是问题的答案,而是针对高票答案的一个评论,但是一不小心超过了字数限制,但不吐不快,就作为答案发出来了。这个答案很有意思,不管是答案本身还是下面的评论。评论的意见大致分为两派,赞成派基本可以断定都是开发人员,相反提出异议的也可以断定大都不是开发人员,并且也可以断定反对派也大多是行业相关人员。说到底,对这个答案的评价基本上围绕着各自的切身利益展开。答案本身很精彩,不过很可惜,答主的行为在现实中不太容易发生。这无关法律、道德等方面的问题。一个习惯于高质量代码的程序员,实际上不大可能写出质量非常低劣的代码,并且还能让其正确运行。即使刻意的去编写这样的代码,删去优化的部分,恐怕仍然比没有质量意识的新手写出来的质量要高的多。恐怕不少程序员都动过类似的念头,最后没有付诸行动原因一般不是道德上的,而是工作量太大,没有可操作性。而且这个问题论及道德也很是怪异,“我按照你们的标准做了,怎么就不道德了?”看起来很讽刺,这个答案的矛头自然指向的是公司的管理层。表面上看是这位程序员导致了公司的倒闭,但是究其本质,使公司倒闭的是其制度。这个公司的在制度上追求低劣的代码,虽然管理层不这样认为。就算这位程序员没有最后那两个月的行为,公司不倒闭也只能苟延残喘而已。这个答案反映了软件行业中非程序员群体(包括部分程序员)和程序员群体对待质量标准以及评价体系上的巨大鸿沟,在很多水平较高的软件公司也是存在的,从评论中那么多反对的声音就可以看的出来。有人据此评价程序员的整体素质以及人格特征,但是从这些赞同的评论中恰恰可以说明程序员群体在这两个方面做了多少努力。一方面,程序员在尝试着按照世俗体系的标准做事,另一方面却要纠结于世俗体系带给软件开发的恶果。相比较赞同的评价以外,评论反对意见都显得文字很长,而且言辞激烈。这折射出一个现象,软件公司中不从事开发工作的人员由于对软件开发的不了解,对软件的开发以及程序员做事的方法和态度充满了疑惑和畏惧,只能地味尝试从道德的角度来约束程序员的行为。而这种道德的表达实际上平时根本没有落点,只有程序员自己陈述一些事实以后才有机会。不过上一段陈述其实不太严谨,因为从答案中可以看出,HR和svn管理员以及这位公司的老板也在进行着道德标准的表达,具体内容就是:“你看,这个人平时提交这么点代码,工作一点都不努力,没有职业道德!”,程序员最后的行为虽然违背了自己的良心,但是却符合了这些人的道德标准。但是从社交的角度来讲,是写了很多烂代码让老板高高兴兴,然后和公司快快乐乐的分手好些呢,还是最后两个月什么都不干,留下优美但无人认可的代码然后黑着脸离开公司好呢?那些在评论中看不起程序员性格特征的却又对程序员有很多要求的同学们,正是你们让程序员们两头不是人,是不是可以试着收回你们的双重标准?请再仔细想一想,如果那位程序员自己不说,这世上有谁会认为他做了违背良心的事呢?绝大多数人恐怕都会像他的老板一样,大夸其厚道,负面的评价顶多是后来的程序员大骂其代码烂,而根本不会想到他是故意的!当然,这位程序员的行为并不值得提倡。——————————————————————————————————————————最后为避免被折叠,补充一个和问题本身相关的答案:因为写高质量的代码并不能确保升职和加薪,而且还有可能起到反效果!——————————————————————————————————————————update:有个别反对者强调自己也是开发人员,这并没有什么奇怪。以上文字一开始就持谨慎态度,并没有把这两个群体绝对化,事实上不懂编程但同情开发人员的人也大有人在。这件事说到底还是个利益问题,出现在利益上存在处于反面情况的程序员一点都不奇怪。这一个群体有如下几种可能:管理层、骨干或换工作可能比较小的程序员公司流程比较规范,没有切身体会本身没有能力写出高质量的代码,因此对这位程序员的遭遇没有共鸣本身没有能力写出高质量的代码,因此是这种制度下的既得利益者真的能够客观理性的看待问题再补充一点,正如那个答案中 同学的心声,程序员重逻辑性认死理,情感闭塞不愿交流。也就是说真的站在纯粹理性的角度考虑问题是不大受欢迎的。
给多少钱,出多少力
“这个功能大概几天能完成?”“五天吧。”“给你三天,代码跑起来再说。”
如果项目重头开始都是自己开发,或者自己主导开发,那代码洁癖是必然的。。只不过当你拿到一个屎一样的需求、要你在一个屎一样的架构上改动别人屎一样的代码然后实现屎一样的功能,甚至连屎一样的文档都不给我,不好意思,那我只能屎一样地实现了。。
当遇到这样的产品时:我码都懒得打了。想了半天,也许代码只能这样写了:
OneThousandLinesEveryDay
看到这个问题,我觉得我可以把自己不久前写的一篇文章发上来,《有整洁强迫症的慎当程序员》
不知道其他行业如何,但我觉得有整洁强迫症的慎当程序员,否则杂乱的代码会让你疯掉,相信我,这绝对不是危言耸听。
做一个程序员一年了,我参与的项目也不少了,写的代码也不少了,这一年走来,我最大的感触就是写代码就是在挖坑,给后人或者自己踩的坑。
为什么这么说呢?
一来是有些需求本身就很复杂,实现起来就是各种的逻辑跑,跑到最后也许就根本无人知道其中的具体逻辑了,而且由于互联网的人员变动频繁,做完这个项目后人员说不定就有走的了,最恐怖的是人员离开时文档都没有留下。遇到这种情况怎么办呢?接手的人只能苦逼的去扒代码找逻辑,没写过代码的人永远不会了解读其他人代码是什么感觉,若是写的规范还好一些,若是写的不规范,再加上不是出于一个人之手,那对接手的人来说绝对称得灾难了。
二来,有些需求被催得紧,我们这里去年这种情况非常常见,今年还好。 需求被催的紧会导致什么问题?代码质量完全没有保证。由于时间不够,看到需求想到实现方案就开始动手写了,根本没时间去考虑是不是最优的,后续的扩展性,这样写了会不会引起其他的问题。由于最初没有时间考虑全面,开发时有可能会遇到一些完全没有预料到问题,但仍旧是由于时间问题根本没法返工从新设计,然后就是随便找一个能够解决当前问题的hack方法解决了。这种紧张开发时间,文档与注释之类……文档不用去想,几乎不会有(文档不会有存在两点原因,一来是可能项目一个挨着一个根本没时间写。二是需求做完了,开发都有些不清代码中为何会加入某些逻辑了,没错,你没有看错,也许这个需求是我们两天前开发的,但就在这两天我们便记不清代码为何那样写了,因为那段代码可能是我们连续高负荷工作十四五个小时下写出来,那段时间我们的精神是恍惚,你若是问这样子了为何不去休息,我只能呵呵的说需求不允许。由于记不清当时自己为什么那样写,加上人很多时候都是有惰性的,没有人催促自然就不会去读让自己都觉得写的垃圾的代码了,再加上一般来说根本没有完全的清闲时光,自然也就不会去补文档了),注释的话有些编码习惯好的程序员可能会在关键地方写一下。需求被逼得紧还会造成代码review根本形同虚设。去年是我第一年参加工作,经理也弄了一套review的工具,可是有些需求被逼的紧,你会发现根本就没有时间走review的流程,恨不得代码完成就要进入测试,可是对于新人代码review却是很有必要的(这就是矛盾的地方),因为新人由于没有经验,提交的代码有问题的可能性要更加的高,而且review在一定程度上可以规法新人的编码风格。这种情况我想不只发生在我们公司一家。我可以很肯定的说,只要是需求被催得紧,这一类型公司的代码一定不会整洁,代码质量一定不会高到哪里去,进入这类型的公司就要有被代码虐的心理准备,而这对于有整洁强迫症的人来说无疑是极为痛苦的。最后提一点自己的观点。我觉得把项目逼得紧对公司(这里主指IT公司,而且是非做外包项目的公司)长远发展并没有任何好处,因为项目紧便注定质量得不到保证,时间长了会是一笔烂账,最终也许重构,而重构都找不到当前逻辑的完整文档,而且说真的重构一个大的系统真的是需要勇气的。
三来,有些时候设计或者产品从他们的角度提出一些很特殊的需求。强调一下,我这里没有任何敌视产品或者设计的意思,毕竟,那就是他们的工作。对于这些特殊的需求,有些时候我们要采用各种hack的方式实现,造成代码中加入一些外人看来不明所以的逻辑,而这种逻辑后面人踩到就是坑了,若是这种逻辑多了就是天坑了。也许,这种需求就需要靠产品与设计依据经验来权衡了。
四来,每个人的编码风格都不一样,也许你觉得你的代码写的很好,但在其他人看来却是一团乱,而一般的项目都不会是一个人去写,想一想那么多人的代码混杂在一起是什么样子,什么风格,后面的我也就不说了。五来,写出高效整洁的代码一来是程序员需要很高的素质、很好的习惯,二来真的需要经验,由于程序员缺口众多,新人不断的涌入近来(像我)。想一想网上之前的嘲讽段子“我们有一个非常好的idea,什么都准备好了,就缺一个程序员了”。指望着没有经验的新人能够写出多么高效的,逻辑性非常完美,没有任何冗余逻辑的代码我觉得不现实,代码风格不错就是比较好的了。其实,这个时候若是有一个好的code review机制和系统就非常好了,可是上面也提到了,由于种种原因,我不知道多少公司的code review形同虚设。六来,项目刚开始架构是否考虑周全?实际来看,项目架构刚开始就考虑全面挺难的(真的需要极其富有经验的架构师),再加上互联网公司整体的浮躁,恨不得有想法就开始做,且新的框架技术不断出来,有些人管理为了追新不调研清楚就开始用(这里不是说新技术不能用,意思有两点,一点是新技术需要调研,二来是我觉得大部分技术都是有弊有利,用的时候根据实际项目权衡才好),种种的一切极容易导致项目最初架构考虑不周全。项目构架不周全也是代码库混乱的原因之一,且问题一旦出现就不是几个程序员能够扭转的。
以上算是介绍了代码会变得杂乱的六个原因,想说到这里,对代码多多少少有点认识的人都应该了解我最上面的话绝非危言耸听了。所以,在这里我对所有后辈们说,若是你有整洁强迫症,或者说你属于急性子,那莫要选择程序员这一条路。否则会被代码虐千百次,虐的你心力憔悴,牙口胃口都不好了,心情也不好了,觉得整个世界都是灰暗的,人嘛,何必那么自找没趣,对不起自己呢?
最后,我提点和本文无关的,工作大家谁都不容易,部门不一样工作中考虑的也就不一样,所以相互理解非常重要,若是真的遇到强横无理、不可以商量的,我会选择离开,省的整天与这种人生气添堵。工作毕竟是工作,令工作太过影响心情真的划不来。
你知道我碰到过客户主动要求降低代码质量并加 BUG 的情况吗?原来他是要把我们的项目送去第三方机构评测,但是又害怕对方收钱不办事,不加几个 BUG 怎么知道对方测没测?不降低点代码质量搞得混乱点,怎么防止对方拿了代码又出去卖或者开发同类产品?我被客户“高瞻远瞩”的思考深深的“折服”了,于是我生平第一次开始琢磨怎么才能把一切搞乱?怎么才可以把 BUG 加的有深有浅……你遇到过这样奇葩的事么?
感觉好的程序员不能同时做到心安理得和写出低质量代码.
告诉我你的代码不重要,不会合入。他妈的!不过还有一种是真正的名正言顺写烂代码,那就是原型代码。我不知道这东西在别的地方怎么叫,大致就是:要实现一个功能,但这个功能到底是啥样子谁也没底,所以就先弄个草稿出来,先把这功能跑起来看看再说。这种代码的应用场景大概有这些:1,测试验证:比如开发了一种算法,但不知道这种算法是否可行,于是用原先的笨算法先写一个原型出来,然后对比两种算法跑出来的结果,以此来验证前者的准确性。2,客户需求分析:客户提出了一种功能,为了管控开发过程于是先在短时间内做一个粗糙的原型show给客户看,以此确认客户需求,有时候客户太急切要了,你告诉他这是个烂软件他也非得要。3,测试代码:在做单元测试的时候通常需要打桩,但有的数据很难模拟,于是就用复制粘贴东拼西凑先改出一个上下文出来,就算有内存泄漏也不管了,反正我就要那一点功能。4,可行性分析:大概就是这个功能或架构很复杂,设计者也不知道这样可不可行,于是就先马马虎虎做一个出来,只做功能测试,用来验证类似这个齿轮在实际运转过程中咬合的怎么样之类的问题。通常在写并行异步类代码的时候经常搞这些,经常是测试代码比被验证代码多几倍。
根本不懂自己写出的这个产品有个屁用。
呃……这么晚了居然……好吧先谢喵(邀?)要说让大家心安理得的写出来低质量代码,至少我这里常见的理由是:1、先让程序跑起来。只要能让领导们看到现象就行了。1.1、这个模块的现象出来了?来我们放下这个工作先来做下一个模块(以及以后再也不会想起来现在的这个模块了)。1.2、现象出来了?ok,那么就当程序调通了。交工!2、你让我做航天飞机却只给了我做遥控飞机的钱?呵呵,那你看到最后交工的是一个塑料航天飞机也就别怪我工作不尽心尽责了。3、什么叫低质量的代码?什么叫单元测试?什么叫联调?什么叫黑盒测试?还有什么压力测试性能测试我都统统不知道啊。我本科是学机械啊怎么可能知道这些东西啊。你看看编译器又报了50个error和100个warning,我先去看看到底哪一行少写了点啥……
我说一个:一些科研工作者工程代码力弱,做理论要给出验证,写一些低质量的代码,与结论符合就了事。理论计算机工作者尚好,有些数理方向的人的代码根本没法看。很多时候论文中的结果无法再现然后找作者要代码,然后~!#$%^&*}

我要回帖

更多关于 asp验证码代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信