我正在使用GoDaddy,并希望将MongoDB用于宠物项目.我不确定它是否可能,因为它必须运行守护进程,但是,问一下它是不是有害,有办法吗?
编辑:他们已经结束了这个问题,但如果有人在这篇文章中遇到同样的问题:
虽然您无法在传统的共享环境中设置MongoDB,但由于云的神奇之处,您现在可以在以下位置找到Free Mongo Hosting:
https://manage.windowsazure.com(通过mongolab)
我正在开发一个REST服务,所以请求可能是这样的:
/数据/主/表=客户/
我需要逐个获取段,并且对于每个段,我将决定我将要使用的对象,在我将查询的其余部分传递给该对象之后,它可以决定下一步做什么.基本上,REST查询是树上的路径:P
这意味着很多String操作(取决于查询复杂性),但StringBuilder仅用于连接和删除,您不能使用IndexOf或类似的搜索执行.
我已经开发了这个满足我要求的类,但问题是操作字符串,所以每次我得到一个段......我会创建额外的字符串,因为String是一个不可变的数据类型:
public class RESTQueryParser
{
String _query;
public RESTQueryParser(String query)
{
_query = query;
}
public String GetNext()
{
String result = String.Empty;
Int32 startPosition = _query.StartsWith("/", StringComparison.InvariantCultureIgnoreCase) ? 1 : 0;
Int32 i = _query.IndexOf("/", startPosition, StringComparison.InvariantCultureIgnoreCase) - 1;
if (!String.IsNullOrEmpty(_query))
{
if (i < 0)
{
result = _query.Substring(startPosition, _query.Length - 1);
_query = String.Empty;
}
else
{
result = _query.Substring(startPosition, i);
_query = _query.Remove(0, i + 1);
}
}
return result;
}
} …Run Code Online (Sandbox Code Playgroud) 我一直在努力研究如何在Scala中实现Church编码的数据类型.它似乎需要rank-n类型,因为你需要一个类型的第一类const函数forAll a. a -> (forAll b. b -> b).
但是,我能够如此编码对:
import scalaz._
trait Compose[F[_],G[_]] { type Apply = F[G[A]] }
trait Closure[F[_],G[_]] { def apply[B](f: F[B]): G[B] }
def pair[A,B](a: A, b: B) =
new Closure[Compose[({type f[x] = A => x})#f,
({type f[x] = B => x})#f]#Apply, Id] {
def apply[C](f: A => B => C) = f(a)(b)
}
Run Code Online (Sandbox Code Playgroud)
对于列表,我能够编码cons:
def cons[A](x: A) = {
type T[B] = B => (A => B => …Run Code Online (Sandbox Code Playgroud) closures functional-programming scala quantifiers church-encoding
我正在为文件作为类项目实现基于日志的文件系统.我有大量的工作在我的64位OS X笔记本电脑上,但当我尝试在CS部门的32位Linux机器上运行代码时,我得到一个seg错误.
我们给出的API允许一次写入DISK_SECTOR_SIZE(512)字节.我们的日志记录包括用户想要写入的512字节以及一些元数据(他想要写入哪个扇区,操作类型等).
总而言之,"记录"对象的大小为528字节,这意味着每个日志记录跨越磁盘上的2个扇区.
第一个记录在扇区0上写0-512,在扇区1上写0-15.第二个记录在扇区1写入16-512,在扇区2写入0-31.第三个记录在扇区2写入32-512,并且扇区3上的0-47.
所以我所做的是将我要修改的两个扇区读入2个新分配的缓冲区,从记录开始复制到buf1 + 512个偏移字节的计算偏移量.这在两台机器上都能正常工作.
但是,第二个memcpy失败了.具体来说,"record + DISK_SECTOR_SIZE-offset"在下面的代码段错误中,但仅限于linux机器上.运行一些随机测试,它会变得更加好奇.linux机器将sizeof(Record)报告为528.因此,如果我尝试将记录+ 500的memcpy转换为buf 1个字节,那么它应该没有问题.
事实上,我从记录中获得的最大偏移量是254.也就是说,memcpy(buf1,记录+ 254,1)可以工作,但是memcpy(buf1,记录+ 255,1)段错误.
有谁知道我错过了什么?
Record *record = malloc(sizeof(Record));
record->tid = tid;
record->opType = OP_WRITE;
record->opArg = sector;
int i;
for (i = 0; i < DISK_SECTOR_SIZE; i++) {
record->data[i] = buf[i]; // *buf is passed into this function
}
char* buf1 = malloc(DISK_SECTOR_SIZE);
char* buf2 = malloc(DISK_SECTOR_SIZE);
d_read(ad->disk, ad->curLogSector, buf1); // API to read a specified sector into a buffer
d_read(ad->disk, ad->curLogSector+1, buf2);
memcpy(buf1+offset, record, DISK_SECTOR_SIZE-offset);
memcpy(buf2, …Run Code Online (Sandbox Code Playgroud) 我遇到了一种情况(记录各种数据变化时),我需要确定引用是否具有有效的字符串强制(例如,可以正确打印到日志中或存储在数据库中).Scalar :: Util中没有任何东西可以做到这一点,所以我使用该库中的其他方法拼凑了一些东西:
use strict;
use warnings;
use Scalar::Util qw(reftype refaddr);
sub has_string_coercion
{
my $value = shift;
my $as_string = "$value";
my $ref = ref $value;
my $reftype = reftype $value;
my $refaddr = sprintf "0x%x", refaddr $value;
if ($ref eq $reftype)
{
# base-type references stringify as REF(0xADDR)
return $as_string !~ /^${ref}\(${refaddr}\)$/;
}
else
{
# blessed objects stringify as REF=REFTYPE(0xADDR)
return $as_string !~ /^${ref}=${reftype}\(${refaddr}\)$/;
}
}
# Example:
use DateTime;
my $ref1 = DateTime->now;
my …Run Code Online (Sandbox Code Playgroud) 受到这种讨论的启发,经过一些谷歌搜索后,我无法找到关于Ruby方法的一个非常简单的问题的答案:方法对象与否?
我知道Object#method方法,它接受一个方法名称并返回一个Method实例,但另一方面,你可以用块做类似的事情来使它们成为Proc实例,而块不是对象,所以是什么使得方法有什么不同?
我想为firefox创建一个在页面上的脚本之前运行的greasemonkey类型脚本.Greasemonkey脚本在页面上的脚本之后运行,因此不起作用.我需要这个的原因是因为我想编辑页面上的一个脚本.具体来说,我想删除一个强制页面加载到框架内的脚本,因为框架内的页面打破F5(按F5使页面跳回到首页而不是重新加载当前页面).另外,我不想通过AJAX加载代理页面,也不能切换到chrome/opera.我想也许Jetpack附加组件可以工作,但它似乎只有与greasemonkey使用相同的事件,DOMContentLoaded.有任何想法吗?
假设我的HTML代码中包含以下内容:
<select name="Currency" id="Currency">
<option value="0.85">Euro</option>
<option value="110.33">Japanese Yen</option>
<option value="1.2">Canadian Dollars</option>
</select>
Run Code Online (Sandbox Code Playgroud)
使用jQuery,我可以使用$("#Currency").val()给我选择的值,我可以$("#Currency :selected").text()用来获取所选的文本.
如何获取当前选择的从零开始的索引(在本例中为0,1或2)?
在Microsoft Windows中,这适用于:
mnu := GetSystemMenu(h, false);
EnableMenuItem(mnu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
mnu := GetSystemMenu(h, false);
EnableMenuItem(mnu, SC_MOVE, MF_BYCOMMAND or MF_GRAYED);
Run Code Online (Sandbox Code Playgroud)
因此我知道如何禁用窗口的"关闭"系统菜单项,而不是"移动"项.我怎么做?
更新
当然,使用非常好的函数EnableMenuItem的一种替代方法是使用SetMenuItemInfo:
FillChar(info, sizeOf(info), 0);
with info do
begin
cbSize := sizeOf(info);
fMask := MIIM_STATE;
fState := MFS_GRAYED;
end;
SetMenuItemInfo(mnu, SC_MOVE, false, info);
Run Code Online (Sandbox Code Playgroud)
但这对SC_CLOSE再次起作用,但SC_MOVE完全没有!
更新2
即使问题已经解决,因为工作代码已经找到"完成工作",可以这么说,听到关于问题原因的假设会很有趣:为什么SC_CLOSE工作但不是SC_MOVE?
如果我有一百个用户的表通常我会设置一个自动增量userID列作为主键.但是,如果突然我们有一百万用户或500万用户那么这变得非常困难,因为我希望开始变得更加分散,在这种情况下,自动增量主键将是无用的,因为每个节点将创建相同的主键.
解决方案是使用自然主键吗?我真的很难想到这群用户的自然主键.问题是他们都是年轻人,所以他们没有国家保险号码或我能想到的任何其他唯一标识符.我可以创建一个多列主键,但仍有机会,但重复次数发生微不足道.
有谁知道解决方案?
谢谢
.net ×1
c ×1
c# ×1
closures ×1
coercion ×1
daemon ×1
firefox ×1
greasemonkey ×1
html ×1
javascript ×1
jquery ×1
memcpy ×1
methods ×1
mongodb ×1
natural-key ×1
object ×1
perl ×1
pointers ×1
primary-key ×1
quantifiers ×1
reference ×1
ruby ×1
scala ×1
sql ×1
string ×1
systemmenu ×1
userscripts ×1
winapi ×1