我正在使用rails 4.0分支的设计以及ruby 2.0.0p0和Rails 4.0.0.beta1.
这是一个问题,我在检查我是否以正确的方式进行,或者我还有其他事情要做.我确信很多人转向Rails 4.0都面临着同样的问题(谷歌搜索类似的东西后).
我已阅读以下链接:
现在使用devise我创建了一个User模型,我使用上面的gists创建了以下控制器(并确保将它包含在我的routes文件中).我的额外参数是first_name和last_name.
class Users::RegistrationsController < Devise::RegistrationsController
def sign_up_params
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
end
def account_update_params
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :current_password)
end
private :sign_up_params
private :account_update_params
end
Run Code Online (Sandbox Code Playgroud)
还有什么我应该做的吗?这是从现在开始做事的最佳方式(因为放弃了attr_accessor).我的表单似乎工作正常(新的和更新).gists说使用"resource_params"但是在我的服务器日志中总是给出"Unpermitted parameters"错误.
我目前在UICollectionViewCell中配置了Admob Native Express Ad(GADNativeExpressAdView).
问题:用户第一次打开应用程序并开始向下滚动单元格列表,当它们到达Ad单元格时,滚动会阻止,直到本机广告"构建"为止.完成后,滚动继续.然后广告可能需要片刻(1-2秒)来加载广告请求.
假设广告应该出现在单元格#20,#30等中,第二次(以及之后的每一个),滚动不会中断.它只发生在第一个.
关于如何解决这个问题的任何想法都将非常感激.这是GADNativeExpressAdView本身的问题吗?
谢谢.
AdCollectionViewCell.Swift
class AdCollectionViewCell: UICollectionViewCell {
@IBOutlet var intercellBanner: GADNativeExpressAdView!
override func awakeFromNib() {
super.awakeFromNib()
let request = GADRequest()
request.testDevices = [kGADSimulatorID]
self.intercellBanner.loadRequest(request)
}
override func prepareForReuse() {
super.prepareForReuse()
let request = GADRequest()
request.testDevices = [kGADSimulatorID]
self.intercellBanner.loadRequest(request)
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个TCP服务器和客户端,已建立套接字.假设我有以下情况:
服务器:
char *fn = "John";
char *ln = "Doe";
char buffer[512];
strcpy(buffer, fn);
send(*socket, buffer, strlen(buffer), 0);
strcpy(buffer, ln);
send(*socket, buffer, strlen(buffer), 0);
Run Code Online (Sandbox Code Playgroud)
客户:
char *fn;
char *ln;
char buffer[512];
bytes = recv(*socket, buffer, sizeof(buffer), 0);
buffer[bytes] = '\0';
strcpy(fn, buffer);
bytes = recv(*socket, buffer, sizeof(buffer), 0);
buffer[bytes] = '\0';
strcpy(ln, buffer);
printf("%s", fn);
printf("%s", ln);
Run Code Online (Sandbox Code Playgroud)
预期结果:我想分别收到每个字符串(因为我将它们保存在不同的变量中),而第一个recv()获取fn"John"和ln"Doe"连接"JohnDoe",并且程序被卡住了第二个recv()...因为我已经完成了发送.
我尝试了以下内容: - 将\ 0添加到fn和ln字符串,如下所示:
char *fn = "John\0";
char *ln = "Doe\0";
Run Code Online (Sandbox Code Playgroud)
但问题仍然存在.
我可以施加某种条件,因此每个字符串是单独收到的吗?
编辑添加更多问题:
1)为什么它在某些情况下实际上是单独发送它们,而其他情况是联合发送它们?
2)我应该发送()和recv()吗?在我的代码的其他一些部分,它似乎是自我调节,只在正确的时间接收正确的字符串,而我不必检查.这样做有用吗?
3)关于发送一个标题我将要发送的字符串的长度,如何解析传入的字符串以知道在哪里拆分?任何例子都会很棒.
4)我肯定会检查我是否得到比缓冲区更大的东西,谢谢你的指点.
编辑2:
5)因为我总是把东西放在大小为512的缓冲区字符数组中.即使我发送1个字母的字符串,每个发送操作都不应该占用缓冲区的全部大小吗?这令人困惑.我有"约翰",但我把它的大小为512的数组和发送它,应该不是填满发送缓冲区,所以的recv()函数也拉动尺寸全阵列清空网络缓冲区512?
我正在学习C的基础知识,现在正在使用malloc().假设我有一个函数要求用户输入,用一个数据填充一个结构,并保存在一个数组中(所有结构都通过main函数引用传递).
我通过Valgrind运行程序,我得到"仍然可以访问"的字节(这应该是正确的?不被认为是泄漏),但是任何保存的数据我都会丢失块.
程序运行完成后,如何释放内存?此外,我在代码中有一些(2)问题只是为了澄清一些事情,如果有人可以向我解释,我会很感激.
这是一些类似于我想要做的代码:
我声明了以下结构:
struct Person {
char name[MAX_INPUT];
int age;
};
Run Code Online (Sandbox Code Playgroud)
我正在写一个像这样的函数:
int function2(struct Person *list, int *index) {
struct Person *prsn = malloc(sizeof(struct Person));
// !Why do we sometimes cast the malloc or not?
// I sometimes get errors when I do, sometimes when I don't,
// while the surrounding code is pretty much the same.
assert(prsn != NULL);
// User input code goes here ...
// Now to save the Person created
strcpy(prsn->name, nameInput);
prsn->age = …Run Code Online (Sandbox Code Playgroud)