models.py:
class BlogPost(models.Model):
title = models.CharField(max_length=200)
post_body = models.TextField()
user = models.ForeignKey(User)
pub_date = models.DateTimeField('published')
def get_absolute_url(self):
return u'/entries/%d' % self.id
Run Code Online (Sandbox Code Playgroud)
forms.py:
class NewPostForm(forms.ModelForm):
class Meta:
model = BlogPost
fields = ('title', 'post_body')
Run Code Online (Sandbox Code Playgroud)
所以,我试图让用户在博客中发布新帖子。博文模型有4个领域- ,title,post_body,user和pub_date。用户应该能够填写title和post_body,而其他两个应该自动填写。我尝试的第一件事是:
class NewPostView(generic.edit.CreateView):
model = BlogPost
form_class = NewPostForm
def get_initial(self):
return {'pub_date': timezone.now(),
'user': self.request.user}
Run Code Online (Sandbox Code Playgroud)
但它唯一能做的就是为 html 表单提供默认值。经过进一步研究,这是最终工作的代码:
class NewPostView(generic.edit.CreateView):
model = BlogPost
form_class = NewPostForm
def form_valid(self, form):
obj = …Run Code Online (Sandbox Code Playgroud) 我有一个问题,我选择Python作为一个更大项目的可能语言的决定取决于答案 - 我自己无法想出:
我们都知道Python没有真正的对象封装,所以没有像对象的"私有"属性.关于这个问题,Guido van Rossum说,人们可以在不被"允许"的情况下访问异物的隐藏部分,"我们都是成年人","就是不要这样做".只要我自己编写的软件是我自己的,我就可以很好地生活,所以我对自己的错误负责,并且可以尝试避免这些事情.
但是 - 这就是我的问题:如果我提供一个带有一些扩展点的插件的插件框架,并且许多插件是由其他人,也许是我完全不能信任的插件.
如何防止暴露我的框架内部被插件访问?
有没有办法实现这一点,或者是使用Python有信心没有人会滥用我的API的唯一方法?
我开始时有这样的事情:
def nonEmpty[A] = (msg: String) => (a: Option[A]) => a.toSuccess(msg)
val postal: Option[String] = request.param("postal")
val country: Option[String] = request.param("country")
val params =
(postal |> nonEmpty[String]("no postal" )).toValidationNel |@|
(country |> nonEmpty[String]("no country")).toValidationNel
params { (postal, country) => ... }
Run Code Online (Sandbox Code Playgroud)
现在我认为减少样板以获得更好的可读性并且不必向更多的初级团队成员解释什么.toValidateNel和|@|意思是很好的.第一个想法是,List但最后一行将停止工作,我不得不放弃一些静态安全.所以我看向无形:
import shapeless._; import poly._; import syntax.std.tuple._
val params = (
postal |> nonEmpty[String]("no postal"),
country |> nonEmpty[String]("no country")
)
params.map(_.toValidatioNel).reduce(_ |@| _)
Run Code Online (Sandbox Code Playgroud)
然而,我似乎无法超越这.map(...)一点.我按照#scalaz的建议尝试过:
type Va[+A] = Validation[String, A]
type VaNel[+A] …Run Code Online (Sandbox Code Playgroud) 我的目标是使用不同语言(主要是C,C++,Obj-C和Haskell)的源代码,并告诉他们各种统计数据.(例如,变量,函数,内存分配,复杂性等)
LLVM似乎是一个完美的工具,因为我可以为这些语言生成bitcode,并且使用LLVM的可定制传递,我几乎可以做任何事情.对于C系列它工作正常,以C程序(test.c)为例:
#include <stdio.h>
int main( )
{
int num1, num2, sum;
printf("Enter two integers: ");
scanf("%d %d", &num1, &num2);
sum = num1 + num2;
printf("Sum: %d",sum);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后我跑:
clang -emit-llvm test.c -c -o test.bc
opt -load [MY AWESOME PASS] [ARGS]
Run Code Online (Sandbox Code Playgroud)
瞧,我几乎有我需要的一切:
1 instcount - Number of Add insts
4 instcount - Number of Alloca insts
3 instcount - Number of Call insts
3 instcount - Number of Load insts
1 instcount - Number of Ret …Run Code Online (Sandbox Code Playgroud) 我试图处理一个包含俄语符号的文件。在阅读和向文件写入一些文本后,我得到如下信息:
\160\192\231\229\240\225\224\233\228\230\224\237
我怎样才能得到正常的符号?
我正在编写一个 C 应用程序,该应用程序使用带有 libcurl 的简单 HTTP POST 请求上传文件。我可以用一个文件来完成,但我不知道如何上传多个文件。我尝试使用相同代码的另一种方法,但无济于事。HTTP POST 的代码如下:
void sendHashes()
{
struct curl_httppost *post = NULL;
struct curl_httppost *last = NULL;
CURL *curlhash;
CURLcode response;
curlhash = curl_easy_init();
curl_easy_setopt(curlhash, CURLOPT_URL, URL);
curl_formadd(&post, &last,
CURLFORM_COPYNAME, "Hash",
CURLFORM_FILECONTENT, "C:\\file.txt",
CURLFORM_END
);
curl_easy_setopt(curlhash, CURLOPT_HTTPPOST, post);
response = curl_easy_perform(curlhash);
curl_formfree(post);
curl_easy_cleanup(curlhash);
}
Run Code Online (Sandbox Code Playgroud) 我正在研究我的第一个"真正的"Haskell项目,并同时试图了解事件采购.(这似乎是一个很好的匹配;事件采购是一种相当实用的数据查看方式.)
我试图弄清楚如何将我的事件反序列化为强类型的Haskell数据.这里有两种相反的力量在起作用:
不应该将事件应用于错误类型的聚合.这个要求表明我的系统中每个聚合都需要一个单独的事件类型:
data PlayerEvent = PlayerCreated Name | NameUpdated Name
data GameEvent = GameStarted PlayerID PlayerID | MoveMade PlayerID Move
要使用这些事件,您可以使用类型为的函数applyEvent :: Game -> GameEvent -> Game.
我需要能够在强类型事件和JSON对象之间进行序列化和反序列化.这个要求表明我需要多态serialise和deserialise功能:
class Event e where serialise :: e -> ByteString
deserialise :: Event e => ByteString -> e
最后一个deserialise功能就是问题.类型签名表示调用者可以请求任何实例Event,但当然,您获取的类型取决于所引入的类型ByteString并在运行时确定.
这是一个无法编译的存根实现:
deserialise :: Event e => ByteString -> e
deserialise _ = GameStarted 0 0
Run Code Online (Sandbox Code Playgroud)
并且错误消息:
Could …Run Code Online (Sandbox Code Playgroud) 嗨我和弗雷格一直在玩一点,我在一些例子中注意到package并且module可以互换使用:
package MyModuleOne where
Run Code Online (Sandbox Code Playgroud)
而有时:
module MyModuleTwo where
Run Code Online (Sandbox Code Playgroud)
从一个或另一个导入时,我看不到我的程序行为有任何差异.在使用package或module关键字时,我应该记住一些事项吗?
据我了解,Clojure 不会公开阅读器宏表或允许用户定义阅读器宏。
The read table is currently not accessible to user programs.
Run Code Online (Sandbox Code Playgroud)
我只是想知道是否有明确或明确的声明(大概来自 Rich Hickey)说明将它们排除在 Clojure 之外的理由。
注意我不是问 Clojure 缺少用户定义的阅读器宏是好事还是坏事。只是想知道为什么。
假设我有一个包含的元组列表 [("ab", 1), ("ab", 2), ("ac", 3)]
使用该group函数会将此列表拆分为元组列表列表,如下所示:
[
[("ab", 1)],
[("ab", 2)],
[("ac", 3)]
]
Run Code Online (Sandbox Code Playgroud)
如何将元组分组,忽略其中一个索引,以便根据其中一个元素对它们进行分组:
[
[("ab", 1), ("ab", 2)],
[("ac", 3]
]
Run Code Online (Sandbox Code Playgroud)
groupBy在这种情况下是否需要该功能?