小编Don*_*mmy的帖子

使用picture,source和srcset时如何检查加载了哪个src?(img.src为空)

我正在使用picture带有source's 的元素来选择要加载的图像.虽然我可以添加一个load监听器,但我无法确定哪个图像被加载,因为img标签的src属性和属性都是空的,即使加载时也是如此!

<picture>
      <source srcset="images/test1.png" media="(min-width: 64em)">
      <source srcset="images/test2.png" media="(max-width: 63.99em)">

      <!-- This will alert an empty string "" -->
      <img srcset="images/test.png" alt="" onload="alert( this.src );">
</picture>
Run Code Online (Sandbox Code Playgroud)

如何确定加载了哪个图像?

html javascript html5 javascript-events picturefill

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

如何在 Jackson 中指定反序列化顺序?

我有两个字段:startDateendDate我需要确保结束日期等于或晚于开始日期。最好的方法是什么?

我想确保endDate在之后反序列化startDate,因此我可以将逻辑放入其 setter 方法中,如下所示:

@JsonSetter( "end" )
public void setEnd(String end)
{
    this.endDate = parseZonedDateTime( end );

    // Invalid
    if ( this.endDate.compareTo( this.startDate ) < 0 )
    {
        // Throw a validation exception
    }
}
Run Code Online (Sandbox Code Playgroud)

但这仅在保证首先设置 start 的情况下才有效。

java spring json jackson

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

如何在命令行上替换 Helm value.yaml 中数组项中的特定属性值而不是整个数组/映射?

当我尝试仅覆盖mapmy 数组内的某个项目中的特定值values.yaml时,它会替换整个内容并使其仅具有该属性。有没有办法保留默认值并仅覆盖部分?

我的values.yaml 有:

envVariables:
  - name: MYSQL_ROOT_PASSWORD
    secretKey:
      name: creds
      data:
        - name: username
          value: root
        - name: password
          value: REPLACE_ME
Run Code Online (Sandbox Code Playgroud)

value 我只想在命令行替换密码,但它会将整个结构更改为仅包含envVariables[0].secretKey.data[1].value. 财产name: MYSQL_ROOT_PASSWORD和我没有通过的其他一切都消失了。

helm template ./testchart --set envVariables[0].secretKey.data[1].value=pass
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-helm

7
推荐指数
0
解决办法
1351
查看次数

画布上的重绘如何调整大小而不模糊?

调整canvas元素的大小(通过样式更改)时,我也想缩放画布的绘制图像.我不能只改变高度/宽度,因为这会导致画布自行清除,所以我这样做:

  1. 创建临时画布元素
  2. 将当前画布的图像绘制到该临时画布上
  3. 调整当前画布的大小
  4. 将临时画布的图像绘制回当前画布,但缩放到新大小

这会导致一些模糊 - 在许多调整大小后非常明显(例如:拖动以调整大小时).如果没有任何模糊,我该怎么做?

编辑:关闭图像平滑(context.webkitImageSmoothingEnabled = false;)并没有解决这个问题,它只是让重绘越来越参差不齐,直到图像数量调整大小后,看上去一点也不像原来的.

调用resize事件:

    var tmpCanvas = null;       

    //Make a temporary canvas
    tmpCanvas = document.createElement( "canvas" );

    //Set its size to be equal
    tmpCanvas.height = originalCanvas.height;
    tmpCanvas.width = originalCanvas.width;

    //Draw our current canvas onto it
    tmpCanvas.getContext( "2d" ).drawImage( originalCanvas, 0, 0 );

    //Set new dimensions
    originalCanvas.width = originalCanvas.offsetWidth;
    originalCanvas.height = originalCanvas.offsetHeight;

    var originalContext = originalCanvas.getContext( "2d" );

    //Set background and colors
    originalContext.fillStyle = "#ffffff";
    originalContext.strokeStyle = "#000000"; …
Run Code Online (Sandbox Code Playgroud)

javascript css html5 canvas

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

SD卡(在AVD中创建)在Android Studio的模拟器中显示为"已删除"

我创建了一个带有SD卡的虚拟设备(AVD Manager->编辑设备 - >高级设置)但我的应用程序仍显示它不存在:

//This prints: External: removed
Log.d(TAG, "External: " + Environment.getExternalStorageState() );
Run Code Online (Sandbox Code Playgroud)

如何让外部存储工作?

我正在使用:

Android Studio 0.8.14设备:Nexus 5,4.4 KitKat,CPU:x86

android android-virtual-device android-studio

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

html2canvas、jsPDF - 如何为“合法信函”PDF 页面缩放/调整页面大小?

我用整个创建PDF document.body,把它变成一个画布,并传递一个到jsPDF。但是图像/画布太宽了。我想为页面缩放它,但jsPDF没有像素大小作为度量。

选项是:ptmmcm。我如何正确调整大小?如果需要,我如何缩放我的图像?

我应该使用该addImage函数进行缩放,还是通过使用 canvas.getContect("2d") 并在新画布上绘图?

