Mongoid在一个habtm上运行.push,它在两个方向上建立了一个habtm关系.虽然删除将#delete一个相关的记录,但没有记录的方法只删除我见过的关系.有没有更好的方法呢?
有没有更好的方法来确保独特性?
has_and_belongs_to_many :following, {class_name: 'User', inverse_of: :followers, inverse_class_name: 'User'}
has_and_belongs_to_many :followers, {class_name: 'User', inverse_of: :following, inverse_class_name: 'User'}
def follow!(user)
self.following.push(user) # this pushes the inverse as well
self.following_ids.uniq!
self.save!
user.follower_ids.uniq!
user.save!
end
def unfollow!(user)
self.following.delete(user.id)
self.save!
user.followers.delete(self.id)
user.save!
end
Run Code Online (Sandbox Code Playgroud) 在我看来,以下代码应该在窗口的中心显示文本; 也就是说,在内板的中心.然而,它并没有,我想知道为什么不.如果运行代码,您将在框架中间看到一个白色面板,150px乘150px.我根本不希望这个区域的大小发生变化,但是当我开始添加一些文本(txt
在代码片段中间取消注释变量)时,面板总是收缩以适应文本.即使指定StaticText
与面板匹配的大小也不是解决方案,因为文本不会居中对齐.
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title)
self.rootPanel = wx.Panel(self)
innerPanel = wx.Panel(self.rootPanel,-1, size=(150,150), style=wx.ALIGN_CENTER)
innerPanel.SetBackgroundColour('WHITE')
hbox = wx.BoxSizer(wx.HORIZONTAL)
vbox = wx.BoxSizer(wx.VERTICAL)
# I want this line visible in the CENTRE of the inner panel
#txt = wx.StaticText(innerPanel, id=-1, label="TEXT HERE",style=wx.ALIGN_CENTER, name="")
hbox.Add(innerPanel, 0, wx.ALL|wx.ALIGN_CENTER)
vbox.Add(hbox, 1, wx.ALL|wx.ALIGN_CENTER, 5)
self.rootPanel.SetSizer(vbox)
vbox.Fit(self)
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, 'wxBoxSizer.py')
frame.Show(True)
frame.Center()
return True
app = MyApp(0)
app.MainLoop()
Run Code Online (Sandbox Code Playgroud) 假设我想将两个32位寄存器EAX
作为低32位字和EDX
高32位字放入RAX
.我找到了一种方法:
shl rdx, 32
or rax, rdx
Run Code Online (Sandbox Code Playgroud)
只有当我们确定从32到61的位RAX
为0时,此方法才有效.如果我们不确定,那么我们必须首先清除高32位字,如:
mov eax, eax //This instruction should clear the high 32 bit word of RAX
Run Code Online (Sandbox Code Playgroud)
这是最短路吗?
是否有一个asm x86-64指令执行此操作?
我想创建用于访问和修改简单音乐库的数据类型,包括由曲目组成的专辑.有关基本想法,请考虑以下事项:
data MusicCollection = MC { albums :: Seq Album }
data Album = Album { albumTitle :: String, tracks :: Seq Track }
data Track = Track { trackTitle :: String, tempo :: Tempo }
data Tempo = Unknown | BPM Int
Run Code Online (Sandbox Code Playgroud)
除了节奏,还可能有其他属性,如样式或评级.
上述解决方案让我可以快速访问随机相册.另外,我希望能够比指定速度更快地访问所有曲目.再次,对返回的曲目进行快速随机访问会很不错:
fasterThan :: Int -> MusicCollection -> SomeRandomAccessCollection Track
Run Code Online (Sandbox Code Playgroud)
更新集合中的轨道也不应该太慢.
我不知道是否Map Tempo (Seq Track)
最好添加一个MusicCollection,或者是否有可能以某种方式模仿关系数据库.也许有完全不同的解决方案?
我目前不想使用数据库,但了解何时在桌面应用程序中使用它们会很有趣.
目前我正在使用整数作为ConverterParameter
,并将其转换Enum
为Converter
.我发现它非常难以理解XAML
.
我想知道是否有办法Enum
在资源部分声明并将其值传递给它ConverterParameter
?
我正在尝试从asc文件加载一些XY坐标.它看起来像这样:
-55.988544 9382
-53.395804 9403
-50.804601 9433
然后我将坐标转换为浮点数.但不知何故fe为第一个值我得到"-55988544.0"而不是"-55.988544".
这是代码:
private void btngettext_Click(object sender, EventArgs e)
{
StreamReader objStream = new StreamReader("C:\\...\\.asc");
firstLine = objStream.ReadLine();
int i = 0;
/*Split String on Tab,
* will separate words*/
string[] words = firstLine.Split('\t');
richTextBox1.Text = words[0];
foreach(string word in words)
{
if(word != "")
{
Console.WriteLine(word); //the value of the string is "-55.988544" here
//value = float.Parse(word); tried both
value = Convert.ToSingle(word); //here the float value is "-55988544.0"
Console.WriteLine(value.ToString());// …
Run Code Online (Sandbox Code Playgroud) 有没有人知道是否有rsync选项,因此正在遍历的目录不会显示在stdout上.
我正在同步音乐库,而大量的目录使得很难看到实际发生了哪些文件更改.我已经尝试了-v和-i,但两者都显示了目录.
我的开发团队刚刚开始使用Mercurial,我们对以下几点感到困惑:
我们是一个php webdev团队.
我们有3个开发人员.我们现在正在做的大部分是一个非常新产品的错误修正.还做了一些新的功能开发.
我们有2个QA人员.必须先测试每个错误修复和功能,然后才能生效.
到目前为止,每个开发人员都有自己的存储库 我们有一个名为WebDev的中央服务器,它有自己的回购.开发人员从WebDev获取,然后进行一些更改(即修复错误),然后推送到Webdev.然后,QA测试人员将测试中央服务器上的代码(因此测试WebDev中的代码),如果有效,他会将该代码推送到我们的生产服务器.
这不能很好地工作,因为......当Developer-1(dev-1)修复bug并推送到WebDev时会发生什么.同时,dev-2修复了一个不同的bug并推送到WebDev.质量检查人员在那里测试代码,并批准第二个错误修复但不是第一个.他如何在没有第一个变速器的情况下将第二个变更集推向生产?我们似乎失去了版本控制系统的所有优点.
我已经阅读了很多关于分支的内容,但我无法弄清楚如何让这对我们有用...我们为每个错误修正和新功能创建一个新的分支,并且只有经过测试后,QA才会合并到WebDev上的默认分支?这是最好的方式,还是我缺少的东西?
谢谢!!
---- ----更新
感谢所有回答到目前为止的人.这是我现在所处的位置......我能想到两个解决方案.
1)dev-1修复了bug-101的bug.他从webdev,合并和本地提交.他把它设置在测试中.QA直接从他的存储库中提取,并在本地进行测试.如果它通过,QA将从webdev - > merge - > push拉到webdev(如果它发生了很大变化,可以再次检查以确保它没问题).所以我们一次只测试一件事,WebDev只包含测试人员在本地测试过的变化,并且总是稳定的.
2)为一切创建分支.dev-1创建分支"bugfix-101"然后推送到webdev而不合并它.QA可以测试分支代码,如果它已获批准,则将其与默认分支合并.我对这个方法有四个问题 - (a)是否可以将开放分支推送到远程存储库?(b)如果QA合并并关闭webdev上的分支,下次我拉,我的本地回购还会关闭并合并分支吗?(c)你如何从分支代码进行测试?当我在浏览器中运行Web应用程序时,我如何从分支测试?(d)是否存在创建如此多命名分支的性能问题(假设其中大部分将快速关闭)?
再次感谢.
我正在尝试编译此代码并且链接失败并出现以下错误:这是我如何编译它;
g++ logtester.cc -I/home/foo/include -L/home/foo/lib -llog4cxx
/tmp/ccADKreY.o(.text+0x120): In function `main': undefined reference to `FrameworkLogger::getInstance()'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
为什么?我该怎么办呢?
#include <log4cxx/logger.h>
#include <log4cxx/xml/domconfigurator.h>
using namespace log4cxx;
using namespace log4cxx::xml;
using namespace log4cxx::helpers;
class FrameworkLogger
{
private:
FrameworkLogger();
LoggerPtr logger;
public:
static LoggerPtr getInstance();
};
Run Code Online (Sandbox Code Playgroud)
(另一个文件:)
#include "FrameworkLogger.h"
#include <iostream>
LoggerPtr FrameworkLogger::getInstance()
{
std::cout<<"test";
}
Run Code Online (Sandbox Code Playgroud)
(又一个文件:)
#include "FrameworkLogger.h"
#include <iostream>
using namespace std;
int main(){
// LoggerPtr logger =
FrameworkLogger::getInstance();
std::cout<<"test";
}
Run Code Online (Sandbox Code Playgroud) 在处理更大的wp7项目时,我一直遇到这个问题:
每当我在我的代码中设置属性时,它都会崩溃Visual Studio 2010.所以我决定做一个适当的测试来试图找出问题所在.以下代码是一个简短的wp7应用程序示例,以相同的方式具有相同的问题.每当代码尝试设置name属性时,它都会使Visual Studio崩溃.
注意:我没有安装加载项,当我尝试在安全模式下运行它时,我收到错误"此安装不支持项目类型"
任何帮助,将不胜感激
using System;
using System.Collections.Generic;
using System.Windows;
using Microsoft.Phone.Controls;
namespace propertytest
{
public partial class MainPage : PhoneApplicationPage
{
public string name
{
get { return name; }
set
{
//crash!
if (value != name)
{
name = value;
hi(name);
}
}
}
void hi(string name)
{
MessageBox.Show("hi "+name);
}
// Constructor
public MainPage()
{
InitializeComponent();
// Set the data context of the listbox control to the sample data
DataContext = App.ViewModel;
this.Loaded += …
Run Code Online (Sandbox Code Playgroud)