小编fis*_*one的帖子

FAT32格式存储上的文件系统链接

我知道FAT32,以及FAT16/12既不支持符号链接也不支持硬链接.不过我提出了这个想法:

FAT规范描述了每个文件都与目录条目相关联.根据我的理解,可以说目录中的文件条目以某种方式或其他方式指向文件的内容.

那么,我如何定义两个指向相同文件内容的目录条目?或者,什么可以阻止我这样做?

使用案例:我的汽车收音机有一个USB大容量存储设备,我想使用目录作为播放列表,因为收音机软件不支持播放列表.因此,对我来说,执行此操作时Windows的行为并不重要.

filesystems hardlink fat32 fat file-link

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

如何在编辑commit-notes(命令行客户端)时取消svn commit

我在Linux上使用命令行SVN客户端.我键入svn commit了调用它vim来编辑提交注释.当我查看已修改和添加的文件列表时,我决定取消提交.但是我怎样才能做到这一点?已经太晚了吗?

svn commit command-line-interface svn-client

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

解决方法:将对象作为键的javascript字典

我读了一些关于javascript字典实现的问题和答案,但它们不符合我的要求:

  • 字典必须能够将对象作为键
  • 这些值必须由[] -operator访问

所以我提出了在Object.prototype中覆盖"valueOf"方法的想法,如下所示:


   Object.__id__ = 0;
   Object.prototype.valueOf = function() {
      if(!this.__id__)
         this.__id__ = ++Object.__id__;
       return "__id__" + this.__id__;
   }
   Object.prototype.toString = Object.prototype.valueOf;

   //test   
   var x = {p1: "5"};
   var y = [6];
   var z = {};
   z[x] = "7";
   z[y] = "8";
   console.log(z[x], z[y]);
Run Code Online (Sandbox Code Playgroud)

我用google-chrome进行了测试,看起来效果很好,但我有点怀疑,这是否会带来一些弊端,因为它很容易实现.

考虑到valueOf方法在整个代码中没有用于其他目的,您认为有任何缺点吗?

javascript dictionary hashtable

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

Tortoise SVN:比较两个目录(而不是文件或修订)

您可以使用Tortoise SVN比较两个修订或文件.还有比较两个目录的方法吗?

我有两个包含源代码的目录.90%的代码是相同的.现在我要在插件中存储相同的代码,因为重复的代码很糟糕.如果有比较两个目录的方法,Tortoise Diff将是完美的.

我怎样才能做到这一点?如果使用Tortoise是不可能的,那么为此目的,您是否还有其他想法/工具?

svn diff tortoisesvn compare code-duplication

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

面向对象的CSS

我看过这个关于面向对象的css的演示文稿,但我想我要么不理解它,要么不理解使用OO CSS的好处:

示例HTML:

<div class="border-1 bg-2 color-1 font-1">
</div>
Run Code Online (Sandbox Code Playgroud)

CSS示例:

/* borders */
.border-1 { border: 1px solid red; }

/* backgrounds: */
.bg-2 { background: yellow; }

/* other sections */
Run Code Online (Sandbox Code Playgroud)

我看到能够快速更改多个元素的样式的优势,例如,能够切换颜色方案将非常有用.

但实际上,您在HTML中定义样式/外观,或者至少是其中的一部分.当然,它比使用style属性更好,因为您仍然可以为一组组交换样式.

关键是,你是在HTML中定义样式组,但我了解到你应该在HTML中创建"逻辑"组(例如class="nav-item"/ class="btn submit-btn"),CSS完全应用样式并定义哪些元素属于"风格" "观点(例如.nav-item, .submit-btn { background: red; }).

也许我完全误解了这个概念.但是,我仍然不知道构建CSS的好方法.

html css oop oocss

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

C++ STL:由于迭代器和reverse_iterator缺少基类而复制代码

