我有一个使用SQLite的Web应用程序.我将它部署在使用PostgreSLQ的heroku上.这有时会导致问题,我被建议使用PostgreSQL而不是SQLite开发我的应用程序.
我发现我应该这样修改database.yml(测试和生产相同):
development:
adapter: postgresql
database: my_database
username: my_username
password: my_passwod
host: /var/run/postgresql or localhost
Run Code Online (Sandbox Code Playgroud)
我唯一使用过的数据库是SQLite,所以我只是想抓住机会,但失败了.我用一些随机数据填充了这个文件.
rake db:migrate 导致:
我用的时候 host: localhost
> could not connect to server: Connection refused Is the server running
> on host "localhost" and accepting TCP/IP connections on port 5432?
Run Code Online (Sandbox Code Playgroud)
什么时候 host: /var/run/postgresql
> could not connect to server: No such file or directory
> Is the server running locally and accepting connections on Unix domain socket
> "/var/run/postgresql/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)
我想我应该先启动PostgreSQL服务器,但不知道如何做到这一点.请让我一步一步地回答如何从SQLite应用程序转移到正在运行的PostgreSQL应用程序.
我喜欢Android应用程序的设计,我想知道他们是否使用一些标准方法创建它.
我猜它使用片段,一个用于左侧的菜单,另一个用于内容.但是这里看起来非常酷的是这个小箭头从内容指向所选项目.它给人的感觉是内容页面放在其余页面之上.
这样的东西可以开箱即用吗?

