text:
Control Multiple Thermostats

I'd love to be able to retrieve multiple Thermostats at the same time.  I can define them in the home bridge config file, assign them to rooms, but the set points per room all seem to set themselves to 10 degrees Celsius

Actually - I think I've managed to answer my own question ... by using the Child Bridges feature - https://github.com/homebridge/homebridge/wiki/Child-Bridges
I created a unique child bridge for each thermostat - in particular:

Unique MAC address for each child bridge "username" field
Unique listener port for each child bridge "port" field

I matched the last digit of the username, and the port number - and matched it to the zone
I then added each child zone individually - by searching for it (rather than scanning the barcode
  "accessories": [
    {
        "accessory": "ct200",
        "name": "CT200 - Front Hallway",
        "_bridge": {
           "username": "aa:bb:cc:dd:ee:ff:01",
           "port": 53111
        },
        "access": "xxx",
        "serial": "yyy",
        "password": "zzz",
        "zone": 1
    },
    {
        "accessory": "ct200",
        "name": "CT200 - Kitchen",
        "_bridge": {
           "username": "aa:bb:cc:dd:ee:ff:02",
           "port": 53112
        },
        "access": "xxx",
        "serial": "yyy",
        "password": "zzz",
        "zone": 2
    },
    {
        "accessory": "ct200",
        "name": "CT200 - Living Room",
        "_bridge": {
           "username": "aa:bb:cc:dd:ee:ff:03",
           "port": 53113
        },
        "access": "xxx",
        "serial": "yyy",
        "password": "zzz",
        "zone": 2
    },

and so-on !

When I wrote this plugin, I didn't image people would have multiple of these devices. Proper support for multiple CT200 units requires rewriting the plugin from an accessory to a service. I don't have an ETA for this feature, but I'll get around to it eventually.

I was testing it yesterday with 6 rooms as I have in these rooms valves. Unfortunately, with this number of rooms, as you are calling API independently several time in parallel, I got temporary ban on API to use it.
So, in this manner for more rooms, for showing read data only need to be use /zones/list from API and the other calls should be called change requests only.

/zones/list endpoint responds with temperature and current status (heating / idle), that means in theory only target temperature and target state has to scale linearly with room number. There could, in theory, be an improvement from 7x to 2x + 4 requests for full status, where x is number of zones.

Not sure which info from /zone/list you are missing. I was thinking aboud /zone/list and /zone/zn1 the same way as you can see in bosch mobile app home screen. I think that for status of accessories in home app it should be ok to call just /zone/list and zone/zn1 as zn1 is ct200 main panel and additional request can be handle on change or detail only. But probably I overlooked something missing.

Currently, the plugin has in total 7 endpoints (not counting set, only get). When you use child-bridges that means that you have in total 7 * x requests (depending on how many devices you have). But if I switch to using /zone/list that takes care of 2 api calls (per device) to only a single request for all devices. That only leaves target temperature and target state, which will have to be made per device. Humidity / Away mode / Localization are also not per device, but general endpoints.
/zone/zn1 only returns the list of further available endpoints. An endpoint that displays all info about a particular zone doesn't exist.
So, with a rewrite and some optimization, instead of having 7 requests per device, you can have 2 requests per device and 4 requests in general. This would avoid the issue of API ban.
I hope I've explained it clearly, couldn't think of another way to phrase it 😄

The rewrite is now in the main repo and on npm. Please test it out and let me know if everything is working correctly for multiple devices. Currently, the Away and Advance switches are not implemented yet.
Note: the config format has changed, since it's now a platform instead of an accessory.
@markunca It would also be great if you could check /system/sensors/humidity endpoint. I have only one device, so there is only one endpoint (/system/sensors/humidity/indoor_h1), but I'm not sure that number increases with device count.

Humidity is present in API only for indoor_h1 as it is measured by CT200. I expect that valves dont have humidity sensors, unfortunately.

btw just saw, that bosch-xmpp also supports bridge mode which can help calling multiple times values, wdyt?
https://github.com/robertklep/bosch-xmpp/issues/25

I believe that we are already using 'bridge' mode. I think it's more for when you have to call the CLI tool multiple times, to avoid setting up the same connection. But while using library, this already happens (.connect() is called once, and so is .end())
Though, currently, my code doesn't reconnect if some connection problem occurs, so that is one area I could improve. (and error handling in general)

The rewrite is now in the main repo and on npm. Please test it out and let me know if everything is working correctly for multiple devices. Currently, the Away and Advance switches are not implemented yet.
Note: the config format has changed, since it's now a platform instead of an accessory.
@markunca It would also be great if you could check /system/sensors/humidity endpoint. I have only one device, so there is only one endpoint (/system/sensors/humidity/indoor_h1), but I'm not sure that number increases with device count.
EDIT: Away mode implemented. A few issues present: away mode can only be turned on (turning off doesn't do anything). Sometimes setting temperature fails. Fix coming soon. If you need stability, I'd recommend staying with V1 for now.

Now using v2.1.6 - gotta say, I LOVE it, makes the whole process so much simpler and Just Works ™ !  Thank you very much !

Closing this issue, since everything is 99.9% there.

Closing this issue, since everything is 99.9% there.

authors: andrewbarnes666 lynxcs markunca


text:
hi，where to  download   module datasets？

Traceback (most recent call last):
File "train_scannet.py", line 13, in
from datasets.scannet_dataset_rgb import ScannetDataset, ScannetDatasetWholeScene
ModuleNotFoundError: No module named 'datasets'

实际上，它datasets是此存储库中的子模块之一，无需下载。
如果您的Python工作目录不是此存储库的根目录，则可能需要通过以下方式导出PYTHONPATH：
export PYTHONPATH=<path_to_this_repo>:$PYTHONPATH

thanks

source: gharchive/issue

repo: lyqun/FPConv

license: MIT

license_type: permissive

license_source: github-api


text:
优化歌单更新功能

解决方案检查

[x] 我已阅读常见问题
[x] 我已搜索issue列表

描述您想要的解决方案
目前从链接获取歌单并收藏后不能再次更新歌单,需要再次从歌单界面粘贴链接更新
因为我的习惯是把每日推荐收藏到"我喜欢"里面,然后在洛雪里再听一遍,喜欢的下载下来...
希望能在保存歌单时保存其链接信息,在收藏界面允许右击更新歌单信息

支持 刚需！

已在v1.5.0新增更新歌单的功能，该功能仅对直接从歌单详情页点收藏按钮收藏的歌单有效

authors: H-Tung TotalLau lyswhut

repo: lyswhut/lx-music-desktop


text:
希望能增加歌单排序功能，我非常需要它

解决方案检查

[X] 我已阅读常见问题(https://github.com/lyswhut/lx-music-mobile/blob/master/FAQ.md)，但没有找到解决方案
[X] 我已搜索issue列表(https://github.com/lyswhut/lx-music-mobile/issues?utf8=✓&q=)，但没有发现类似的问题

问题描述
歌单无法排序，一直都是固定的。
描述你想要的解决方案
希望可以像排序歌曲那样排序歌单
描述你考虑过的替代方案
No response
附加信息
No response

PC端可以示例，你可以暂时使用PC端示例后同步到手机上

我指的是歌单的先后顺序，歌曲顺序是可以排的，手机电脑都可以调整位置。
歌单选项里并没有排序选项。

看：https://lyswhut.github.io/lx-music-doc/desktop/faq/change-list-position

authors: MrLinyuan lyswhut

repo: lyswhut/lx-music-mobile


text:
安卓车机安装时报错：安装包解析失败[Bug]:

解决方案检查

[X] 我已阅读常见问题(https://lyswhut.github.io/lx-music-doc/mobile/faq)，并没有找到解决方案
[X] 我已搜索issue列表(https://github.com/lyswhut/lx-music-mobile/issues?utf8=✓&q=)，并没有发现类似的问题

预期行为
希望可以出个车机版，适配安卓低版本系统，音乐软件在车上用的频率应该是最多的
实际行为
安装高德等乱七八糟的软件没问题，安装洛雪就解析失败，我也不知道是什么原因
Lx Music 版本
所有的版本都试过了
最后正常的版本
No response
操作系统版本
安卓5.0
附加信息
No response

车机系统4.3、4.4的比较多，只能等待适配版本了

我也很期待4.3、4.4的车机版


text:
Pretrained Models

That is a really interesting idea proposed. Thanks for the release of the codebase. Can you please tell me when the pre-trained models would be released?

I downloaded them from huggingface, and I guess you should put them in the directory mentioned in each conf, for example:
data_dir = ${ASP}/data/conll03_ner/
model_dir = ${ASP}/data/conll03_ner/
log_root = ${ASP}/data/conll03_ner/

@Hubotcoder Huggingface contains pretrained T5 but if I understand right there needs to be additional weights (feedforward networks) for the specific tasks like NER? Please correct me if I am wrong.

@Hubotcoder @lyutyuh Huggingface contains pretrained T5 but if I understand right there needs to be additional weights (feedforward networks) for the specific tasks like NER? Please correct me if I am wrong.

You are right. Now I get what you mean. Let's wait for the author.

@Hubotcoder, tried contacting the authors via mail but no reply even there. How did you advance with this repository? Were you able to train the models?
Thank you

@Hubotcoder, tried contacting the authors via mail but no reply even there. How did you advance with this repository? Were you able to train the models?
Thank you

@KawshikManikantan Hello. Not yet. I am still asking my boss to buy me a GPU.

@Hubotcoder, tried contacting the authors via mail but no reply even there. How did you advance with this repository? Were you able to train the models?
Thank you

May be too late, but I've been able to start training t5_large based ere model with flant5_large_conll04 config (except use_amp, I changed it to false. V100 is not working with bf16). It requires 25870MiB of GPU memory.
The last results are this
06/04/2023 21:50:34 - INFO - /home/jovyan/au/ASP/util/runner.py - *******************EPOCH 34*******************
06/04/2023 21:50:37 - INFO - /home/jovyan/au/ASP/util/runner.py - Step 4940: avg loss 0.26; steps/sec 2.45
06/04/2023 21:50:45 - INFO - /home/jovyan/au/ASP/util/runner.py - Step 4960: avg loss 0.18; steps/sec 2.46
06/04/2023 21:50:54 - INFO - /home/jovyan/au/ASP/util/runner.py - Step 4980: avg loss 0.25; steps/sec 2.41
06/04/2023 21:51:02 - INFO - /home/jovyan/au/ASP/util/runner.py - Step 5000: avg loss 0.06; steps/sec 2.52
06/04/2023 21:51:02 - INFO - /home/jovyan/au/ASP/util/runner.py - Dev
06/04/2023 21:51:02 - INFO - /home/jovyan/au/ASP/util/runner.py - Step 5000: evaluating on 231 samples with batch_size 32
06/04/2023 21:51:34 - INFO - /home/jovyan/au/ASP/util/runner.py - Eval_Ent_Precision: 99.7755
06/04/2023 21:51:34 - INFO - /home/jovyan/au/ASP/util/runner.py - Eval_Ent_Recall: 99.5521
06/04/2023 21:51:34 - INFO - /home/jovyan/au/ASP/util/runner.py - Eval_Ent_F1: 99.6637
06/04/2023 21:51:34 - INFO - /home/jovyan/au/ASP/util/runner.py - Eval_Rel_Precision: 98.5465
06/04/2023 21:51:34 - INFO - /home/jovyan/au/ASP/util/runner.py - Eval_Rel_Recall: 98.8338
06/04/2023 21:51:34 - INFO - /home/jovyan/au/ASP/util/runner.py - Eval_Rel_F1: 98.6900
06/04/2023 21:51:34 - INFO - /home/jovyan/au/ASP/util/runner.py - Eval_Rel_p_Precision: 98.5465
06/04/2023 21:51:34 - INFO - /home/jovyan/au/ASP/util/runner.py - Eval_Rel_p_Recall: 98.8338
06/04/2023 21:51:34 - INFO - /home/jovyan/au/ASP/util/runner.py - Eval_Rel_p_F1: 98.6900
06/04/2023 21:51:34 - INFO - /home/jovyan/au/ASP/util/runner.py - Test
06/04/2023 21:51:34 - INFO - /home/jovyan/au/ASP/util/runner.py - Eval max f1: 98.84
06/04/2023 21:51:34 - INFO - /home/jovyan/au/ASP/util/runner.py - Test max f1: 0.00

As you may see, It doesn't performs evaluation on test dataset.

authors: Hubotcoder KawshikManikantan Niklss

repo: lyutyuh/ASP


text:
Question about Visualizing Self-Attention in RT-DETR Encoder

Hello lyuwenyu,
First of all, thank you for your amazing work on RT-DETR! I’ve just started learning about object detection models, and I truly appreciate the innovations that make RT-DETR both faster and more efficient. I've starred the repository and look forward to diving deeper into the project!
I have a question regarding the self-attention visualization in the encoder of RT-DETR. In the original DETR paper, the multi-layer encoder, with multiple attention heads, progressively focuses on different regions of the image, allowing the model to capture fine-grained features such as object edges, shapes, and contours. These attention maps clearly highlight object structures.
In contrast, RT-DETR simplifies the encoder, reducing it to a single layer to minimize computational overhead and improve inference speed. When visualizing self-attention in RT-DETR, I noticed that the attention maps do not reveal such explicit object shapes or outlines as in DETR.
Is this simplification of the encoder, aimed at reducing computational complexity, responsible for the reduced ability to capture complex object features and therefore the lack of clear object correlations in the attention maps?
As a beginner, I’d love any guidance or insights you could provide on this topic!
Thank you again for your hard work, and I’m excited to continue learning from this project.

Anchor1566 I want to ask you how to  visualize the self-attention in Encoder, I also new in learning transformer too.

Anchor1566 I want to ask you how to visualize the self-attention in Encoder, I also new in learning transformer too.

You can refer to the code for a good starting point. Regarding RTDETR, I can share my implementation with you (I've managed to get the attention weights for the encoder, but I haven't correctly indexed the weights for the decoder yet). If you manage to figure that part out, I'd be really interested in seeing your solution as well.
Wishing you all the best and hope you enjoy the learning process!
import argparse
from pathlib import Path
import sys
import time
import os
current_dir = os.path.dirname(os.path.realpath(__file__))
parent_dir = os.path.abspath(os.path.join(current_dir, os.pardir))
sys.path.append(parent_dir)

from src.core import YAMLConfig

import torch
from torch import nn
from PIL import Image, ImageDraw
from torchvision import transforms

from ultralytics.utils.plotting import Annotator, colors
import matplotlib.pyplot as plt
import utils.wwpig as wwpig

class ImageReader:
    def __init__(self, resize=640, mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]):
        self.transform = transforms.Compose([
            # transforms.Resize((resize, resize)) if isinstance(resize, int) else transforms.Resize(
            #     (resize[0], resize[1])),
            transforms.ToTensor(),
            # transforms.Normalize(mean=mean, std=std),
        ])
        self.resize = resize
        self.pil_img = None

    def __call__(self, image_path, *args, **kwargs):
        self.pil_img = Image.open(image_path).convert('RGB').resize((self.resize, self.resize))
        return self.transform(self.pil_img).unsqueeze(0)

class Model(nn.Module):
    def __init__(self, confg=None, ckpt="") -> None:
        super().__init__()
        self.cfg = YAMLConfig(confg, resume=ckpt)
        if ckpt:
            checkpoint = torch.load(ckpt, map_location='cpu')
            if 'ema' in checkpoint:
                state = checkpoint['ema']['module']
            else:
                state = checkpoint['model']
        else:
            raise AttributeError('only support resume to load model.state_dict by now.')

        # NOTE load train mode state -> convert to deploy mode
        self.cfg.model.load_state_dict(state)

        self.model = self.cfg.model.deploy()
        self.postprocessor = self.cfg.postprocessor.deploy()

        self.backbone = self.model.backbone
        self.encoder = self.model.encoder
        self.decoder = self.model.decoder
        # print(self.postprocessor.deploy_mode)

    def forward(self, images, orig_target_sizes):
        outputs = self.model(images)
        return self.postprocessor(outputs, orig_target_sizes)

def get_argparser():
    parser = argparse.ArgumentParser()
    parser.add_argument("--config", '-c', type=str, default='./configs/rtdetrv2/rtdetrv2_r50vd_m_7x_coco.yml')
    parser.add_argument("--ckpt", '-w', type=str, default=r"C:/Users/zbx/Desktop/code/SDU/visual/pt/rtdetrv2_r50vd_m_7x_coco_ema.pth") # pth
    parser.add_argument("--image", '-i', type=str, default=r"C:/Users/zbx/Desktop/code/SDU/dataset/visualize/cat.jpg")
    parser.add_argument("--visualize", help="visualize the result of encoder and decoder", default=True)
    # parser.add_argument("--output_dir", '-o', type=str, default='./output')

    args = parser.parse_args()
    args.device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

    return args

@torch.no_grad()
def main(args):
    img_path = Path(args.image)
    device = torch.device(args.device)
    reader = ImageReader(resize=640)
    model = Model(confg=args.config, ckpt=args.ckpt)
    model.to(device=device)

    img = reader(img_path).to(device)
    size = torch.tensor([img.shape[2], img.shape[3]]).to(device)

    start_time = time.time()
    output = model(img, size)
    inf_time = time.time() - start_time
    fps = float(1/inf_time)
    print("Inferece time = {} s".format(inf_time, '.4f'))
    print("FPS = {} ".format(fps, '.1f') )

    labels, boxes, scores = output

    im = reader.pil_img
    annotator = Annotator(im, line_width=3, font_size=16, )
    thrh = 0.6

    for i in range(img.shape[0]):

        scr = scores[i]
        lab = labels[i][scr > thrh]
        box = boxes[i][scr > thrh]

        for j, b in enumerate(box):
            annotator.box_label(b, label=f"{lab[j]}  {scr[j]:.2f}", color=colors(lab[j], True))

    if args.visualize:
        visualizer = wwpig.AttentionVisualizer(model)
        refer_points = [(323, 301), (185, 345), (291, 371), (633, 633)]
        visualizer.plot_attention(img, size, refer_points)

    # save_path = Path(args.output_dir) / img_path.name
    # file_dir = os.path.dirname(args.image)
    # new_file_name = os.path.basename(args.image).split('.')[0] + '_torch'+ os.path.splitext(args.image)[1]
    # new_file_path = file_dir + '/' + new_file_name
    # print('new_file_path: ', new_file_path)
    # im.save(new_file_path)

if __name__ == "__main__":
    args = get_argparser()
    main(args)
    ```
    ```
    import torch
import torch.nn as nn
from torch.nn import functional as F

import matplotlib.pyplot as plt

from torchvision import transforms
from PIL import Image

import torch
import matplotlib.pyplot as plt
from torchvision import transforms
from PIL import Image
from typing import List, Tuple, Any

class AttentionVisualizer:
    def __init__(self, model: nn.Module):
        self.model = model
        self.conv_features = []
        self.enc_attn_weights = []
        self.dec_attn_weights = []

    def register_hooks(self) -> List[Any]:
        """Register forward hooks on the model."""
        def get_hook(target_list):
            def hook(module, input, output):
                target_list.append(output if isinstance(output, torch.Tensor) else output[1])
            return hook

        hooks = [
            self.model.backbone.res_layers[-1].register_forward_hook(
                get_hook(self.conv_features)
            ),
            self.model.encoder.encoder[-1].layers[-1].self_attn.register_forward_hook(
                get_hook(self.enc_attn_weights)
            ),
            self.model.decoder.decoder.layers[-1].cross_attn.register_forward_hook(
                get_hook(self.dec_attn_weights)
            )
        ]
        return hooks

    def remove_hooks(self, hooks: List[Any]):
        """Remove registered hooks."""
        for hook in hooks:
            hook.remove()

    def get_attention_maps(self, image: torch.Tensor, size: Tuple[int, int]) -> Tuple[torch.Tensor, torch.Tensor]:
        """Get attention maps from the model."""
        hooks = self.register_hooks()
        self.model.model(image, size)
        self.remove_hooks(hooks)

        conv_features = self.conv_features[0]
        enc_attn_weights = self.enc_attn_weights[0]

        h, w = conv_features.shape[-2:]
        sattn = enc_attn_weights[0].reshape(h, w, h, w).cpu()

        return conv_features, sattn

    def plot_attention(self, image: torch.Tensor, size: Tuple[int, int], reference_points: List[Tuple[int, int]]):
        """Plot attention maps for given reference points."""
        conv_features, sattn = self.get_attention_maps(image, size)
        h, w = conv_features.shape[-2:]
        fact = int(size[0]) / h

        fig = plt.figure(constrained_layout=True, figsize=(25 * 0.7, 8.5 * 0.7))
        gs = fig.add_gridspec(2, 4)

        axs = [fig.add_subplot(gs[i, j]) for i, j in [(0, 0), (1, 0), (0, -1), (1, -1)]]

        for idx_o, ax in zip(reference_points, axs):
            idx = (int(idx_o[0] // fact), int(idx_o[1] // fact))
            print(idx)
            ax.imshow(sattn[idx[0], idx[1]], cmap='cividis', interpolation='nearest')
            ax.axis('off')
            ax.set_title(f'self-attention{idx_o}')

        # Hack implementation
        to_pil = transforms.ToPILImage()
        im = to_pil(image.squeeze(0))

        fcenter_ax = fig.add_subplot(gs[:, 1:-1])
        fcenter_ax.imshow(im)
        for (y, x) in reference_points:
            scale = im.height / image.shape[-2]
            x = ((x // fact) + 0.5) * fact
            y = ((y // fact) + 0.5) * fact
            fcenter_ax.add_patch(plt.Circle((x * scale, y * scale), fact // 2, color='r'))
        fcenter_ax.axis('off')

        plt.show()
        ```

You can refer to the code for a good starting point. Regarding RTDETR, I can share my implementation with you (I've managed to get the attention weights for the encoder, but I haven't correctly indexed the weights for the decoder yet). If you manage to figure that part out, I'd be really interested in seeing your solution as well.
Wishing you all the best and hope you enjoy the learning process!

Thank you so much for your response! I really appreciate you sharing your code—it’s super helpful. I'll take a close look at your code and try to solve the indexing issue for the decoder part. If I make any progress, I’ll be sure to share it with you.

Anchor1566 I want to ask you how to visualize the self-attention in Encoder, I also new in learning transformer too.

You can refer to the code for a good starting point. Regarding RTDETR, I can share my implementation with you (I've managed to get the attention weights for the encoder, but I haven't correctly indexed the weights for the decoder yet). If you manage to figure that part out, I'd be really interested in seeing your solution as well.
Wishing you all the best and hope you enjoy the learning process!
import argparse
from pathlib import Path
import sys
import time
import os
current_dir = os.path.dirname(os.path.realpath(__file__))
parent_dir = os.path.abspath(os.path.join(current_dir, os.pardir))
sys.path.append(parent_dir)

from src.core import YAMLConfig

import torch
from torch import nn
from PIL import Image, ImageDraw
from torchvision import transforms

from ultralytics.utils.plotting import Annotator, colors
import matplotlib.pyplot as plt
import utils.wwpig as wwpig

class ImageReader:
    def __init__(self, resize=640, mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]):
        self.transform = transforms.Compose([
            # transforms.Resize((resize, resize)) if isinstance(resize, int) else transforms.Resize(
            #     (resize[0], resize[1])),
            transforms.ToTensor(),
            # transforms.Normalize(mean=mean, std=std),
        ])
        self.resize = resize
        self.pil_img = None

    def __call__(self, image_path, *args, **kwargs):
        self.pil_img = Image.open(image_path).convert('RGB').resize((self.resize, self.resize))
        return self.transform(self.pil_img).unsqueeze(0)

class Model(nn.Module):
    def __init__(self, confg=None, ckpt="") -> None:
        super().__init__()
        self.cfg = YAMLConfig(confg, resume=ckpt)
        if ckpt:
            checkpoint = torch.load(ckpt, map_location='cpu')
            if 'ema' in checkpoint:
                state = checkpoint['ema']['module']
            else:
                state = checkpoint['model']
        else:
            raise AttributeError('only support resume to load model.state_dict by now.')

        # NOTE load train mode state -> convert to deploy mode
        self.cfg.model.load_state_dict(state)

        self.model = self.cfg.model.deploy()
        self.postprocessor = self.cfg.postprocessor.deploy()

        self.backbone = self.model.backbone
        self.encoder = self.model.encoder
        self.decoder = self.model.decoder
        # print(self.postprocessor.deploy_mode)

    def forward(self, images, orig_target_sizes):
        outputs = self.model(images)
        return self.postprocessor(outputs, orig_target_sizes)

def get_argparser():
    parser = argparse.ArgumentParser()
    parser.add_argument("--config", '-c', type=str, default='./configs/rtdetrv2/rtdetrv2_r50vd_m_7x_coco.yml')
    parser.add_argument("--ckpt", '-w', type=str, default=r"C:/Users/zbx/Desktop/code/SDU/visual/pt/rtdetrv2_r50vd_m_7x_coco_ema.pth") # pth
    parser.add_argument("--image", '-i', type=str, default=r"C:/Users/zbx/Desktop/code/SDU/dataset/visualize/cat.jpg")
    parser.add_argument("--visualize", help="visualize the result of encoder and decoder", default=True)
    # parser.add_argument("--output_dir", '-o', type=str, default='./output')

    args = parser.parse_args()
    args.device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

    return args

@torch.no_grad()
def main(args):
    img_path = Path(args.image)
    device = torch.device(args.device)
    reader = ImageReader(resize=640)
    model = Model(confg=args.config, ckpt=args.ckpt)
    model.to(device=device)

    img = reader(img_path).to(device)
    size = torch.tensor([img.shape[2], img.shape[3]]).to(device)

    start_time = time.time()
    output = model(img, size)
    inf_time = time.time() - start_time
    fps = float(1/inf_time)
    print("Inferece time = {} s".format(inf_time, '.4f'))
    print("FPS = {} ".format(fps, '.1f') )

    labels, boxes, scores = output

    im = reader.pil_img
    annotator = Annotator(im, line_width=3, font_size=16, )
    thrh = 0.6

    for i in range(img.shape[0]):

        scr = scores[i]
        lab = labels[i][scr > thrh]
        box = boxes[i][scr > thrh]

        for j, b in enumerate(box):
            annotator.box_label(b, label=f"{lab[j]}  {scr[j]:.2f}", color=colors(lab[j], True))

    if args.visualize:
        visualizer = wwpig.AttentionVisualizer(model)
        refer_points = [(323, 301), (185, 345), (291, 371), (633, 633)]
        visualizer.plot_attention(img, size, refer_points)

    # save_path = Path(args.output_dir) / img_path.name
    # file_dir = os.path.dirname(args.image)
    # new_file_name = os.path.basename(args.image).split('.')[0] + '_torch'+ os.path.splitext(args.image)[1]
    # new_file_path = file_dir + '/' + new_file_name
    # print('new_file_path: ', new_file_path)
    # im.save(new_file_path)

if __name__ == "__main__":
    args = get_argparser()
    main(args)
    ```
    ```
    import torch
import torch.nn as nn
from torch.nn import functional as F

import matplotlib.pyplot as plt

from torchvision import transforms
from PIL import Image

import torch
import matplotlib.pyplot as plt
from torchvision import transforms
from PIL import Image
from typing import List, Tuple, Any

class AttentionVisualizer:
    def __init__(self, model: nn.Module):
        self.model = model
        self.conv_features = []
        self.enc_attn_weights = []
        self.dec_attn_weights = []

    def register_hooks(self) -> List[Any]:
        """Register forward hooks on the model."""
        def get_hook(target_list):
            def hook(module, input, output):
                target_list.append(output if isinstance(output, torch.Tensor) else output[1])
            return hook

        hooks = [
            self.model.backbone.res_layers[-1].register_forward_hook(
                get_hook(self.conv_features)
            ),
            self.model.encoder.encoder[-1].layers[-1].self_attn.register_forward_hook(
                get_hook(self.enc_attn_weights)
            ),
            self.model.decoder.decoder.layers[-1].cross_attn.register_forward_hook(
                get_hook(self.dec_attn_weights)
            )
        ]
        return hooks

    def remove_hooks(self, hooks: List[Any]):
        """Remove registered hooks."""
        for hook in hooks:
            hook.remove()

    def get_attention_maps(self, image: torch.Tensor, size: Tuple[int, int]) -> Tuple[torch.Tensor, torch.Tensor]:
        """Get attention maps from the model."""
        hooks = self.register_hooks()
        self.model.model(image, size)
        self.remove_hooks(hooks)

        conv_features = self.conv_features[0]
        enc_attn_weights = self.enc_attn_weights[0]

        h, w = conv_features.shape[-2:]
        sattn = enc_attn_weights[0].reshape(h, w, h, w).cpu()

        return conv_features, sattn

    def plot_attention(self, image: torch.Tensor, size: Tuple[int, int], reference_points: List[Tuple[int, int]]):
        """Plot attention maps for given reference points."""
        conv_features, sattn = self.get_attention_maps(image, size)
        h, w = conv_features.shape[-2:]
        fact = int(size[0]) / h

        fig = plt.figure(constrained_layout=True, figsize=(25 * 0.7, 8.5 * 0.7))
        gs = fig.add_gridspec(2, 4)

        axs = [fig.add_subplot(gs[i, j]) for i, j in [(0, 0), (1, 0), (0, -1), (1, -1)]]

        for idx_o, ax in zip(reference_points, axs):
            idx = (int(idx_o[0] // fact), int(idx_o[1] // fact))
            print(idx)
            ax.imshow(sattn[idx[0], idx[1]], cmap='cividis', interpolation='nearest')
            ax.axis('off')
            ax.set_title(f'self-attention{idx_o}')

        # Hack implementation
        to_pil = transforms.ToPILImage()
        im = to_pil(image.squeeze(0))

        fcenter_ax = fig.add_subplot(gs[:, 1:-1])
        fcenter_ax.imshow(im)
        for (y, x) in reference_points:
            scale = im.height / image.shape[-2]
            x = ((x // fact) + 0.5) * fact
            y = ((y // fact) + 0.5) * fact
            fcenter_ax.add_patch(plt.Circle((x * scale, y * scale), fact // 2, color='r'))
        fcenter_ax.axis('off')

        plt.show()
        ```

Thanks for the code, but i have some question. What is the purpose of wwpig in import utils.wwpig as wwpig ? How can I install it? After running pip install utils, I still get the error No module named 'utils.wwpig'

Anchor1566 I want to ask you how to visualize the self-attention in Encoder, I also new in learning transformer too.

You can refer to the code for a good starting point. Regarding RTDETR, I can share my implementation with you (I've managed to get the attention weights for the encoder, but I haven't correctly indexed the weights for the decoder yet). If you manage to figure that part out, I'd be really interested in seeing your solution as well.
Wishing you all the best and hope you enjoy the learning process!
import argparse
from pathlib import Path
import sys
import time
import os
current_dir = os.path.dirname(os.path.realpath(__file__))
parent_dir = os.path.abspath(os.path.join(current_dir, os.pardir))
sys.path.append(parent_dir)

from src.core import YAMLConfig

import torch
from torch import nn
from PIL import Image, ImageDraw
from torchvision import transforms

from ultralytics.utils.plotting import Annotator, colors
import matplotlib.pyplot as plt
import utils.wwpig as wwpig

class ImageReader:
    def __init__(self, resize=640, mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]):
        self.transform = transforms.Compose([
            # transforms.Resize((resize, resize)) if isinstance(resize, int) else transforms.Resize(
            #     (resize[0], resize[1])),
            transforms.ToTensor(),
            # transforms.Normalize(mean=mean, std=std),
        ])
        self.resize = resize
        self.pil_img = None

    def __call__(self, image_path, *args, **kwargs):
        self.pil_img = Image.open(image_path).convert('RGB').resize((self.resize, self.resize))
        return self.transform(self.pil_img).unsqueeze(0)

class Model(nn.Module):
    def __init__(self, confg=None, ckpt="") -> None:
        super().__init__()
        self.cfg = YAMLConfig(confg, resume=ckpt)
        if ckpt:
            checkpoint = torch.load(ckpt, map_location='cpu')
            if 'ema' in checkpoint:
                state = checkpoint['ema']['module']
            else:
                state = checkpoint['model']
        else:
            raise AttributeError('only support resume to load model.state_dict by now.')

        # NOTE load train mode state -> convert to deploy mode
        self.cfg.model.load_state_dict(state)

        self.model = self.cfg.model.deploy()
        self.postprocessor = self.cfg.postprocessor.deploy()

        self.backbone = self.model.backbone
        self.encoder = self.model.encoder
        self.decoder = self.model.decoder
        # print(self.postprocessor.deploy_mode)

    def forward(self, images, orig_target_sizes):
        outputs = self.model(images)
        return self.postprocessor(outputs, orig_target_sizes)

def get_argparser():
    parser = argparse.ArgumentParser()
    parser.add_argument("--config", '-c', type=str, default='./configs/rtdetrv2/rtdetrv2_r50vd_m_7x_coco.yml')
    parser.add_argument("--ckpt", '-w', type=str, default=r"C:/Users/zbx/Desktop/code/SDU/visual/pt/rtdetrv2_r50vd_m_7x_coco_ema.pth") # pth
    parser.add_argument("--image", '-i', type=str, default=r"C:/Users/zbx/Desktop/code/SDU/dataset/visualize/cat.jpg")
    parser.add_argument("--visualize", help="visualize the result of encoder and decoder", default=True)
    # parser.add_argument("--output_dir", '-o', type=str, default='./output')

    args = parser.parse_args()
    args.device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

    return args

@torch.no_grad()
def main(args):
    img_path = Path(args.image)
    device = torch.device(args.device)
    reader = ImageReader(resize=640)
    model = Model(confg=args.config, ckpt=args.ckpt)
    model.to(device=device)

    img = reader(img_path).to(device)
    size = torch.tensor([img.shape[2], img.shape[3]]).to(device)

    start_time = time.time()
    output = model(img, size)
    inf_time = time.time() - start_time
    fps = float(1/inf_time)
    print("Inferece time = {} s".format(inf_time, '.4f'))
    print("FPS = {} ".format(fps, '.1f') )

    labels, boxes, scores = output

    im = reader.pil_img
    annotator = Annotator(im, line_width=3, font_size=16, )
    thrh = 0.6

    for i in range(img.shape[0]):

        scr = scores[i]
        lab = labels[i][scr > thrh]
        box = boxes[i][scr > thrh]

        for j, b in enumerate(box):
            annotator.box_label(b, label=f"{lab[j]}  {scr[j]:.2f}", color=colors(lab[j], True))

    if args.visualize:
        visualizer = wwpig.AttentionVisualizer(model)
        refer_points = [(323, 301), (185, 345), (291, 371), (633, 633)]
        visualizer.plot_attention(img, size, refer_points)

    # save_path = Path(args.output_dir) / img_path.name
    # file_dir = os.path.dirname(args.image)
    # new_file_name = os.path.basename(args.image).split('.')[0] + '_torch'+ os.path.splitext(args.image)[1]
    # new_file_path = file_dir + '/' + new_file_name
    # print('new_file_path: ', new_file_path)
    # im.save(new_file_path)

if __name__ == "__main__":
    args = get_argparser()
    main(args)
    ```
    ```
    import torch
import torch.nn as nn
from torch.nn import functional as F

import matplotlib.pyplot as plt

from torchvision import transforms
from PIL import Image

import torch
import matplotlib.pyplot as plt
from torchvision import transforms
from PIL import Image
from typing import List, Tuple, Any

class AttentionVisualizer:
    def __init__(self, model: nn.Module):
        self.model = model
        self.conv_features = []
        self.enc_attn_weights = []
        self.dec_attn_weights = []

    def register_hooks(self) -> List[Any]:
        """Register forward hooks on the model."""
        def get_hook(target_list):
            def hook(module, input, output):
                target_list.append(output if isinstance(output, torch.Tensor) else output[1])
            return hook

        hooks = [
            self.model.backbone.res_layers[-1].register_forward_hook(
                get_hook(self.conv_features)
            ),
            self.model.encoder.encoder[-1].layers[-1].self_attn.register_forward_hook(
                get_hook(self.enc_attn_weights)
            ),
            self.model.decoder.decoder.layers[-1].cross_attn.register_forward_hook(
                get_hook(self.dec_attn_weights)
            )
        ]
        return hooks

    def remove_hooks(self, hooks: List[Any]):
        """Remove registered hooks."""
        for hook in hooks:
            hook.remove()

    def get_attention_maps(self, image: torch.Tensor, size: Tuple[int, int]) -> Tuple[torch.Tensor, torch.Tensor]:
        """Get attention maps from the model."""
        hooks = self.register_hooks()
        self.model.model(image, size)
        self.remove_hooks(hooks)

        conv_features = self.conv_features[0]
        enc_attn_weights = self.enc_attn_weights[0]

        h, w = conv_features.shape[-2:]
        sattn = enc_attn_weights[0].reshape(h, w, h, w).cpu()

        return conv_features, sattn

    def plot_attention(self, image: torch.Tensor, size: Tuple[int, int], reference_points: List[Tuple[int, int]]):
        """Plot attention maps for given reference points."""
        conv_features, sattn = self.get_attention_maps(image, size)
        h, w = conv_features.shape[-2:]
        fact = int(size[0]) / h

        fig = plt.figure(constrained_layout=True, figsize=(25 * 0.7, 8.5 * 0.7))
        gs = fig.add_gridspec(2, 4)

        axs = [fig.add_subplot(gs[i, j]) for i, j in [(0, 0), (1, 0), (0, -1), (1, -1)]]

        for idx_o, ax in zip(reference_points, axs):
            idx = (int(idx_o[0] // fact), int(idx_o[1] // fact))
            print(idx)
            ax.imshow(sattn[idx[0], idx[1]], cmap='cividis', interpolation='nearest')
            ax.axis('off')
            ax.set_title(f'self-attention{idx_o}')

        # Hack implementation
        to_pil = transforms.ToPILImage()
        im = to_pil(image.squeeze(0))

        fcenter_ax = fig.add_subplot(gs[:, 1:-1])
        fcenter_ax.imshow(im)
        for (y, x) in reference_points:
            scale = im.height / image.shape[-2]
            x = ((x // fact) + 0.5) * fact
            y = ((y // fact) + 0.5) * fact
            fcenter_ax.add_patch(plt.Circle((x * scale, y * scale), fact // 2, color='r'))
        fcenter_ax.axis('off')

        plt.show()
        ```

Thanks for the code, but i have some question. What is the purpose of wwpig in import utils.wwpig as wwpig ? How can I install it? After running pip install utils, I still get the error No module named 'utils.wwpig'

Sorry for the late reply! wwpig is a utility package that includes several tools I've implemented. In this specific code, wwpig is used primarily for the wwpig.AttentionVisualizer(model) line. The AttentionVisualizer class is already included in the code snippet I provided, so you don't need to import wwpig . you need to do some correct
Additionally, the issue with indexing the decoder's attention weights. This step should indeed be adjusted according to your specific model. For example, in the case of rtdetr r50 m, the configuration file specifies eval_idx: 2, so we should index the 3rd layer (index 2) rather than the last layer (-1). Here’s the corrected line:
self.model.decoder.decoder.layers[2].cross_attn.register_forward_hook(
    get_hook(self.dec_attn_weights)
)```

repo: lyuwenyu/RT-DETR


text:
default "timeout" not working

hi, sorry for my bad English,
i have this problem : the program that i run is stuck "Speed: 0.00 MB/s, ETA: 99:59:59 " for hours,
then i tried this :
"timeout: (number or tuple, Optional) A number, or a tuple, indicating how many seconds to wait for the client to make a connection and/or send a response. Default is 20 seconds."
but somehow this do not work in python script, only work in API
i don't understand how to use this API,
can you give me tutorial how to use "timeout" feature?

hey,
you can pass timeout to downloader object
dl = downloader(timeout=10)
dl start(url)

regarding why default is not working is beca

thanks for the reply, i do what you type:
dl = downloader(timeout=10)
dl start(URL)

after some hours of testing,
it still stuck, but the ratio is reduced

Is it printing any error to the console, or is it just stuck if so then the most probably your internet connection has issue or the server which is serving you data has some issue, if you don't wanna be stuck try reducing the timeout to 5 or 2 or something. you can read more about timeout from here

i understand about timeout in requests, it is based on how many seconds spend,
but your timeout" seems to have different work, it is based on a cycle between print progress bar and speed + ETA,
about "internet connection has issue or the server which is serving you data has some issue".
yes, I have a problem with it and hopefully your "software" that is capable of resuming interrupted downloads will fix it

timeout work same way as it works in request, basically under the hood the timeout parameter is passed into requests module and if the request module produces a time out error it is bubbled back to the main function. the speed and eta has nothing to do with it they are just calculated values and doesn't influence the timeout
As i suspected if the server or your internet is not stable this can cause it to get stuck the solution is to just reduce the value of timeout untill a satisfactory result is found

i set the timeout 30, but the program still stuck "Speed: 0.00 MB/s, ETA: 99:59:59" for hours,
can you just add your own timeout?

reduce the timeout not increase it, if its 30 then it doesn't mean 30sec  it can sometimes be more than 30sec. you can read more about timeout from here

mate sorry for the problem,
i think this conversation not go anywhere
i will mark it as complete

sry if i wasn't of much help slow speed is locality related issue can't do much. though if your speed is generally fast and its slow on particular site/URL only then try setting user agent or if its ip based try using poxy or vpn might fix the slow speed
dl = downloader(timeout=3, header={User-Agent:useragent}, proxies=proxies)
dl start(url)

somehow i mod your code to "fix" it,
main.py :
def _display(self, multithread, interval):
        download_mode = "Multi-Threaded" if multithread else "Single-Threaded"
        with output(initial_len=2, interval=interval) as dynamic_print:
            #start here
            trying = 0
            maxtry = 200
            #200 = 30 seconds / 0.15 second
            while True:
                if int(self.speed) == 0:
                    trying = trying + 1
                    if trying > maxtry:
                        import subprocess
                        subprocess.call('taskkill /IM python.exe /F')
                        subprocess.call('taskkill /IM python.exe /F')
                else:
                    trying = 0
            #end here
                if self.size != inf:
                    progress_bar = f"[{'█' * self.progress}{'·' * (100 - self.progress)}] {self.progress}%"
                    progress_stats = f"Total: {to_mb(self.size):.2f} MB, Download Mode: {download_mode}, Speed: {self.speed:.2f} MB/s, ETA: {self.eta}"
                    dynamic_print[0] = progress_bar
                    dynamic_print[1] = progress_stats
                else:
                    download_stats = f"Downloaded: {to_mb(self.downloaded):.2f} MB, Download Mode: {download_mode}, Speed: {self.speed:.2f} MB/s"
                    dynamic_print[0] = "Downloading..."
                    dynamic_print[1] = download_stats
                if self._stop.is_set() or self._error.is_set() or self.completed:
                    break
                time.sleep(interval)
        print(f"Time elapsed: {timestring(self.time_spent)}")

yeah I know the code not right,
so i put the code in CMD Batch like This:
CaptureAndDownload.py https://example.com/video/Url1/
CaptureAndDownload.py https://example.com/video/Url2/

although you cannot use any python in this period,
this perfectly work when i in away

After digging some more i found what might be the reason for your download getting stuck, you see the default timeout only produces time out when the server doesn't respond within the timeout. if your connection is slow (like in case when i tested using 2G speeds) the server does respond but the bytes are transferred  very slowly, and in order for the speed, remaining time or other value to be updated at least 1MB need to be downloaded if the net is slow this could take a very long time and if your file is large it may make no noticeable change to these values like speed, eta, progress and would remain constant as if stuck. it would not make sense for me to introduce a mechanism into pypdl which would stop the download if the values hasn't change for a period of time say 20sec as there would be people who would want to download file at low speed and are willing to run their machine for a long period of time. what would be a better approach would be for the user to set these limits.
your code looks fine and should achieve the desired effect. and if you want to avoid the drawbacks of not being able to run python during the period and potential data corruption you could try this, this is a example code you may need to modify this according to your needs
from pypdl import Downloader
import time

dl = downloader(timeout=5)
dl start(URL, block=False)

timer = time.time()
prev_size = 0

while not dl.completed:
    # if current size has changed
    if dl.downloaded  > prev_size:
        prev_size = dl.downloaded
        timer = time.time()

    elif time.time() - timer > 20:
        dl.stop()
        break

    time.sleep(0.5)

This stops the download if the values hasn't changed in the last 20 sec but the actual time taken to stop may be more

as you can see after 20sec the stop was executed evident by time elapsed showing up, but you can see the time elapsed is showing 23 sec rather than 20 this is normal as i intentionally made delay inside of pypdl once stop is executed to ensure proper initialization of  shutdown operations. then you can see its still waiting this is because its waiting for the threads to exit this can take some time as in order for it to exit it would need to get 1MB of data from the server then only will it check if stop was triggered. overall it should be less than 60sec in most cases.

As you can see mine took around 50sec in total to exit with 2G speed. if your connection or server is serving data with a slower speed than this then it can take some more time but generally it shouldn't get stuck and would eventually exit even if it takes 5min for really slow connection.
the advantage of this approach is you are not killing the threads while they are working, which can lead to data corruption if the thread was writing data to the disk for instance. this ensure that its being shutdown and resources are being freed properly. though as draw back it can take some more time depending on the connection since it needs to wait for the thread to exit
this is based on my assumption that its a connection issue and not a deadlock. if this is not working and its still getting stuck please do tell as it could be due to deadlock and would require further investigation.
also as a sidenote the code i shared is valid for pypdl v1.2.1, i am in the process of refactoring the code so some attribute name may change in future so if you are using later version please do check the readme file in GitHub or docs in PyPi

sorry for my newbie programming,
as far I know the code is processed line by line,
after line 1 is done, then do line 2, then line 3, etc,
how the code dl start(URL, block=False) in progress or not finished yet,
then you can start while not dl.completed:

sorry for my newbie programming, as far I know the code is processed line by line, after line 1 is done, then do line 2, then line 3, etc,
how the code dl start(URL, block=False) in progress or not finished yet, then you can start while not dl.completed:

its alright mate no one is perfect, are you asking how will the while loop execute when the dl.start is still running right ?
this is because when you set block=False pypdl doesn't block the execution of rest of the code, this is achieved using multi-threading the dl.start is executed in a child thread rather than the main thread so you can do other tasks while its downloading. but be sure that the main thread doesn't end. if it does this can lead to interpreter shutdown and the download crashing
this is assuming you are asking about this

are you asking how will the while loop execute when the dl.start is still running right ?

if this is not what you meant please do clarify

thank you thank you, the code you provided is flawless,
and one thing, sorry if i rude in previous reply

its alright man, glad to hear that it was helpful
closing this as completed.

authors: kucingkembar m-jishnu

repo: m-jishnu/pypdl


text:
Update scalapb-runtime to 0.11.9

Updates com.thesamet.scalapb:scalapb-runtime from 0.11.0 to 0.11.9.
GitHub Release Notes - Changelog - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.thesamet.scalapb", artifactId = "scalapb-runtime" } ]

labels: library-update, early-semver-minor, semver-spec-patch, commit-count:1

Superseded by #110.

source: gharchive/pull-request


text:
placement algo and service

@xichen2020 @robskillington @mmihic

Changes Unknown when pulling 408452292a56422f4b0182e45ac52c044ecfd320 on chao-placement into ** on master**.

Changes Unknown when pulling 057a6a1f5c7feeca8e1561b95d19fe72d9206a87 on chao-placement into ** on master**.

Changes Unknown when pulling d562dc1b9d68035f64f5e64cba96aac561f1faba on chao-placement into ** on master**.

Changes Unknown when pulling b97ffe74804fe7390ad19c04eff02ecf64427822 on chao-placement into ** on master**.

Changes Unknown when pulling 57dca3036e1238f61f284078e4d8ce66b431e8ce on chao-placement into ** on master**.

Changes Unknown when pulling 899c876b9eb7b4ed933af995d6919cb83a2ba9bc on chao-placement into ** on master**.

Changes Unknown when pulling 36f59046d220a1befc0be97a078a18dd7926cced on chao-placement into ** on master**.

Changes Unknown when pulling ae4a1d89d53a3e6258fe7b0defc1e045bcf2cefe on chao-placement into ** on master**.

Changes Unknown when pulling 84f3ad34aee69fac34c4828af6fa21255dd7f82e on chao-placement into ** on master**.

Changes Unknown when pulling f3f19fd3b4703db4a524f0704d76819ac47c9b38 on chao-placement into ** on master**.

Changes Unknown when pulling 2c557f83a5ec47d6893914c075f37a86285e14af on chao-placement into ** on master**.

Changes Unknown when pulling b78b745d1dad1b4075ddaf49fe1e8bf5f328b5fb on chao-placement into ** on master**.

Changes Unknown when pulling 4d3ae569ed00abde0f37c632c467e7059c028697 on chao-placement into ** on master**.

Changes Unknown when pulling 4d3ae569ed00abde0f37c632c467e7059c028697 on chao-placement into ** on master**.

Changes Unknown when pulling 4a9f6731c98a17e48b7ed4f64c9891ea5927564d on chao-placement into ** on master**.

Changes Unknown when pulling 35ca98e35472fdfd8a24e77e2b93f2ea24ca091a on chao-placement into ** on master**.

Changes Unknown when pulling bf2ef796678dcdcd53f03b2b205e01f7b6c44ee8 on chao-placement into ** on master**.

Changes Unknown when pulling b7f89c90ac9d651e3aeed5cf079d9c44273aa806 on chao-placement into ** on master**.

Changes Unknown when pulling b7f89c90ac9d651e3aeed5cf079d9c44273aa806 on chao-placement into ** on master**.

Changes Unknown when pulling 5e2f39552c50261e1dae56f76cb8a88816de79d0 on chao-placement into ** on master**.

Changes Unknown when pulling 821b4ecd7ae5fde9ad8f3c61902cf32c65605c43 on chao-placement into ** on master**.

Changes Unknown when pulling 974b417b9bf61ce40dc87cadbce7f8c71598b99f on chao-placement into ** on master**.

Changes Unknown when pulling bb9b41199e44777061c88b681fbb57a72d062a07 on chao-placement into ** on master**.

Changes Unknown when pulling 1ae4ecdec1bf76ae5b1b40f8a217bbed5397bdbe on chao-placement into ** on master**.

Changes Unknown when pulling 3f2623b0dd1ccaa9790773c042ad561132f390a9 on chao-placement into ** on master**.

Changes Unknown when pulling d2c4267c2b20d93dec60b2e6e50f33c62a0f8244 on chao-placement into ** on master**.

license_source: bigquery


text:
Kevins edits

Made all scrollbar and formatting edits in the FLUIDS GLOSSARY section of the app.

@Kevin-Jay-Roberts21 I'm getting an error on app launch. "Could not identify launch activity: Default Activity not found
Error while Launching activity". Are you getting this error as well?

@Kevin-Jay-Roberts21 I'm getting an error on app launch. "Could not identify launch activity: Default Activity not found
Error while Launching activity". Are you getting this error as well?

Hey!
I’m looking into it right now. In the top bar of Android Studio it has a
drop down menu where the little Android icon image is. If it’s on
javaOpenCV, I also get this error, however if it’s changed to app, the code
runs for me. Try switching it to the app selection.
Let know if it all works out or if we need to change some things.
Thanks,
Kevin Roberts
On Tue, Jan 26, 2021 at 10:10 AM kp-121 notifications@github.com wrote:

@Kevin-Jay-Roberts21 https://github.com/Kevin-Jay-Roberts21 I'm getting
an error on app launch. "Could not identify launch activity: Default
Activity not found
Error while Launching activity". Are you getting this error as well?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/mI-PIV/app/pull/6#issuecomment-767689970, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AKWYZUCADHTRPFJYAPKAHQDS33ZRFANCNFSM4WTXUMRQ
.

--
kevin roberts

Hey!
I’m looking into it right now. In the top bar of Android Studio it has a
drop down menu where the little Android icon image is. If it’s on
javaOpenCV, I also get this error, however if it’s changed to app, the code
runs for me. Try switching it to the app selection.
Let know if it all works out or if we need to change some things.
Thanks,
Kevin Roberts
On Tue, Jan 26, 2021 at 10:10 AM kp-121 notifications@github.com wrote:

@Kevin-Jay-Roberts21 https://github.com/Kevin-Jay-Roberts21 I'm getting
an error on app launch. "Could not identify launch activity: Default
Activity not found
Error while Launching activity". Are you getting this error as well?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/mI-PIV/app/pull/6#issuecomment-767689970, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AKWYZUCADHTRPFJYAPKAHQDS33ZRFANCNFSM4WTXUMRQ
.

--
kevin roberts

Yep, I figured it out. I'm guessing you didn't get an email with my comment edit above. Thanks!

Yep, I figured it out. I'm guessing you didn't get an email with my comment edit above. Thanks!

I suppose I didn’t haha. Glad it’s all worked out though! 👍
On Tue, Jan 26, 2021 at 10:24 AM kp-121 notifications@github.com wrote:

Yep, I figured it out. I'm guessing you didn't get an email with my
comment edit above. Thanks!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/mI-PIV/app/pull/6#issuecomment-767698308, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AKWYZUEECKJNDIFR7F2CNKDS333DXANCNFSM4WTXUMRQ
.

--
kevin roberts

I suppose I didn’t haha. Glad it’s all worked out though! 👍
On Tue, Jan 26, 2021 at 10:24 AM kp-121 notifications@github.com wrote:

Yep, I figured it out. I'm guessing you didn't get an email with my
comment edit above. Thanks!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/mI-PIV/app/pull/6#issuecomment-767698308, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AKWYZUEECKJNDIFR7F2CNKDS333DXANCNFSM4WTXUMRQ
.

--
kevin roberts

repo: mI-PIV/app


text:
Successfully pub/sub with mros2-esp32 using Seeed Studio XIAO ESP32S3

I tried mros2-esp32 on Seeed Studio XIAO ESP32S3, so I'll report on it. This is not an Issues report.
Verification requested by Seeed Studio.

Seeed Studio XIAO ESP32S3. ( ESP-IDF v5.4-dev-1832-g23e4823f17 )
NVIDIA Jetson Orin Nano Developer Kit. ( NVIDIA Jetpack 6.0 first production release / Ubuntu 22.04.4 LTS )
mros2-esp32 : Latest version as of August 2, 2024
mros2-host-examples : Latest version as of August 2, 2024
ROS 2 Humble Hawksbill

The communication log is attached.

Commands used in Seeed Studio XIAO ESP32S3

. $HOME/esp/esp-idf/export.sh
idf.py set-target esp32s3
idf.py menuconfig
idf.py build
sudo chmod 666 /dev/ttyACM0
idf.py -p /dev/ttyACM0 flash
idf.py -p /dev/ttyACM0 monitor

Seeed Studio XIAO ESP32S3 menuconfig settings

This is superb!! Could you also include XIAO ESP32S3 and XIAO ESP32C6 to the supported boards in the readme of this repo? Thank you so much!!!!

@meilily : Thank you for your message here. Unfortunately, I am not a contributor and cannot rewrite the Readme.
@takasehideki , @s-hosoai : Takase-san and Hosoai-san, I would appreciate it if you could consider this matter.

https://x.com/seeedstudio/status/1826175627063603496?s=46&t=4HGyVKsDUAlfHEv_mPnMUw

@meilily
The mros2-esp32 project has been listed in the top README!

Thank you so much!

authors: meilily yamati-kz


text:
Method about rending point cloud

Hi, It's a nice job. Could you please tell how do you rendering point cloud in the paper like figure 2, as shown in the below.

@LAB123-tech check out this repo

Thanks very much.

repo: ma-xu/pointMLP-pytorch


text:
fixed some issues

The package is great but had the following issues:

When adding to a project with an up-to-date lottie file package, it is unable to be added because the lottie package in the project is quite outdated. I have updated the lottie files package used in the package itself to ensure that the package can now be added without any package conflicts.

When running the example, the application is using some deprecated build.gradle and setting.gradle code for android. I have fixed it by correctly adding the right code to ensure the code runs smoothly.

The changes I have added ensure the package works as intended because it is a great package.

Thank you.

Hi @Princeyyyy
Thanks for your contribution

Anytime @ma7moud3osman . Great package. It's done wonders to my project. Keep up the good work


text:
add ng-baires logo =)

Thanks 🙏
https://github.com/ngbaires/branding/tree/master/SVG

Everybody is allowed to create a PR 😄

authors: jorgeucano maartentibau

repo: maartentibau/angular-logos


text:
Add support for all modes defined by OpenTripPlanner

OpenTripPlanner is an open-source routing and trip planning engine, that will soon have support for multi-modal journies. We would like to align with the work of OpenTripPlanner since it is in wider use within the transportation industry.
https://github.com/maasglobal/sustainable-mobility-api/blob/f9b3db1513380cb1bc9b9ce2614c44681e86c79b/estimator/transport_co2/model.py#L42-L69
Task
Add support for all documented modes from the OpenTripPlanner library with a mapping to CO2 coefficients in our current estimator model.
Related issues

This task is split from #15
the upstream OTP project issue: https://github.com/opentripplanner/OpenTripPlanner/issues/3076

https://github.com/opentripplanner/OpenTripPlanner/blob/36d7a6a38848d9307692fba78130382909d6fa96/src/main/java/org/opentripplanner/routing/core/TraverseMode.java#L11-L16

repo: maasglobal/sustainable-mobility-api


text:
duplicate extention on build

Hi, awesome library. I noticed that every time I build or run the application, this is always duplicated and leading to an error so, I have to delete it manually every time
extension R {
	// Don't have to type R.string.localizable everytime
	typealias text = R.string.localizable
}

any fix for this issue?
I am running the latest version 5

I don't quite understand your issue.
Is this code you've written yourself?
Is there some code that is generated in duplicate in your project?
Could you provide more details on your project setup?

yes. the code I posted is generated in duplicate
This
extension R {
	// Don't have to type R.string.localizable everytime
	typealias text = R.string.localizable
}

The example you posted is not code that is generated by the rswift tool.
Are you sure you don't have some other build step or script that is generating that extension?

authors: KingOlami tomlokhorst

license: mit


text:
Run the script manually and not as a build phase?

Is there a way to update the R.generated by running a script manually when there is a need, instead of building the whole app ?

No this is not possible, R.swift depends on many variables Xcode provides during build. Locations of files, what files are used in the project and what not. In theory you can provide all these variables yourselves, but in practice you never want to do this and it is error prone. So I would strongly recommend to just build the project.
Note that after R.swift has been run you can cancel the build if you want, you do not have to wait for all files to compile.


text:
Xcode10 support

Fixes #456 by making it possible to define an input file (touched by R.swift on every run) and output file (the generated file) for the script build phase. This solves the Xcode 10 issues.
R.swift will fail with an error if the input or output file are not set for the build phase.
Todo:

[ ] Check if we want to cleanup the code
[ ] Check if errors are clear enough
[ ] Make a note that we want to maybe generate real input file lists or was there an issue with that?! Not sure anymore...

Re: checklist item 3
Our last status with respect to generated input file lists:

Use project.pbxproj as a dependency for newly added file resources (.storyboard, .xib etc.)
Use Asset catalog Content.json files in directories for newly added resources in folders of Asset catalogs

Initial investigation seems to indicate that some previously existing Content.json file will always be touched when a new file or folder is added to an Asset catalog.


text:
bump to version 0.2.1

pod spec lint was unsuccessful for 0.2.0

Codecov Report

Merging #47 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #47   +/-   ##
=======================================
  Coverage   82.01%   82.01%
=======================================
  Files          13       13
  Lines         606      606
=======================================
  Hits          497      497
  Misses        109      109

authors: codecov-io mac-gallagher

repo: mac-gallagher/Shuffle


text:
force companyLogo to be 200px by 150px in all cases

If you increase the height of your logo beyond 150px, the (?) button will be clipped from the top left corner. We should not render images beyond this pixel height.

@bartreardon you may have changes to one of these files, but I'm merging it for now because of other fixes.

that would explain why automatic merge wouldn't work for my PR :p
I separated out company logo - everything should render properly now hopefully

authors: bartreardon erikng

repo: macadmins/nudge


text:
clippy lints

Small changes to make clippy happy: might as well derive Eq for some types, and to_vec() not needed.

Changes are look good. Needs rebase :)

authors: bnewbold dunxen

repo: macaroon-rs/macaroon


text:
🛑 Editor is down

In 6f70f77, Editor (https://$EDITOR?$SECRET) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Editor is back up in 9086410.

repo: macbrayne/status


text:
feat(interlinks): filter on py domain by default

Types such as dict and list in the python standard library appear multiple times in the inventory. For example, for dict, there is the standard library https://docs.python.org/3.10/library/stdtypes.html#dict (the one we want), but also more obscure matches like https://docs.python.org/3.10/library/2to3.html?highlight=dict#to3fixer-dict.
Luckily, the stdtypes matches come up first. There is no guaranty for this, but I think it is fine to still link the first match and log a warning instead of not linking them.
While I was at it, I also made the module local functions local, renamed the inventory variable in the for loop to not shadow the global inventory and replaced deprecated quarto.utils functions with the appropriate quarto.log functions (had to get rid of those squiggly lines).

Thanks again for submitting! In case you're interested in trying it out, I have a PR open to speed up the interlinks filter, by having it just read raw inventory files :) https://github.com/machow/quartodoc/pull/253.

authors: jmbuhr machow

repo: machow/quartodoc


text:
STS benchmark reproducibility?

Hello,
I was wondering if someone managed to reproduce the results of the sentence similarity scores on the STS benchmark dataset (http://ixa2.si.ehu.es/stswiki/index.php/STSbenchmark). I tried to do that using your function transform_paragraph together with tokenizing the sentences with StanfordTokenizer from the NLTK library, but I managed to get to the Pearson coef. of only a bit over 0.3 on the testing set (the STS shows around 0.4).
I know the transform_paragraph function is only experimental, but I was wondering whether you implemented it completely yourself or you used an official GloVe sentence embedding (I myself do not know how exactly they weighted the individual words to get the sentence vector).
Thanks :)

Now I actually managed to get a Pearson coef. of 0.43 by creating the sentence vectors by simply averaging the word vectors of tokens in the sentence.

My bad, I was using a wrong word tokenizer, now I am getting the correct score... Closing the issue ;).
For anyone that would also like to reproduce the STS Benchmark results, simply tokenize the sentences (I used the SpaCy english tokenizer), lower-case the tokens and make an average of the tokens in the sentence.

repo: maciejkula/glove-python


text:
Plotter randomly crashes sometimes

Sometimes the plotter works and other times it crashes ending with the error below.

[P1] Table 1 took 12.5863 sec
[P1] Table 2 took 91.4754 sec, found 4294987732 matches
[P1] Table 3 took 113.272 sec, found 4294994144 matches
[P1] Table 4 took 138.587 sec, found 4295002305 matches
[P1] Table 5 took 134.025 sec, found 4295031184 matches
[P1] Table 6 took 128.737 sec, found 4295113872 matches
[P1] Table 7 took 95.7562 sec, found 4295137959 matches
Phase 1 took 714.463 sec
[P2] max_table_size = 4295137959
[P2] Table 7 scan took 16.8981 sec
[P2] Table 7 rewrite took 42.6332 sec, dropped 0 entries (0 %)
[P2] Table 6 scan took 29.963 sec
[P2] Table 6 rewrite took 51.6299 sec, dropped 581369350 entries (13.5356 %)
[P2] Table 5 scan took 27.7986 sec
chia_plot: /home/plotter/chia-plotter/include/chia/bitfield_index.hpp:45: std::pair<long unsigned int, long unsigned int> bitfield_index::lookup(uint64_t, uint64_t) const: Assertion `bitfield_.get(pos) && bitfield_.get(pos + offset)' failed.
Aborted

Debian 10 64bit buster
ryzen 3900x

lscpu | grep popcnt
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate sme ssbd mba sev ibpb stibp vmmcall sev_es fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr rdpru wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip rdpid overflow_recov succor smca

happens to me too @funnycubeguy

happens to me too @funnycubeguy

it is caused by overclocked ram. try disabling xmp or adding voltage to dram

@funnycubeguy hey, how much voltage did you add, because if I add small amount - error still pops up, if I add bigger - whole system crashes? I've been incrementing voltage by 0.005 of course?

These random crashes started for me after pulling from master and rebuilding. This didn't happen on previous "versions". However I'm having a hard time determining the previous commit version that was working with out crashing. My RAM is already set to auto and if anything under clocked in the bios.
No idea how to adjust voltage for RAM as suggested in comment above.
ubuntu 20.04, AMD Ryzen threadripper 3970x

authors: ascandal dendisuhubdy funnycubeguy stefanel96


text:
can't run yarn command

hi madchiken,
thank you for your kin support,
when I run yarn command, I get this error:
Done in 0.11s.
yarn run v1.22.10
error Couldn't find a package.json file in "/home/pi"
how can I pass that?

you are running yarn command from the home of your user but you need to cd into the project folder before

authors: madchicken mojijafari

repo: madchicken/homebridge-zigbee-nt


text:
Failed at start script node.js

dasher@1.4.1 start /home/pi/dasher
node app.js

module.js:453
throw err;
^
SyntaxError: /home/pi/dasher/config/config.json: Unexpected end of input
at Object.parse (native)
at Object.Module._extensions..json (module.js:450:27)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Module.require (module.js:366:17)
at require (module.js:385:17)
at Object. (/home/pi/dasher/app.js:2:14)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
npm ERR! Linux 4.4.50-v7+
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "start"
npm ERR! node v4.2.1
npm ERR! npm  v2.14.7
npm ERR! code ELIFECYCLE
npm ERR! dasher@1.4.1 start: node app.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the dasher@1.4.1 start script 'node app.js'.
npm ERR! This is most likely a problem with the dasher package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node app.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls dasher
npm ERR! There is likely additional logging output above.
Help???

This has already been addressed

repo: maddox/dasher


text:
Signal message is delivered from A to B. But not delivered from B to A

Server Version : (Server v3.21)
Client Version : (Android v4.66.1)
Hello @madeindra.
First, Thank you for this full guide.

As you can see from the above error, The message is delivered from A to B but I can't send the message from B to A.
What do I need to modify?
Please help me.
Thank you.

@pyDjangoDev Check if you have generated Unidentified Sender Trust Root correctly, see if the correct value is pasted in build.gradle

@madeindra
Thanks for your help.
The chat is working well.
The audio/video call is not working.
If A clicks on the Audio call Button to B and B click on the Answer Button to respond, It shows me "Answering"
Please help me.

@pyDjangoDev Any notification when any call come? Please answer the call only when the call screen show by itself

Yes. There is a notification when any call comes. If I click on the notification, the call screen is showed.
not by itself. so I click the "Answer" button, It only shows me "Answering".

@madeindra

When start to call, the calling screen has appeared, but it said "Network failed" and disappeared.
But the app is still ringing and the notification is still alive.

When I click the notification, it shows a black screen.

On this black screen, when I press back, it is floated, and I can't close it.

Here is the log screen.

And Here are the signal server conf, coTurn conf, and logs.

What am I missing?

I am using AWS EC2 and the security group to allow the ports.

@pyDjangoDev Your config doesn't show here.
Which port did you use for coturn? Try changing it to common used port like 8000, 8080, 8001, or 8081 whichever isn't being used by the server

Thank you. I already solved that point myself.

That's great

authors: madeindra pyDjangoDev

repo: madeindra/signal-setup-guide


text:
Associate intros

Danielle
The best part of my day is  getting to know my clients and helping create a customized look that fits their personality and needs!   It's truly rewarding to see the end results and build lasting relationships with amazing women!
Bio:
Graduated  -  School Botanical and Medical Aesthetics in Denver
Certifications: Lash extensions  - Abloom certified using Blink extensions
Certifications: Microdermabrasion, Chemical peels and Dermaplaning
dgerian commented 24 minutes ago
Amanda;
Coming soon! .....Amanda is currently training to be a certified microblading artist.  Semi permanent eyebrows are the new rage and will soon be offered by Madeulook!
Amanda offers a variety of services including facials,  facial waxing, brow and lash tinting, microdermabrasion and dermaplaning.
dgerian commented 22 minutes ago
Alivia:
Alivia is currently a student and will be joining our team this year!  She is currently our social media manager and marketing specialist!  We look forward to having her here to provide a variety of services!
Alexis also attended the Denver school of Botanical and Medical Aesthetics
She specializes in lash extensions and brow shaping!  Her artistic skills are evident in her work!  She also offers Microdermabrasion and Dermaplaning

@milehimikey I want to change something on my intro:  She is a certified lash artist and received the following certifications while attending the School of Botanical and Medical Aesthetics in Denver: Microdermabrasion, Chemical Peels and Dermaplaning.

authors: dgerian milehimikey

repo: madeulook/web-ui


text:
Updates manifest with correct aliases

Updates aliases in manifest to match current function aliases. It included function names and were missing a few aliases.
Should some of the aliases be removed maybe?

For the time being I would keep the aliases. Thanks for the contributions

authors: f-bader fflaten


text:
Error during reading of asset type MonoBehaviour

Game name: CrossFire Mobile (china)
Download: https://www.apkshub.com/down/com.tencent.tmgp.cf_0.0.0.25_paid
Engine version: 4.6.6p4
Platform: Android
File name: sharedassets1.assets
Error message: Error during reading of asset type MonoBehaviour
Inner message: System.BadImageFormatException: Formato inválido do executável (.exe) ou da biblioteca (.dll).
em Mono.Cecil.PE.ImageReader.ReadImage()
em Mono.Cecil.PE.ImageReader.ReadImage(Disposable`1 stream, String file_name)
em Mono.Cecil.ModuleDefinition.ReadModule(String fileName, ReaderParameters parameters)
em uTinyRipper.Game.Assembly.Mono.MonoManager.Load(String filePath)
em uTinyRipper.GameCollection.OnRequestAssembly(String assembly)
em uTinyRipper.Game.Assembly.Mono.MonoManager.FindAssembly(String name)
em uTinyRipper.Game.Assembly.Mono.MonoManager.FindType(String assembly, String namespace, String name)
em uTinyRipper.Game.Assembly.Mono.MonoManager.GetScriptID(String assembly, String namespace, String name)
em uTinyRipper.Game.AssemblyManager.GetScriptID(String assembly, String namespace, String name)
em uTinyRipper.Classes.MonoScript.GetBehaviourType()
em uTinyRipper.Classes.MonoBehaviour.ReadStructure(AssetReader reader)
em uTinyRipper.Classes.MonoBehaviour.Read(AssetReader reader)
em uTinyRipper.SerializedFile.ReadAsset(AssetReader reader, AssetInfo assetInfo, Int64 offset, Int32 size)
Stack trace:    em uTinyRipper.SerializedFile.ReadAsset(AssetReader reader, AssetInfo assetInfo, Int64 offset, Int32 size)
em uTinyRipper.SerializedFile.ReadAsset(AssetReader reader, ObjectInfo& info)
em uTinyRipper.SerializedFile.ReadData(Stream stream)
em uTinyRipper.GameProcessorContext.ReadFile(SerializedFile file)
em uTinyRipper.GameProcessorContext.ReadFile(SerializedFile file)
em uTinyRipper.GameProcessorContext.ReadFile(SerializedFile file)
em uTinyRipper.GameProcessorContext.ReadSerializedFiles()
em uTinyRipper.GameStructureProcessor.ProcessSchemes(GameCollection fileCollection)
em uTinyRipper.GameStructure.Load(List1 pathes, LayoutInfo layinfo)    em uTinyRipper.GameStructure.Load(IEnumerable1 pathes, LayoutInfo layinfo)
em uTinyRipperGUI.MainWindow.LoadFiles(Object data)

uTinyRipper has been abandoned, but you can try my AssetRipper fork. In the event that AssetRipper encounters issues while ripping your files, feel free to post an issue on that repository.
AssetRipper is actively being developed with the intent to recover games as best as possible. Weekly releases are normally on Sunday or Monday. I encourage you to help out if you're able and willing. Code contributions can be submitted via pull requests.
If you like the work I've done and want to see it continue, please consider sponsoring me. It really does help with development. These are some of the notable things I've implemented since taking over development:

2020+ support
APK, XAPK, and IPA reading with SharpZipLib
Dummy shaders (so everything isn't pink when you open the project)
IL2Cpp support via an integration of Cpp2IL
Better game platform support
Full script decompilation with the ILSpy decompiler
Cross-platform support
Multiple configuration options
Numerous performance improvements
Support for all asset types

Sponsorship Links:

GitHub Sponsors
Patreon
Paypal

uTinyRipper has been abandoned, but you can try my AssetRipper fork. In the event that AssetRipper encounters issues while ripping your files, feel free to post an issue on that repository.
AssetRipper is actively being developed with the intent to recover games as best as possible. Weekly releases are normally on Sunday or Monday. I encourage you to help out if you're able and willing. Code contributions can be submitted via pull requests.
If you like the work I've done and want to see it continue, please consider sponsoring me. It really does help with development. These are some of the notable things I've implemented since taking over development:

2020+ support
APK, XAPK, and IPA reading with SharpZipLib
Dummy shaders (so everything isn't pink when you open the project)
IL2Cpp support via an integration of Cpp2IL
Better game platform support
Full script decompilation with the ILSpy decompiler
Cross-platform support
Multiple configuration options
Numerous performance improvements
Support for all asset types

Sponsorship Links:

GitHub Sponsors
Patreon
Paypal

Even with this information I have had errors when trying to export some games. Even if they are for windows for example.

In the event that AssetRipper encounters issues while ripping your files, feel free to post an issue on that repository.

repo: mafaca/UtinyRipper


text:
Problem with new HLSLccExporter

Import: System.Exception: Unexpected program type DX9VertexSM30    bei DXShaderRestorer.ShaderGpuProgramTypeExtensions.GetMajorDXVersion(ShaderGpuProgramType _this)    bei DXShaderRestorer.ResourceChunk..ctor(ShaderSubProgram shaderSubprogram)    bei DXShaderRestorer.DXShaderProgramRestorer.GetResourceChunk(ShaderSubProgram shaderSubprogram)    bei DXShaderRestorer.DXShaderProgramRestorer.RestoreProgramData(Version version, GPUPlatform graphicApi, ShaderSubProgram shaderSubProgram)    bei uTinyRipperGUI.Exporters.ShaderHLSLccExporter.Export(ShaderWriter writer, ShaderSubProgram& subProgram)    bei uTinyRipper.Classes.Shaders.ShaderSubProgram.Export(ShaderWriter writer, ShaderType type)    bei uTinyRipper.Classes.Shaders.SerializedSubProgram.Export(ShaderWriter writer, ShaderSubProgramBlob blob, ShaderType type, Boolean isTier)    bei uTinyRipper.Classes.Shaders.SerializedProgram.Export(ShaderWriter writer, ShaderType type)    bei uTinyRipper.Classes.Shaders.SerializedPass.Export(ShaderWriter writer)    bei uTinyRipper.Classes.Shaders.SerializedSubShader.Export(ShaderWriter writer)    bei uTinyRipper.Classes.Shaders.SerializedShader.Export(ShaderWriter writer)    bei uTinyRipper.Classes.Shader.ExportBinary(IExportContainer container, Stream stream, Func3 exporterInstantiator)    bei uTinyRipperGUI.Exporters.ShaderAssetExporter.Export(IExportContainer container, Object asset, String path)    bei uTinyRipper.AssetExporters.AssetExportCollection.Export(ProjectAssetContainer container, String dirPath)    bei uTinyRipper.AssetExporters.ProjectExporter.Export(String path, FileCollection fileCollection, IEnumerable1 assets, ExportOptions options)    bei uTinyRipper.GameStructure.Export(String exportPath, Func2 filter)    bei uTinyRipperGUI.MainWindow.ExportFiles(Object data)

Well, new HLSLccExporter doesn't seem as good as it looked :[] Could you upload a file for test?

unfortunately im not sure which file causes it and im not that much into hlsl shaders that I could make a sample project. 😞

I thing HLSHcc doesn't support DX9. I set old exporter for this shaders in b5e19357b454aff2685fc4e48f6291e765701744. Waiting for @spacehamster to clarify this moment.

On the games I tested it on, I didn't run into any DX9 shaders, so I'm not entirely sure if HLSLcc supports DX9. The converter doesn't currently, but If you can upload the game assets that contain the shader, I can take a look into it. What game is it by the way?

It's The Forest. Is there any easy way to see which asset file is currently processed without having to insert log into the code? Doesn't seem like there is a log with more information anywhere.

resources.zip
rename zip to asset

I have that game, no need to upload the asset for that one.

Ok, i looked into it. DX9 shaders which use shader model 2 and 3 have a completely different bytecode format to DXBC (shader models 4 and 5). HLSLcc doesn't support DX9 and it would basically require its own decompiler or a DX9 -> DXBC bytecode convertor to work, which wouldn't be trivial especially considering how little documentation there is for the DX9 bytecode format.
It appears that unity uses hlsl2glsl for DX9 shaders, and it appears to be a source-to-source compiler, which wouldn't be of any help for uTinyRipper.

Well, current converter is already good enough. Of cause, it is a little sad because of lack of dx9 support but I don't think it is a big deal. Especially, since dx9 was deprecated long time ago.

authors: Blightbuster mafaca spacehamster


text:
Add a couple of convenience methods for extensions

As mentioned here. We should add a core.peers and a .on('peer', peer) to make it easier for extensions

added in 1.6.0

thanks :)

authors: mafintosh piedshag

repo: mafintosh/hypercore


text:
"Auth Failed" error since updating

Hey,
Since updating to version 1.0.2 (though 1.0.0 most likely introduced my issue) I'm now receiving "Auth Failed" errors when executing a command. This is the full error:
{ [MongoError: auth failed]
name: 'MongoError',
message: 'auth failed',
ok: 0,
errmsg: 'auth failed',
code: 18 }

I'm using mongojs("mongodb://admin:password@IP_ADDRESS/bot") to connect instead of the connect() function, which is now unsupported. Does the update to mongojs require the latest version of Mongodb?
EDIT: Updated Mongodb to the latest version and still receiving "auth failed" errors. Username and password is confirmed to be correct via command line and MongoChef.
EDIT 2: Downgrading to 0.18.2 has resolved it and I can connect again, so it does appear to be an issue since 1.0.0.

We just released version 1.2.0 if you want to give that version a try. It changes authentication and authentication mechanisms used in mongojs. What version of mongodb do you use? Could you post some code piece to demo your issue? What authentication mechanism do you use for authenticating against mongodb?

Hi saintedlama,
Thanks for the reply! I've just tried version 1.2.0 but unfortunately it's still resulting in an "auth failed" error when performing any command on a collection. It seems no matter how simple the code is it still results in this error, though here's an example:
var util = require('util');
var fs = require('fs');

var mongojs = require("mongojs");

var databaseUrl = "mongodb://admin:password@IP_ADDRESS/bot";
var db = mongojs(databaseUrl);

function testing() {
	db.collection("#channel.users").find({ username: "brad_dodi" }, function(err, results) {
		if (err) console.log(err);
		else if (results.length > 0) console.log(results[0]);
	});
}
testing();

And the resulting error:
{ [MongoError: auth failed]
name: 'MongoError',
message: 'auth failed',
ok: 0,
errmsg: 'auth failed',
code: 18 }

I'm using the latest version of Mongodb (version 3.0.4) and Mongojs (version 1.2.0). I should also point out that connecting locally instead of using a remote IP address also doesn't make any difference and still causes the error. Downgrading to version 0.18.2 of Mongojs resolved this issue.
Thanks for the help!

I guess I resolved your problem. MongoDB 3.0 changed the default auth mechanism from MongoCR to SCRAM-SHA-1. You can specify (thanks to a pull request) this auth mechanism when connecting to mongodb:
var db = mongojs('mongodb://admin:password@IP_ADDRESS/bot', [], { authMechanism : 'ScramSHA1' });

Works on my machine (MongoDB 3.0.4)

Aha! That has indeed resolved it.
Thanks again for your help.

another solution , even easier could be upgrade Mongo DB to the last version, i had the same issue and that fix it ....

authors: BradDodi albe-rosado saintedlama

repo: mafintosh/mongojs


text:
invalid_api_key for GET /kernels

Describe the bug
I deployed mage using the terraform template to AWS ECS, and also added REQUIRE_USER_AUTHENTICATION env variable. It worked on day 1, but from day 2, the load balancer gives a 502.
Also tried from incognito and tried to visit /sign-in page directly. Tried restarting the container also. Same result.
Desktop (please complete the following information):

OS: Mac Ventura 13.3
Browser: Chrome
Version 115.0.5790.170

Additional context
Logs seems to indicate that GET /kernels return a 403.
ERROR:mage_ai.api.logging:[2023-08-18T11:35:06.262010][api.views] [2023-08-18 11:35:06.262000] [ERROR] GET /kernels [user: N/A]: {'code': 403, 'message': 'Invalid API key.', 'type': 'invalid_api_key'}

Figured it out. When i use the terraform scripts, it creates the security group allowing traffic only from my ip. Hence the issue on the next day.

repo: mage-ai/mage-ai


text:
[dy] Use load jobs for bigquery

Summary
Add support for batch jobs in bigquery. We take the input records, convert them to a JSON format, and write them to a file. The batch load job reads from the file, and uploads the JSON records to BigQuery.
I added a config field in the bigquery config called use_batch_load that can be toggled to enable the batch load functionality.

Tests
tested locally

cc: @wangxiaoyou1993

What data types did you test?
Could you make sure the following data types are tested at least?

integer
float
string
datetime
object
array
array of object
array of integer
array of string

@wangxiaoyou1993 tested those types


text:
Fix non-ASCII characters

Although in my computer the build is working with the non-ASCII characters of my name, I know that this could produce some issues in the building (for instance, GATK and htsjdk had this issue before). In our source code, these characters appear in the following parts and should be removed:

[ ] LICENSE at the top of each class (it should be also modified in the repository).
[ ] Some javadoc @author have still the previous formatting. It should include also magicDGS.

Updating the license should also change the year to 2017.

repo: magicDGS/ReadTools


text:
Comply with preferred-versions

Currently cblrepo upgrades always shows stack-9.9.9 which was explicitly filtered out. It would be nice to comply with the given preferred-versions.
stack: 1.3.2:x0 (9.9.9:x4)
The file stack/preferred-versions in the index contains:
stack <9.9.9 || >9.9.9

Yupp!

authors: felixonmars magthe

repo: magthe/cblrepo


text:
changes

Are u fine?

fF


text:
Removes arc_weak and socket_timeout features

And updates README and CHANGELOG files.

r? @vinipsmaker
(maidsafe_highfive has picked a reviewer for you, use r? to override)

Seems okay. Waiting for the CI tests.

4 hours already and windows CI warns that the test is still "queued". =(

authors: inetic maidsafe-highfive vinipsmaker

repo: maidsafe/crust


text:
Reconnect works for the authenticator but not for re-opening a website from a tab

After the network has been disconnected, triggering the "reconnect" action from the authenticator page, it seems to reconnect successfully for the authenticator as I can fetch info of authorised apps again, but I cannot load any website from a tab

TBC whether this is definitely for milestone 0.7.0. To discuss once Gabriel is online

I just changed milestone to v0.7.1 as I think we can release v0.7.0 without this fixed.

Resolved as of https://github.com/maidsafe/safe_browser/commit/7bb12daf308498252abbbecac3fce6c703a2672c and in peruse-0.7.0-rc.3 release

authors: S-Coyle bochaco hunterlester


text:
MailHog eventually hangs, too many open files

After MailHog has run for a couple days, it eventually becomes unresponsive.
This is running on Ubuntu 14.04 64-bit with the binary downloaded from Github.
This the last few lines in the log output:
APIv1] GET /api/v1/events
[APIv1] GET /api/v1/events
[APIv1] GET /api/v1/events
[APIv1] GET /api/v1/events
[APIv1] GET /api/v1/events
2015/10/14 14:07:01 http: Accept error: accept tcp [::]:8025: accept4: too many open files; retrying in 5ms
[APIv1] GET /api/v1/events
2015/10/14 14:07:01 http: Accept error: accept tcp [::]:8025: accept4: too many open files; retrying in 10ms
2015/10/14 14:07:01 http: Accept error: accept tcp [::]:8025: accept4: too many open files; retrying in 20ms
2015/10/14 14:07:01 http: Accept error: accept tcp [::]:8025: accept4: too many open files; retrying in 40ms
2015/10/14 14:07:01 http: Accept error: accept tcp [::]:8025: accept4: too many open files; retrying in 80ms
2015/10/14 14:07:01 http: Accept error: accept tcp [::]:8025: accept4: too many open files; retrying in 160ms
2015/10/14 14:07:01 http: Accept error: accept tcp [::]:8025: accept4: too many open files; retrying in 320ms
2015/10/14 14:07:01 http: Accept error: accept tcp [::]:8025: accept4: too many open files; retrying in 640ms
2015/10/14 14:07:02 http: Accept error: accept tcp [::]:8025: accept4: too many open files; retrying in 1s
2015/10/14 14:07:03 http: Accept error: accept tcp [::]:8025: accept4: too many open files; retrying in 1s
2015/10/14 14:07:04 http: Accept error: accept tcp [::]:8025: accept4: too many open files; retrying in 1s
<snip>
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files
2015/10/14 14:57:51 [SMTP] Error accepting connection: accept tcp [::]:1025: accept4: too many open files

Thanks @jackc, definitely a bug!

@mikechau and I have been looking into this. We don't have a solution, but have narrowed down the problem some.
Running lsof on a MailHog server that has been running a while yields files files with "can't identify protocol". A Google search led us to https://idea.popcount.org/2012-12-09-lsof-cant-identify-protocol/ which indicates the problem has to do with half-closed connections. Watching lsof some more strongly indicates this to be true. If we do something with the web UI, and then do nothing we will have some connections in CLOSE_WAIT. After a while we have the same number of connections in "can't identity protocol"
One other bit of evidence points to the problem being related to the api/v1/messages end point. We noticed that the only time Close is called on an event listener is when a message fails to send. Whenever we send an email all the "can't identify protocol" files go away.
We're not sure what causes the accumulation of half-closed connections to start with though. We observe it locally and on a remote server.

sorry its taken so long to reply, and thanks for looking into it!
does the fix you have in https://github.com/jackc/MailHog-Server/commit/dc692bdccc135704e82d70406da550bd8942fc8d solve the problem?

Well, it at least works around the problem. Not sure if there is better solution, but sending a keep-alive message every minute does work.

Could this fix be merged into a new release to download?

authors: chuntley ian-kent jackc

repo: mailhog/MailHog


text:
refresh:apikey command and service

Created a service to refreshAll() or refresh($id) for Users' apiKeys
Created a command to use it
Refresh all apiKeys
refresh:apikey
Refresh the apiKey of a single User
refresh:apikey 1
Where 1 is the id of the User wanted

:+1:

authors: baptistelambert makanikki

repo: makanikki/SymfonySweag


text:
Following Update to last release 0.9.0 AC Unavailable

Hi,
I have just updated to the last revision (0.9.0) from revision 0.8.9, my AC became unavailable.
My AC model is Tadiran Wind 65/3P.
Is there any change that might cause the issue?
Is there any log that I can provide?
Thanks.

The config file was renamed from tadiran_heatpump.yaml to tadiran_wind_heatpump.yaml, but there should be a link in there so that previously configurations will continue working.
Maybe there is an issue with that. Are there any messages in the log?

I can’t see any message in the log, like everything is OK.
Should I enable some special logging?

Have a look in Developer tools at what entities you have available. The config renaming may have had a side effect of making it appear to Home Assistant to be a different device, so it created a new one alongside your existing entities.

It didn’t create a new entity.
Got it to work.
I had to re-configure the integration.
Simply pressed configure, it says the integration is being installed…
It has detected the key and the IP automatically (as was previously entered).
The entity is working correctly (with the same name).
I guess some change has made it to require a reconfigure.

Good news that it works after a reconfigure, but I can't find why that might be. I'll keep this in mind if anyone else reports the same problem.

authors: Fannangir make-all

repo: make-all/tuya-local


text:
🛑 Math Blog is down

In 28fd33c, Math Blog (https://math.aurelienooms.be) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Math Blog is back up in 7fbfa74.

repo: make-github-pseudonymous-again/monitor


text:
🛑 Blog is down

In 75b9dff, Blog (https://blog.aurelienooms.be) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Blog is back up in d15ec94 after 11 minutes.


text:
fix: MultiSelectPropertyValue multi_select type

multi_select should be an array.

@d4rkcr0w once again, thanks! Will update you when we can merge this.

 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.

superseded by https://github.com/makenotion/notion-sdk-js/pull/89/files - apologies

authors: CLAassistant aoberoi blackmad d4rkcr0w

repo: makenotion/notion-sdk-js


text:
Review Python packages installed in user image

This issue is a catch-all for reviewing the list of Python packages and their versions that we install into the user image. Various parts to this...

[ ] Currently bokeh is not working in jupyterlab. I believe to get it working requires a bokeh_jupyterlab extension to be installed. xref https://github.com/bokeh/bokeh/issues/6700
[ ] Zarr and several other packages are pinned at dev versions, probably a reflection of ongoing dev work on pangeo, we should fall back to release versions where we can. Also two versions of xarray installed.
[ ] Strip out unnecessary geo-related packages.
[ ] Add in all packages in agam-report-base conda and pypi lists.
[ ] Ensure can download notebook as PDF.

I added some comments on the dockerfile commit https://github.com/malariagen/jupyterhub/commit/3fa889b4bb55b0f17aa0ef1f00680020768e21ec - I can make a PR to address them, no rush.
One question I had, @slejdops maybe you could find out, two packages nbserverproxy and xgcm are currently installed from git, but do they need to be? Could we install from a release version?

repo: malariagen/jupyterhub