text:
如何生成知乎里面的图像

from easynlp.pipelines import pipeline
from PIL import Image
import base64
from io import BytesIO
def base64_to_image(imgbase64_str):
    image = Image.open(BytesIO(base64.urlsafe_b64decode(imgbase64_str)))
    return image

data = ["一只俏皮的狗正跑过草地", "一片水域的景色以日落为背景"]
generator = pipeline('text2image_generation', model_path="./pai-painter-base-zh")

results = generator(data)

for text, result in zip(data, results):
    imgbase64_str_list = result['gen_imgbase64']
    imgpath_list = []
    for base64_idx in range(len(imgbase64_str_list)):
        imgbase64_str = imgbase64_str_list[base64_idx]
        image = base64_to_image(imgbase64_str)
        imgpath = '{}_{}.png'.format(text, base64_idx)
        image.save(imgpath)
        imgpath_list.append(imgpath)
    print ('text: {}, save generated image: {}'.format(text, imgpath_list))

你好，感谢你们的开源，请问我如何才能生成知乎中的那两个例子呢，谢谢！我只能生成了下面的2个！

"pai-painter-base-zh" 无法生成知乎中的图片
"pai-painter-large-zh" 无法生成知乎中的图片
"pai-painter-commercial-base-zh" 可以生成知乎中的图片
我猜测，您们开源的上面两个模型，并未进行特定数据集上的微调。

pai-painter-commercial-base-zh是微调过的模型，用来demo功能
pai-painter-base-zh和pai-painter-large-zh是预训练模型，给用户微调用的

authors: JunnYu chywang

repo: alibaba/EasyNLP


text:
fix(interactive): Fix Implicit Type Conversion Issues in HQPS

What do these changes do?
Throw an error when the user input parameters are inconsistent with the procedure config, to prevent the wrong type causing engine errors.

Related issue number

Fixes

Codecov Report

Merging #3256 (b478663) into main (07104f4) will increase coverage by 0.01%.
Report is 12 commits behind head on main.
The diff coverage is n/a.

Additional details and impacted files

@@            Coverage Diff             @@
##             main    #3256      +/-   ##
==========================================
+ Coverage   42.05%   42.06%   +0.01%
==========================================
  Files         101      101
  Lines       10985    10987       +2
==========================================
+ Hits         4620     4622       +2
  Misses       6365     6365

see 2 files with indirect coverage changes

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6e883d2...b478663. Read the comment docs.

source: gharchive/pull-request

repo: alibaba/GraphScope

license_type: permissive

license_source: github-api


text:
COPromise 问题

(COPromise*)downloadImageWithError{
COPromise promise = [COPromise promise];
long total = 0;
for (int i = 0; i < 100000000; i++) {
total += i;
}
NSError error = [NSError errorWithDomain:@"wrong" code:20 userInfo:@{@"h":@"yc"}];
[promise reject:error];
return promise;
}

co_launch(^{
id dd = await([self downloadImageWithError]);
if(co_getError()){
NSLog(@"33");------>这里进不了！！！！
}
});

写法不对吧，要异步

写法不对吧，要异步
你说的对。。。

source: gharchive/issue

repo: alibaba/coobjc

license_source: bigquery


text:
Merge pull request #1 from alibaba/master

update druid.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

误操作了，请求删除，谢谢。

authors: CLAassistant onefansofworld

repo: alibaba/druid


text:
support BalancedClickhouseDriver without username and password

解决使用BalancedClickhouseDriver时，ClickHouse没有设置密码报空指针问题

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

冲突太多，请重新提交新的pr

authors: CLAassistant DHBin lizongbo


text:
fix issues:#5620

shrink方法中确实有个问题，已修复。

Codecov Report

Merging #5621 (4d0d401) into master (94281b0) will decrease coverage by 0.01%.
The diff coverage is 100.00%.

Additional details and impacted files

@@             Coverage Diff              @@
##             master    #5621      +/-   ##
============================================
- Coverage     58.71%   58.70%   -0.01%
+ Complexity    27719    27713       -6
============================================
  Files          1332     1332
  Lines        127452   127452
  Branches      23976    23976
============================================
- Hits          74835    74823      -12
- Misses        43320    43326       +6
- Partials       9297     9303       +6

Files
Coverage Δ

...n/java/com/alibaba/druid/pool/DruidDataSource.java
70.59% <100.00%> (ø)

... and 6 files with indirect coverage changes

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 94281b0...4d0d401. Read the comment docs.

还会出现断言异常

有时测试方法捕获不到断言错误，直接中断测试跳到了tearDown，检查测试方法保存的throwable，才发现有断言错误

问题重现过程：

修改TestActiveTrace单元测试：