我需要在我的应用程序中接受3种十进制数据格式:
我不能假设在特定情况下会使用一种格式.我需要的是从字符串中获取十进制值,无论它以何种格式给出.
有一种聪明的方法吗?
我试图用
var culture = CultureInfo.CreateSpecificCulture("en-US");
Run Code Online (Sandbox Code Playgroud)
但这似乎不适用于wp7.
到目前为止我已经这样做了:
public static class Extensions
{
public static decimal toDecimal(this string s)
{
decimal res;
int comasCount=0;
int periodsCount=0;
foreach (var c in s)
{
if (c == ',')
comasCount++;
else if (c == '.')
periodsCount++;
}
if (periodsCount > 1)
throw new FormatException();
else if(periodsCount==0 && comasCount > 1)
throw new FormatException();
if(comasCount==1)
{
// pl-PL
//parse here
}else
{
//en-US …Run Code Online (Sandbox Code Playgroud) 一旦我发现了 MVVM,我就非常喜欢它。绑定、将视图与逻辑分离、可测试性等的整个概念非常令人鼓舞。对于背后杂乱无章的代码,这是一个不错的选择。后来我了解到有一些可以绑定的命令,我一开始也很喜欢。
使用 MVVM 编写了几个控件后,我发现我的视图模型开始看起来或多或少像背后的代码。充满了几乎与之前在事件处理程序背后的代码中所做的完全相同的命令。
让我给你举几个例子。
有一个带有“详细信息”按钮的控件,可打开另一个窗口。
[方法 1] 你可以做的第一件事(也是最糟糕的)就是在你的命令中调用这样的东西:
new DetailsWindow().ShowDialog();
Run Code Online (Sandbox Code Playgroud)
这使得视图模型强烈引用表示层 - 丑陋。
[方法 2] 让我们使用弱引用来解决这个问题,并创建类似 IDialogService 的东西。我们可以注入一个简单的实现来创建和打开窗口。现在我们摆脱了对表示层的强引用,命令看起来像这样:
_dialogService.ShowDetailsWindow();
Run Code Online (Sandbox Code Playgroud)
我仍然不喜欢这种方法。对我来说,感觉视图模型不是应该决定是否显示窗口的东西。它应该服务和处理数据。
[方法 3] 将视图模型与表示层完全分离的优雅方法是注入命令本身。比视图模型不会知道表示层。它只会执行注入的动作——不管它是什么。
问题 1:
哪种方法最好?我猜数字3是赢家。
问题2:
这甚至应该成为视图模型的一部分吗?我认为不应该,因为它似乎是表示层的关注点。也许最好将它放在代码后面的简单事件处理程序中?
第二个例子更复杂。在同一个控件中,我们有一个“删除”按钮。它应该打开一个对话框,要求用户确认,如果他说“是”,它应该删除一些东西。在这种情况下,将它放在视图模型中更有意义,因为它确实会影响数据。
问题 3
这个案子对我来说是最棘手的。我不能用我最喜欢的方法数3,因为我要显示一个对话框,这是一个表现层的工作,而且还我必须执行根据对话的结果有些逻辑-这在另一方面是视图模型的工作。这里最好的方法是什么?
请记住,我真的不想使用方法1和2。我希望视图模型是干净的并且不知道与表示层相关的任何事情 - 甚至不知道弱引用。
我想到的一件事是将视图模型层分成两层。就像是:
视图 --> 表示视图模型 --> 逻辑视图模型
也许这是正确的方法?
[编辑]
回应有关使用框架的评论中的建议:
使用框架肯定会更容易处理窗口,但这不是解决问题的方法。我根本不希望“逻辑视图模型”处理窗口,甚至不需要框架的帮助。参考我最后建议的方法,我仍然会将它放在“演示视图模型”中
最近我在桌面应用程序中将.NET从3.5升级到4.0.在我的开发机器上它工作正常.
在某些生产机器上,它在开始时崩溃.
Windows 8.1,Windows 7
问题事件名称:APPCRASH
应用程序名称:myApp.exe
应用程序版本:2.0.0.0
应用程序时间戳:553a56e8
故障模块名称:KERNELBASE.dll
故障模块版本:6.3.9600.17415
故障模块时间戳:54504ade
异常代码:e0434f4d
异常偏移量:00014598
操作系统版本:6.3.9600.2.0.0.256.4
区域设置ID:1045
带有.NET 4.0的Windows XP SP3
错误应用程序myApp.exe,版本2.0.0.0,邮票553a56e8,错误模块kernel32.dll,版本5.1.2600.6532,邮票53203b53,调试?0,故障地址0x00012fd3.

请注意,源是.NET Runtime 2.0错误.为什么?
该应用程序在.NET 4.0中编译,它安装在计算机上.
此解决方案的另一个(更小和更简单)应用程序,也为.NET 4.0编译工作正常.
有任何想法吗?
我正在尝试为我的ASP5 MVC6应用程序创建集成测试.
在我的集成测试中,我注册了所有类,并在类中添加了一些MVC特定的东西Startup:
_services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationDbContext>(
options =>
options.UseSqlServer(_configuration[ServerModulesLoader.DataDefaultConnectionConnectionstringConfigurationKey]));
_services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
_services.AddCors();
_services.AddMvc();
Run Code Online (Sandbox Code Playgroud)
一切正常,直到其中任何一个IUrlHelper或IHttpContextAccessor出现在依赖树中的某个地方.
这是我为测试创建控制器的方法:
// register all my classes
// run the code from above
_provider = _services.BuildServiceProvider();
ActivatorUtilities.GetServiceOrCreateInstance<T>(_provider);
Run Code Online (Sandbox Code Playgroud)
现在我为这些接口注册了模拟,但我宁愿使用原始实现.
我错过了什么?
我在 Visual Studio 中玩弄 docker。我有一个在 docker 中运行的控制台应用程序,我想与它进行通信。
docker-compose.yml 和 Dockerfile 是标准的,由 VS 生成
docker-compose.yml:
version: '3.4'
services:
publisher:
image: ${DOCKER_REGISTRY-}publisher
build:
context: .
dockerfile: Publisher/Dockerfile
Run Code Online (Sandbox Code Playgroud)
发布者/Dockerfile:
FROM microsoft/dotnet:2.2-runtime AS base
WORKDIR /app
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY Publisher/Publisher.csproj Publisher/
RUN dotnet restore Publisher/Publisher.csproj
COPY . .
WORKDIR /src/Publisher
RUN dotnet build Publisher.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish Publisher.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app . …Run Code Online (Sandbox Code Playgroud) 我在Sinatra中创建了一个小聊天应用程序,在heroku上创建了jQuery.它只是在用户提交时将消息插入数据库.并且还每2秒下载一次新消息.经过几分钟的测试后,它停止工作,我收到了一封heroku的电子邮件:
嗨,
我们注意到gisekchat应用程序有大量连接打开共享数据库.由于性能原因,我们必须限制共享数据库的连接数.您是否可以减少共享数据库的总连接数或移动到专用数据库?
您似乎没有利用连接池,并且正在为应用程序中的每个请求打开与数据库的新连接.
谢谢,-Chris
这是支持提交消息的动作(接收非常相似):
post '/send' do
con = con = PGconn.connect($dbhost, 5432, "","",$dbname, $dbuser, $dbpass)
con.exec("insert into messages(usr, msg, date) values('#{params[:usr]}','#{params[:msg]}', now())")
end
Run Code Online (Sandbox Code Playgroud)
我该如何更改它以启用连接池?
是否可以在两个位于不同NAT后面的客户端之间建立直接连接?当然,我意识到在某种程度上,具有公共IP的服务器将是必不可少的,但我不希望它成为代理.看一下以下场景:
A - [路由器1] - S - [路由器2] - 乙
我的问题:
我找到了WCF/WPF聊天应用程序,但结果却是一个代理.
我还发现了一些建议使用UPnP和NAT Traversal的帖子,但没有人直接回答我的第一个问题所以我没有深入研究它.
它只是设置相同内容的不同方式,还是实际上有不同的含义?它与网络配置有什么关系吗?
举个简单的例子,我看不出任何区别:
model = Sequential()
model.add(LSTM(1, batch_input_shape=(None,5,1), return_sequences=True))
model.add(LSTM(1, return_sequences=False))
Run Code Online (Sandbox Code Playgroud)
和
model = Sequential()
model.add(LSTM(1, input_shape=(5,1), return_sequences=True))
model.add(LSTM(1, return_sequences=False))
Run Code Online (Sandbox Code Playgroud)
但是,当我将批量大小设置为12 batch_input_shape=(12,5,1)并batch_size=10在拟合模型时使用时,我收到了错误.
ValueError:无法为Tensor'lstm_96_input:0'提供形状值(10,5,1),其形状为'(12,5,1)'
这显然是有道理的.但是,我认为在模型级别限制批量大小没有意义.
我错过了什么吗?