小编Dav*_*las的帖子

iOS:方法在设备和模拟器上测试慢25倍

我有一种方法,与模拟器相比,在设备(iPhone3G)中运行非常慢的测试.

虽然模拟器可以在1秒内处理大约100次该方法的执行,但设备只能在一秒内运行4次.

有什么能让它变得如此懒散?

代码:注意:该方法从两个日期(事件的开始日期和结束日期)计算人类友好的字符串.

-(void)calculateDiaDeInicioYFinTexto
{
    NSLog(@"inicio");
    NSAutoreleasePool *localPool = [[NSAutoreleasePool alloc] init];

    NSMutableString *auxString = [NSMutableString string];

    NSLocale *currLocale = [NSLocale currentLocale];

    NSString *stringFormatDay = [NSDateFormatter dateFormatFromTemplate:@"d" 
                                                                options:0 
                                                                 locale:currLocale];
    NSString *stringFormatDayMonth = [NSDateFormatter dateFormatFromTemplate:@"dMMMM" 
                                                                     options:0 
                                                                      locale:currLocale];
    NSString *stringFormatDayMonthYear = [NSDateFormatter dateFormatFromTemplate:@"dMMMMYYYY" 
                                                                         options:0 
                                                                          locale:currLocale];

    NSDateFormatter *formatterDay = [[NSDateFormatter alloc] init];
    [formatterDay setDateFormat:stringFormatDay];
    [formatterDay setLocale:currLocale];

    NSDateFormatter *formatterDayMonth = [[NSDateFormatter alloc] init];
    [formatterDayMonth setDateFormat:stringFormatDayMonth];
    [formatterDayMonth setLocale:currLocale];

    NSDateFormatter *formatterDayMonthYear = [[NSDateFormatter alloc] init];
    [formatterDayMonthYear setDateFormat:stringFormatDayMonthYear];
    [formatterDayMonthYear setLocale:currLocale];


    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSDateComponents …
Run Code Online (Sandbox Code Playgroud)

performance ios ios-simulator

8
推荐指数
2
解决办法
2542
查看次数

在RootViewController中通过UITableView浮动视图

在RootViewController的主UITableView中.

如何在RootViewControllers TableView上添加一个View,它的位置相对于屏幕而不是TableView,所以它不会随之滚动?

注意 - 它将是一个进度条,显示表下载进度的新数据.

cocoa-touch uitableview

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

Javascript string.prototype.contains()与语言环境

是否可以检查字符串是否包含具有语言环境支持的子字符串?

'Ábc'.contains('A') 应该是真的。

Javascript现在具有string.prototype.localeCompare(),可与区域设置支持进行字符串比较,但我看不到localeContains()对应的字符串。

javascript string localization

6
推荐指数
2
解决办法
536
查看次数

刷新缓存的Angular SPA

基本设置:Apache 2.4提供的Angular 1.5 SPA由REST api支持,也支持Apache 2.4.

我已经阅读了所有可用的技术,以便在服务器上更改某些应用程序代码后允许SPA更新并更新.

解决方案来自HTTP缓存(HTTP标头)或缓存清除(例如版本控制文件名)技术.所有这些都基于Web浏览器发出请求获取资源并具有一些机制来了解内容是否需要更新或是否可以从缓存提供.

SPA的主要问题是,在初始加载后通常不会对资源进行请求,因为Web应用程序在浏览器中加载得很快,并且只启动对后端的XHR调用来加载数据.在许多情况下,由于长时间不刷新文件的不便,用户不会关闭标签很多天.

最难的问题是index.html文件(见本文).这个只在您第一次在浏览器中加载应用程序时调用,然后永远不会请求它.只有手动浏览器页面重新加载才能初始化此文件的第二个请求.

所有javascript和css文件在请求后加载index.html,然后永远不会重新加载.只有新的请求index.html可以刷新它们.

如果index.html在初始加载后没有获取请求,那么缓存控制头或缓存清除策略如何允许javascript或css文件在服务器上更改时刷新?

我遇到了这个问题的两种方式:

  1. REST API必须与Web应用程序兼容.如果我在API中引入了重大更改,并且用户没有重新加载页面,则可能会触发离开数据不一致的错误.

  2. 由于html文件可以重新加载而javascript或css文件没有这样做,因此可以提供不兼容的html文件(例如缺少CSS类定义或范围引用).

我发现的唯一真正的解决方案是:

  1. 这个答案
  2. 检查每个XHR调用当前部署的版本,并检查它是否与浏览器中加载的版本不同,

但:

  1. 在绝大多数情况下,保持所有版本化(数据库,API,服务器代码,客户端代码)的每个人都将处于同一版本中似乎需要很多开销.
  2. 这将是非常用户不友好的,有一条消息告诉整个应用程序将被重新加载并丢失未保存在后端的所有数据.考虑填写表格,按下保存后再强制重新输入所有数据.

我遗漏了每个人如何处理Angular缓存的问题?

caching cache-control angularjs

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

HTML - 将图像放在新行中

我有一系列段落.每一个都以一个说明结束,阐明了该段中解释的主题.

我希望插图在一个新的行上,而不是与文本一起显示,我找到了以下解决方案,它有自己的问题:

将插图放在与插图相关的文本不同的<p>中.

<p>Some text here<p/>
<p><img src="myphoto"/></p>
Run Code Online (Sandbox Code Playgroud)

这似乎解决了所有问题,但后来我需要将一些段落包含在一个<ul>而不是一个中<p>.问题是我无法将<p>插图中的插图包含在内部,<li>并且将插图放入其中是没有意义的<li>.

<ul>
    <li>Some text</li>
    <p><img src="myphoto"/></p><!--Incorrect-->
    <li><img src="myphoto"/></li><!--Does not make sense-->
</ul>
Run Code Online (Sandbox Code Playgroud)

将ilulstration放在与<p>文本相同的内部.然后使用 <br/>标签将图片移动到新行.我不是这种解决方法真的很开心,在<br/>做表象的东西,应该是在CSS更好.

<p>Some text here<br/><img src="myphoto"/></p>
Run Code Online (Sandbox Code Playgroud)

最后,设置显示属性 <img>在CSS样式表中 as块.我不确定这是不是一个好方法,也不知道它可能带来的无关后果.

我不知道是否有一种标准的方法可以做到这一点.我已经搜索了CSS以在新行中启动我的图像但是没有找到它.欢迎任何帮助.

html css positioning image

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

为什么'define()|| 定义常量时的define()'语法

为什么在定义常量之前检查常量是否存在的方法:

defined('CONSTANT') || define('CONSTANT', somedefinition);
Run Code Online (Sandbox Code Playgroud)

用来代替:

if !(defined('CONSTANT')) {
    define('CONSTANT', somedefinition);
}
Run Code Online (Sandbox Code Playgroud)

使用'或'代替'||'有什么区别吗 在第一种方法中,我已经在书中看到过.

php

5
推荐指数
2
解决办法
2565
查看次数

在PHP中返回错误对象的坏习惯?

我是php的新手,因为似乎没有从方法到其调用者的错误对象通信,我感到有点困惑.

这两个是我学习使用的方式:

  1. 如果一个方法不应该通知错误的调用者它只是触发一个错误,如果这不是E_USER_ERROR它只是返回FALSE告诉调用者出错了.

  2. 另一方面,如果方法需要向调用者发回一些错误信息,则应该引发异常.

来自COCOA我已经学会在非常条件下使用异常(程序员错误导致的不可恢复的错误).在任何其他情况下,只需将错误对象传递给调用者.

  • 哲学在PHP中是不同的吗?
  • 异常是将错误数据发送回调用者的标准机制吗?
  • 我应该避免编写自己的错误对象并将其作为out参数传递给方法以与PHP模式保持一致吗?

php error-handling

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

隐藏SVG会影响同一页面中的其他SVG样式

SVG在同一页面中加载了几次。SVG用于显示值的图形表示。想象一下一个地图,其中每个区域都使用颜色代码显示给定值。

在每个SVG中,对于每个区域,都会动态应用CSS类以匹配所需的SVG模式填充。

CSS样式和模式在SVG文件中定义。这是一个例子:

  <svg height="100" width="100">
    <style>
    /*  */
    .striped-pain-1 {fill: url(#striped-pain-1);}
    /*  */
    </style>
    <defs>
        <pattern id="striped-pain-1" width="4" height="1" patternTransform="rotate(45 0 0)" patternUnits="userSpaceOnUse">
            <line x1="0" y1="0" x2="0" y2="2" style="stroke:#EABFD5; stroke-width:6"></line>
        </pattern>
    </defs>
Run Code Online (Sandbox Code Playgroud)

问题是(display:none例如)隐藏了其中的SVG时(从那里到页面底部),所有的SVG都松散了图案填充。

我做了一个简化的Plunker来显示问题。

https://plnkr.co/edit/F5TzOwDEzneHEW7PT3Ls?p=preview

我发现防止这种情况的唯一方法是ids为每个SVG 使用不同的模式,但是由于所有人都共享同一个文件,因此我不喜欢重复复制所有文件并为此重命名ID的解决方案。我想知道应该有更好的解决方案。

html css svg display

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

一起使用 react.useEffect 和 mobx.autorun

在 MobX with React 文档中,在 Side effects 和 observables部分有一个响应useEffect钩子内部变化的接收。

import React from 'react'
import { autorun } from 'mobx'

function useDocumentTitle(store: TStore) {
  React.useEffect(
    () =>
      autorun(() => {
        document.title = `${store.title} - ${store.sectionName}`
      }),
    [], // note empty dependencies
  )
}
Run Code Online (Sandbox Code Playgroud)

该示例React.useEffectmobx.autorun(但可能是mobx.reaction)结合使用,但我autorun在代码中看不到 的好处。一旦我们进入内部,useEffect我们就可以在依赖项数组中跟踪我们的依赖项。代码更清晰,不需要dispose()并且useEffect有一个明确的依赖数组,里面有需要的东西。

import React from 'react'
import { autorun } from 'mobx'

function useDocumentTitle(store: TStore) {
  React.useEffect(() => document.title = `${store.title} …
Run Code Online (Sandbox Code Playgroud)

reactjs mobx-react react-hooks

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

如何解析从 Intl.DateTimeFormat 生成的日期字符串

使用Intl.DateTimeFormat.format函数,您可以生成针对特定区域设置格式化的日期字符串。传递给函数的选项Intl.DateTimeFormat.format()允许了解有关格式的一些信息,例如年份是两位数还是四位数字,但有些信息是未知的,例如使用的分隔符或年、月和日元素的顺序。

尝试使用 将该字符串解析回Date对象并不总是可行的Date.parse

例如,此代码对于西班牙语区域设置失败,但对于英语区域设置有效:

const date = new Date(2020, 10, 28);

const regionEs = new Intl.DateTimeFormat('es', { timeZone: 'UTC' });
const regionEn = new Intl.DateTimeFormat('en', { timeZone: 'UTC' });

const stringEs = regionEs.format(date); // "28/11/2020"
const stringEn = regionEn.format(date); // "11/28/2020"

const parseEs = new Date(Date.parse(stringEs)); // Error -> Trying to set month to 28
const parseEn = new Date(Date.parse(stringEn)); // Ok
Run Code Online (Sandbox Code Playgroud)

但如果用于生成字符串的格式模板可以从以下位置获得,那就很容易了Intl:类似"dd/mm/yyyy". 这样,字符串就可以安全地分割成可用于构建Date对象的部分。问题是似乎不可能从 获取该信息Intl.DateTimeFormat …

javascript datetime date internationalization

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