/*
 * Copyright 1999-2018 Alibaba Group Holding Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.alibaba.druid.bvt.pool;

import java.sql.Connection;

import junit.framework.TestCase;

import org.junit.Assert;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.stat.DruidDataSourceStatManager;

public class TestActiveTrace extends TestCase {
    private DruidDataSource dataSource;
    protected void setUp() throws Exception {
        DruidDataSourceStatManager.clear();

        dataSource = new DruidDataSource();
        dataSource.setRemoveAbandoned(true);
        dataSource.setRemoveAbandonedTimeoutMillis(100);
        dataSource.setLogAbandoned(true);
        dataSource.setTimeBetweenEvictionRunsMillis(10);
        dataSource.setMinEvictableIdleTimeMillis(300 * 1000);
        dataSource.setUrl("jdbc:mock:xxx");
        dataSource.init();
    }

    private Throwable th = null;
    protected void tearDown() throws Exception {
        dataSource.close();
        Assert.assertEquals(0, DruidDataSourceStatManager.getInstance().getDataSourceList().size()); <==== 在此处下断点
        Assert.assertNull(th);
    }

    public void test_activeTrace() throws Exception {
        int i = 0;
        int count = 1000 * 1000;

        try {
            for (; i < count; ++i) {
                dataSource.shrink();

                Connection conn = dataSource.getConnection();
                conn.close();
                // Assert.assertEquals(1, dataSource.getPoolingCount());
                dataSource.shrink();
                Assert.assertEquals("createCount : " + dataSource.getCreateCount(), 0, dataSource.getPoolingCount());
                Assert.assertEquals(0, dataSource.getActiveConnections().size());
            }
        }
        catch (Throwable t) {
            th = t;
        }
        Assert.assertEquals(count, i);
    }
}

在DruidDataSource的3255行shrink方法的DruidConnectionHolder connection = connections.pollFirst();下断点。
debug方式执行TestActiveTrace单元测试，执行到DruidDataSource的3255行，确定测试使用的是修订版本，然后取消该断点继续运行
在TestActiveTrace 的tearDown断点处检查th变量是否有值，有时候断言错误会直接中止测试，直接跳到tearDown方法，所以要在这里守着。

@lizongbo 这个PR也无效，单元测试仍然会抛异常，应该是环形队列数据结构的shrink算法有问题。

authors: codecov-commenter xuziyang zrlw


text:
fastjson1.2.83 反序列化的时候卡死，CPU打满

实体类：
@lombok.Data
public class MyBo {
private Integer ret;
private List<Map<String, String>> result;
}
字符串：{"ret":0,"result":[""]}
执行代码：JSON.parseObject(text, MyBo.class)
对该字符串执行反序列化时直接死循环。。。。
ps：貌似是在com.alibaba.fastjson.parser.DefaultJSONParser#parseArray方法里死循环

6

repo: alibaba/fastjson


text:
fix typo

What is the purpose of the change
(For example: This pull request introduces Flink Processor.)
Brief change log
(for example:)

Introduces Flink Processor
Adds examples and documentations of Flink Processor

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (yes / no)
The public API: (yes / no)

Documentation

Does this pull request introduce a new feature? (yes / no)
If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

authors: CLAassistant faucct

repo: alibaba/feathub


text:
有没有全局loading的解决方案或者思路

如果在每个page的view里面添加一个loading容器，关联至全局的store，
然后在网络请求的组件里面派发request_start ， request_end，就能实现全局loading，
但是问题在于， 路由栈里面的组件统一也关注的全局store，那样会导致他们也刷新。
有没有关于全局loading的一个比较好的解决方案。

个人建议  网络请求的loading和状态可以无关，更接近于一个api的调用。
比如你可以基于dialog （api的形式）来展示loading。

可以给个demo，展示使用方法吗

authors: andyxiaoxi jefferybai zjuwjf

repo: alibaba/fish-redux


text:
[build] Enable ci

Purpose
Enable ci for fluss
Tests
N/A
API and Format
N/A
Documentation
N/A

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@wuchong enable ci pr ready

Ci pass...Merging....

authors: CLAassistant luoyuxia

repo: alibaba/fluss


text:
[FEATURE]: Provide a k8s template to collect systemd logs

Concisely describe the proposed feature
Systemd manages many important modules in the system. It records their logs as journals. These journals are valuable to monitor system status and trigger alarms. It is useful to collect these logs at node level.
iLogtail has a service_journal plugin to ingest systems logs. However, it is not very clear how to use it to receive systemd logs on K8s nodes. If a template is provided, newcomers will get on the road easily.
Describe the solution you'd like (if any)
Provide a k8s template to collect node systemd logs
Additional comments
The YAML should be named ilogtail-daemonset-from-systemd.yaml and located in the k8s_templates dir.

docker方式也收集Journal日志不成功

authors: PungYoung yyuuttaaoo

repo: alibaba/ilogtail


text:
bugfix: pull non-exist image in container create

Signed-off-by: Ace-Tang aceapril@126.com

Ⅰ. Describe what this PR did
Pull image if not exist in container create process.
# pouch  create   --net=none reg.docker.alibaba-inc.com/base/busybox:latest top
Error: failed to create container: {"message":"image: reg.docker.alibaba-inc.com/base/busybox:latest: not found"}

Ⅱ. Does this pull request fix one issue?

Ⅲ. Describe how you did it
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

Codecov Report

Merging #1764 into master will increase coverage by 0.05%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1764      +/-   ##
==========================================
+ Coverage   56.32%   56.38%   +0.05%
==========================================
  Files         200      200
  Lines       15657    15657
==========================================
+ Hits         8819     8828       +9
+ Misses       5742     5736       -6
+ Partials     1096     1093       -3

Flag
Coverage Δ

#critest
33.52% <ø> (+0.04%)
:arrow_up:

#integrationtest
37.7% <ø> (+0.01%)
:arrow_up:

#unittest
20.33% <ø> (ø)
:arrow_up:

Impacted Files
Coverage Δ

daemon/mgr/container.go
53.46% <0%> (+0.15%)
:arrow_up:

cri/v1alpha2/cri.go
66.13% <0%> (+0.17%)
:arrow_up:

ctrd/container.go
50.17% <0%> (+1.37%)
:arrow_up:

apis/server/utils.go
66.66% <0%> (+4.76%)
:arrow_up:

Please add an integration test in the CI, so that this case could be covered forever. Thanks a lot.

authors: Ace-Tang allencloud codecov-io

repo: alibaba/pouch


text:
配置spring.cloud.nacos.discovery.enabled=false，重启服务，消费者仍能正常访问，刷新nacos 控制台服务列表后，正常

配置spring.cloud.nacos.discovery.enabled=false，重启服务，消费者仍能正常访问，刷新nacos 控制台服务列表后，正常

Nacos 本地有缓存，注册中心拿不到服务信息的话会从本地缓存读取。

repo: alibaba/spring-cloud-alibaba


text:
dubbo生产者配置version无效

我们鼓励使用英文，如果不能直接使用，可以使用翻译软件，您仍旧可以保留中文原文。
We recommend using English. If you are non-native English speaker, you can use the translation software.
Which Component
dubbo，nacos
Describe the bug
dubbo生产者在配置文件的provider中配置version，但注册中心中显示版本仍然为默认版本1.0.0
Additional context
Add any other context about the problem here.
e.g.  MacOS  、Java8 、 Version 2.1.0.RELEASE

请问该问题修复好了没


text:
assertj断言字符串报错

项目是java-demo，

org.assertj
assertj-core
3.18.1
test

@EnablePrivateAccess
class DemoPrivateAccessTest {
private DemoPrivateAccess demoPrivateAccess = new DemoPrivateAccess();

@Test
void should_able_to_access_private_method() {
    List<String> list = new ArrayList<String>() {{ add("a"); add("b"); add("c"); }};
    String hello = demoPrivateAccess.privateFunc(list, "hello", 1);//(1)
    System.out.println(hello);
    Assertions.assertThat(demoPrivateAccess.privateFunc(list, "hello", 1)).isEqualTo("abc + hello + 1");//(2)
    assertEquals("abc + hello + 1", demoPrivateAccess.privateFunc(list, "hello", 1));
    assertEquals("abc + hello + 1", PrivateAccessor.invoke(demoPrivateAccess, "privateFunc", list, "hello", 1));
}

===========================
(1)处会报Error:(25, 41) java: privateFunc(java.util.List<java.lang.String>,java.lang.String,int) 在 com.alibaba.testable.demo.DemoPrivateAccess 中是 private 访问控制
(2)处会报Error:(27, 19) java: 对assertThat的引用不明确
org.assertj.core.api.Assertions 中的方法 assertThat(T) 和 org.assertj.core.api.Assertions 中的方法 assertThat(T) 都匹配

已复现，会在近期修复~
感谢反馈🌸

已复现，会在近期修复~
感谢反馈🌸

问题(1)在0.4.8版本已修复。
(2)的情况稍微特殊一点，需要代码编写的时候加一个类型转换处理。
直接这样写在编译时候会报同时匹配多个可用重载方法的错误：
Assertions.assertThat(demoPrivateAccess.privateFunc()).isEqualTo("member");

加一个和privateFunc()方法返回值匹配的类型转换，就可以正常编译通过。
Assertions.assertThat((String)demoPrivateAccess.privateFunc()).isEqualTo("member");

原因是TestableMock在转换私有方法或者字段访问后，返回的是模板类型，由编译器在编译时自动判断实际类型。但assertThat()方法有多种重载方法都能匹配到这个模板类，导致编译器无法正常选择要调用的重载方法，加上类型转换能为编译器明确指定一种重载调用。
或者是先赋值到变量，然后用assertThat，即转换成(1)这种情况来使用。

问题(1)在0.4.8版本已修复。
(2)的情况稍微特殊一点，需要代码编写的时候加一个类型转换处理。
直接这样写在编译时候会报同时匹配多个可用重载方法的错误：
Assertions.assertThat(demoPrivateAccess.privateFunc()).isEqualTo("member");

加一个和privateFunc()方法返回值匹配的类型转换，就可以正常编译通过。
Assertions.assertThat((String)demoPrivateAccess.privateFunc()).isEqualTo("member");

原因是TestableMock在转换私有方法或者字段访问后，返回的是模板类型，由编译器在编译时自动判断实际类型。但assertThat()方法有多种重载方法都能匹配到这个模板类，导致编译器无法正常选择要调用的重载方法，加上类型转换能为编译器明确指定一种重载调用。
或者是先赋值到变量，然后用assertThat，即转换成(1)这种情况来使用。

问题(1)在0.4.8版本已修复。
(2)的情况稍微特殊一点，需要代码编写的时候加一个类型转换处理。
直接这样写在编译时候会报同时匹配多个可用重载方法的错误：
Assertions.assertThat(demoPrivateAccess.privateFunc()).isEqualTo("member");

加一个和privateFunc()方法返回值匹配的类型转换，就可以正常编译通过。
Assertions.assertThat((String)demoPrivateAccess.privateFunc()).isEqualTo("member");

原因是TestableMock在转换私有方法或者字段访问后，返回的是模板类型，由编译器在编译时自动判断实际类型。但assertThat()方法有多种重载方法都能匹配到这个模板类，导致编译器无法正常选择要调用的重载方法，加上类型转换能为编译器明确指定一种重载调用。
或者是先赋值到变量，然后用assertThat，即转换成(1)这种情况来使用。

收到

问题(1)在0.4.8版本已修复。
(2)的情况稍微特殊一点，需要代码编写的时候加一个类型转换处理。
直接这样写在编译时候会报同时匹配多个可用重载方法的错误：
Assertions.assertThat(demoPrivateAccess.privateFunc()).isEqualTo("member");

加一个和privateFunc()方法返回值匹配的类型转换，就可以正常编译通过。
Assertions.assertThat((String)demoPrivateAccess.privateFunc()).isEqualTo("member");

原因是TestableMock在转换私有方法或者字段访问后，返回的是模板类型，由编译器在编译时自动判断实际类型。但assertThat()方法有多种重载方法都能匹配到这个模板类，导致编译器无法正常选择要调用的重载方法，加上类型转换能为编译器明确指定一种重载调用。
或者是先赋值到变量，然后用assertThat，即转换成(1)这种情况来使用。

收到

repo: alibaba/testable-mock

license: MIT


text:
环境搭建问题

不知道环境搭建问题可不可以提？
我在 npm install 后启动 ./start 报错如下

环境是mac环境，求大神解答

@maomaoking 更多问题请移步到中文聊天室 https://gitter.im/weexteam/cn
这里我先关掉了
谢谢支持：）

authors: Jinjiang maomaoking

repo: alibaba/weex


text:
[ios] bugfix add register component type

bugfix add register component Type

Current coverage is 88.44% (diff: 100%)

Merging #1728 into ios-feature-20161208 will not change coverage

@@           ios-feature-20161208      #1728   diff @@
======================================================
  Files                        41         41
  Lines                      2233       2233
  Methods                     354        354
  Messages                      0          0
  Branches                    500        500
======================================================
  Hits                       1975       1975
  Misses                      258        258
  Partials                      0          0

Powered by Codecov. Last update 1c7fe37...f7e72ea


text:
Add XYZ-based Color Spaces

Consider supporting LCH, LAB, LUV, and XYZ. These will need to support different illuminants also. Consider having a default illuminant of d50, and then allowing the illuminant to be specified:
color = new Color {l: 50, c: 70, h: 0}            #would use d50
color = new Color {l: 50, c: 70, h: 0, i: "d65"}  #would use d65

Many colors will wind up being out of RGB gamut. Approximate their closest in-gamut color when asking for color.format("rgb") or really any of the other color spaces since they're all rgb-based.
Give an _inGamut property that is false when the color is being approximated in RGB gamut. You can also set it to true to make the approximated rgb value the actual value.

Color Palettes currently store colors as hex values. This may be a problem if you start defining colors outside of RGB gamut, because you can have multiple color definitions that approximate to the same hex value causing a conflict.
We also generate new colors directly from these hex values and even store them in a hexes dictionary for quick lookup. It is currently not possible to create lch colors from internal Palette dictionaries.

repo: aligerum/umbriel

license: mit


text:
modifications to build.gradle`

The setup instructions say you need to modify android/app/build.gradle to add compile project(':react-native-share-extension'), like this:
dependencies {
    ...
    compile project(':react-native-share-extension')
    compile "com.facebook.react:react-native:+"
}

But my build.gradle looks very different.  Here's the dependencies section.  Note implementation instead of compile for everything, and the lack of react-native.  This is from a recent eject (yesterday) How should I modify this if at all?
dependencies {
  implementation fileTree(dir: 'libs', include: ['*.jar'])

  implementation 'com.android.support:multidex:1.0.1'

  // Our dependencies
  implementation 'com.android.support:appcompat-v7:27.1.1'

  // Our dependencies from ExpoView
  // DON'T ADD ANYTHING HERE THAT ISN'T IN EXPOVIEW. ONLY COPY THINGS FROM EXPOVIEW TO HERE.
  implementation 'com.android.support:appcompat-v7:27.1.1'
  implementation 'com.facebook.android:facebook-android-sdk:4.34.0'
  implementation('com.facebook.android:audience-network-sdk:4.99.0') {
    exclude module: 'play-services-ads'
  }
  compileOnly 'org.glassfish:javax.annotation:3.1.1'
  implementation 'com.jakewharton:butterknife:8.4.0'
  implementation 'de.greenrobot:eventbus:2.4.0'
  implementation 'com.amplitude:android-sdk:2.9.2' // Be careful when upgrading! Upgrading might break experience scoping. Check with Jesse. See Analytics.resetAmplitudeDatabaseHelper
  implementation 'com.squareup.picasso:picasso:2.5.2'
  implementation 'com.google.android.gms:play-services-gcm:15.0.1'
  implementation 'com.google.android.gms:play-services-analytics:16.0.1'
  implementation 'com.google.android.gms:play-services-maps:15.0.1'
  implementation 'com.google.android.gms:play-services-auth:15.0.1'
  implementation 'com.google.android.gms:play-services-location:15.0.1'
  implementation 'com.google.android.gms:play-services-ads:15.0.1'
  annotationProcessor 'com.raizlabs.android:DBFlow-Compiler:2.2.1'
  implementation "com.raizlabs.android:DBFlow-Core:2.2.1"
  implementation "com.raizlabs.android:DBFlow:2.2.1"
  implementation "com.madgag.spongycastle:core:1.53.0.0"
  implementation "com.madgag.spongycastle:prov:1.53.0.0"
  debugImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1'
  // debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.4-beta1'
  releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1'
  implementation 'com.facebook.device.yearclass:yearclass:1.0.1'
  implementation 'commons-io:commons-io:1.3.2'
  implementation 'me.leolin:ShortcutBadger:1.1.4@aar'
  implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
  implementation 'com.theartofdev.edmodo:android-image-cropper:2.4.7'
  implementation 'com.yqritc:android-scalablevideoview:1.0.1'
  implementation 'commons-codec:commons-codec:1.10'
  implementation 'com.segment.analytics.android:analytics:4.3.0'
  implementation 'com.google.zxing:core:3.2.1'
  implementation 'net.openid:appauth:0.4.1'
  implementation('com.airbnb.android:lottie:2.5.5')  {
      exclude group: 'com.android.support', module: 'appcompat-v7'
  }
  implementation 'io.branch.sdk.android:library:2.17.1'
  implementation('io.nlopez.smartlocation:library:3.2.11') {
    transitive = false
  }
  implementation 'com.android.support:exifinterface:27.1.1'
  implementation 'com.squareup.okhttp3:okhttp:3.4.1'
  implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.4.1'
  implementation 'com.squareup.okhttp3:okhttp-ws:3.4.1'
  implementation 'com.squareup.okio:okio:1.9.0'

  // Testing
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
  // We use a modified build of com.android.support.test:runner:1.0.1. Explanation in maven-test/README
  androidTestImplementation 'com.android.support.test:runner:1.0.1'
  androidTestImplementation 'com.android.support:support-annotations:27.1.1'
  androidTestImplementation 'com.google.code.findbugs:jsr305:3.0.0'
  androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
  androidTestImplementation 'com.azimolabs.conditionwatcher:conditionwatcher:0.2'

  testImplementation 'junit:junit:4.12'
  testImplementation 'org.mockito:mockito-core:1.10.19'
  testImplementation 'org.robolectric:robolectric:3.8'
  testImplementation 'com.android.support.test:runner:1.0.2-alpha1'
  testImplementation 'com.android.support.test:rules:1.0.2-alpha1'

  implementation('host.exp.exponent:expoview:30.0.0@aar') {
    transitive = true
    exclude group: 'com.squareup.okhttp3', module: 'okhttp'
    exclude group: 'com.squareup.okhttp3', module: 'okhttp-urlconnection'
  }

  /* REMOVED_WHEN_DISTRIBUTING_FROM_HERE
  implementation(project(path: ':expoview')) {
    // Excluding okhttp3 included by expo-file-system
    exclude group: 'com.squareup.okhttp3', module: 'okhttp'
    exclude group: 'com.squareup.okhttp3', module: 'okhttp-urlconnection'
  }
  REMOVED_WHEN_DISTRIBUTING_TO_HERE */
}

