小编Art*_*tru的帖子

打字稿自定义工具,转换器,扩展名

我想.tstsc开始转换过程之前更改/检查文件,类似于Roslyn为C#提供的文件.

这对静态类型检查很有用.例如,正确和简短的Immutable Record实现需要在编译时进行代码更改/静态检查,因为可以使用Flow完成:

@Record(Person)
interface IPerson {  
  givenName: string;
  familyName: string;
}
Run Code Online (Sandbox Code Playgroud)

然后自定义tsc转换器可以修改代码:

interface IPersonParams {  
  givenName?: string;
  familyName?: string;
}
@Record()
class Person {  
  private readonly __givenName;
  private readonly __familyName;
  constructor(init) {
    this.__givenName = init.givenName;
    this.__familyName = init.familyName;
  }
  get givenName() {
    return this.__givenName;
  }
  get familyName() {
    return this.__familyName;
  }
  update(update: IPersonParams) {
    // ignore the bug when undefined param is passed
    return new Person({
      givenName: update.givenName || …
Run Code Online (Sandbox Code Playgroud)

compilation visual-studio typescript visual-studio-code

7
推荐指数
1
解决办法
217
查看次数

JS用线条制作打标效果的好方法

有一种效果,用线指向图像的特殊元素.请参阅http://snapsvg.io/上的鳄鱼示例.
当图像首先出现时,没有任何线条指向:

在此输入图像描述

滚动后出现带有提示的行:

在此输入图像描述

我知道有https://github.com/julianlloyd/scrollReveal.js和许多其他js库出现的效果.

问题是如何制作这些线条,将它们放在通常图像(不是SVG)顶部的精确点上,并在滚动时设置动画线条?

很高兴知道这种方法/效果的名称(谷歌的内容),并查看好/坏经验或js库的评论.

更新:想要查看图像调整大小和精确指向的已解决问题,

在大多数情况下,请参见http://www.sitmed.com.br/produto?id=2上的示例,图像具有固定的isze且不可扩展,这对大屏幕或小屏幕不起作用.我认为可以在javascript中编写缩放库,使用svg/canvas甚至是普通div.Otherewise点将跳过图像缩放.

javascript css

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

RISC与CISC堆栈

以下是有关RISC(与CISC)的"汇编语言简介"一书的引用

在MIPS中,我们可以在不使用堆栈的情况下编写过程.对于大多数正常过程,我们不必使用堆栈.大量寄存器的可用性允许我们使用基于寄存器的参数传递.但是,当我们编写递归过程时,我们必须使用堆栈.

我对在没有堆栈的情况下工作的魔力感到非常困惑.任何标准程序都有一个链调用:Main() - > Function1() - > Function2() - > ... - >

即使有很多寄存器(128),通常也是如此:

  1. 决定你应该采取哪些寄存器并保存它们的上下文(通常是在堆栈上推送)
  2. 提供运营
  3. 返回寄存器状态(通常从堆栈中弹出)

没有人阻止我们在CISC中使用基于寄存器的参数传递,特别是在现代处理器上.那么,如何在没有堆栈的情况下执行一个程序con RISC呢?

stack processor

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

ADO.NET 不同的数据库

程序员需要的是一种以标准、一致和强大的方式概括不同数据系统的方法。在 .NET 应用程序开发领域,Microsoft ADO.NET 满足了这一需求。使用 ADO.NET 的程序员不必担心与不同数据库系统相关的细节,而是专注于数据内容本身。

来自“ADO.NET 4 Step by Step”一书

一直在思考下一个结构。

ADO.NET 可以分为两部分:

1. 经典 ADO.NET(数据集、数据表等)。在经典变体中,有不同的 DB 连接提供程序,每个提供程序将 DB 内部数据转换为 .NET。例如,MS SQL Server 以一种方式保存数据,而 Oracle 以另一种方式保存数据。所以我们可以通过改变提供者来改变数据库。

看似灵丹妙药,但所有 ADO.NET 语句都是硬编码的。

对于 MS SQL 前 10 条选择语句是SELECT TOP 10 ROWS FROM TABLE,对于 Oracle SELECT ROWS FROM TABELE WHERE ROWNUM <= 10似乎更改数据库和提供程序无济于事,不是吗?

2. 实体框架。该框架具有内部独立的语言语句,可以转换为选择的 DB 语句,这看起来真的很神奇:

LINQ -> 内部 EF 语句 -> MS SQL DB,

LINQ -> 内部 EF 语句 -> Oracle DB。

那么在经典的 ADO.NET …

ado.net

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