小编lzl*_*31x的帖子

android数据绑定的优缺点是什么?

我和我的同事都有Web应用程序的MVVM经验,而我们是本机android开发的新手.现在我们对android数据绑定有相反的看法 - 我不喜欢它的粉丝.

我的论点:

  • 减少样板代码,从而减少样板代码
    • 耦合较少
    • 更强的可读性
  • 功能强大,易于实现自定义属性和自定义视图
  • 甚至比findViewById更快(细节)

他的论点:

  • 自动生成的.class会增加应用程序大小.
  • 更难调试

我做了一些调查,但关于它的讨论并不多.现在我想收集android数据绑定的优缺点.

讨论的方面包括但不限于:

  • 单元测试
  • 应用程序大小
  • 性能
  • 学习曲线
  • 可读性
  • 耦合

data-binding android mvvm android-databinding

51
推荐指数
3
解决办法
9655
查看次数

哪个神奇的CSS会导致<button>和<div>之间text-vertical-align的区别?

我发现里面的文字<button>是自动垂直居中的,而里面的文字<div>是顶部对齐的.

我试图找出哪个CSS规则有所不同但失败了.

div,
button {
  width: 4em;
  height: 4em;
  background-color: red;
  padding: 0;
  border: 0;
  margin: 1em;
  font-size: 1em;
  font-family: Arial;
}

div {
  text-align: center;
  display: inline-block;
  cursor: default;
  box-sizing: border-box;
}
Run Code Online (Sandbox Code Playgroud)
<div>text text</div>
<button>text text</button>

<div>text text text text</div>
<button>text text text text</button>

<div>text text text text text text</div>
<button>text text text text text text</button>
Run Code Online (Sandbox Code Playgroud)

至于上面的例子,比较Chrome中的所有计算CSS规则,我只能找到一个不同的对 - align-items: stretchfor <div>while align-items: flex-startfor <button>.

但分配align-items: flex-start并没有帮助.所以我完全糊涂了.

令我感到困惑的是,文本 - …

html css

16
推荐指数
2
解决办法
475
查看次数

TrueType Font的字形由二次Bezier组成.为什么在字形轮廓中出现多个连续的曲线外点?

我正在写一个TTF解析器.为了更好地理解TTF格式,我使用TTX提取C:\ Windows\calibri.ttf的".notdef"字形数据,如下所示.

<TTGlyph name=".notdef" xMin="0" yMin="-397" xMax="978" yMax="1294">
      <contour>
        <pt x="978" y="1294" on="1"/>
        <pt x="978" y="0" on="1"/>
        <pt x="44" y="0" on="1"/>
        <pt x="44" y="1294" on="1"/>
      </contour>
      <contour>
        <pt x="891" y="81" on="1"/>
        <pt x="891" y="1213" on="1"/>
        <pt x="129" y="1213" on="1"/>
        <pt x="129" y="81" on="1"/>
      </contour>
      <contour>
        <pt x="767" y="855" on="1"/>
        <pt x="767" y="796" on="0"/>
        <pt x="732" y="704" on="0"/>
        <pt x="669" y="641" on="0"/>
        <pt x="583" y="605" on="0"/>
        <pt x="532" y="602" on="1"/>
        <pt x="527" y="450" on="1"/>
        many more points
     </contour>
     ...some other xml …
Run Code Online (Sandbox Code Playgroud)

bezier glyph truetype

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

如何使用 React Router v6 和测试库测试路由逻辑?

我按照本教程从 React Router v5 迁移到 v6 。我想用react-testing-library来测试它,但是我的旧单元测试(使用本文档中的模式)停止工作。

我的 React Router v6 应用程序是这样的

const router = createBrowserRouter([
    {
        path: "/",
        element: (
            <>
                <SiteHeader />
                <Outlet />
            </>
        ),
        errorElement: <NotFound />,
        children: [
            { path: "/", element: <Home /> },
            { path: "/posts", element: <Posts /> },
            { path: "/post/:postId", element: <PostPage /> },
        ],
    },
]);