@keredson Thanks. I also use implementation in my project. I had to make that adjustment upon adding Firebase to my project. I think it depends on the tech stack. As far as I can tell, most projects can do fine using compile.
Since this is more a statement than an isssue, I'm going to close it.

compile is no longer supported. Always switch compile with implementation, or use react-native link which will do the same thing automatically

authors: AndrewHenderson flo-wolf keredson

repo: alinz/react-native-share-extension


text:
turbolinks and datepicker

hi
i using turbolinks and when i open a link and back to home, datepicker not open by clicking on input.
can you help me

like this:
https://github.com/turbolinks/turbolinks/issues/253

repo: alireza-ab/vue-persian-datepicker


text:
Client side or not working in the example

Discussed in https://github.com/alirezanet/InfiniteEnumFlags/discussions/3

Originally posted by michaelswells December  2, 2022
I was running your example (which I did not modify) and did the following:

Create new user viewer@localhost
Create new user manager@localhost
login as admin
create new role Viewer
create new role Manager
assign ViewUsers permission to role Viewer
assign ManageUsers permission to role Manager
Login as viewer@localhost => Should see menu item for Users
Login as manager@localhost => Should see menu item for Roles

I was not able to see the expected menu items. I believe your encoding/decoding and bit-arithmetic is not working properly.
I do not know where to begin debugging InfiniteEnums. The FlexAuth program from Jason did everything as expected though.

There was a bug on the HasFlag extension. it is solved now.

repo: alirezanet/InfiniteEnumFlags


text:
eval_kitti

想问下kitti数据集是无法用eval？我跑出来的结果是这样的

可以的，可能你哪里设置错了

repo: aliyun/NeWCRFs


text:
Integrating American Meter Co. model AC-250 in HA with this Add-on

Hi all,
First of all, thanks for this project, I was able to monitor my electricity using the rtl-sdr dongle and this HA add-on. Very cool.
This led me to try to integrate my gas meter consumption into HA as well, however, I am unable to locate my meter when running the add-on in docker using the DEBUG MODE.
My gas meter is model AC-250 from American Meter Company. Hope someone here can assist me on making this work if it possible.

Sorry, but I don't work in the "supporting devices" itself.
In a nutshell, this project only wraps the RTLAMR into a Docker container to ship the output in a way HA can understand.
The right place to ask for new devices would be here:
https://github.com/bemasher/rtlamr
Regards

Will do, thank you!

authors: allangood moasson


text:
SaveMultiSub: false ; permission denied

第一次接触，是读写问题？

权限问题

请问要怎么解决，第一次弄这些东西，现在偶尔会进不去后台

主页教程写了权限相关的，注意看一下。


text:
Add rejection sampling analysis

🚀 Dataset loaded, starting to analyze...
chosen:    mean length = 163.50656107997827
rejected:  mean length = 150.02915225944915
reference: mean length = 811.4574606202721
key='allenai/llama-3-tulu-2-8b-uf-mean-rm'
chosen:    mean score = 26.952228895910338
           std score = 3.0159979740827905
rejected:  mean score = 23.47721361929176
           std score = 3.226889784341013
reference: mean score = 30.24208389637402
           std score = 4.438492691848654
reference is better than chosen

So I realized the issue is that we generate only 53 tokens by default. We should change it to a much more sensible number, prob 2048 @nouhadziri
https://github.com/allenai/open-instruct/blob/151533074483ee3f5f07aa6a9fded9e9cdf99b0f/open_instruct/generation.py#L43
Let's merge this after your PR #252 and I can add documentation

This explains the performance!! I haven't had a chance to play with different generation parameters yet but increasing the length will definitely boost numbers.

LGTM

authors: nouhadziri vwxyzjn

repo: allenai/open-instruct


text:
Exporting annotations to COCO format

Hello, how to export annotations to COCO format ? Is it already implemented or should I write my own logic ?

Commands to export annotations to COCO format are documented here :
https://github.com/allenai/pawls/blob/main/cli/readme.md

repo: allenai/pawls


text:
load google maps api on initialization

Hi Allen, this is a feature that would add some benefit to angularjs-google-maps, at least to us:
We wanted to load the google api only on demand to speed up the loading of a page (our solution uses mainly offline resources on mobile devices). Therefore we tried to implement a lazy loading within angularjs-google-maps that supports a customer key. Maybe a generic implementation needs some more parameters to be added.
This is the code that worked for us:
ngMap.provider("googleApiLoader", function() {

  var apiKey = null;
  var clientId = null;

  this.setApiKey = function(key) {
    apiKey = key;
  };

  this.setClientId = function(id) {
    clientIdt = id
  },

  this.$get = ["$q",
    function($q) {
      var deferred = $q.defer();
      function scriptError() {
        deferred.reject()
      }
      if ("undefined" != typeof google) {
        deferred.resolve(),
        deferred.promise;
      }
      window.onGoogleScriptLoad = function() {
        "undefined" != typeof window.google ? deferred.resolve() : deferred.reject()
      };
      var script = document.createElement("script");
      script.type = "text/javascript";
      script.async = !0;
      script.src = "http://maps.google.com/maps/api/js?callback=onGoogleScriptLoad";
      apiKey && (script.src += "&key=" + apiKey + "&");
      clientId && (script.src += "&client=" + clientId + "&v=3.18");
      script.onerror = scriptError;
      document.body.appendChild(script);
      return deferred.promise
    }
  ]
});

This is great
I would appreciate if you format the source code and provide some documentation usage example of this although it's clear between you and me.
For example,

how to set api key and client id it as a provider
how to use it within controller as a service

Also it would be great if you explain how map directive initialization is delayed until this service loads the script.

Oh I need this too!

I have tested your code with the following modification.
However, what I still don't understand is how to avoid racing condition between directives and this loader.
directives are initialized with ngMap module, so does this loader. My question is how to make directives are loaded after loader is done. I did not see any module-level resolve method.
ngMap.provider("mapsApiLoader", function() {
  var apiKey = null, clientId = null;

  this.setApiKey = function(key) {
    apiKey = key;
  };

  this.setClientId = function(id) {
    clientIdt = id
  },

  this.$get = ["$q", function($q) {
    var deferred = $q.defer();
    var onError = function() {
      deferred.reject();
    }

    if (window.google && window.google.maps) {
      deferred.resolve();
    } else {
      window.onGoogleScriptLoad = function() {
        (window.google && window.google.maps) ? deferred.resolve() : deferred.reject()
      };

      var script = document.createElement("script");
      script.type = "text/javascript";
      script.async = !0;
      script.src = "http://maps.google.com/maps/api/js?callback=onGoogleScriptLoad";
      apiKey && (script.src += "&key=" + apiKey + "&");
      clientId && (script.src += "&client=" + clientId + "&v=3.18");
      script.onerror = onError;
      document.body.appendChild(script);
    }

    return deferred.promise;
  }];
});

