小编Rea*_*ues的帖子

包含第三方库的类型会导致未通过 angular CLI 找到模块?

我试图在我的 Angular 9 应用程序中包含 Apple MapKit JS 的类型,因为库没有提供高质量的类型,@types作用域包中也没有任何好的第三方类型。然而,Angular CLI 对我如何包含我的类型并不满意。我在编译时收到的确切错误是:

Module not found: Error: Can't resolve 'mapkit' in `components/map.component.ts`.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

打字

~src/types/mapkit/index.d.ts

这是类型声明的地方,以及它们是如何声明的。

Module not found: Error: Can't resolve 'mapkit' in `components/map.component.ts`.
Run Code Online (Sandbox Code Playgroud)

打字稿配置

配置文件

declare module 'mapkit' {
  // interfaces, classes, etc here
}
Run Code Online (Sandbox Code Playgroud)

tsconfig.app.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "module": "esnext",
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2015",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2019",
      "dom" …
Run Code Online (Sandbox Code Playgroud)

typescript angular mapkit-js

14
推荐指数
1
解决办法
1328
查看次数

如何用npm升级Libsass?

我目前正在运行NPM的node-sass工具,但它运行的libsass版本是3.2.2,我需要运行的版本是3.2.4,因为这修复了我在其中一个框架中的一个关键错误使用.

在此输入图像描述

我找不到有关如何构建和/或更新node-sass或libsass以满足我的要求的信息.我已经在运行最新版本的node-sass,3.1.2.

然而,我的node-sass package.json似乎有一个键:值对,表示libsass是3.2.4,但这显然是不正确的.

升级我的libsass版本的最简单方法是什么?

更新

6月6日

我做了一些额外的搜索,仍然无法使libsass处于3.2.4的版本.我已经尝试升级较旧的node-sass包,并检查我的环境变量是否有覆盖.还没有解决方案.

6月7日

似乎由node-sass提供的Libsass版本是3.2.4,但它没有被拾取,并且默认为Libass binarypath:

path.join(__dirname, '..', 'vendor', sass.binaryName.replace(/_/, '/'));
Run Code Online (Sandbox Code Playgroud)

在我的机器上产生:

H:\myproj\node_modules\gulp-sass\node_modules\node-sass\vendor\win32-x64-14\binding.node
Run Code Online (Sandbox Code Playgroud)

我不知道这是什么意思.看看node-sass\lib\extensions.js第134行:

sass.getBinaryPath = function(throwIfNotExists) {
  var binaryPath;

  if (flags['--sass-binary-path']) {
    binaryPath = flags['--sass-binary-path'];
  } else if (process.env.SASS_BINARY_PATH) {
    binaryPath = process.env.SASS_BINARY_PATH;
  } else if (pkg.nodeSassConfig && pkg.nodeSassConfig.binaryPath) {
    binaryPath = pkg.nodeSassConfig.binaryPath;


  // This is the only statement that executes successfully, my libsass binary path is coming from this location. Why?
  } else {
    binaryPath = path.join(__dirname, '..', 'vendor', …
Run Code Online (Sandbox Code Playgroud)

sass node.js node-sass libsass

13
推荐指数
1
解决办法
9832
查看次数

如何在数据库中存储包含照片和格式的文章?

看看Storehouse上的一些文章,比如这篇文章.它们很好,照片很丰富,这使它们很有吸引力,但它们不仅仅是文章.从我的角度来看,他们有照片和其他无关的组件使得它们更复杂,用于存储它们.简而言之,在数据库级别为个人站点或项目创建类似文章实现的最佳方法是什么?

通过这个,我的意思是说,我要写一篇文章,分为8段,其中一段是兄弟姐妹的孩子<section>,在这些部分之间会有各种不同布局的照片 - 一张视差照片,例如全页照片和画廊风格的查看器 - 甚至可能是引号.这产生了一个相当复杂的HTML结构,比明文文章更简单,文章可以简单地存储在数据库中,然后只在网页上的两个标签之间输出.如何以数据库和应用程序适当的方式存储所有这些信息,HTML标签,类名等?

我想出了一些想法,但我不完全确定最佳实践或每个选项的优缺点.

选项1:将所有内容以纯文本形式存储在数据库字段中.

这是最简单的,但也是最丑陋的.所有内容,图像标记,类名和所有内容都以纯文本形式存储在表格内的article_text字段article中.

选项2:将文章文本和格式存储在数据库字段中,然后将图像存储在另一个表中.

这是1和3的混合解决方案.基本上,您可以参考文章中的图像部分,如下所示:

{{ imageSection1 }}
Run Code Online (Sandbox Code Playgroud)

说,并让你的应用程序逻辑集成并编织成最终产品.这在数据库方面很容易,但在applogic方面却更加混乱.

选项3:分别存储所有内容.

每个段落都是表中的自己的条目article_collation,图像和注释以及引号存储在它们自己的独立表中.这似乎是分离应该单独存储的不同元素的最有效方法,但它会使程序逻辑变得模糊不清,并可能因此而变得不那么有效.


每个人都有重大问题IMO,我不知道该怎么做.输入?建议?是否有任何工具可以使这更容易?

html architecture database-design

11
推荐指数
1
解决办法
3674
查看次数

SQL加入一对多关系 - 计算每个图像的投票数?

好的,我有2张桌子:

images                           votes
----------------------------     --------------------
image_id |  name | square_id     vote_id |  image_id
----------------------------     --------------------
1         someImg    14          1            45  
2         newImg     3           2            18     
3         blandImg   76          3            1 
...                              ...
n                                n
Run Code Online (Sandbox Code Playgroud)

这是一对多的关系.每个图像可以有多个投票,但投票只能与一个图像相关.我正在尝试生成一个连接查询,它将显示图像ID,以及它在指定条件下(例如,基于square_id)的投票数.因此查询结果看起来类似于:

query_result
----------------------
image_id |  vote_count
----------------------
18          46
26          32
20          18
...
55          1
Run Code Online (Sandbox Code Playgroud)

但我能做的最好的就是:

query_result
----------------------
image_id |  vote_id
----------------------
18          46
18          45
18          127
26          66
26          43
55          1
Run Code Online (Sandbox Code Playgroud)

看到问题?每个image_id都列出了多次vote_id.这是产生这个的查询:

SELECT images.image_id, votes.vote_id 
  FROM …
Run Code Online (Sandbox Code Playgroud)

mysql sql join

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

从性能角度来看,将MySQL临时表用于高度使用的网站功能的效率如何?

我正在尝试为网站编写搜索功能,我已经决定使用MySQL临时表来处理数据输入的方法,通过以下查询:

CREATE TEMPORARY TABLE `patternmatch`
  (`pattern` VARCHAR(".strlen($queryLengthHere)."))

INSERT INTO `patternmatch` VALUES ".$someValues
Run Code Online (Sandbox Code Playgroud)

$someValues具有布局的一组数据在哪里('some', 'search', 'query')- 或者基本上是用户搜索的数据.然后我images根据表中的数据搜索我的主表,patternmatch如下所示:

SELECT images.* FROM images JOIN patternmatch ON (images.name LIKE patternmatch.pattern)
Run Code Online (Sandbox Code Playgroud)

然后我根据每个结果与输入匹配的程度应用启发式或评分系统,并通过启发式等显示结果.

我想知道创建临时表需要多少开销?我知道它们只存在于会话中,并在会话结束后立即被删除,但如果我每秒有数十万次搜索,我会遇到什么样的性能问题?有没有更好的方法来实现搜索功能?

php mysql performance temp-tables database-performance

10
推荐指数
1
解决办法
1586
查看次数

scrollIntoView()不是页面加载时的函数?

我有一组常见问题解答,我默认隐藏了答案,只留下了问题,我通过在每个问题中嵌入一个id锚点来提供每个特定问题的链接,以便其他人可以链接到它.

问题格式结构如下:

<div class="contents">
   <h1 class="question" id="titleOfQuestion">Some Question Title</h1>
   <div class="answer" id="titleOfQuestion">>
      Some Answer
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

如果URL中有ID锚点,我需要在页面加载时将问题滚动到视图中,因为div.contents它具有固定的高度并且经常溢出属性scroll.

包含在文档就绪处理程序中,以下代码不起作用:

if(document.location.hash) {
var id = document.location.hash.substring(1);
    $('div#' + id).scrollIntoView();
}
Run Code Online (Sandbox Code Playgroud)

我在Firebug中收到错误:TypeError: $(...).scrollIntoView is not a function.但是,如果我从同一位置重新加载URL,它确实有效.

这里发生了什么?

javascript jquery

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

如何提高视差滚动脚本的性能?

我正在使用Javascript和jQuery构建一个视差滚动脚本来操作figure元素中的图像transform:translate3d,并根据我所做的阅读(Paul Irish的博客等),我被告知这个任务的最佳解决方案是requestAnimationFrame出于性能原因使用.

虽然我理解如何编写Javascript,但我总是发现自己不确定如何编写好的 Javascript.特别是,虽然下面的代码看起来运行正常且顺畅,但我想解决一些我在Chrome开发工具中看到的问题.

$(document).ready(function() {
    function parallaxWrapper() {
        // Get the viewport dimensions
        var viewportDims = determineViewport();         
        var parallaxImages = [];
        var lastKnownScrollTop;

        // Foreach figure containing a parallax 
        $('figure.parallax').each(function() {
            // Save information about each parallax image
            var parallaxImage = {};
            parallaxImage.container = $(this);
            parallaxImage.containerHeight = $(this).height();
            // The image contained within the figure element
            parallaxImage.image = $(this).children('img.lazy');
            parallaxImage.offsetY = parallaxImage.container.offset().top;

            parallaxImages.push(parallaxImage);
        });

        $(window).on('scroll', function() {
            lastKnownScrollTop = $(window).scrollTop();
        });

        function …
Run Code Online (Sandbox Code Playgroud)

html javascript performance requestanimationframe

9
推荐指数
2
解决办法
1530
查看次数

创建数据集以便最终集成到网站的MySQL和Google Maps API中?(la多边形点,碰撞定理等)

在过去的几个月里,我一直在自学PHP,PDO和SQL,并建立了一个基本的动态网站,其中包含用户注册/电子邮件激活/登录注销功能,遵循PHP/SQL最佳实践.现在我坚持下一个任务......

我创建了一个巨大的正方形/多边形数据集(300万+),每个纬度和经度的1分钟,存储在一个PHP数组中,有一组坐标(左上角).为了推断一个方形的形状,我只需向每个方向添加0.016度(~1分钟)并生成其他3个坐标.

我现在需要检查所述阵列中的每个多边形是否至少在美国的一部分土地上....即,如果要生成我完成的数据集的图形输出并查看圣弗朗西斯科海岸线,他们会看到类似这样.

它类似于多边形点问题,除了它处理另一个多边形而不是一个点,另一个多边形是一个国家边界,我不只是看交叉点.我想检查一下:

  • 多边形/正方形与多边形相交.(想想海岸线/边境).
  • 多边形/正方形位于多边形内.(想想美国大陆).
  • 多边形/正方形包含多边形的一部分.(想想小岛).

这用粗略绘制的图像说明:

这不容易!

如果它符合这三个条件中的任何一个,我想保留正方形.如果它无论如何都不与大多边形相互作用(即它在水面上),则丢弃它.

我以为大的多边形将是美国的shapefile,或者是一个KML文件,我可以从中删除坐标以创建一个非常复杂的多边形.

然后,我想我会将这些匹配的正方形和方形ID 传递给csv文件,以便集成到包含每个方块的一组坐标的MySQL表中(事实上,我甚至不确定处理表的最佳实践在MySQL中的那个大小,但我会在需要时得到它).最终目标是使用Google Maps API通过Javascript开发地图,在我正在编码的网站上的地图上显示这些方块(显然只显示视点内的方块,以确保我不会将我的数据库纳入死亡).我很确定我也必须首先通过PHP传递这些信息.但与实际制作所述数据集的任务相比,所有这些似乎都相对容易.

这显然是无法手工完成的,因此需要自动化.我知道一点Python,那会有帮助吗?关于从哪里开始的任何其他提示?有人愿意为我写一些代码吗?

php mysql google-maps dataset point-in-polygon

8
推荐指数
1
解决办法
666
查看次数

Laravel作业队列未使用Redis驱动程序进行处理

我正在创建一个作业,将其推送到自定义队列,并尝试使用Redis驱动程序然后在它到达队列时处理该作业,但没有成功:

class MyController extends Controller {
    public function method() {
        $job = (new UpdateLiveThreadJob())->onQueue('live');
        $this->dispatch($job);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的队列配置:

    'default' => env('QUEUE_DRIVER'),

    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue'  => 'default',
        'expire' => 60,
    ],
Run Code Online (Sandbox Code Playgroud)

这是我的.env档案:

# Drivers (Queues & Broadcasts)
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=redis
BROADCAST_DRIVER=redis
Run Code Online (Sandbox Code Playgroud)

这是我的工作:

class UpdateLiveThreadJob extends Job implements SelfHandling, ShouldQueue
{
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
    }

    /**
     * Execute the job. …
Run Code Online (Sandbox Code Playgroud)

php publish-subscribe redis laravel

8
推荐指数
1
解决办法
8649
查看次数

Node.js 流不会在使用之间刷新。怎么冲?

我遇到了 Node.js Streams/Buffers 的问题,它们在第一次使用后没有被关闭/刷新。我有一个从中创建的读取流fs.createReadStream,我正在通过管道传输到自定义写入流。在highWaterMark每个块是〜2MB(这很重要)。当我最初流过一个 ~3MB 的文件时,它被我的流处理成 2 个块,首先是一个 ~2MB 的块,然后是一个 ~1MB 的块。这是预期的。

在我通过的第二个文件中,第一个块只有 ~1MB。这是一个问题。当我将管道传输的字节相加时,我可以清楚地看到在第一个文件之后,相关的流/缓冲区没有被正确清理。这可以用以下数学表示:

传输的第一个文件的最终块为 875,837 字节。传输的下一个文件的第一个块是 1,221,316 字节(预期:2,097,152 字节)。当您将 875,837 与 1,221,316 相加时,您会得到 2,097,153,这是我之前提到的高水位线(有一个错误)。

这是我得到的代码:

return new Promise(async (resolve, reject) => {
    const maximalChunkedTransferSize = 2*1024*1024; // 2MB (Minimum amount, Autodesk recommends 5MB).

    const pathToFile = await bucketManagement.locationOfBucketZip(bucketEntity.name);
    let readFileStream = fs.createReadStream(pathToFile, { highWaterMark: maximalChunkedTransferSize });

    let writeStream = new HttpAutodeskPutBucketObjectWriteStream(accessToken, bucketEntity);
    readFileStream.pipe(writeStream);

    writeStream.on("finish", () => {
        resolve(writeStream.urn);
    });
    writeStream.on("error", err => reject("Putting …
Run Code Online (Sandbox Code Playgroud)

buffer stream node.js

8
推荐指数
1
解决办法
1454
查看次数