我正在编写自己的tar归档程序.一切都在我的应用程序内工作正常(甚至读取用其他工具生成的焦油)但是我无法让我的tar文件与第三方tar文件阅读器一起使用.所以我尝试在命令行上构建一个tar文件,用我的代码构建一个tar文件,并比较两者.
但似乎有一个问题:
我有一个名为Test.txt的文本文件,我想添加到我的tar中,所以我在终端中运行以下命令:
tar -c -f x.tar Test.txt
Run Code Online (Sandbox Code Playgroud)
这样做时:
tar -tf x.tar
Run Code Online (Sandbox Code Playgroud)
我得到以下列表:
./._Test.txt
Test.txt
Run Code Online (Sandbox Code Playgroud)
这是在Mac OS X Lion上的终端.
该./._Test.txt
文件来自哪里?在做ls -a时我没有看到它
在检查tar内容时,它似乎是一些二进制数据,但我不知道它来自何处.
我正在使用PHPUnit来验证PHP代码的XML输出,但显然我遇到了MySQL返回的字符编码问题.这是我从DOMDocument得到的错误:
Input is not proper UTF-8, indicate encoding!
Bytes: 0xE9 0x20 0x42 0x65
Run Code Online (Sandbox Code Playgroud)
我初始化DOMDocument所以它使用正确的编码:
$domDocument = new DOMDocument('1.0','UTF-8');
Run Code Online (Sandbox Code Playgroud)
当我使用mb_detect_encoding检查saveXML()的输出时,结果是UTF-8.
我还检查了用于创建XML的所有调用,在遇到的所有createCDATASection参数上使用mb_detect_encoding,它们都是UTF-8或ASCII(没有纯文本节点,一切都在CDATA块中).
我认为问题来自于使用'é'字符(ISO 8859-1中的 0xE9 ).将该字符添加到我的XML的行是:
$domDocument->createCDATASection($place->name);
Run Code Online (Sandbox Code Playgroud)
和mb_detect_encoding($ place-> name)给了我UTF-8.
数据($ place-> name)从MySQL数据库中提取.该数据库具有UTF-8字符集.
这是一些示例代码:
$query = sprintf('SELECT name FROM place where id = 1');
$result = mysql_query($query);
$result = mysql_fetch_assoc($result);
// -- Feeding UTF-8 data directly WORKS
$domDocument = new DOMDocument('1.0','UTF-8');
$rootNode = $domDocument->createElement('Response');
$rootNode->appendChild($domDocument->createCDATASection('Café Belga'));
$domDocument->appendChild($rootNode);
$matcher = array('tag' => 'Response');
self::assertTag($matcher, $domDocument->saveXML(), '', …
Run Code Online (Sandbox Code Playgroud) 在我的Parse Cloude代码中,我需要运行几个连续的查询,每个查询都使用"find()".
例:
var promise = firstQuery.get(objectId).then(function(result1){
return secondQuery.find();
}).then(function(result2){
return thirdQuery.find();
}).then(function(result3) {
// here I want to use "result1", "result2" and "result3"
});
Run Code Online (Sandbox Code Playgroud)
问题是:如何在最后的"then"语句中访问"result1"和"result2",而不将它们分配给父作用域中声明的变量.
为什么我这样问:如果要嵌套一堆你在循环中创建的promises以便它们并行执行,你就不能使用父作用域技巧(想象一下围绕上述语句的for循环,其中所有的promise都是放入一个数组然后使用"Parse.Promise.when"进行评估.它们都会同时开始修改父作用域变量.)
我可以创建某种承诺对象,我可以返回以下内容:
Parse.promise({result:result1,findResult:secondQuery.find()};
Run Code Online (Sandbox Code Playgroud)
所以我可以通过这样做从"result2"参数中获取值
result2.result
Run Code Online (Sandbox Code Playgroud)
和
result2.findResult
Run Code Online (Sandbox Code Playgroud)
我希望我能说清楚.这不是很容易解释.
首先,我远离Linux专家,所以这可能是问题,但无论如何,问题是:
我按照这里写的内容:http://symcbean.blogspot.com/2010/02/php-and-long-running-processes.html
启动一个长期运行的PHP进程.这在我的Mac上的MAMP配置中完美无瑕.然而,一旦我将它部署到我们的VPS,我得到了一些非常奇怪的结果.
首先,我使用SSH连接进行简单的测试:
echo '/usr/local/php53/bin/php -d memory_limit=512M -q /home/user/www/Update/Update.php;' | at now + 2minutes
Run Code Online (Sandbox Code Playgroud)
结果:
warning: commands will be executed using /bin/sh
job 2300 at 2012-04-29 19:24
Run Code Online (Sandbox Code Playgroud)
事实上,2分钟后执行php脚本.到现在为止还挺好.
接下来我尝试以下方法:
在我的浏览器中我打开:
www.myserver.com/Update/LaunchUpdates.php
Run Code Online (Sandbox Code Playgroud)
这个php脚本包含以下行:
exec("echo '/usr/local/php53/bin/php -d memory_limit=512M -q /home/user/www/Update/Update.php;' | at now + 2minutes");
Run Code Online (Sandbox Code Playgroud)
会发生以下情况:我在-l处检查状态,我看到:
job 2304 at 2012-04-29 19:32
Run Code Online (Sandbox Code Playgroud)
然后我等了2分钟再次跑到-l.我希望看到一个空的结果,但我得到:
job 2305 at 2012-04-29 19:34
Run Code Online (Sandbox Code Playgroud)
2分钟后我得到了
job 2306 at 2012-04-29 19:36
Run Code Online (Sandbox Code Playgroud)
我对那里发生的事情一无所知.PHP脚本没有执行,工作似乎在2分钟后重新安排.这种情况一直持续到我工作为止.
有谁知道可能会发生什么?
更多信息:
cat /etc/*-release
Gentoo Base System version 1.6.14
Run Code Online (Sandbox Code Playgroud)
更多细节.以下是at job安排时的内容:( at -c [ID]) …
我有以下堆栈
我编写了一堆端到端测试来测试我所有的网络服务。问题是其中一些是时间相关的(如“给我最后 X 秒的修改记录”)。
sinon
非常擅长模拟 Node 中所有与时间/日期相关的内容,但是modified
我的 Postgresql 表中有一个字段填充了触发器:
CREATE FUNCTION update_modified_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.modified = now();
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';
Run Code Online (Sandbox Code Playgroud)
问题当然是sinon
无法覆盖该now()
功能。
关于如何解决这个问题的任何想法?问题不是在测试开始时设置特定日期,而是提前时间比实时快(在我的一个测试中,我想更改数据库中的某些内容,将“当前时间”提前一天,更改数据库中还有一些东西,并进行网络服务调用以查看结果)。
我自己可以找出一些解决方案,但它们都涉及更改应用程序代码并使其不那么优雅。我认为您的应用程序代码不应受到您想要测试它的影响。
就是想:
在NSString
那里有一个名为的静态方法+stringWithString:
.这不会被重新声明/覆盖,NSMutableString
因此我们不能假设这将返回NSMutableString
.事实上,即使在NSString类中,返回类型也被定义为id
,doc指出:
返回值
通过复制字符创建的字符串aString
.
在我的知识中,我缺少什么目标C才能理解为什么这会起作用并返回NSMutableString
?特别是因为基类NSString
不知道我们想要一个可变字符串作为回报.
可以说内部[Class alloc]
被调用会生成一个类型的对象NSMutableString
,但即使这是纯粹的猜测,因为我们没有源代码,stringWithString:
可以在内部做任何想做的事情.
是否所有这些类方法都在子类中重新实现?如果是,为什么不记录这个?
我想在iOS 6应用程序中生成一个好看的PDF.
我试过了:
这是一个代码示例:
-(CGContextRef) createPDFContext:(CGRect)inMediaBox path:(NSString *) path
{
CGContextRef myOutContext = NULL;
NSURL * url;
url = [NSURL fileURLWithPath:path];
if (url != NULL) {
myOutContext = CGPDFContextCreateWithURL ((__bridge CFURLRef) url,
&inMediaBox,
NULL);
}
return myOutContext;
}
-(void)savePdf:(NSString *)outputPath
{
if (!pageViews.count)
return;
UIView * first = [pageViews objectAtIndex:0];
CGContextRef pdfContext = [self createPDFContext:CGRectMake(0, 0, first.frame.size.width, first.frame.size.height) path:outputPath];
for(UIView * v in pageViews)
{
CGContextBeginPage (pdfContext,nil);
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformMakeTranslation(0, …
Run Code Online (Sandbox Code Playgroud) 我有一个 React 组件,它呈现以下 html:
<input
type="time"
step="1"
value={this.state.time}
className="form-control"
placeholder="Time"
onChange={(ev) => {this.setState({time:ev.target.value})}
/>
Run Code Online (Sandbox Code Playgroud)
这种“有点”有效,但问题是我无法在输入字段中输入两位数。假设我想输入 00:23:00。我从一个如下所示的时间字段开始:
00:00:00
接下来,我用鼠标单击中间的一对零。我按键盘上的“2”。现在它看起来像这样:
00:02:00
然而,当我输入“3”时(无论我执行的速度有多快),发生的情况是我的值如下所示:
00:03:00
虽然我希望它看起来像这样:
00:23:00
如果我删除该value
属性,一切都会按预期工作,但在这种情况下,我无法在时间字段中设置起始值,这在编辑现有内容时相当烦人。
我猜想会setState
触发组件的重新渲染,使其行为异常。
有想法该怎么解决这个吗?
如何禁用动画fullScreenCover
?我希望视图直接显示,而不是从底部滑入。
谢谢
编辑:似乎问题由于缺乏“调试细节”而被关闭。严重地?
上面的调用默认为动画幻灯片,我只是想知道如何在没有动画的情况下做到这一点。不知道这里需要什么“调试细节”......
这是问题所在:
我在UIScrollView中放了一堆视图.这些子视图的大小和位置由约束定义.这非常有效,滚动效果也很好.到现在为止还挺好.
但是,当我第一次在屏幕上显示viewcontroller时,我希望我的scrollview一直滚动到底部,这就是麻烦开始的地方.为了知道底部的位置,我需要知道子视图中最低元素的位置和大小.也应该很容易(因为我在某处提到了UIView):得到UIView的框架并且瞧.
我想在滚动视图出现在屏幕上之前将其滚动到底部(基本上,在viewWillAppear中),但是仅在viewWillAppear之后和viewDidAppear:之前调用约束.
在viewWillAppear中获取UIView框架给了我一个零大小的CGRect.在viewDidAppear中做同样的事情给了我正确的CGRect.但是viewDidAppear对我来说太迟了,因为滚动视图已经在屏幕上,所以你看到内容向上移动.
有没有人有这个很好的解决方案?我尝试将代码放在viewDidLayoutSubviews中,但这也不起作用.
ios ×3
objective-c ×2
php ×2
autolayout ×1
gentoo ×1
javascript ×1
linux ×1
macos ×1
mocha.js ×1
node.js ×1
nsstring ×1
osx-lion ×1
pdf ×1
postgresql ×1
promise ×1
quartz-2d ×1
reactjs ×1
sinon ×1
swift ×1
swiftui ×1
tar ×1
terminal ×1
uikit ×1
uiscrollview ×1
uiview ×1
utf-8 ×1
xcode ×1
xml ×1