小编Pio*_*rek的帖子

订阅RxJS Observable两次.获得两次响应的价值

假设我有一个Angular 2服务.createTokenfunction从服务器获取登录令牌:

//ANGULAR 2 SERVICE:
//login to application
createToken(email: string, password: string) {
    let headers = new Headers({
        'Content-Type': 'application/x-www-form-urlencoded'
    });

    let data = 'username=' + email + '&password=' + password + '&grant_type=password';

    this.http.post(this.loginURL, data, { headers: headers })
        .map(response => response.json())
        .subscribe(
        response => {
            localStorage.setItem(this.storageTokenKey, response.access_token);
            console.log("Token: " + response.access_token);
        },
        error => {
            console.log(error.text());
        });
}
Run Code Online (Sandbox Code Playgroud)

我需要用我的令牌做两件事:

  1. 将它保存到本地存储(每次都会这样做,所以它应该在服务中)
  2. 在Component中对它做一些操作(显示它或其他)

为了做到这一点(据我所知,Observables),我的createToken函数必须返回Observable<>允许Component使用它来调用它的.subscribe方法对结果进行一些操作.

不幸的是,正如我从RxJS文档中看到的那样,.subscribe方法不会返回Observable<>

那我该怎么办才能调用.subscribe()方法两次呢?

rxjs angular

6
推荐指数
1
解决办法
4707
查看次数

将图像裁剪成不规则形状并拉伸

我找到的图像描绘了我的问题:

在此输入图像描述

在此输入图像描述

用户可以在画布上选择四个点来裁剪图像的一部分而不是拉伸它.

如何在HTML5中做到这一点?drawImage函数(据我所知)仅适用于矩形(取x,y,宽度和高度值),因此我不能使用不规则形状.解决方案必须适用于每个现代浏览器,因此我不希望基于webgl或其他东西的东西.

编辑: 更多信息:这将是用于编辑图片的应用程序.我想让用户剪掉更大图片的某些部分并进行编辑.它类似于Paint,因此需要canvas来编辑像素.

javascript html5 html5-canvas

5
推荐指数
1
解决办法
3225
查看次数

Firefox:按下鼠标按钮时鼠标悬停不起作用

这是我想要做的:https : //gfycat.com/ValidEmbarrassedHochstettersfrog

我想<td>在<table>使用鼠标时突出显示一些对象。该视频是在 Chrome 上录制的,它可以完美运行。不幸的是,它不在 Firefox 上。

下面是它的工作原理:

  1. 用户点击表格中的第一个单元格
  2. 他将鼠标拖到其他单元格
  3. 正在突出显示单元格

代码:

