我正在开发的网站将允许用户在3个级别登录.
1级 - 未登录
2级 - 他们注册他们的电子邮件地址并收到确认电子邮件,并以此方式登录.
级别2 - 他们使用用户名/密码登录,然后将其发送到Web服务.如果Web服务返回"成功登录"结果,则会登录到网站.
根据登录级别,某些网页将可用,而其他网页将受到限制.
我的问题是,我应该如何发展这个?
我在ASP.NET MVC中做这个项目.
我应该只编写自己的AccountController吗?我应该使用.NET Forms身份验证吗?使用.NET代码手动执行表单身份验证有什么好处?
如果我自己这样做,在成功登录后,我只是将登录用户存储在会话变量中.这样做有什么害处,或者我正在做什么,是否可以?
我使用ASP.NET MVC创建了一个内容管理的网站.所有内容都存储在SQL Server数据库的"Content"表中,文本本身存储在数据类型"XML"的列中.
我想在网站上添加搜索功能,搜索所有XML内容并返回结果列表,每个结果都链接到内容项.
关于哪种技术最合适的想法?
我应该使用SQL Server全文索引,还是像DotLucene这样的其他东西?
编写BDD测试的策略是什么,可以测试依赖于系统中某些数据的行为?
例如,假设我正在使用以下方案:
Feature: Search for friend
In order to find a friend
As a user
I want to search my list of friends
And filter by 'first name'
Run Code Online (Sandbox Code Playgroud)
除非/直到一些"虚拟"朋友进入系统,否则这个测试怎么能成功?
更重要的是,测试会使用什么"虚拟"标准?
我应该硬编码朋友的名字,假设它已经存在于数据库中?
但是,如果我将代码移动到具有新数据库的新环境,该怎么办?
或者,我应该编写代码来在执行每个测试之前手动将虚拟数据插入系统吗?
但这将是在测试框架内修改应用程序的内部状态,这似乎是一种糟糕的方法,因为我们应该将程序视为黑盒子,并且只通过接口来处理它.
或者,我是否会创建其他方案/测试,其中使用程序的界面创建数据?
例如,"功能:将新朋友添加到我的列表中".然后我可以运行该测试,添加一个名为'Lucy'的用户,然后运行'搜索朋友'测试以搜索现在存在于数据库中的'Lucy'.
但是,然后我将在我的场景之间引入依赖关系,这与测试应该可以独立运行的常见建议相矛盾.
哪一个最好的策略?或者,还有更好的方法?
我正在向客户端传递一个最多1000行的表,其中包括名称,ID,纬度和经度值.
然后,该列表将由Javascript处理并转换为Google地图上的标记.
我最初计划用JSON做这个,因为我希望代码可读且易于处理,并且因为我们可能会随着时间的推移添加更多结构.
但是,我的同事建议将其作为Javascript数组传递,因为它会大大减小大小.
这让我想到,也许JSON有点多余.毕竟,对于定义的每一行,每个字段的名称也是重复输出的.然而,对于阵列,单元的位置用于指示场.
但是,通过使用数组真的会有性能提升吗?
该网站使用GZIP压缩.此压缩是否足以处理JSON字符串中的任何冗余?
[编辑]
我意识到JSON只是一种表示法.
但我真正的问题是 - 表现最好的表现方式是什么?
如果我使用完全命名的属性,那么我可以使用这样的代码:
var x = resultset.rows[0].name;
Run Code Online (Sandbox Code Playgroud)
然而,如果我不这样做,它将看起来不那么可读,如下所示:
var x = resultset.rows[0][2];
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 代码可读性的牺牲是否值得为性能提升?或不?
附加说明:
根据维基百科,Deflate压缩算法(由gzip使用)执行'Duplicate string elimination'.http://en.wikipedia.org/wiki/DEFLATE#Duplicate_string_elimination
如果这是正确的,我没有理由担心JSON中的任何冗余,因为它已经被处理掉了.
是否可以确定给定标记的像素坐标,同时考虑到地图的当前缩放级别和可见区域?
在C#类中,将私有函数的单元测试放在哪里?
就个人而言,这些方法都不合适,我更喜欢将单元测试放在一个单独的项目中.
有什么想法吗?
(我知道关于是否应该对私人方法进行测试存在相当多的争论.我想听听论点的两个方面.)
有没有办法通过Javascript查找银行名称和分支?
也许外部服务或完整的数据集可以在内部托管并通过JSON访问?
假设我在HTML中有以下句子:
<p>Please enter your licence number</p>
屏幕阅读器错误地将"许可"一词称为"liss-ens"(语音拼写).它应该发音为"lice-ens"(拼音拼写).
我想通过向屏幕阅读器提供语音拼写来解决这个问题,同时让文本在视觉上显得相同.
我可以使用<span>s,aria-属性和样式如下:
<p>Please enter your <span aria-hidden="true">licence</span><span style="position: absolute; left: -10000em;">license</span> number</p>
这很好用,除了屏幕阅读器(我在MacOS上使用VoiceOver测试)在第一个跨度时暂停,迫使我按[VO] + [向右箭头]前进到下一个单词:
"请输入你的"...... [VO] + [右箭头] ..."lice-ens"... [VO] + [右箭头] ......"数字"
我希望屏幕阅读器能够顺利地读出句子而不会暂停.
这可能吗?或者我不应该试图控制这个?
假设我想创建一个字典,例如,汽车品牌到一个或多个模型。
似乎我可以在 ES6 中以两种不同的方式做到这一点。
1. 创建一个对象映射:
代码:
const makesAndModels = {
"mazda": [
{ name: "Miata" },
{ name: "626" }
],
"toyota": [
{ name: "Camry" }
],
...
};
Run Code Online (Sandbox Code Playgroud)
2. 创建一个 ES6 Map 实例:
代码:
const makes = {
mazda: { name: "Mazda" },
toyota: { name: "Toyota" }
};
const makesAndModels = new Map([
[makes.mazda, [
{ name: "Miata" },
{ name: "626" }
]],
[makes.toyota, [
{ name: "Camry" }
]],
...
]);
Run Code Online (Sandbox Code Playgroud)
上述两种方法之间的主要区别和优缺点是什么?
我编写了一个相当简单的异步方法,用于通过 HTTP 检索结果:
\n\nimport axios from "axios";\n\nconst BASE_URI = "http://api.tvmaze.com";\n\nexport const getSearchShows = async (search: string) => {\n const uri = `${BASE_URI}/search/shows?q=${encodeURIComponent(search)}`;\n const response = await axios.get(uri);\n\n return response.data;\n};\nRun Code Online (Sandbox Code Playgroud)\n\n我想对其进行单元测试。因此,我编写了以下 Jest 测试,该测试旨在模拟 axios 并返回假结果,然后我可以对其进行断言:
\n\nimport axios from "axios";\n\nimport fakeSearchShowsResponse from "../data/search-shows--q=test.json";\n\nimport { getSearchShows } from "./TvShows.http";\n\njest.mock("axios");\n\ndescribe("TvShows.http", () => {\n describe("getSearchShows", () => {\n it("retrieves shows over http and correctly deserializes them", async () => {\n\n const mockAxiosGet = jest.spyOn(axios, "get");\n\n mockAxiosGet.mockImplementation(async () => fakeSearchShowsResponse);\n\n const shows = …Run Code Online (Sandbox Code Playgroud) javascript ×4
.net ×2
tdd ×2
unit-testing ×2
asp.net-mvc ×1
axios ×1
bank ×1
bdd ×1
c# ×1
coordinates ×1
css ×1
dataset ×1
ecmascript-6 ×1
forms ×1
google-maps ×1
html ×1
jestjs ×1
json ×1
login ×1
marker ×1
pixel ×1
reactjs ×1
search ×1
validation ×1
voiceover ×1