first we initialize:
myApp = angular.module('app', applist);
myApp
.config([
'$locationProvider',
'$routeProvider',
'$provide',
'$sceProvider',
'googleApiLoaderProvider',
function ($locationProvider, $routeProvider, $provide, $sceProvider, googleApiLoaderProvider) {
//…
googleApiLoaderProvider.setApiKey("myGoogleApiKey");
//…
}]);
To use the lazy loading, every directive must be extended with the googleApiLoader:
ngMap.directive("map", ["Attr2Options", "$timeout", "googleApiLoader“,function(…
What is missing is some additional configuration: http/https or the version of the API that should be changeable.

Changing every directive is a lot of work. I wish there is a simpler way.

Just adding the loader service as dependency without any action? I thought every single directive has to make use of that service within it. No?

1.4.0 released with this feature.
Lazy Loading
Simply wrap the map tag with ng-if="mapJsLoaded".
<div ng-if="mapJsLoaded" ng-controller="MyCtrl">
  <map center="41,-87" zoom="3"></map>
</div>

authors: allenhwkim gabrielmancini kuntergunt

repo: allenhwkim/angularjs-google-maps


text:
Street-view-panorama doesn't work when ng-map has an id

The street view panorma was not displayed when i specify an id for my map. Please check this plunker , I wait your response.
http://plnkr.co/edit/PRvHkmvtr3hFOqLG0mzg?p=preview
Thanks.

Thanks for reporting this. There is bug, which does not accept id to get a map. https://github.com/allenhwkim/angularjs-google-maps/blob/master/directives/street-view-panorama.js#L67

Thanks for you reply. that's solve my problem.

This has been fixed

authors: AhmedAYAT allenhwkim


text:
DO_NOT_MERGE_BlueTeamTest1

This is an initial commit for a test, sandbox branch for the Blue Team's implementation of LinkML. Please do not merge this.

@kkarra I know you've been working on modeling classes for the Blue Team. This is just a tutorial branch to play and experiment with. Feel free to take or leave anything committed to this branch.


text:
🛑 Reach For More is down

In f66bdea, Reach For More (https://reachformore.fit) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Reach For More is back up in eb1c28c.

repo: alliancewebteam/Uptime


text:
🛑 Jaz Design Co is down

In 178fa78, Jaz Design Co (https://jazdesignco.com) was down:

HTTP code: 500
Response time: 362 ms

Resolved: Jaz Design Co is back up in 9bf1fa9 after 42 days, 16 hours, 23 minutes.


text:
🛑 Matterhorn Bar & Restaurant is down

In 6c4dcf8, Matterhorn Bar & Restaurant (https://matterhornbar.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Matterhorn Bar & Restaurant is back up in ba293c0 after 2 hours, 13 minutes.


text:
Goaccess opens files in write or append mode

See this, if an access log being monitored by goaccess tries to rotate the file, some bad things happens. This is probably because of goaccess opens log file in write mode or append mode, please see this https://github.com/mholt/caddy/issues/1363

goaccess does not open the log in in write mode nor append mode. It does it in read mode. Here's where it attempts to open it.
I monitor access logs with goaccess and have logrotate doing its job on the logs without any issues so far. As mentioned on the other thread, it sounds like it may be lumberjack?

Closing this. Feel free to reopen it if needed.

repo: allinurl/goaccess


text:
Uncaught TypeError: $(...).tree is not a function Using Webpack

Hi.
I and using AdminLTE with Laravel. ( I don't wanna use any package or AdminLTE-laravel like projects. )
So, I am using Webpack to mix all my js and CSS files in one file.
I have installed AdminLTE with npm and everything works just fine. Except I see an error in console and the sidebar toggle is not working as well.

I don't know what's wrong. I have jQuery and Bootstrap added before adminLTE.
Thank's :)

Hello,
Could you provide the version number of AdminLTE and you laravel mix file?
Thanks!

Hi.
I am using the latest version AdminLTE v2.3.8. I installed it using npm install AdminLTE --save-dev
Here is my webpack.mix.js
let mix = require('laravel-mix');

mix.js('resources/assets/js/app.js', 'public/js')
   .sass('resources/assets/sass/app.scss', 'public/css');

my asset/js/bootstrap.js file.

try {
    window.$ = window.jQuery = require('jquery');

    require('bootstrap-sass');
    // require('jqtree');
} catch (e) {}

// AdminLTE
require('admin-lte');

Thank's for your great project :)

Hmmmm. This is a bit odd. Could you try including adminlte's app.js directly in your html view instead?

If that works, we'll need to figure out how to make the require work with adminlte.

Hi.
I did the following.
The problem with error in console is solved ( I did a typo mistake somewhere else )
But the sidebar is not collapsing.
I removed the adminLTE require from bootstrap.js and included the admilte app.js directly in the template. But still, The sidebar does not collapse on click.
It doesn't give any error as well.

I got similar error recently and found the bug creating this error. It is, if at all you are using the same library twice or similar libraries(which serve same purpose) from different sources, then this error comes. If you remove one of similar libraries then your code works fine.
This might be one of the reason and solution.

Hi.
I did the following.
The problem with error in console is solved ( I did a typo mistake somewhere else )
But the sidebar is not collapsing.
I removed the adminLTE require from bootstrap.js and included the admilte app.js directly in the template. But still, The sidebar does not collapse on click.
It doesn't give any error as well.
I fixed the sidebar problem with my custom code.
$('.sidebar-toggle').on('click',function(){

           var cls =  $('body').hasClass('sidebar-collapse');
           if(cls == true){
                $('body').removeClass('sidebar-collapse');
           } else {
                $('body').addClass('sidebar-collapse');
           }

    });

Now it's working just fine. I was assuming it to work without this code as the demo work.
Thank's :)

You're the men broooooo, thanks !

authors: Hujjat almasaeed2010 brianmazzocchi vankasaisumanth


text:
layout collapsed-sidebar menu on mobile  error

Page   collapsed-sidebar on mobile
When the mouse is selected menu,
there is a problem with the use.
adminlte 2.4.5

Solved in v2.4.8

authors: noisite omkartapale


text:
Add filters API end point to spaces

Fixes https://github.com/fabric8io/fabric8-planner/issues/1569

Codecov Report

Merging #1162 into master will increase coverage by 0.02%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1162      +/-   ##
==========================================
+ Coverage   60.49%   60.51%   +0.02%
==========================================
  Files         113      113
  Lines        9910     9916       +6
==========================================
+ Hits         5995     6001       +6
  Misses       3289     3289
  Partials      626      626

Impacted Files
Coverage Δ

controller/space.go
75.74% <100%> (+0.55%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3898212...ba5f07b. Read the comment docs.

I'm missing a Why here?

@aslakknutsen  list-filters link was hard coded in UI and we thought if we move filters API under space in future then UI will need to change their hard coded URL.
Hence now UI can pick whatever URL we send in order to list available filters.
correct me if I am wrong @baijum

Yes, this is to avoid hard coded API end point in the UI.

Ah yes. I would have expected it as a 'related link to a work item list', not as a global space thing, but it's better then not having it atm. :)

authors: aslakknutsen baijum codecov-io pranavgore09

repo: almighty/almighty-core


text:
New users cannot use scoresheet integrations anymore

MODAQ no longer allows (new) users to login with Google through OAuth2; this breaks the scoresheet integrations for new users. Specifically, when new users attempt to login through Google to give permissions regarding access to Google Drive, they are presented with this screen.

It seems like this is due to MODAQ reaching Google's 100 user quota for unverified apps (see here).

I'll take a look when I'm back home. I've tried verifying the app, but they didn't get back to me.

The old request is still in progress, but they haven't acted upon it for weeks.

App has been verified; this should now be fixed.

repo: alopezlago/MODAQ


text:
Issue 75 unity

Updated Coordinates and Scene in Unity. Added some functions to Interface.
still in porgress to correct all coordinates of Block 3, 4, 5

Closes #67 ; Closes #75

repo: alpakadev/robot-ludens


text:
Sourcing exports

2 new scripts for CCS Sourcing exports

generate_declaration_export_for_ccs_sourcing.py
Used to generate a CSV file containing the supplier declaration data

Gets every supplier from the supplier API
For each supplier looks for a declaration for G7
Checks that the declaration is complete by looking for the first compulsary field from page 4 - this is a proxy for "completed". All pages must be valid to be saved and all pages must be complete to get to page 4, so this should be sufficient in lieu of an actual status.
Parses the declaration data into human readable form for presentation in the CSV

Booleans -> yes | no
Strings -> encoded to UTF-8, presented content as is
Required checkbox lists -> These are valid if all boxes are ticked. So presented as "passed" or "failed" depending on how long the list of values is compared to expected length.
Optional checkbox lists -> More informational, data presented as values joined by comma's, encoded to UTF-8.

Uses Digital marketplace supplier ID, duns number and name as meta data.

generate_lots_export_for_ccs_sourcing.py
Generates the data around G7 services for each supplier.

Get every supplier from supplier API
For each supplier gets all the drafts
For each draft filter the G7 ones, which have service names into a sublist

note that the service name check filters out "hanging" copies. Services that have been copied but have had no action taken exist in the DB but are not visible to suppliers and therefore are removed.

Group this by lot, then by status.
CSV has same meta columsn as (1) above
Columns are status per lot, so submitted | not-submitted for each lot.

To check if the declaration is complete you can check the status key in the saved JSON data - possible values are started or complete.

I'm not sure if the behaviour of the second script is exactly what CCS want (it may be - I'm just checking the requirements)? It only counts draft services that have all required fields filled in - i.e. services that could have been marked as complete but that weren't.  Do they also want to know if there were drafts that were started but not all required fields completed?

I'm happy with just the drafts which could have been marked as complete.  This is informational only for CCS

Checking @TheDoubleK comment looks like it does all drafts, not just finished but not submitted ones. Checked locally. @TheDoubleK doing a second pair of eyes check.

Checked mine again and it definitely only seems to be doing the complete-but-not-submitted ones:

Results from the counting script:

Actually, it could also be counting not-complete-but-not-submitted too, as there are one each of those.  Let me do a bit more digging.

authors: TheDoubleK cathrooney minglis

repo: alphagov/digitalmarketplace-api


text:
Log stack trace for failed logging

Log stack traces for logging format error messages
When the logging message formatting fails it logs an error. This change uses the exception method to add a stack trace to the error so that we can more easily trace the root cause.
Move hash_email function into dmutils
This was originally implemented in the supplier frontend to hash emails before putting them in logs to avoid logging raw email addresses but still retain the ability to search for them.
Use formatted log messages for email
This was causing errors with the new logging style because result is a JSON object. This change pulls out the useful information and formats it into the message directly.

:+1:

authors: TheDoubleK robyoung

repo: alphagov/digitalmarketplace-utils


text:
Add ability to monitor fastly_logs Athena databases

Trello: https://trello.com/c/93jgKiUX/1329-set-up-a-smoke-test-that-athena-is-still-operating-on-new-data
We want to have the means to monitor whether our fastly_logs athena
databases continue to return results, this is in response to a bad
deploy a few months ago where we discovered that the database was no
longer queryable.
To monitor Athena we need a user that has access to Athena, to AWS Glue
to access table details, to have read access to the bucket the data is
in and to have write access to a bucket to store results. The intention
is that this users credentials will be stored within Jenkins and
periodically a job will run that makes a query to Athena. This job will
be deemed successful if results can be pulled from the database.
This PR adds a new IAM user for this monitoring and creates a bucket
where results can be stored. The bucket has a short retention of 7 days
as I don't anticipate we'll have much (if any) use for the data it returns once
the query is completed. It then applies a policy so that this user can
access all the necessary resources.
I've applied this terraform to the test environment and it worked successfully.

Oh, I think you just need to run tools/update-docs.sh to make the Concourse lint happy.

authors: kevindew sengi

repo: alphagov/govuk-aws


text:
Task/add sidekick information to prometheus

Changes
The requirements around what metrics should be provided, and what they were to be used for was slightly ambiguous, so this PR endeavours to match the requirements to what is provided by Sidekiq::Stats. What follows is a description.
Required metric: Time to send an email
Provided: Queue latency for the email queue (prometheus metric name: sidekiq_mailers_queue_latency). This is a rough indicator of the time it will take to send a given email from the moment it is queued.
Required metric: Email job failure rate
Provided: Job failure rate for sidekiq as a whole (prometheus metric name: sidekiq_failed_jobs) and in addition a count of the dead sidekiq jobs (prometheus metric name: sidekiq_dead_jobs). The failure rate on a per job/queue basis is not data that is collected by sidekiq and is thus not available in the Sidekiq::Stats API.
N.B: Currently the only job ran by the govuk-coronavirus-vulnerable-people-form service is the email job, so, for now, the two are equivalent.
Required metric: Email job volume
Provided metric: The volume of jobs in the email job queue (prometheus metric name: sidekiq_mailers_queue_size). Sidekiq doesn't keep records of the jobs that have been completed on a per queue basis, so historical information isn't available here. The same point as above re emails currently being the only job on the service holds true, and we provide the metric sidekiq_processed_jobs that tracks the total number of processed jobs.
How to review
The metrics test has been extended to check that some sidekiq information is included, tests can be run the usual way via:
rake exec bundle
In addition one can see the individual metrics by running:
foreman start  and going to http://localhost:5000/metrics
One can also configure a prometheus job to scrape the metrics endpoint, and observe that prometheus is picking up the metrics.
Links
https://trello.com/c/QzchHd65/265-add-monitoring-for-sidekiq

Summarising discussion elsewhere:
As sidekiq is a separate process, and prometheus metrics are not automatically forwarded to the rails process, gathering custom metrics from jobs necessitates either:
a) Finding a way to relay information from sidekiq to the rails process, which then inserts the metrics into the rails processes metrics. This could take the form of using redis as a pub-sub bus, or perhaps querying the sidekiq process on demand for metrics gathered by something like https://github.com/fastly/sidekiq-prometheus, assuming we know where sidekiq lives.
b) Using something  off the shelf (like the above) and have prometheus query sidekiq directly. Note - this option wasn't liked so much last time it was suggested as it would add complexity to the prometheus setup.


text:
Add email-alert-service

Dependencies:

[ ] #9 Add RabbitMQ

This has been added now.

repo: alphagov/govuk-guix


text:
rename EKS cluster

Now that the Proof-of-Concept govuk cluster has been deleted, we can
reuse this name for our cluster here rather than use govuk-tmp
Deployment: applying this PR will destroy the current govuk-tmp
cluster and replace it with a new one.

Forgot to ask if you'd tested this. Looks like it broke on deployment 😅
│ Error: Cycle: module.eks.aws_iam_role_policy_attachment.workers_AmazonEC2ContainerRegistryReadOnly[0] (destroy deposed 92574034), module.eks.aws_iam_role.workers[0] (destroy deposed 6bd83de2), module.eks.aws_eks_cluster.this[0] (destroy deposed c2104576), module.eks.aws_iam_role_policy_attachment.workers_AmazonEKSWorkerNodePolicy[0] (destroy deposed fb45edf1), module.eks.aws_iam_instance_profile.workers[0] (destroy deposed 24e84da6), module.eks.aws_launch_configuration.workers[0] (destroy deposed 9421c7d9), module.eks.aws_iam_role_policy_attachment.workers_AmazonEKS_CNI_Policy[0] (destroy deposed 7322a760), module.eks.local.userdata_rendered (expand), module.eks.aws_iam_role_policy_attachment.workers_AmazonEKS_CNI_Policy[0], module.eks.local.default_iam_role_id (expand), module.eks.aws_iam_instance_profile.workers[0], module.eks.aws_iam_role_policy_attachment.workers_AmazonEC2ContainerRegistryReadOnly[0], module.eks.aws_launch_configuration.workers[0], module.eks.aws_autoscaling_group.workers[0], module.eks.aws_iam_role_policy_attachment.workers_AmazonEKSWorkerNodePolicy[0], module.eks.aws_iam_role.workers[0], module.eks.aws_autoscaling_group.workers[0] (destroy deposed 4b518c38), module.eks.aws_cloudwatch_log_group.this[0] (destroy), module.eks.aws_eks_cluster.this[0]

So it seems the terraform-aws-modules/eks module doesn't like changing the name 🤔 Arguably a bug in the module but I think it's one we can ignore because we'd never actually try to rename a cluster this way 🤷

the deployment is delete the existing cluster and create :-)

authors: fredericfran-gds sengi

repo: alphagov/govuk-infrastructure


text:
Update/Remove jQuery

I've seen a few messages today about jQuery vulnerabilities < v3. We're currently on 1.11.3.
Should we explore upgrading?

I think now that we do not have a dependency on jQuery we could consider shipping 3.x for user's who want to use it, or remove it entirely.

Changing this to bug fix as such an old version of jQuery is a security issue

We'll probably have to deal with #1081 first, since the out-of-date step by step pattern requires jQuery.
It has been updated to remove the jQuery dependency (https://github.com/alphagov/govuk_publishing_components/pull/1645).
If we decided to bump our version of jQuery, worth noting that the older step by step has not necessarily been thoroughly tested (https://github.com/alphagov/govuk_publishing_components/pull/927).

oh good catch thanks!

I'm leaning to removing it - its not hard for our users to add it themselves, either in /app/assets or by referencing a CDN.

Is it possible to find out how many users use it?
My guess is that it's probably quite common - so removing it would mean an extra step for users.

2 thoughts:

The current update process does not touch /app so nothing will change in existing prototypes. This is not great if we make this as a deliberate change to remove old code.

If people need jQuery if we remove it, the steps to add would be:

add this into your prototype, in app/views/includes/scripts.html
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>`

However we probably want to point them at https://code.jquery.com/ to get the latest version of this line

we have had more reports of people using it, and MOJ Frontend relies on it (see above)

Would updating jQuery be more or less onerous for users? I'm not entirely familiar with the major changes between v1 and v3 of jQuery, but presumably users would need to migrate - probably beyond our remit to help with this.
Alternatively, if they really needed v1, they could just replace the script src as needed.

If we chose to update jQuery, we'd need to:

point out that users can downgrade manually at their own risk
point them to jQuery's migration docs/apps - there's two migrations they'd have to do, from <1.9 to 1.9, then from 1.9 to 3+.

Decision is to remove it.

We're removing jquery bit by bit:

[ ] #1418
[ ] #1427

This will be fixed in v13.

authors: Izabela-16 domoscargin edwardhorsford joelanman lfdebrux nickcolley

repo: alphagov/govuk-prototype-kit


text:
css in not namespaced across our repos

Currently we live in a world where we have multiple patterns, and may wish to in the future do this.
our sass and css imports are not namespaced, so due to rails asset pipeline magic, its hard to trace where things are coming from. i believe namespacing would help this.
so instead of @import typography it would help if it was govuk_elements/typography
https://github.com/alphagov/govuk_frontend_toolkit/issues/415

The elements typography file is already called _elements-typography.scss, to separate it from the typography.scss` file from the frontend toolkit.
Yes this would be useful and it's something we are looking to introduce in GOV.UK frontend.
https://github.com/alphagov/govuk-frontend/blob/master/docs/coding-standards/css.md#namespace
I'm a concerned about making breaking changes like this to GOV.UK elements in the meantime.

@gemmaleigh if we raise this as an issue over at govuk-frontend we can close it here?

@nickcolley I don't mind if you leave it open here, it is an issue with the existing code - it's probably not going to be something that gets fixed here though.
Feel free to raise an issue over on the govuk-frontend repo and when we start adding namespaced code to the repo, I'll close it then.

I'm going to close this, as the intention is to replace govuk-elements-sass with govuk-frontend. We have coding guidelines and those include our use of namespaces.
https://github.com/alphagov/govuk-frontend/blob/master/docs/coding-standards/css.md#namespace

authors: gemmaleigh mcgoooo nickcolley


text:
Added Daz

And this also removes Richard Boultons details

:+1: merge when green

authors: dazahern surminus


text:
Section Redirects should be publishing the redirect afterwards

Testing out the rake task in integration and staging, the redirects were not applying until a publishing is made.
https://trello.com/c/AtMQQLLz/1819-stop-creating-orphaned-manual-section-pages-when-unpublishing-manuals
⚠ This repo is Continuously Deployed: make sure you follow the guidance ⚠
Follow these steps if you are doing a Rails upgrade.

Thinking about it, isn't that redirect adapter calling the wrong method completely? Why are we calling put content when we could be calling unpublish?
I suspect the put content with a redirect and publish probably amounts to about the same thing as unpublishing but it's very odd.

I think because "put content redirect" doesn't rely on a content_id (hence the secure random guid - it just redirects a route - any route), and unpublish is unpublishing and redirecting a specific content with a content ID.
Fair shout about why this is a redirect and not an unpublish - i wonder if it's because it's being used by the section reslugger - which might have differing content IDs?
A similar task exists on whitehall to redirect a route
  desc "Publish redirect routes (eg /government/world)"
  task publish_redirect_routes: :environment do

repo: alphagov/manuals-publisher


text:
Expose two private methods as public

This is to fix that the vendored copy of Content Publisher is exposing
a private method (insertText) and had deviated from the version supplied
in this repo.
This adds this method exposure into the source code and adds another
one: newlinesToSurroundSelectedText, which can be used to determine the
spacing around a block element.
It isn't ideal to be doing this as this only deviates this fork from
upstream. Hopefully in the future Content Publisher has different means
to insert text that don't involve using this private API.

I had a branch with insertText exposed, but forgot to raise a PR for it yet as I was waiting for the modal work to be approved.

authors: alex-ju kevindew

repo: alphagov/markdown-toolbar-element


text:
[184446952] Using S3 broker version with new security changes

What
Starting in April 2023 Amazon S3 will change the default security configuration for all new S3 buckets. For new buckets created after this date, S3 Block Public Access will be enabled, and S3 access control lists (ACLs) will be disabled.
This PR uses the S3-Broker version supporting this is functionality.
How to review
Check the paas-s3-broker-boshrelease release in the build CI version to match the version with the paas-s3-broker feature version.

🚨⚠ Please do not merge this pull request via the GitHub UI ⚠🚨

Things match 👍
Not sure why there's a white space change?

There was a continuation in line 56 with a white space at the end of the line which is not visible. Putting spaces on at the end of the formatted text is producing formatting errors upon change. The humans editing the file will find out about them while adding the change to a commit. As this is a yaml free text block it is preferable for the space between sentences to be identifiable from humans. That is why it prepends the sentence. Not big of a deal. If you want that reverted I can happily make it happen.

repo: alphagov/paas-cf


text:
Add nginx 301 config

As part of the decomissioning process tenants who have used the cloudapps.digital domain will no longer be able to. this app gives an easy way to perform 301 redirects to help smooth the transition over to their new domain.
There is a current version deployed that can be tested with
curl -L -I redirect-domain.cloudapps.digital

looks good to me

authors: LeePorte pauldougan

repo: alphagov/paas-community


text:
Introduce elasticsearch gem and rake tasks for snapshot restore

Start snapshot
Monitor snapshot
List snapshots in bucket
Get latest snapshot
Restore a named snapshot
Monitor a restore
Switch aliases to a restored index

The ongoing snapshot process will be managed from a cron or jenkins job,
and we plan to add a jenkins job for restoring as well.
We always create repository before snapshotting (this is idempotent), so settings
get updated when keys are rotated.
In addition to this we already have a nightly job that rebuilds the
indexes, which will be extended to clean up old snapshots.
Elasticsearch's APIs don't handle multiple snapshot/restore operations
at the same time. If we are unable to take a snapshot for this reason, we
will just let the job fail.
Ultimately, we will ensure we always have a useable snapshot by using
snapshots to refresh staging/integration and monitoring this.

The main rake task here is rummager:snapshot:run. This will be called by a cron job - I'll raise a PR against puppet for this shortly.
The other rake tasks demonstrate what we can do with the snapshots. These could be triggered from jenkins or fabric.
We still need to extend the nightly jenkins job to clean up old snapshots.
Open questions:

Is there a simple way to configure the bucket name per environment in rummager?
Is there a process for taking snapshots from the S3 bucket and transferring it to a separate environment? The work so far only really addresses disaster recovery.

:+1: reaaally good and great doc! Let's wait for someone that hasn't work on this to review it.

@mobaig - @tijmenb the PR is ready to be reviewed :grin:

LGTM. Happy to merge once rebased.

@mobaig Rebased now

:rocket:

authors: MatMoore jackscotti mobaig tijmenb

repo: alphagov/rummager


text:
Add nta font

This fixes a bug where the font isn't loading. Font loading is disabled since govuk-frontend v2.9.0 to ensure font file is not required twice for projects that rely on govuk_template. The typeface comes disabled from govuk_publishing_component and needs to be enabled in repos that don't rely govuk_template.

 (1) Fix fonts in Signon

@theseanything I was preparing to push a PR for this. Thanks!

authors: alex-ju theseanything

repo: alphagov/signon


text:
Webchat iFrame JSON.parse error

https://www.gov.uk/manage-your-tax-credits
Uncaught SyntaxError: Unexpected token o in JSON at position 1
https://github.com/alphagov/static/blob/2acd6a4438b26808e133566949f7d5761f38976e/app/assets/javascripts/webchat-iframe.html.erb#L51
{
  request: "getUri"
}

https://github.com/alphagov/static/blob/2acd6a4438b26808e133566949f7d5761f38976e/app/assets/javascripts/webchat.js.erb#L49
{
  request: "postUri",
  uri: "https://assets.publishing.service.gov.uk/static/webchat-iframe-2d543041ba9841c24cb490ff04b8c250cbb7bd7f2178bcf96c11e18d185352ce.html"
}

Issue is that the response is already an object so parsing twice throws the error.

This seems to be an error only present when https://chrome.google.com/webstore/detail/accessibility-developer-t/fpkknkljclfencbdbgkenhalefipecmb is being used...
In an incognito window these errors to not display, but the webchat still does not work.

repo: alphagov/static


text:
Improve email check regex

Use a more robust regex to check emails.
https://trello.com/c/oFWuEIyv/3318-improve-email-validation-in-support-app-3

Can we add some test (at lease for the example in the Sentry error)?

Done

repo: alphagov/support


text:
Add JS for Speeches to the EditionForm module

Description
When a user creates a speech, one of the possible subtypes is Authored article. Unlike the other speeches, this is written not spoken.
Due to this, when an Authored article is selected the following needs to happen:

The location field needs to be hidden and the value reset
Any reference to Speaker in labels needs to be updated to Writer

Then when the subtype moves from Authored edition to another subtype the reverse needs to the occur:

the location field needs to be displayed
Any reference to Writer needs to be updated to Speaker

This PR adds the speech form to displays the correct fields/values on page load and adds a JS module which does the above dynamically.
Screenshots
With authored article subtype

With any other subtype

Trello card
https://trello.com/c/KOGs7sJq/1072-add-javascript-for-authoredarticles-to-hide-show-fields-subtype-of-speech
⚠ This repo is Continuously Deployed: make sure you follow the guidance ⚠
Follow these steps if you are doing a Rails upgrade.

thanks for the review @dnkrj

repo: alphagov/whitehall


text:
Need help setting this up :)

Hello, thanks for your work on this gem! I'd love to get this working, but I think I need your help.
I'm testing out Graphiti v1.2.1 and I can't seem to get this gem to be able to generate an OpenAPI doc. Here were my steps to get started with this gem (Graphiti is already setup and working fine).

bin/rails graphiti:openapi:install
Add = javascript_pack_tag "api", crossorigin: "anonymous" to my application.slim
Update api.js to point to the correct url, in our case /api/v3/openapi.json

Unfortunately, it looks like that file is not being generated.
I took a look at the gem's source and tried running bin/rails graphiti:openapi:generate --verbose, however, I'm getting an error about Dry::Types:
** Invoke graphiti:openapi:generate (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke public/schemas/jsonapi.json (first_time, not_needed)
** Execute graphiti:openapi:generate
[dry-types] Dry::Types.module is deprecated and will be removed in the next major version
Use Dry.Types() instead. Beware, it exports strict types by default, for old behavior use Dry.Types(default: :nominal). See more options in the changelog
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/2.6.0/monitor.rb:230:in `mon_synchronize'
rails aborted!
NoMethodError: undefined method `member_types' for #<Dry::Types[Constructor<Schema<keys={}> fn=Kernel.Hash>]>
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/dry-types-0.15.0/lib/dry/types/constructor.rb:147:in `method_missing'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/dry-struct-0.6.0/lib/dry/struct/class_interface.rb:326:in `schema'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/dry-struct-0.6.0/lib/dry/struct/class_interface.rb:213:in `check_schema_duplication'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/dry-struct-0.6.0/lib/dry/struct/class_interface.rb:153:in `attributes'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/dry-struct-0.6.0/lib/dry/struct/class_interface.rb:103:in `attribute'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/graphiti-openapi-0.1.7/app/models/graphiti/open_api/attribute.rb:6:in `<class:AttributeData>'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/graphiti-openapi-0.1.7/app/models/graphiti/open_api/attribute.rb:5:in `<module:OpenAPI>'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/graphiti-openapi-0.1.7/app/models/graphiti/open_api/attribute.rb:4:in `<top (required)>'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/graphiti-openapi-0.1.7/app/models/graphiti/open_api/resource.rb:4:in `require_relative'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/graphiti-openapi-0.1.7/app/models/graphiti/open_api/resource.rb:4:in `<top (required)>'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/graphiti-openapi-0.1.7/app/models/graphiti/open_api/schema.rb:3:in `require_relative'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/graphiti-openapi-0.1.7/app/models/graphiti/open_api/schema.rb:3:in `<top (required)>'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/graphiti-openapi-0.1.7/app/models/graphiti/open_api/generator.rb:5:in `require_relative'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/graphiti-openapi-0.1.7/app/models/graphiti/open_api/generator.rb:5:in `<top (required)>'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:476:in `load'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:476:in `block in load_file'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:661:in `new_constants_in'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:475:in `load_file'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:373:in `block in require_or_load'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:37:in `block in load_interlock'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies/interlock.rb:14:in `block in loading'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/concurrency/share_lock.rb:151:in `exclusive'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies/interlock.rb:13:in `loading'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:37:in `load_interlock'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:356:in `require_or_load'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:510:in `load_missing_constant'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:195:in `const_missing'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/graphiti-openapi-0.1.7/lib/tasks/graphiti_openapi.rake:19:in `block (3 levels) in <top (required)>'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/task.rb:273:in `block in execute'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/task.rb:273:in `each'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/task.rb:273:in `execute'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/task.rb:214:in `block in invoke_with_call_chain'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/2.6.0/monitor.rb:230:in `mon_synchronize'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/task.rb:194:in `invoke_with_call_chain'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/task.rb:183:in `invoke'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:160:in `invoke_task'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:116:in `each'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:116:in `block in top_level'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:125:in `run_with_threads'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:110:in `top_level'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:186:in `standard_exception_handling'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/command.rb:48:in `invoke'
/Users/yj/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/commands.rb:18:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Tasks: TOP => graphiti:openapi:generate

Any suggestions? I'd guess there's a breaking change in Dry::Types from too loose of a dependency?

Hey,
Unfortunately, and as far as I know, @alsemyonov is no longer with us so... probably no updates for the project anymore.
He was a hero of Russian LGBT rights movement and loosing him is a terrible thing for both communities.

I'm sorry to hear that. Maybe it'd be a good idea to open a new issue on the repo explaining that.

authors: chedim yjukaku

repo: alsemyonov/graphiti-openapi


text:
🛑 roothouse-1 is down

In 86b135a, roothouse-1 (https://rhstatus-proxy.alterine0101.id/?deviceId=roothouse-1) was down:

HTTP code: 404
Response time: 255 ms

Resolved: roothouse-1 is back up in a39cca1.


text:
🛑 Nix is down

In 4755859, Nix (https://nix.reinhart1010.id) was down:

HTTP code: 403
Response time: 57 ms

Resolved: Nix is back up in bac9afb.


text:
Проблемы с картинками и количеством публикаций

В общем только поставил вашу систему, понравился шаблон кстати дефолтный и в админке тоже симпотичный, спасибо, молодцы!
А теперь по багам.
порядок был такой: установил, зашел под аккаунтом админа, в настройках сменил название сайта, описание, если визуальный редактор был выключен, я его включил, точно не помню, затем посмотрел шаблоны, остановился на дефолтном, при написании первого поста в этот блог, отметил "Принудительно вывести на главную", нажал внизу "добавить изображения", залил три картинки, добавил их в пост выбрав в уже загруженных пункт "Этот топик", причем среди трех загруженных картинок почему-то возникла битая четвертая картинка, удивился, посмотрел в коде, увидел вот такой код:

удивился еще больше. Потому что в топике есть ссылка что идет после edit/1/
Подумал что баг.
Удалить нельзя ни одно из изображений из этого окна выбора, хотя хотелось бы удалить эту битую картинку, потому что ее больше нигде не видно, ни в исходном коде топика, ни в загруженных изображениях, нигде.
Нажал опубликовать, посмотрел что получилось, получилось что у меня превью картинка отмеченная как превью, чуток текста, и картинка добавленная вручную и затем кат, нажал редактировать под топиком, но картинка которая была выбрана как превью все еще имеет надпись "Отметить как превью", опять баг.
Ок думаю, скрипт при нажатии проверит что она все-таки превью и удалит, нажал опять "Отметить как превью", появилось сообщение "Это изображение больше не превью к статье", ну думаю и то хорошо.
Смотрю что получилось - никаких изменений, превью как висело так и весит, обновил кеш браузера, сбросил кеш cms через админку, превью так и висит, выбираю вторую картинку как превью, она заменяет текущее превью, пытаюсь убрать превью совсем - не убирается. Выходит снова баг.
Пошел смотреть что там в профиле админа видно на сайте, а видно вот что у него:
1 статья  - правильно
7 картинок - не правильно, я всего три заливал, ну пусть 4 с учетом той странной битой.
8 публикаций - неправильно, зачем считать картинки как публикации?
в картинках есть опять эта битая картинка, с тем же кодом, только добавился  rel="prettyPhoto[pp_gal]"
Скриншот:

плюс:
Что за иконка папки слева? это дефолтный логотип для пользователей? вроде нет, что же тогда справа? Непонятно. Кстати та же иконка появилась у блога без превью.
Еще почему-то в шаблонах слова топик и статья означают одно и тоже, да, это и есть одно и тоже, но зачем использовать два разных слова для одной сущности?
В статье у превью (которое не удаляется никак) такой код:

Зачем превью является ссылкой которая никуда не ведет, даже внутрь топика? Что было бы очень даже хорошо, кстати.
Открыл саму картинку оказалось что картинка увеличилась с 654304 до 1468682, т.е. по высоте, не очень понятно куда такая широкая картинка.
У каждой картинки в топике такой ксс:
.topic-text img, .comment-text img {
  cursor: pointer;
}

Зачем pointer у каждой простой img когда они даже не обрамлены ссылкой, тоже не понятно совсем.
Было бы круто лепить автоматически ссылку на оригинал изображения, если оригинал больше чем ужатая версия в статье.
Или например, если я использую фотосет при добавлении фото, и теже фотки в статье, чтобы ссылки на оригинал как раз ставились, можно даже если фотосет скрыт (иначе польза от них не очень ясна).
Вот такое получилось первое знакомство с вашей CMS, первое впечатление, первые пожелания и первый багрепорт.
Желаю вам удачи с вашим детищем!
Может мне пока с сайта версию скачать, которая стабильная? И где можно об отличиях почитать, и вообще документацию найти? И куда если что вопросы задавать? Извиняюсь что здесь спрашиваю, других мест не нашел.

Спасибо за багрепорт

отмена превью была сделана раньше
функционал удаления картинок в менеджере изображений запланирован на будущее в задаче #471

authors: andrey-v xen-chut

repo: altocms/altocms


text:
Connection attempt failed

getting this error when using the example code. What's going on?
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\packages\urllib3\connection.py", line 141, in _new_conn
    (self.host, self.port), self.timeout, **extra_kw)
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\packages\urllib3\util\connection.py", line 83, in create_connection
    raise err
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\packages\urllib3\util\connection.py", line 73, in create_connection
    sock.connect(sa)
TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\packages\urllib3\connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\packages\urllib3\connectionpool.py", line 345, in _make_request
    self._validate_conn(conn)
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\packages\urllib3\connectionpool.py", line 844, in _validate_conn
    conn.connect()
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\packages\urllib3\connection.py", line 284, in connect
    conn = self._new_conn()
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\packages\urllib3\connection.py", line 150, in _new_conn
    self, "Failed to establish a new connection: %s" % e)
requests.packages.urllib3.exceptions.NewConnectionError: <requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x05C67970>: Failed to establish a new connection: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\adapters.py", line 423, in send
    timeout=timeout
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\packages\urllib3\connectionpool.py", line 649, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\packages\urllib3\util\retry.py", line 376, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
requests.packages.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='order.dominos.com', port=443): Max retries exceeded with url: /power/store-locator?s=700%20Pennsylvania%20Avenue%20NW&c=Washington,%20DC,%2020408&type=Delivery (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x05C67970>: Failed to establish a new connection: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond',))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "main.py", line 6, in <module>
    store = address.closest_store()
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pizzapi\address.py", line 34, in closest_store
    stores = self.nearby_stores(service=service)
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pizzapi\address.py", line 29, in nearby_stores
    data = request_json(self.urls.find_url(), line1=self.line1, line2=self.line2, type=service)
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pizzapi\utils.py", line 6, in request_json
    r = requests.get(url.format(**kwargs))
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\api.py", line 70, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests-2.13.0-py3.6.egg\requests\adapters.py", line 487, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='order.dominos.com', port=443): Max retries exceeded with url: /power/store-locator?s=700%20Pennsylvania%20Avenue%20NW&c=Washington,%20DC,%2020408&type=Delivery (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x05C67970>: Failed to establish a new connection: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond',))```

On inspection it seems that order.dominos.com does not actually exist

@Bentechy66: No, orders.dominos.com does still exist... Check out the url with your browser: https://order.dominos.com/power/store-locator?s=700 Pennsylvania Avenue NW&c=Washington, DC, 20408&type=Delivery
To me it seems like this has something to do with a shoddy connection or maybe with your installation of requests. Or hey, maybe you exceeded their rate limit? It's hard to say.
In any case, I'm not really maintaining this repo anymore. I'm mostly just leaving it up now in case more people want to fork it. If you want to submit a PR I'll take a look at it, but don't expect a fix for this to roll out any time soon.

Hmm, strange, I can access the site on my phone but not my PC. I will look into this on my end.

repo: aluttik/pizzapi


text:
please bring back Tracking Space Settings (local)

Description
I'm missing tracking space settings !
before ALVR v18.x , I used to set it to 'local' mode :
Local means that the anchor between the virtual and real worlds is movable: if you press and hold the Oculus button the world will rotate and translate depending on your position and heading at that moment.
it perfectly fited my needs : I'm using 3 quest2 in a shared space, and it was easy to calibrate and sync the 3 HMDs : place and orient the Quest in the center of the space, and press & hold Oculus button. repeat this step for each HMD, and voila.
Now Tracking Space settings is gone... the position and orientation of each HMD depends of the gardian settings of each Quest, no way to make them match perfectly ; and quite often, when turning off / on the quest, the forward direction is turned (90 degrees) ;
To choose the forward direction with the room scale guardian, redo the guardian setup and select “Confirm” when facing the preferred forward direction.
this doesn't seem to work. The forward direction visible in steamVR do not match the direction the direction I'm facing when confirming the guardian setup...
Please, bring back tracking space setting with local mode, i used to work much better IMHO !
General Troubleshooting

[x] I carefully followed the instructions in the README and successfully completed the setup wizard
[x] I read the ALVR Wikis here and here

Environement
Installation
ALVR Version: 18.2.1
SteamVR Version: 1.22.5

For the average user, if they need to reorient the view often, setting the guardian as stationary is an acceptable compromise. In your case you have a more complex setup and i suggest you to use some tool like OpenVR Space Calibrator. I still plan to add back the option in ALVR but it's currently low priority for me. We already discussed this on Discord and maybe @sctanf can give this a try.

Thanks for your feedback.
I tried OpenVR Space Calibrator, but I can't see how it can help in my case. :-s
SteamVR "reset standing position" button does what I need, but as it has to be clicked in VR, I must wear the HMD to activate it... and to make an accurate calibration, the Quest needs to be placed in an exact position (for example on a table with marks on it, or on a stand, in order to be able to do the exact same calibration for the 3 HMDs).
That's why the "press and hold the Oculus button the world will rotate and translate depending on your position and heading at that moment" was just perfect for my needs ! Quick and easy, no need to edit the gardian..
setting the gardian as stationary is not an option as I need to move in a large room, and the gardian is very useful to prevent collisions with walls and obstacles...

You could possibly press the button in VR while the headset is on a table if you disable the proximity sensor. Just need to make sure the button is visible straight on and you can see it on the pc stream window (definitely more complicated than what you described but not impossible).

Merged February 1st.

authors: matcham silveropensource zarik5

repo: alvr-org/ALVR


text:
Client's screen is black

Description

I'm using my Quest 1. For short, on Quest's-side ALVR displays nothing, just black screen, but on PC (SteamVR -> Display VR preview) works fine, display isn't black. As I said in my prev. issue, after I restarted my PC, everything broke for some reason. I haven't changed any of ALVR/SteamVR settings.
Oh, and also, I already tried to do this thing as described in "Linux Troubleshooting" in Wiki, before restarting PC, it worked.

I tried already to re-register the ALVR drivers, etc. but it doesn't affect anything.
This returns me nothing, so this isn't a graphics driver-related problem.

General Troubleshooting

[x] I carefully followed the instructions in the README and successfully completed the setup wizard
[x] I read the ALVR GitHub Wiki

Environment
Hardware
CPU:
Intel Core i3-10100F
GPU:
AMD ATI Radeon RX 470/480/570/570X/580/580X/590 (RX580)
GPU Driver Version:
Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (rev e7)
Audio:
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]
00:1f.3 Audio device: Intel Corporation Comet Lake PCH-V cAVS
(I'm using my Astro MixAmp Pro headphones, device name: Astro MixAmp Pro Mono)
Installation
ALVR Version:
v.20.8.1
ALVR Settings File:
sorry, I don't know where exactly this file is located
SteamVR Version:
latest,  v2.7.1
Install Type:

[ ] Packaged (exe, deb, rpm, etc)
[x] Portable (zip)
[ ] Source

OS Name and Version (winver on Windows or grep PRETTY_NAME /etc/os-release on most Linux distributions):
Debian GNU/Linux 12 (bookworm) (stable)

Me to

Same here on NixOS and Nvidia graphics

+1, Arch KDE, 3060 ti, nvidia proprietary drivers - 555

This seems to be a duplicate report of a known issue, though this known issue wasn't necessarily clearly documented. I went ahead and documented it in #2242, which also contains an explanation. If this isn't actually the case and the workaround doesn't actually fix this particular instance then feel free to comment and I'll reopen this issue.

For me the black screen was a firewall issue, a vrmonitor.sh being needed issue and vrcompositor crashing if more than one ICD are available, i used one of the vulkan env variables to restrict it to only nvidia's ICD. The last issue might be NixOS specific though, it also manifested as a crash in the quest and a white screen in the steamvr preview

For me the black screen was a firewall issue, a vrmonitor.sh being needed issue and vrcompositor crashing if more than one ICD are available, i used one of the vulkan env variables to restrict it to only nvidia's ICD. The last issue might be NixOS specific though, it also manifested as a crash in the quest and a white screen in the steamvr preview

what exactly did u do to fix it im having the same issue on nix

I have my notes somewhere, ill find then, clean up, post, notnsure when, ill prioritize it though.

what exactly did u do to fix it im having the same issue on nix

there are already some notes about that in the wiki, not for nix specifically but should still help with the issue you're experiencing
https://github.com/alvr-org/ALVR/wiki/Linux-Troubleshooting#amdintel-integrated-gpu--nvidia-discrete-gpu

what exactly did u do to fix it im having the same issue on nix

there are already some notes about that in the wiki, not for nix specifically but should still help with the issue you're experiencing https://github.com/alvr-org/ALVR/wiki/Linux-Troubleshooting#amdintel-integrated-gpu--nvidia-discrete-gpu

i dont have intigrated gpu and im on a amd graphics card

i dont have intigrated gpu and im on a amd graphics card

then you probably have multiple different drivers installed (which is also mentioned in the wiki btw)

disregard this fixed it ~/.local/share/Steam/steamapps/common/SteamVR/bin/vrmonitor.sh %command%

I have the same issue currently on NixOS with a Quest 3. I am unable to run the shell script since it does not exist:
~/.local/share/Steam/steamapps/common/SteamVR/bin/vrmonitor.sh %command%
I have tried WAYLAND_DISPLAY="" %command% but this does not solve the issue.
Info
OS: NixOS 24.11.20240916.99dc878 (Vicuna) x86_64
WM: Mutter (Wayland)
DE: GNOME 46.4
Kernel: Linux 6.11.0-cachyos
Thank you in advance.

@kimjongbing Theres a linux troubleshooting page on the wiki that contains the vrmonitor fix with instructions on how to adapt it to various installations.

@kimjongbing Theres a linux troubleshooting page on the wiki that contains the vrmonitor fix with instructions on how to adapt it to various installations.

Hi, are you referring to this? Can you point me to exactly which part of it would be relevant to troubleshooting my issue? I have tried the content under the Black screen even when SteamVR shows movement heading, and under the Wayland heading.

authors: MagicRB MeatH00k Popcake480 The-personified-devil kimjongbing lavenderdotpet marshallovski


text:
why I can see four different threads to get tracking info in the client side

Time spent total is log I added in the setControllerInfo func in the client. Here we got four different thread ID 2994 / 2992 / 2991 / 2995

The need to get tracking info is started by Rust below:

That spaghetti code is gonna go as soon as we finish the OpenXR client.

That's because Tokio (the async runtime) runs the code in the thread it wants. Once we rewrite the client to OpenXR we are going to limit async code and have more control of the threads.


text:
ping command can't use

when ping an IP:
ping 172.16.1.1 ping: 172.16.1.1: Address family for hostname not supported
when ping an domain:
ping github.com ping: github.com: Name or service not known

Provide output of curl -I github.com please.

curl -I github.com
HTTP/1.1 301 Moved Permanently
Content-length: 0
Location: https://github.com/
Connection: close

meet a same question

me too

authors: Godjqb ruizhipeng smounives turbo

repo: alwsl/alwsl


text:
🛑 syzszz.cn is down

In bdddb49, syzszz.cn (https://syzszz.cn) was down:

HTTP code: 0
Response time: 0 ms

Resolved: syzszz.cn is back up in fd384ee.

repo: alzee/up


text:
Create Leetcode Question Number 1985

Fixes #{1985}

My code sample is in :

[x] CPP
[ ] Java

Screenshot of working code sample  :
!

Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] My code sample is formatted and works correctly

Marking this as invalid
1 . Checked the I read the Contributor Guide and followed the process outlined there for submitting PRs. without reading .
2. Checked the My code sample is formatted and works correctly
3. Not reading the contributing guidelines
Feel free to open a n new valid pr.


text:
Feature:  Sum of product sop(), product of sum pos()

I wrote this terrible thing:
        m.comb += [
            # output 'a'
            self.Output[0].eq(all([~b,~d]) | all([~a,c]) | all([b,c])
                | all([~a,b,d]) | all([a,~c,~d]) | all([a,~b,~c])),
            # output 'b'
            self.Output[1].eq(all([~b,~d]) | all([~a,~b]) | all([~a,~c,~d])
                | all([a,~c,d]) | all([~a,c,d])),
            # output 'c'
            self.Output[2].eq(all([~a,b]) | all([a,~b]) | all([~c,d])
                | all([~a,~c]) | all([~a,d])),
            # output 'd'
            self.Output[3].eq(all([a,~c]) | all([~a,~b,~d]) | all([~b,c,d])
                | all([b,~c,d]) | all([b,c,~d])),
            # output 'e'
            self.Output[4].eq(all([~b,~d]) | all([a,b]) | all([a,c])
                | all([c,~d])),
            # output 'f'
            self.Output[5].eq(all([~c,~d]) | all([a,~b]) | all([a,c])
                | all([b,c,~d]) | all([~a,b,~c])),
            # output 'g'
            self.Output[6].eq(all([c,~d]) | all([a,~b]) | all([a,d])
                | all([~a,~b,c]) | all([~a,b,~c])),
        ]

(Editor's note:  I noticed a bug—a missing [—in the above while writing this, because this syntax suuuuuuuucks)
I propose sop([a,~b,c], [a,~b,d], [a,b]) equivalent to any([all([a, ~b, c]), all([a, ~b, d]), all([a,b])]), and pos() an all(any()) shorthand.  I would also be amenable to passing a single argument of a list of lists sop([[a,~b,c], [a,~b,d], [a,b]])
The above code then looks like this:
        m.comb += [
            # output 'a'
            self.Output[0].eq(sop([~b,~d], [~a,c], [b,c], [~a,b,d], [a,~c,~d], [a,~b,~c])),
            # output 'b'
            self.Output[1].eq(sop([~b,~d], [~a,~b], [~a,~c,~d], [a,~c,d], [~a,c,d])),
            # output 'c'
            self.Output[2].eq(sop([~a,b], [a,~b], [~c,d], [~a,~c], [~a,d])),
            # output 'd'
            self.Output[3].eq(sop([a,~c], [~a,~b,~d], [~b,c,d], [b,~c,d], [b,c,~d])),
            # output 'e'
            self.Output[4].eq(sop([~b,~d], [a,b], [a,c], [c,~d])),
            # output 'f'
            self.Output[5].eq(sop([~c,~d], [a,~b], [a,c], [b,c,~d], [~a,b,~c])),
            # output 'g'
            self.Output[6].eq(sop([c,~d], [a,~b], [a,d], [~a,~b,c], [~a,b,~c])),
        ]

True, but you can also write any() and all() yourself.  mux() is another thing you can do yourself.
Sum of products/product of sums are common operations; I also considered sending a pull request for this but it was late and it's not immediately obvious to me the correct way to iterate over an array passed to a function to carry out the sop() or pos() functions.  Maybe any([all(x) for x in inputarray]) or is that not how amaranth works?  I think it should work, maybe?  Probably.
Given how common the operation is, I actually went looking through the docs and codebase before making a feature request, since it wasn't obvious I wasn't just missing something.

Sum of products/product of sums are common operations

That's not really the case in my experience. You're the first person who wanted a first-class sum-of-product operation that I'm aware of.
In any case, additions to the public API have to go through the RFC process.

That makes sense

True, but you can also write any() and all() yourself. mux() is another thing you can do yourself.

any() and all() are standard Python functions. Mux() is the Amaranth equivalent of the standard Python x if y else z construct. sop() and pos() do not have a Python correspondence.

That makes sense.

Sum of products/product of sums are common operations

That's not really the case in my experience. You're the first person who wanted a first-class sum-of-product operation that I'm aware of.

I'm not sure those two things are equivalent, but fair enough.  Large functions are impossible to k-map anyway since you need to do them in an n-dimensional hypercube for 2n inputs (k-mapping is an optimization technique used to minimize logic by finding the optimal sum-of-products/product-of-sums equation; the other method is Quine-McClusky, which is np-hard because you need to solve the set covering problem, and that outputs sop/pos too).

In any case, additions to the public API have to go through the RFC process.

Thanks, I'll look through that.

Amaranth primarily targets FPGAs and ASICs and the open toolchain uses AIG-based synthesis for either, meaning neither K-maps nor Quine-McClusky are relevant at all for any of the main flows. CPLDs used to use those heavily but there is no CPLD toolchain explicitly supported at the moment (I think you could do some weird things with ISE but I'm not aware of anyone who has done that on a more than curiosity basis).
Even if K-maps were used, Amaranth is a high-level frontend that leaves all of the mapping work to the underlying toolchain, so even then I don't see the relevance of SOP/POS in the frontend.

Sum of products/product of sums are common operations

That's not really the case in my experience. You're the first person who wanted a first-class sum-of-product operation that I'm aware of.

Minimizing SOP/POS equations with Amaranth can be useful to implement complex instruction decoders. For example, Chisel provides one in its libraries, where minimization is done with QMC or by shelling out to Espresso.
This is probably too niche for Amaranth stdlib, but such functionality could make a good downstream library.

Minimizing SOP/POS equations with Amaranth can be useful to implement complex instruction decoders. For example, Chisel provides one in its libraries, where minimization is done with QMC or by shelling out to Espresso.
This is probably too niche for Amaranth stdlib, but such functionality could make a good downstream library.

Fair point.  I've used similar things when writing a RISC-V decoder or a Gameboy Color MMU emulator, with ugly things like (x & 'b0101 == 'b0101) | (x & 'b1011 == 'b1010)) (i.e. (b&d)|(a&c&~d)) and so forth in verilog long ago.  Lots of overly complex case statements I'd rather replace with something more elegant.  ...thinking about that code kind of makes me not feel so bad my SSD died without backups.
Wonder what else would go in such a library, but that's probably a conversation for somewhere other than here.

I'm going to close this because there isn't enough interest in the feature that I've seen over the years to continue tracking it. It is still open for commenting, and of course anyone can submit an RFC for this feature or any other one.

authors: jfng jrmoserbaltimore whitequark

repo: amaranth-lang/amaranth


text:
Infinite loading screen when a tracker is down

As of right now the Anilist tracker is down (maintenance maybe). When I select 'More Info's option in anime overview, it gets stuck on infinite loading and I suspect that it is due to not being able to connect to Anilist.
The overview screen, where we are able to see title, description, status, genre, duration, play episode, play next and all that. It is working fine but when I select more info, it gets stuck in infinite loading.
For more information, I have not logged into Anilist, I only use MyAnimeList which is working as of now. Also I am getting this issue on my android TV. Also I am using the latest stable version of the app.
The solution can be an error pop up or toast telling the user that a tracker is down or just making the button of the downed tracker disabled, letting the user see the more info screen without being stuck in infinite loading screen.

Ok so while writing the issue, the Anilist got working again and so does more info screen. So I think the issue was with AnimeTV not able to connect to AniList which was down (due to maintenance maybe)

repo: amarullz/AnimeTV


text:
Fixes #1212 - by force updating and upgrading the nghttp2-libs package

Checklist

[ ] Affected Issues have been mentioned in the Closing issues section
[ ] Documentation has been written/updated.
[ ] Changelog entry has been written

Explain the details for making this change. What existing problem does the pull request solve?
Changelog Entry
Bugfix - Update nghttp2-libs
Closing issues
Fixes #1212

nghttp2-libs-1.38.0-r0 x86_64 {nghttp2} (MIT) [installed]
> docker run -it lagoon/php:7.2-cli apk list | grep nghttp
nghttp2-libs-1.39.2-r0 x86_64 {nghttp2} (MIT) [installed]

Built the image locally and the update seems to land the newest nghttp2 library

repo: amazeeio/lagoon