function App() {
    return (
        <div className="app">
            <RouterProvider router={router} />
        </div>
    );
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它使用RouterProvider而不是Switch/ Route …

reactjs react-router react-router-dom react-testing-library

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

如何在 JavaScript 中实现异步函数之间的依赖?

作为一个简化的例子,我有两个异步函数,foobar. bar需要 的结果foo,即bar取决于foo。我不知道首先调用哪个函数。

  1. 如果bar首先调用,barfoofoo完成后立即调用并启动自身。
  2. 如果foo首先调用并完成,则bar可以使用foo.
  3. 如果foo先调用并且barfoo完成之前调用,则bar需要等待foo的结果。(不要对 调用新的调用foo,只需等待已触发的对 的调用foo

我怎样才能做到这一点?
是否可以注册一个异步函数依赖链(类似于 require.js 中的依赖define['foo'], function() { bar(); })?
我可以用$.deferred()它来实现吗?
如何?

javascript jquery dependencies asynchronous deferred

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

如何使用 Json.Net 将 JsonProperty 属性分配给 DLL 内类的属性?

我在 DLL 中有一个类,它没有用DataContract, JsonProperty等标记。现在我想将该类的实例序列化为 JSON 对象,并缩短 C# 属性名称

例如,类是:

public class Foo
{
    public string SomeLengthyCSharpPropertyName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以在 C# 名称和 json 名称之间创建映射。我不能直接添加如下DataContract, JsonProperty属性。有什么解决方法吗?

[DataContract]
public class Foo
{
    [JsonProperty("s")]
    public string SomeLengthyCSharpPropertyName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我倾向于不创建具有相同但JsonProperty修饰属性的另一个类并将属性复制到新类然后序列化。

c# json datacontract json.net

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

如何在浏览器(尤其是 Chrome)中将视频和摄像头录制合并在一起?

目标

我想在浏览器(尤其是 Chrome)中录制/生成带有自定义视频(例如 .mp4、.webm)和摄像头录制的视频。

--------------------------------------------------
|                        |                       |
|  Some Custom Video     |       My Camera       |
|                        |                       |
--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

什么工作

我可以MediaRecorder用来录制我的相机,并与我的视频并排播放录制的视频,并将录制的视频下载为 webm。

挑战

我在将视频和摄像头录制文件并排合并为一个视频文件时遇到了困难。

我的调查

多流混合器

我首先研究了 MultiStreamMixer 并用它构建了一个演示(参见codepen)。

在此处输入图片说明

它的问题在于它会拉伸视频内容以适应相同的大小。我可以为这两个流指定不同的宽度/高度,但它没有按预期工作。我的相机被裁剪了。

在此处输入图片说明

定制混音器

我查看了 MultiStreamMixer 的源代码,发现问题在于其简单的布局逻辑。所以我把它的源代码作为参考并构建了我的自定义混音器。见代码笔

它的工作方式:

  • 我们首先将流逐个渲染到屏幕外的画布上。
  • 从画布捕获流作为输出视频流
  • 音频流使用单独产生AudioContextcreateMediaStreamSourcecreateMediaStreamDestination等。
  • 合并音频和视频流并作为单个流输出。
  • 使用MediaRecorder记录混合流。

它为视频/相机添加了黑色边距,并且不会拉伸视频。

在此处输入图片说明

但是,我发现如果您在录制时在相机前挥手,则录制会非常模糊。

在此处输入图片说明

最初我以为是因为我没有对画布正确设置一些设置。但是后来我发现,即使是我的MultiStreamMixer demo或者WebRTC demo(你在录音中看不清茶壶上的文字)也会用canvas生成模糊的视频。

我在 webrtc 组中询问是否可以解决此问题。同时我调查了ffmpeg.js

ffmpeg.js

我认为这会“工作”,但文件太大。让客户等待下载这个23MB的JS文件是不切实际的。

其他我没试过的方法

以上是我目前的调查。

另一个想法是并排播放视频和录制的视频,并使用屏幕录制 API 录制合并版本。(示例)。但这将要求客户等待与初始录制相同的时间来录制屏幕/选项卡。

将视频上传到服务器并在服务器中进行工作将是我最后的手段。

javascript video ffmpeg canvas mediarecorder

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

为什么我的`PageAsyncTask`在`Page_Load`中同步运行?

我认为GetData注册的任务Page_Load不会阻止加载Index.aspx,因为它是一个异步任务; 渲染页面5秒后,lblData被设置并反映在页面上Index.aspx.

但是,在我的情况下,加载Index.aspx被阻止5秒,等待异步GetData完成.仅在5秒后Index.aspx渲染.

这是预期的吗?或者GetData是同步运行,因为我做错了什么?

// Index.aspx.cs
public partial class Index : Page
{
    protected string lblData;
    protected void Page_Load(object sender, EventArgs e)
    {
        RegisterAsyncTask(new PageAsyncTask(GetData));
        ExecuteRegisteredAsyncTasks();
    }

    public async Task GetData()
    {
        await Task.Delay(5000);
        lblData = "Hello world!";
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我加入Async="true"Index.aspx.

c# asp.net asynchronous

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

关于 Google C++ 风格中的“引用参数”规则

我正在转换我的代码以遵循google C++ 风格指南。引用参数规则规定“所有通过引用传递的参数都必须标记为 const”和“输入参数是值或 const 引用,而输出参数是指针”。

关于签名void MyTable::LoadTable(ifstream &fin),我如何标记fin const给定的参数LoadTable调用一些非常量函数fin,例如fin.seekg?我认为fin应该被视为输入/输出参数,因此它有点特殊。在这种情况下,谷歌员工会怎么做?


更新:我知道谷歌风格指南有很多批评。我只是想知道谷歌员工如何解决这个问题,也许我找到了答案:还有另一个规则Streams读取“仅使用流进行日志记录”。也许他们只是在这种情况下不使用流。

c++ google-style-guide

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