html2canvas(
    document.body,
    {
        //When the canvas is created, our callback
        onrendered: function(canvas)
        {         
            //Create jsPDF with what measurements?
            var doc = new jsPDF('p', 'pt');

            /*
             * Put image on page. Are these measurements
             * in pts? How does that compare to pixels?
             *
             * Is the x/y (the 10, 10) the x and y in the image?
             * Or in the …
Run Code Online (Sandbox Code Playgroud)

html javascript canvas html2canvas jspdf

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

如何在清单更新时允许浏览器更新脚本文件但允许缓存?

我尝试了两种不同的方式,但都不起作用:

1.更新清单,以便浏览器看到更改和更新

这将更新除JavaScript文件之外的所有文件.浏览器看到有所不同,下载所有内容(包括JavaScript文件),但使用缓存版本的JavaScript文件.

2.发送无缓存标头(请参阅下面的代码)以停止缓存脚本文件

这会导致浏览器抛出错误而不再缓存任何内容.它说发生了ApplicationCache错误.

无缓存代码:

<filesMatch "\.(js)$">
    FileETag None
    <ifModule mod_headers.c>
        Header unset ETag
        Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
    </ifModule>
</filesMatch>
Run Code Online (Sandbox Code Playgroud)

以上使得所有浏览器都不会缓存应用程序以供离线使用.

有没有解决的办法?

javascript apache html5 caching html5-appcache

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

带有 MockMvcBuilders 独立设置的 SpringBootTest 尽管设置了但没有加载我的 ControllerAdvice

我正在创建这样的控制器和控制器建议:

测试类:

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestController {

    private MockMvc mockMvc;

    @Mock
    private MyService myService;

    @Autowired
    @InjectMocks
    private MyController myController;

    @Before
    public void setup() {

        MockitoAnnotations.initMocks(this);

        //Build the controller mock handler
        mockMvc = MockMvcBuilders
            .standaloneSetup(MyController.class)
            .setControllerAdvice(new MyControllerAdvice())

            //This also doesn't work
            //.setHandlerExceptionResolvers(createExceptionResolver())
            .build();
    }

    //This also did not work
    private ExceptionHandlerExceptionResolver createExceptionResolver() {
        ExceptionHandlerExceptionResolver exceptionResolver = new ExceptionHandlerExceptionResolver() {
            protected ServletInvocableHandlerMethod getExceptionHandlerMethod(HandlerMethod handlerMethod, Exception exception) {
                Method method = new ExceptionHandlerMethodResolver(MyControllerAdvice.class).resolveMethod(exception);
                return new ServletInvocableHandlerMethod(new MyControllerAdvice(), method);
            }
        };
        exceptionResolver.afterPropertiesSet();
        return …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-boot spring-boot-test

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

是否可以使用不同的连接字符串更新 ConnectionMultiplexer,还是应该重新创建它?

我们正在使用 StackExchange.Redis 客户端。我们还使用 Sentinel,它会告诉我们 Redis 主服务器何时发生变化。由于我们已经创建了连接(按照Lazy<IConnectionMultiplexer>建议),我们想知道更改连接信息以现在指向新的 Redis 主节点的最佳方法是什么?

我们看到几个选项:

  1. 当通知来自 Sentinel 时,创建一个新的Lazy<IConnectionMultiplexer>
  2. 更改现有连接多路复用器上的连接信息

#2 可能吗?

我们目前的方式:

    private Lazy<IConnectionMultiplexer> CreateRedisConnection()
    {
        return new Lazy<IConnectionMultiplexer>(
            () =>
            {
                ConnectionMultiplexer multiplexer = null;

                    //Connect to Sentinel so we can find the redis master
                    ConnectionMultiplexer sentinelMultiplexer = ConnectionMultiplexer.Connect(SentinelOptions);

                    string masterNodeAddress = GetMasterNodeAddress(sentinelMultiplexer);

                    return ConnectionMultiplexer.Connect(masterNode);
            }
        );
    }
Run Code Online (Sandbox Code Playgroud)

然后在收到通知后,我们只需重新调用即可CreateRedisConnection()

但这完全重新创建了连接多路复用器,而不是更轻量级的方法(这可能是不可能的)。

.net c# redis stackexchange.redis .net-standard

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

当应用程序在不同用户下运行时,如何在 Linux 上远程调试 C#/.Net 应用程序?

我正在 Linux (Ubuntu) 上运行 .Net Core 微服务,并尝试通过 SSH 使用 Visual Studio 进行远程调试。但该服务是在用户下运行的svcuser,我的用户是mainuser。主用户与服务用户位于同一组。

在 Visual Studio 中,我可以看到服务正在运行的进程,但是当我尝试附加时,我得到:

发生一个或多个错误。无法附加到进程。.Net 调试器没有足够的权限来调试进程。要调试此进程,vsdbg 必须以 root 权限运行。

我检查了 MS 文档,但对于 Linux,他们拥有的只是:https: //learn.microsoft.com/en-us/visualstudio/debugger/remote-debugging-dotnet-core-linux-with-ssh ?view=vs- 2019没有关于使用不同用户运行服务的信息

他们关于解决此类问题的唯一信息仅适用于 Windows: https: //learn.microsoft.com/en-us/visualstudio/debugger/error-the-microsoft-visual-studio-remote-debugging-monitor-在远程计算机上作为不同用户运行?view=vs-2019

c# linux remote-debugging visual-studio .net-core

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