在我目前的C++项目中,我有一个STL映射,它将整数键映射到对象上.算法返回一组条目.返回的数据取决于算法的输入,因此无法预测:

  class MyClass
  {
     //...
  };

  int myAlgorithm(vector<int>::iterator inputIt)
  {
     // return a key for myMap which is calculated by the current value of inputData
  }

  int main(int argc, char *argv[])
  {
     vector<int> inputData;
     map<int, MyClass> myMap;
     //<fill map with some data>
     //<fill inputData>

     vector<MyClass> result;

     for (vector<int>::iterator it = inputData.begin(); it != inputData.end(); it++)
     {
        int myMapKey = myAlgorithm(*it);
        // count() > 0 means "check whether element exists. Performance can be improved by replacing
        //    the operator[] and count() …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism iterator stl map

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

Angular HttpClient 流

我正在为 Cordova/iOS 开发一个 Angular 应用程序。我从后端服务获得了大约 100 MB 的数据,这似乎让 iOS 的网络视图 (WKWebView) 崩溃了。至少我没有遇到返回较少数据的测试后端崩溃。

数据将存储在 IndexedDB 中,因此没有理由用所有这些数据填充 RAM。

所以我的想法是将响应直接流式传输到 IndexedDB 中。有可用的库即使使用 JSON 也可以做到这一点,例如Oboe.jsJSONStream

AngularHttpClient以大字符串或 JSON 对象的形式返回整个响应,这不是我想要的。有没有一种方法可以逐步处理类似于此的响应:https : //stackoverflow.com/a/18964123/395879

ajax xmlhttprequest angular angular-httpclient

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

Chrome 忽略 HTTP WWW 验证领域

我们的网络应用程序具有用户/密码身份验证。它在 Web 服务器上运行,该服务器本身通过 HTTP 基本身份验证进行保护。这只是一个临时解决方案/解决方法。Web 应用程序的身份验证将来就足够了,但目前 Web 服务器基本身份验证根本阻止访问 Web 应用程序。

如果未在应用程序级别进行身份验证,Web 应用程序将返回状态代码 401。标WWW-Authenticate头定义了不同的领域,因此浏览器不会在 Web 服务器和 Web 应用程序身份验证之间混淆:如果我们没有定义不同的领域,则一旦应用程序的 401 到达,浏览器就会丢弃 Web 服务器凭据。

到目前为止,一切都很好。然而,我们的应用程序有自己的身份验证对话框。对于 XHR 请求,我们希望自己处理 401 状态,并且需要阻止浏览器的内部基本身份验证窗口。有一个简单的技巧:只需调整身份验证标头 ( WWW-Authenticate) 即可使用自定义身份验证方法:

WWW-Authenticate: CustomBasic realm="myapp"
Run Code Online (Sandbox Code Playgroud)

Web 服务器返回:

WWW-Authenticate: Basic realm="webserver"
Run Code Online (Sandbox Code Playgroud)

这适用于 Firefox,但不适用于 Chrome。Chrome 在使用时会忽略领域CustomBasic,并丢弃领域“webserver”的凭据(用户/密码),就好像我们根本没有定义领域“myapp”一样。

你知道为什么吗?您是否知道满足以下要求的解决方案:

  • 保持两个领域的 401 状态
  • 不要在应用程序级别显示浏览器的基本身份验证窗口(特别是对于 XHR 请求)

是的,我知道我们可以通过在应用程序级别使用不同的 HTTP 状态代码并分别处理它们来简单地解决此问题。但如果可能的话,我想保留正确的状态代码 401。这也可能是一个有效的用例,例如,如果您有两个可通过同一主机上的两个不同 URL 路径访问的 Web 应用程序。

authentication webserver http basic-authentication http-status-code-401

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

模型对象的普通对象 VS 类实例

在 Angular/TypeScript 中创建模型对象的最佳实践是什么:

  1. 我应该将类型注释与对象表示法一起使用Object吗(对象是 的普通实例)?例如let m: MyModel = { name: 'foo' }

  2. 我应该使用new运算符(对象是相应原型的实例)吗?

  3. 这两种方法应该混合使用吗?(例如,普通对象,当从 接收响应时HttpClient,但new MyModel('foobar')为了方便通过将属性作为构造函数参数传递来创建实例)

这个问题的背景

我是 TypeScript 的新手,和许多其他开发人员一样,我来自流行的面向对象语言,如 Java。

我理解的一个核心概念是 TypeScript 中的类型注释在运行时不起作用。它们对编译器和编辑器的自动完成很重要。基本上它是带有编译时类型检查的 ECMAScript。

当时我不知道这一点,并希望 TypeScript 成为某种“客户端 Java”,我发现了这个 Angular 错误报告:https : //github.com/angular/angular/issues/20770

人们(不理解 TypeScript 的类型概念)抱怨HttpClient没有将返回的普通对象转换为他们的模型类类型。其他人为这种行为辩护并指出 JavaScript 中没有运行时类型。

这里出现了我的问题:事实上,JavaScript 中有运行时类型。您可以使用new运算符创建原型的实例,甚至可以使用运算符检查它们的构造函数instanceof

在 TypeScript 中,您有两种创建实例的方法:

1) 使用对象表示法(如Angular 教程中所示):

hero: Hero = {
  id: 1,
  name: 'Windstorm'
};
Run Code Online (Sandbox Code Playgroud)

2) 使用new-operator:

hero: Hero = …
Run Code Online (Sandbox Code Playgroud)

javascript prototypal-inheritance typescript angular

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

LR(0) 解析器不是也使用前瞻吗?

LL(1) 解析器需要一个前瞻符号来决定使用哪个产生式。这就是为什么我一直认为使用术语“先行”的原因,当解析器查看下一个输入标记而不“消耗”它时(即它仍然可以通过下一个操作从输入中读取)。然而,LR(0) 解析器让我怀疑这是正确的:

我见过的每个 LR(0) 解析器示例也使用下一个输入标记来决定是移动还是减少。在减少的情况下,不消耗输入令牌。

我使用免费软件工具“ParsingEmu”生成 LR 表并在下面对单词“aab”执行 LR 评估。如您所见,列标题包含标记。从评估中您可以看到解析器正在通过查看下一个输入标记来决定使用哪一列。但是当解析器在步骤 4 - 6 中减少时,输入不会改变(尽管解析器在执行到下一个状态的转换时需要知道下一个输入标记“$”)。

语法:

S -> A
A -> aA
A -> b
Run Code Online (Sandbox Code Playgroud)

桌子: LR表

评估: LR评价

现在由于我的困惑,我做了以下假设:

  1. 我对“lookahead”定义的假设(lookahead = input token not be used)是错误的。Lookahead 对于 LL 解析器或 LR 解析器意味着两种不同的东西。如果是这样,那么如何定义“前瞻”?

  2. LR 解析器具有(从理论的角度来看,当您使用下推自动机时)额外的内部状态,它们通过将输入标记放在堆栈上来消耗输入标记,因此能够通过查看来做出移位减少决策在堆栈上。

  3. 上面显示的评估是LR(1)。如果为真,LR(0) 评估会是什么样子?

现在什么是正确的,1、2 或 3 还是完全不同的东西?

compiler-construction parsing ll-grammar shift-reduce lr-grammar

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