我创建了一个简单的iPhone应用程序,它有两个.xib文件.在应用程序中的app委托确实完成启动我通过调用显示第一个.xib文件:
[window addSubview:myView];
Run Code Online (Sandbox Code Playgroud)
我在IBAction上为UIButton做同样的事情,将视图更改为myView2.
我发现,当我运行应用程序时,对于两个视图都有一个大约10像素的白条.我还注意到按钮偏移了10个像素(大约).所以我得到的结论是,视图从屏幕上的10个像素开始显示并且结束时间短.
知道为什么会这样,我如何解决它,或者我如何进一步调试正在发生的事情?我检查了我的.xib文件,他们正在消耗设备的整个高度(即没有白条),所以这看起来是XCode内部的一个问题.
编辑:我已经把问题缩小了一点.我正在使用两种方法来加载子视图.当我加载第一个视图里面的applicationDidFinishLaunching一切都很好.但是,如果我更换了两条消息window与[self originalView]方法,那么一切都有点失控.
- (void)applicationDidFinishLaunching:(UIApplication *)application {
//[self originalView]; <- I want to use this instead of the following two lines
// Override point for customization after app launch
[window addSubview:viewController.view];
[window makeKeyAndVisible];
}
-(void)endView{
endV = [[EndViewController alloc] initWithNibName:@"EndView" bundle:nil];
[window removeFromSuperview];
[window addSubview:endV.view];
}
-(void)originalView{
viewController = [[MyAppViewController alloc] init];
[window removeFromSuperview];
[window addSubview:viewController.view];
}
Run Code Online (Sandbox Code Playgroud)
从我所看到的,我总是调用相同的代码行,无论它是在内部applicationDidFinishLaunching还是在内部,[self originalView]但它似乎window变成了一个不同的对象.
我一直非常依赖于SSMS的Windows快捷方式,其中包括命令行开关,允许我快速打开特定服务器上的特定数据库.例如
Ssms.exe -S 123.123.123.123 -U sa -P goodpassword -d DbName
Run Code Online (Sandbox Code Playgroud)
要么
Ssms.exe -S . -E -d DbName
Run Code Online (Sandbox Code Playgroud)
这突然停止了工作.我从SSMS得到这个错误:
Failed to create new SQL Server script.
Object reference not set to an instance of an object. (AppIDPackage)
Program Location: at Microsoft.SqlServer.Management.UI.VSIntegration.
AppIDPackage.AppIDPackage.OpenConnectionDialogWithGlobalConnectionInfo()
Run Code Online (Sandbox Code Playgroud)
我仍然可以在没有命令行开关的情况下启动SSMS,然后手动建立连接.例如,某些命令行开关仍然有效
ssms.exe -nosplash
Run Code Online (Sandbox Code Playgroud)
工作良好.
我使用-S,-E和-d命令行开关的任意组合得到相同的错误.如果我指向有效的服务器或数据库或者没有,或者如果我的登录凭据是好还是不好不要紧.我可以指向旧版本的SSMS,它工作正常,但不是2008版本.
MSDN论坛上的这篇文章是我在网上找到的,但是MS在这个帖子上并没有很大帮助.
我有什么想法可以开始解决这个问题吗?我在不同的服务器上使用很多不同的数据库,我真的依赖这些快捷方式.
我一直在试验FFT算法.我使用NAudio以及来自互联网的FFT算法的工作代码.根据我对性能的观察,得到的音高是不准确的.
会发生的事情是我有一个MIDI(由GuitarPro生成)转换为WAV文件(44.1khz,16位,单声道),其中包含从E2(最低吉他音符)到大约E6的音高级数.低音(E2-B3附近)的结果通常是非常错误的.但达到C4有点正确,因为你已经可以看到正确的进展(下一个音符是C#4,然后是D4等)但是,问题在于检测到的音高是低于实际音高的半音(例如,C4应该是音符,但是显示D#4).
您认为可能有什么不对?如有必要,我可以发布代码.非常感谢!我还是开始掌握DSP的领域.
编辑:这是我正在做的粗略划痕
byte[] buffer = new byte[8192];
int bytesRead;
do
{
bytesRead = stream16.Read(buffer, 0, buffer.Length);
} while (bytesRead != 0);
Run Code Online (Sandbox Code Playgroud)
然后:(waveBuffer只是一个将byte []转换为float []的类,因为该函数只接受float [])
public int Read(byte[] buffer, int offset, int bytesRead)
{
int frames = bytesRead / sizeof(float);
float pitch = DetectPitch(waveBuffer.FloatBuffer, frames);
}
Run Code Online (Sandbox Code Playgroud)
最后:( Smbpitchfft是具有FFT算法的类...我相信它没有错,所以我不在这里发布)
private float DetectPitch(float[] buffer, int inFrames)
{
Func<int, int, float> window = HammingWindow;
if (prevBuffer == null)
{
prevBuffer = new float[inFrames]; //only contains zeroes
}
// double frames since …Run Code Online (Sandbox Code Playgroud) 我读到了如何在ASP.NET MVC Web应用程序中保护我的网站免受CSRF攻击.他们提到了两种方法,可以通过以下方式:
使用<@Html.AntiForgeryToken()>和使用令牌验证[ValidateAntiforgeryToken]
使用HTTP引用者验证,例如:
public class IsPostedFromThisSiteAttribute : AuthorizeAttribute
{
public override void OnAuthorize(AuthorizationContext filterContext)
{
if (filterContext.HttpContext != null)
{
if (filterContext.HttpContext.Request.UrlReferrer == null)
throw new System.Web.HttpException("Invalid submission");
if (filterContext.HttpContext.Request.UrlReferrer.Host !=
"mysite.com")
throw new System.Web.HttpException
("This form wasn't submitted from this site!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
和
[IsPostedFromThisSite]
public ActionResult Register(…)
Run Code Online (Sandbox Code Playgroud)所以我很困惑我是否应该使用它们来保护我的网站免受CSRF攻击,或者我是否可以选择其中一种方法?
我工作的一个项目中,管理员可以创建一个名片模板,使他们能够像插入占位符变量{first_name},{last_name},{website}等于是一个卡将通过使用户填写自己的名字,姓氏等,所以基本上占位符创建将被用户提供的实际内容所取代.为此,我将从管理员创建的模板创建一个SVG图像,并将这些占位符变量替换为服务器端的用户数据.
问题在于,如果用户提供的内容太长,则可能会延伸到画布边界之外,因此在打印实际卡时可能会被切断.
有没有办法检测到,在替换占位符后,canvas元素会延伸到画布边界之外?如果是这样,有没有办法找到该元素并使其收缩直到它适合边界?基本上,我想类似这样,但在服务器端.
这是我用来生成SVG图像的一些示例代码:
$message_string = array('{first_name}','{last_name}');
$replace_string = array('Fist Name of User','Last Name Of User');
$front_svg_url = $svg_url.$res_code[0]['front_side_svg_image'];
$front_raw_svg = file_get_contents($front_svg_url);
$front_side_svg = str_ireplace($message_string, $replace_string, $front_raw_svg);
$file_name = uniqid($prefix).".svg";
$file_handle = fopen("$folder_name/".$file_name, 'w');
fwrite($file_handle, $front_side_svg);
fclose($file_handle);
Run Code Online (Sandbox Code Playgroud)
在服务器端我只是替换变量,所以我不知道如何在服务器上实现这一点.我愿意接受任何可以实现我预期产出的想法.
为此,我花了一天时间在Googeling上下; 到目前为止没有运气.
如何获取用户操作系统和版本.我的Mac OS X 10.6.4,办公室的备用PC将是Windows XP SP3.你看到我得到了什么.
我已经看到了一百万个方法来单独获取用户平台,而不是版本.
JS是理想的,但服务器端(PHP)解决方案也可以.
我正在使用Microsoft Word 2007.我想将Word文档转换为XSL-FO.网上有一些提示,但仅适用于RenderX.Apache FOP有这样的工具吗?
我正在使用NetBeans for Mac,我正在Linux中运行CakePHP(虽然我不认为框架与它有任何关系).这不是一个大问题,但令人沮丧.
我想知道为什么我不能简单地这样做:
if($this->Session->read('User.value1') || $this->Session->read('User.value2')){
...
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误信息是:
Error: syntax error, unexpected '$this' (T_VARIABLE)
Run Code Online (Sandbox Code Playgroud)
为什么会出现语法错误?我看不出来.
我可以毫无问题地做到这一点:
if($this->Session->read('value1')){
...
}
Run Code Online (Sandbox Code Playgroud)
我也可以毫无问题地做到这一点(没有空白||):
if($this->Session->read('User.value1')||$this->Session->read('User.value2')){
...
}
Run Code Online (Sandbox Code Playgroud)
但如果我在||操作员周围放置空格,它就会停止工作.或者更确切地说 - 这是最令人困惑的部分 - 当我在操作员周围放置空格时,它有时会停止工作||,有时则不会.
我认为这可能是Netbeans 7.4中的一个错误,但是当我忽略NetBeans的警告并试图运行代码时,PHP给了我同样的错误.
这里发生了什么?