我刚刚开始使用NUnit来为我的项目提供一些测试覆盖.
在我的主library.dll中,我需要从库,library.xml的外部文件中加载配置数据.
这在我使用库时工作正常,因为我使用以下内容来获取查找配置文件的目录:
string settingspath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
Run Code Online (Sandbox Code Playgroud)
我注意到的问题是,当我使用NUnit进行单元测试时,它会将我的程序集复制到Shadow Copy,但不会带任何其他文件,所以当然我的init由于缺少配置文件而失败.
我应该做些不同的事情来从我的库中找到配置文件吗?(这是一个服务器应用程序,我不想使用标准的应用程序设置,或用户的本地设置等)
我有一个简单的DB管理器类(一个比它的能力更值得的名字):
class DbManager
{
private MySqlConnectionStringBuilder _connectionString;
public DbManager()
{
_connectionString = new MySqlConnectionStringBuilder();
_connectionString.UserID = Properties.Database.Default.Username;
_connectionString.Password = Properties.Database.Default.Password;
_connectionString.Server = Properties.Database.Default.Server;
_connectionString.Database = Properties.Database.Default.Schema;
_connectionString.MaximumPoolSize = 5;
}
public MySqlConnection GetConnection()
{
MySqlConnection con = new MySqlConnection(_connectionString.GetConnectionString(true));
con.Open();
return con;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在其他地方有另一个类来表示其中一个表中的记录,我填充它如下:
class Contact
{
private void Populate(object contactID)
{
using (OleDbConnection con = DbManager.GetConnection())
{
string q = "SELECT FirstName, LastName FROM Contacts WHERE ContactID = ?";
using (OleDbCommand cmd = new OleDbCommand(q, con))
{
cmd.Parameters.AddWithValue("?", …
Run Code Online (Sandbox Code Playgroud) 不确定这只是一个坏习惯,还是一种有效的做事方式,但对于跨越一堆表的大型复杂报表查询,我经常通过汇总一个Case
语句得到我的汇总统计数据.
例如:
SELECT Contact.Name,
SUM(CASE WHEN Order.Type = 'Special' THEN 1 ELSE 0 END) AS SpecialOrders,
SUM(CASE WHEN Order.Type = 'Magic' THEN 1 ELSE 0 END) AS MagicOrders,
FROM Contact
LEFT JOIN Order ON (Contact.ContactID = Order.ContactID)
Run Code Online (Sandbox Code Playgroud)
我将如何在LINQ to SQL中执行此操作?(在vb.net中,但我猜任何.Net示例都可以)
Dim Orders = _
From Order In DB.Orders
Select New With {.Name = Contact.Name,
.Special = If(Order.Type = "Special", 1, 0),
.Magical = If(Order.Type = "Magical ", 1, 0)}
Run Code Online (Sandbox Code Playgroud)
我需要总结.Special
和.Magical
价值观.
(实际上,查询跨越了几个由事件预订信息组成的表,并且是否对记录进行求和的决定取决于其中几个字段中的字段)
我有一个 CakePHP 应用程序,我希望我的用户能够使用 OAuth 登录。
我似乎让 OAuth 对话正常工作,因为我正在从它的末尾获取用户信息,并且可以将令牌保存到我的users
表中。
我的问题可能很愚蠢,但我正在努力解决何时需要使用我获得的令牌。我是否应该将用户的 ID 存储在 cookie 中,并且每当他们“回到”我的网站时,从数据库中获取他们的令牌并让我们重新检查他们的详细信息?
我没有为使用 OAuth 的用户获得任何类型的密码,所以我应该为这些人绕过 Auth,还是使用其中一个令牌作为 CakePHP 的密码?
以下是我的 UsersController 的 login 和 oauth2callback 部分:
<?php
class UsersController extends AppController {
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash(__('Invalid username or password'));
}
} else {
$client = $this->getGoogleClient();
$authUrl = $client->createAuthUrl();
$this->set(array('GoogleAuthUrl' => $authUrl));
}
}
public function oauth2callback() {
$client = $this->getGoogleClient();
if (isset($this->request->query['code'])) {
$client->authenticate($this->request->query['code']);
$this->Session->write('token', $client->getAccessToken()); …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个需要使用OAuth进行身份验证的Android应用(使用Google Wave数据API)
我在我的指定了一个自定义方案,AndroidManifest.xml
以便任何以"braindump://"开头的网址的视图应该转到我的应用:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.enigmagen.braindump"
android:versionName="0.1"
android:versionCode="1">
<uses-sdk android:minSdkVersion="7"></uses-sdk>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="true">
<activity
android:name=".BrainDump"
android:label="@string/app_name"
android:launchMode="singleInstance">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="braindump" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
所有这一切都发生在重定向之后,浏览器地址显示正确的URL,但页面内容是
您无权打开此页面.题库:// rest_of_address_here
是否需要设置特定权限才能允许此类行为?
我有一个简单的查询,可以从我的小日志处理应用程序中执行。该方法的目的是简单地从日志表中获取最高的日期值:
private DateTime GetLastEntryDate(string serverName, string siteName)
{
DateTime dt = DateTime.MinValue;
using (var con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["LogParserDB"].ConnectionString))
{
con.Open();
using (var cmd = new SqlCommand("SELECT MAX(date) FROM iislogs WHERE host=@Host AND site=@Site", con))
{
cmd.CommandTimeout = 120;
cmd.Parameters.AddWithValue("Host", serverName);
cmd.Parameters.AddWithValue("Site", siteName);
var result = cmd.ExecuteScalar();
if (result != DBNull.Value)
{
dt = (DateTime)result;
}
}
}
return dt;
}
Run Code Online (Sandbox Code Playgroud)
表上有一些索引,但是我不确定这是否相关,因为我遇到的问题是,当我运行这段代码时,它在运行2分钟后抛出超时ExecuteScalar
。
如果我使用相同的参数将该查询复制并粘贴到SSMS中,则它将在00:00:04甚至00:00:00(如果我刚刚更新了统计信息)时完成。
SELECT MAX(date) FROM iislogs WHERE host='servername' AND site='W3SVC1'
Run Code Online (Sandbox Code Playgroud)
我已经检查了阻塞,但看不到类似的东西-该数据库仅由一个应用程序访问,并且它不是多线程的或类似的东西。
更新:有趣的是,当我运行Profiler捕获的确切查询时,在SSMS中也需要很长时间:
exec sp_executesql N'SELECT MAX(date) …
Run Code Online (Sandbox Code Playgroud) 这两种方法都对我有用,但我不确定从"良好实践"的角度来看这个建议是什么.
我有一个在我的库中执行各种控制功能的类,因此需要初始化各种对象和属性.
是否可以将所有这些逻辑放在类的构造函数中,或者我应该将它放在"Initialise"方法中.
public MyClass()
{
mSubObjectA = new mSubObjectA();
mSubObjectA.DoStuff();
mSubObjectA.DoMoreStuff();
mSubObjectB = new mSubObjectB();
mSubObjectC = new mSubObjectC();
if (something)
{
DoStuff();
}
else
{
MagicHappens();
}
}
Run Code Online (Sandbox Code Playgroud) 我想监视一个文件夹并移动符合特定条件的文件,所以我正在尝试使用FileSystemWatcher.
我有一个将与每个新文件调用的函数:
function ProcessFile()
{
param ([string]$filename)
Write-Host "Processing file '$filename' to $destination"
}
Run Code Online (Sandbox Code Playgroud)
然后我建立了一个FSW:
Write-Host "Watching $source for new files..."
$fsw = New-Object IO.FileSystemWatcher $source, $filter -Property @{IncludeSubdirectories = $false; NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}
Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action
{
ProcessFile $Event.SourceEventArgs.FullPath
}
Run Code Online (Sandbox Code Playgroud)
当我从ISE运行它时工作正常,我下载到监视文件夹的任何文件都被正确跟踪,但如果我启动PowerShell窗口并使用.\ FileWatch.ps1运行脚本,则没有任何反应.
我看到了"正在观看......"的消息,但从未看到过"处理..."消息
这是在ISE中工作但不在shell中的完整脚本...
$source = 'D:\Dev\PowerShell\FileWatch\Test\Source'
$filter = '*.*'
$destination = 'D:\Dev\PowerShell\FileWatch\Test\Found\'
function ProcessFile()
{
param ([string]$filename)
Write-Host "Processing file '$filename' to $destination"
}
Write-Host "Watching $source for new files..."
$fsw = New-Object IO.FileSystemWatcher …
Run Code Online (Sandbox Code Playgroud) 问候。
我有一个简单的应用程序,该应用程序生成一些性能记录数据,并且我需要输出可被Excel访问。
我创建一个带有字段等的XML文档,并且可以在Excel中打开它。
问题是,如何强制Excel将日期视为日期?我尝试将日期值保存为各种格式,但是Excel始终将其视为文本。如果我单击该单元格并按Enter,它会愉快地显示为日期。当我执行“文本到列”操作时也是如此。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entries>
<entry>
<StartDate>14/07/2009 01:02:35</StartDate>
<Total>1084</Total>
<Connecting>788</Connecting>
<Disconnecting>0</Disconnecting>
<Queries>98</Queries>
</entry>
<entry>
<StartDate>14/07/2009 01:10:00</StartDate>
<Total>1054</Total>
<Connecting>228</Connecting>
<Disconnecting>1</Disconnecting>
<Queries>104</Queries>
</entry>
</entries>
Run Code Online (Sandbox Code Playgroud) c# ×3
.net ×1
android ×1
benchmarking ×1
cakephp ×1
cakephp-2.3 ×1
codeigniter ×1
excel ×1
import ×1
linq-to-sql ×1
mysql ×1
nunit ×1
oauth ×1
oauth-2.0 ×1
php ×1
powershell ×1
sql-server ×1
vb.net ×1
xml ×1
yii ×1