$("#productList").on("mousedown", "td", function () {
   //save from where to start
}

$("#productList").on("mouseover mouseenter mouseover hover", "td", function () {
   //update highlighting, modify classes
   //this function isn't fired when I click on one of <td> and drag mouse somewhere else
}
Run Code Online (Sandbox Code Playgroud)

哪里#productList是<table>。

虽然在 Chrome 中一切都按预期工作,但 Firefox 似乎不会触发 mouseenter 事件(以及我尝试过的任何其他事件)。鼠标悬停仅适用于我单击过的对象。当我使用鼠标拖动时,Firefox 似乎只考虑聚焦的对象。

我怎样才能绕过它?

编辑:要提到的一件重要事情:我<input>在每个单元格中都有一个。这可能会导致问题 https://jsfiddle.net/q8v7f6uv/6/

javascript firefox jquery

5
推荐指数
1
解决办法
981
查看次数

仅包含一个属性,而不是整个数据库行

模型:

public class Word
{
    public int ID { get; set; }
    public string Title { get; set; }
    public DateTime? WhenCreated { get; set; }
    public ApplicationUser Author { get; set; }

    [NotMapped]
    public string AuthorName
    {
        get
        {
            if (Author != null)
            {
                return Author.UserName;
            }
            else {
                return "";
            }
        }
    }

    public List<Definition> Definitions { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

[HttpGet]
    public IEnumerable<Word> Get()
    {
        return _db.Words.Include(x=>x.Author).ToList();
    }
Run Code Online (Sandbox Code Playgroud)

我的控制器现在返回整个ApplicationUser类,它是属性之一Word.我只想发送一个属性ApplicationUser:UserName …

c# asp.net entity-framework entity-framework-core asp.net-core

5
推荐指数
1
解决办法
1025
查看次数

如何在lxml中查找元素的直接子元素

我找到了一个具有特定类的对象:

THREAD = TREE.find_class('thread')[0]
Run Code Online (Sandbox Code Playgroud)

现在我想获取<p>它的直接子元素的所有元素。

我试过:

THREAD.findall("p")

THREAD.xpath("//div[@class='thread']/p")
Run Code Online (Sandbox Code Playgroud)

但所有这些都返回<p>this 内的所有元素<div>,无论它<div>是否是它们最近的父元素。

我怎样才能让它发挥作用?

编辑:

示例 HTML:

<div class='thread'>
   <p> <!-- 1 -->
      <!-- Can be some others <p> objects inside, which should not be counted -->
   </p> 
   <p><!-- 2 --></p>
</div>
<div class='thread'>
   <p>[...]</p>
   <p>[...]</p>
</div>
Run Code Online (Sandbox Code Playgroud)

脚本应该找到两个对象<p>,它们是 的子对象THREAD。我应该收到两个对象的列表,在示例 HTML 的注释中标记为“1”和“2”。

编辑2:

由于人们感到困惑,还有一个澄清:

THREAD是存储在变量中的一些对象,可以是任何 html 元素。我想找到 的<p>直接子对象THREAD。这些<p>元素不能位于THREAD任何位于其内部的元素的外部或内部THREAD。

python xpath lxml

5
推荐指数
1
解决办法
8801
查看次数

UserManager.GetUserAsync 不跟踪更改?

我使用以下函数来检查想要访问某些数据库记录的人是否是该记录的所有者:

public class AccessGuard
{
    public async Task<bool> IsOwnerOrHaveRightsAsync(UserManager<ApplicationUser> userManager, ApplicationUser claimant, ClaimsPrincipal User)
    {
        ApplicationUser fullUser = await userManager.GetUserAsync(User);
        if (claimant.Id == fullUser.Id)
        {
            return true;
        }

        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

它有效,但正如我所注意到的:ApplicationUser现在已添加到 ChangeTracker 中。这意味着我无法userManager.GetUserAsync稍后在代码中调用,因为我收到此错误:

无法跟踪实体类型“ApplicationUser”的实例,因为已跟踪具有相同 {'Id'} 键值的另一个实例。附加现有实体时,请确保仅附加一个具有给定键值的实体实例。

我通常.AsNoTracking()在访问数据库记录时使用,但在 userManager 中没有类似的东西。你会如何解决这个问题?

我在 MVC 控制器方法中使用它,如下所示:

if (!await new AccessGuard().IsOwnerOrHaveRightsAsync(_userManager, Post.Author, User))
{
     return Unauthorized();
}
Run Code Online (Sandbox Code Playgroud)

asp.net entity-framework entity-framework-core asp.net-core

5
推荐指数
1
解决办法
1925
查看次数

使用 IdentityServer4 的 Blazor WebAssembly 应用程序中的“阻止加载混合活动内容”

我正在尝试在我的 Web 服务器上运行默认的 Blazor WebAssembly 项目模板。项目在本地运行时,没有任何问题。将其部署到服务器后出现问题。

我可以成功导航到任何不需要身份验证的页面。但是,当我尝试输入需要登录的内容时,可以看到这样的消息:

尝试登录时出错:“网络错误”

在此处输入图片说明

在网络浏览器控制台中,我可以看到:

阻止加载混合活动内容“ http://[subdomain.domain.com]/.well-known/openid-configuration ”

在 Firefox 的“网络”选项卡中,请求被标记为“已阻止”。

我的网络服务器在充当反向代理的 Nginx 上运行。我计划在 Internet 和 Nginx 之间配置 HTTPS 加密。Nginx 和其他服务之间的通信旨在通过纯 HTTP 进行。这是我的 Nginx 配置:

server {
        listen 80;

        location / {
            return 301 https://$host$request_uri;
        }
    }

[...]
server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name subdomain.domain.com;

        ssl_certificate /etc/nginx_ssl/live/fullchain.pem;
        ssl_certificate_key /etc/nginx_ssl/live/privkey.pem;
        ssl_session_cache builtin:1000 shared:SSL:10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
        ssl_prefer_server_ciphers on;

        location / {
            proxy_pass http://blazorapp:80;
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header …
Run Code Online (Sandbox Code Playgroud)

nginx asp.net-core identityserver4 blazor blazor-client-side

5
推荐指数
1
解决办法
848
查看次数

如何在ListView中禁用滚动?

Xamarin.Forms ListView有一些趋势,在一些最大高度后停止拉伸.当我在ListView中放入太多项目时,它会创建滚动条,当我添加更多它们时,它的高度不会增加.

如果<ListView>滚动条位于<ScrollView>具有滚动条的对象内,则可能会让用户感到困惑.布局bahaves不自然,迫使用户滚动到listview的末尾,以便能够继续滚动scrollView.

所以,总结一下:

如何在ListView中禁用滚动条,强制它具有所有内部子项的高度?

儿童没有平等的高度.此外,他们可以在应用程序生命周期中更

<ScrollView>
    <StackLayout>
        <!-- some buttons and labels -->
        <ListView ItemsSource="{Binding Data}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Padding="20">
                            <!-- Some information -->
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)

我测试我的应用程序的平台:Windows 10 UWP.

xamarin xamarin.forms

4
推荐指数
2
解决办法
1万
查看次数

fetch_mldata:源服务器关闭时如何手动设置MNIST数据集?

我需要运行包含以下行的代码:

from sklearn.datasets import fetch_mldata
mnist = fetch_mldata('MNIST original')
Run Code Online (Sandbox Code Playgroud)

执行它似乎有问题.

TimeoutError:[WinError 10060]连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应

当代码试图从某个地方下载某些内容并且我的互联网连接工作正常时,我认为它想要访问的服务器已关闭.

如何手动设置?

python scikit-learn

4
推荐指数
1
解决办法
4646
查看次数

在单独的 Docker 容器中使用数据库时添加迁移会引发错误

我已经使用自动生成的身份设置创建了 dockerized ASP.net Core 应用程序(所以我已经有了默认的实体框架配置)。我已将 SQL Server 创建为单独的容器,这是我的docker-compose.yml:

version: '3.4'

services:
    blazorapp1:
        image: blazorapp1
        build:
            context: .
            dockerfile: Dockerfile
        depends_on: 
            - db

    db:
        image: "mcr.microsoft.com/mssql/server"
        environment:
            SA_PASSWORD: "[SOMEPASSWORD]"
            ACCEPT_EULA: "Y"

Run Code Online (Sandbox Code Playgroud)

我已经测试了数据库配置:当 Visual Studio 为我生成身份设置时,我可以成功创建新用户,并且它们已正确存储在内存中。

然后我想创建新的数据库表:

public class ApplicationDbContext : IdentityDbContext
{

    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }

    public virtual DbSet<WeightLog> WeightLogs { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

为了应用这些更改,我Add-Migration WeightLogger在包管理器控制台中使用过。

这是一个输出:

PM> Add-Migration WeightLogger
Build started...
Build succeeded.
An error occurred while accessing the Microsoft.Extensions.Hosting services. Continuing …
Run Code Online (Sandbox Code Playgroud)

asp.net entity-framework entity-framework-core .net-core asp.net-core

4
推荐指数
1
解决办法
1534
查看次数