我有一个持有字典的班级
class OrderBook:
orders = {'Restaurant1': None,
'Restaurant2': None,
'Restaurant3': None,
'Restaurant4': None}
@staticmethod
def addOrder(restaurant_name, orders):
OrderBook.orders[restaurant_name] = orders
Run Code Online (Sandbox Code Playgroud)
我正在运行调用该方法的4个线程(每个餐厅一个)OrderBook.addOrder.这是每个线程运行的函数:
def addOrders(restaurant_name):
#creates orders
...
OrderBook.addOrder(restaurant_name, orders)
Run Code Online (Sandbox Code Playgroud)
这是安全的,还是我必须在打电话前使用锁addOrder?
在我的routes.rb我有:
get "projects/:category_id" => "projects#index"
Run Code Online (Sandbox Code Playgroud)
当我写projects_path(1)生成的URL /projects.1而不是/projects/1.你知道为什么会这样吗?这是输出rake routes:
GET /projects/:category_id(.:format) projects#index
Run Code Online (Sandbox Code Playgroud) 我有一个带有几个表的MySQL 5.7数据库,它们将UUID存储在具有VARCHAR数据类型的列中.我试图将我们的代码库转换为使用Slick 3.1.1,但我遇到了UUID到String转换的问题.这是我的列定义:
def myCol: Rep[UUID] = column[UUID]("myCol", SqlType("VARCHAR"))
Run Code Online (Sandbox Code Playgroud)
当我运行查询时,我得到这样的异常:
Got the exception java.sql.SQLException: Incorrect string value: '\xDA\xFD\xDAuOL...' for column 'myCol' at row 1
Run Code Online (Sandbox Code Playgroud)
根据我的理解,Slick假定UUID应该存储为二进制列类型,所以我尝试使用以下方法隐式转换为String:
implicit val uuidToString = MappedColumnType.base[UUID, String](_.toString, UUID.fromString)
def myCol: Rep[UUID] = column[UUID]("myCol", SqlType("VARCHAR"))(uuidToString)
Run Code Online (Sandbox Code Playgroud)
这适用于插入,但是当我选择myCol结果为空的值时.任何人都知道如何强制Slick使用VARCHAR而不是BINARY(16)进行数据转换?
编辑:
使用隐式此查询不会返回任何结果:
db.run { table.filter(_.myCol === val)).result }
Run Code Online (Sandbox Code Playgroud)
但是这个做了:
db.run { table.result }.map(_.filter(_.myCol == val))
Run Code Online (Sandbox Code Playgroud)
EDIT2:
我有一个带有演示的小项目:https://github.com/nmatpt/slick-uuid-test
我有一个奇怪的PHP问题和一个使用当前时间的C脚本.我的程序有点复杂,但问题缩小到这个:
我有这个C代码打印1分钟前的日期,当前日期和从现在开始1分钟的日期:
#include <time.h>
#include <stdio.h>
int main(int argc, char **argv){
char date[9];
time_t rawtime;
struct tm * ptm;
int i;
time(&rawtime);
ptm = gmtime(&rawtime);
ptm->tm_min--;
for(i = 0; i < 3; i++){
rawtime = mktime(ptm);
ptm = gmtime(&rawtime);
snprintf(date, 9, "%d %d %d", ptm->tm_mday, ptm->tm_hour, ptm->tm_min);
printf("%s\n", date);
ptm->tm_min++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我在shell中运行它时,我得到了正确的结果(打印格式是月份,小时,分钟):
$ ./test
17 20 7
17 20 8
17 20 9
Run Code Online (Sandbox Code Playgroud)
但是,当我通过PHP执行它时,我得到了奇怪的结果.这是PHP代码:
<?php
exec("path_to_exec/test", $output);
echo "$output[0]<br/>";
echo "$output[1]<br/>";
echo "$output[2]<br/>";
?>
Run Code Online (Sandbox Code Playgroud)
这是输出:
17 20 …Run Code Online (Sandbox Code Playgroud) 我发现了ericmartin的模态弹出窗口这个很好的例子
但我正在尝试使用ASP.NET转发器生成的图像的数据主义者,而不确定如何使图像动态化.
工作代码很简单,但图像是静态的.它基本上会弹出图像,使调用它的网站变暗.这一切都发生在该网站的javascript和css中.
<div id='container'>
<div id='content'>
<div id='basic-modal'>
<a href='#' class='basic'>Demoz</a>
</div>
<div id="basic-modal-content">
<img src="img/basic/127-2777_IMG.JPG" />
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但是我的asp.net转发器代码需要以某种方式获取/设置图像值,但在我的javascript中得到"$ get is undefined"错误.
这是我的asp.net代码:
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<script type="text/javascript">
function ShowFullImg(url) {
var img = $get("<%=Image1.ClientID %>");
img.src = url;
// $find("Image1").show();
}
</script>
<div id='container'>
<div id="basic-modal-content">
<asp:Image ID="Image1" runat="server" />
</div>
<ASP:DataList id="repeater1" runat="server" repeatdirection="Horizontal" RepeatLayout="Table" Repeatcolumns="5">
<ItemTemplate>
<asp:ImageButton ID="ThumbnailImg" ImageUrl='<%# Eval("n1") %>' Height="100" Width="150" BorderStyle="Ridge" OnClientClick='<%# Eval("n2","ShowFullImg(\"{0}\");return false;") %>' runat="server" />
</ItemTemplate> …Run Code Online (Sandbox Code Playgroud) 我正在为 API 编写包装器,我想对应用程序问题进行错误处理。每个请求都返回一个 Future,所以为了做到这一点,我看到 2 个选项:使用 aFuture[Either]或使用异常立即使未来失败。
这是两种情况的片段,response是返回 HTTP 请求的未来:
def handleRequestEither: Future[Either[String, String]] = {
response.map {
case "good_string" => Right("Success")
case _ => Left("Failed")
}
}
def handleRequest: Future[String] = {
response.map {
case "good_string" => "Success"
case _ => throw new Exception("Failed")
}
}
Run Code Online (Sandbox Code Playgroud)
这是在两种情况下获得结果的代码段:
handleRequestEither.onComplete {
case Success(res) =>
res match {
case Right(rightRes) => println(s"Success $res")
case Left(leftRes) => println(s"Failure $res")
}
case Failure(ex) =>
println(s"Failure $ex")
}
handleRequest.onComplete {
case …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种优雅的方法来确保给定变量保持正值.
我有两个变量保持正浮点数,我根据某些条件递减它们.最后,我想保证我仍然有正数(或最多0).伪代码看起来像这样:
list = [...]
value1 = N
value2 = M
for element in list:
if ... :
value1 -= X
if ... :
value2 -= Y
Run Code Online (Sandbox Code Playgroud)
有没有比ifs在最后添加两个更优雅的解决方案?
我有 2 个相当复杂的对象,一个正在解析成功,另一个正在抛出异常。对象之间的唯一区别是 2 个双精度型属性。我将其反序列化为
var item = JsonConvert.DeserializeObject<MyItem>(result.ToString());
Run Code Online (Sandbox Code Playgroud)
其中MyItem包含两行,因此在第一种情况下它们应该为空(项目不包含它们),在第二种情况下应该设置它们(因为它们存在于 json 和反序列化对象中)。
痕迹:
at Newtonsoft.Json.Utilities.ConvertUtils.IntParseFast(Char[] value, Int32 start, Int32 length)
at Newtonsoft.Json.JsonTextReader.ParseNumber()
at Newtonsoft.Json.JsonTextReader.ParseValue()
at Newtonsoft.Json.JsonTextReader.ReadInternal()
at Newtonsoft.Json.JsonReader.ReadAsInt32Internal()
at Newtonsoft.Json.JsonTextReader.ReadAsInt32()
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) …Run Code Online (Sandbox Code Playgroud) def sum(xs: List[Int]): Int = {
if(xs.isEmpty)
0
else
xs.head + sum(xs.tail)
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释最后一行.
那么中间结果存储在xs.head + sum(xs.tail)中,+之后是否提供了要添加的单个元素?