text:
OSX 10.10 upload image to s3 'method not allowed'

trying the basic example (changed the region) upload seems to work, but then fails:
        AFAmazonS3Manager *s3Manager = [[AFAmazonS3Manager alloc] initWithAccessKeyID:@"_snip_" secret:@"_snip_"];
        s3Manager.requestSerializer.region = AFAmazonS3USStandardRegion;
        s3Manager.requestSerializer.bucket = @"chrisallickpayper";

        NSString *destinationPath = @"example.png";

        [s3Manager postObjectWithFile:@"/Users/christopherallick/Desktop/cool.png"
                      destinationPath:destinationPath
                           parameters:nil
                             progress:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
                                 NSLog(@"%f%% Uploaded", (totalBytesWritten / (totalBytesExpectedToWrite * 1.0f) * 100));
                             }
                              success:^(id response) {
                                  NSLog(@"Upload Complete: %@", response);
                              }
                              failure:^(NSError *error) {
                                  NSLog(@"Error: %@", error);
                              }];

2015-10-24 16:32:12.527 SendScreenCapture[6165:98011] Error: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: method not allowed (405)" UserInfo=0x6080000e3380 {com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x608000023520> { URL: https://chrisallickpayper.s3.amazonaws.com/example.png } { status code: 405, headers {
    Allow = "GET, DELETE, HEAD, PUT";
    Connection = close;
    "Content-Type" = "application/xml";
    Date = "Sat, 24 Oct 2015 20:32:12 GMT";
    Server = AmazonS3;
    "Transfer-Encoding" = Identity;
    "x-amz-id-2" = "4/P/8jBXoGm5qIXXJhz5Z2aurzww4hvuQdUxRmOEVzYlk32fhnnGCLiOj0MATeQbcD2XKl8qgVg=";
    "x-amz-request-id" = B1BFE4BB11CA8C2E;
} }, NSErrorFailingURLKey=https://chrisallickpayper.s3.amazonaws.com/example.png, com.alamofire.serialization.response.error.data=<3c3f786d 6c207665 7273696f 6e3d2231 2e302220 656e636f 64696e67 3d225554 462d3822 3f3e0a3c 4572726f 723e3c43 6f64653e 4d657468 6f644e6f 74416c6c 6f776564 3c2f436f 64653e3c 4d657373 6167653e 54686520 73706563 69666965 64206d65 74686f64 20697320 6e6f7420 616c6c6f 77656420 61676169 6e737420 74686973 20726573 6f757263 652e3c2f 4d657373 6167653e 3c4d6574 686f643e 504f5354 3c2f4d65 74686f64 3e3c5265 736f7572 63655479 70653e4f 424a4543 543c2f52 65736f75 72636554 7970653e 3c526571 75657374 49643e42 31424645 34424231 31434138 4332453c 2f526571 75657374 49643e3c 486f7374 49643e34 2f502f38 6a42586f 476d3571 4958584a 687a355a 32617572 7a777734 68767551 64557852 6d4f4556 7a596c6b 33326668 6e6e4743 4c694f6a 304d4154 65516263 4432584b 6c387167 56673d3c 2f486f73 7449643e 3c2f4572 726f723e>, NSLocalizedDescription=Request failed: method not allowed (405)}

solution: use putObjectWithFile instead of postObjectWithFile
        AFAmazonS3Manager *s3Manager = [[AFAmazonS3Manager alloc] initWithAccessKeyID:@"_snip_" secret:@"_snip_"];
        s3Manager.requestSerializer.region = AFAmazonS3USStandardRegion;
        s3Manager.requestSerializer.bucket = @"chrisallickpayper";

        NSString *destinationPath = @"example.png";

        [s3Manager putObjectWithFile:@"/Users/christopherallick/Desktop/cool.png"
                      destinationPath:destinationPath
                           parameters:nil
                             progress:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
                                 NSLog(@"%f%% Uploaded", (totalBytesWritten / (totalBytesExpectedToWrite * 1.0f) * 100));
                             }
                              success:^(id response) {
                                  NSLog(@"Upload Complete: %@", response);
                              }
                              failure:^(NSError *error) {
                                  NSLog(@"Error: %@", error);
                              }];


text:
XML

How to request XML data?

For general help, please ask on StackOverflow.

source: gharchive/issue

authors: SlaunchaMan iyongjie

repo: AFNetworking/AFNetworking

license: mit

license_type: permissive

license_source: bigquery


text:
🚚 single file MIMO for N16K16

backup in github issue.
This is not the official commit code, this is the single file I changed to modify the cumulative gradient scheme.
import os
import time
import math
import wandb
import torch
import torch.nn as nn
import pickle as pkl
from tqdm import tqdm
from functorch import vmap
from argparse import ArgumentParser

'''zjh: 2023-01-17 17:47:03 base on wsx'''

'''network'''

class NetMIMO(nn.Module):
    def __init__(self, mid_dim=1024, k=4, n=4):
        super(NetMIMO, self).__init__()
        self.K = k  # k_antenna
        self.N = n  # n_user

        self.inp_dim = 2 * 3
        self.mid_dim = mid_dim

        self.net = nn.Sequential(
            BiConvNet(mid_dim=mid_dim, inp_dim=(self.inp_dim, k, n), out_dim=mid_dim * 4), nn.ReLU(),
            nn.Linear(mid_dim * 4, mid_dim * 2), nn.ReLU(),
            nn.Linear(mid_dim * 2, mid_dim * 1), nn.ReLU(),
            DenseNet(mid_dim * 1), nn.ReLU(),
            nn.Linear(mid_dim * 4, 2 * k * n), nn.Tanh(),
        )

    def forward(self, state):
        mat_h, mat_w, mat_p, mat_hw = state

        mat_h = (mat_h / (1e-5 + mat_h.norm(dim=1, keepdim=True))).reshape(-1, self.K * self.N)
        mat_w = (mat_w / (1e-5 + mat_w.norm(dim=1, keepdim=True))).reshape(-1, self.K * self.N)
        mat_hw = (mat_hw / (1e-5 + mat_hw.norm(dim=1, keepdim=True))).reshape(-1, self.K * self.N)

        vec_h = torch.cat((mat_h.real, mat_h.imag), dim=1)
        vec_w = torch.cat((mat_w.real, mat_w.imag), dim=1)
        vec_hw = torch.cat((mat_hw.real, mat_hw.imag), dim=1)

        vec_i = torch.cat((vec_h, vec_w, vec_hw), 1).reshape(-1, self.inp_dim, self.K, self.N)

        new_w = self.net(vec_i)
        new_w = new_w / torch.norm(new_w, dim=1, keepdim=True)
        new_w_real, new_w_imag = new_w.chunk(2, dim=1)
        return (new_w_real + new_w_imag * 1.j).reshape(-1, self.K, self.N)  # complex number

class DenseNet(nn.Module):
    def __init__(self, lay_dim):
        super().__init__()
        self.dense1 = nn.Sequential(nn.Linear(lay_dim * 1, lay_dim * 1), nn.Hardswish())
        self.dense2 = nn.Sequential(nn.Linear(lay_dim * 2, lay_dim * 2), nn.Hardswish())
        self.inp_dim = lay_dim
        self.out_dim = lay_dim

    def forward(self, x1):
        x2 = torch.cat((x1, self.dense1(x1)), dim=1)
        x3 = torch.cat((x2, self.dense2(x2)), dim=1)
        return x3

class BiConvNet(nn.Module):
    def __init__(self, mid_dim, inp_dim, out_dim):
        super().__init__()
        i_c_dim, i_h_dim, i_w_dim = inp_dim
        self.cnn_h = nn.Sequential(
            nn.Conv2d(i_c_dim * 1, mid_dim * 2, (1, i_w_dim), bias=True), nn.LeakyReLU(inplace=True),
            nn.Conv2d(mid_dim * 2, mid_dim * 1, (1, 1), bias=True), nn.ReLU(inplace=True), )
        self.linear_h = nn.Linear(i_h_dim * mid_dim, out_dim)
        self.cnn_w = nn.Sequential(
            nn.Conv2d(i_c_dim * 1, mid_dim * 2, (i_h_dim, 1), bias=True), nn.LeakyReLU(inplace=True),
            nn.Conv2d(mid_dim * 2, mid_dim * 1, (1, 1), bias=True), nn.ReLU(inplace=True), )
        self.linear_w = nn.Linear(i_w_dim * mid_dim, out_dim)

    def forward(self, state):
        ch = self.cnn_h(state)
        xh = self.linear_h(ch.reshape(ch.shape[0], -1))
        cw = self.cnn_w(state)
        xw = self.linear_w(cw.reshape(cw.shape[0], -1))
        return xw + xh

'''environment'''

class MIMOEnv:
    def __init__(self, k=4, n=4, p=10.0, noise_power=1, episode_length=6, num_env=4096, device=torch.device("cuda:0"),
                 reward_mode='sl', snr=10):
        self.N = n  # #antennas
        self.K = k  # #users
        self.P = p  # Power
        self.noise_power = noise_power
        self.reward_mode = reward_mode

        self.num_env = num_env
        self.episode_length = episode_length
        self.num_x = 1000
        self.epsilon = 1
        self.snr = snr
        self.if_test = False

        self.device = device

        '''reset'''
        self.vec_h = None
        self.mat_w = None
        self.mat_h = None
        self.X = None
        self.num_steps = 0
        self.done = False

        self.basis_vec, _ = torch.linalg.qr(
            torch.rand(2 * self.K * self.N, 2 * self.K * self.N, dtype=torch.float, device=self.device)
        )  # QR decomposition, return the matrixQ and matrixR

        self.subspace_dim = 2 * k * n
        if self.reward_mode == 'empirical':
            self.get_vec_reward = vmap(self.get_reward_empirical, in_dims=(0, 0, None), out_dims=(0, 0))
        elif self.reward_mode == 'analytical':
            self.get_vec_reward = vmap(self.get_reward_analytical, in_dims=(0, 0, None), out_dims=(0, 0))
        elif self.reward_mode == 'supervised_mmse' or self.reward_mode == 'supervised_mmse_curriculum':
            self.get_vec_reward = vmap(self.get_reward_supervised_mmse, in_dims=(0, 0, 0), out_dims=(0, 0))
        elif self.reward_mode == 'rl':
            self.subspace_dim = 1  # 2 * K * N
            self.get_vec_reward = None
        else:
            raise ValueError(f"{self.reward_mode} should be in {REWARD_MODES}")

        self.get_vec_sum_rate = vmap(self.get_sum_rate, in_dims=(0, 0), out_dims=(0, 0))

        with open(f"./K{self.K}N{self.N}Samples=100.pkl", 'rb') as f:
            self.test_H = torch.as_tensor(pkl.load(f), dtype=torch.cfloat, device=self.device)

    def reset(self, if_test=False, test_p=None, if_mmse=False):
        if self.subspace_dim <= 2 * self.K * self.N:
            self.vec_h = self.generate_channel_batch(self.N, self.K, self.num_env, self.subspace_dim, self.basis_vec)
        else:
            self.vec_h = torch.randn(self.num_env, 2 * self.K * self.N, dtype=torch.cfloat,
                                     device=self.device) / math.sqrt(2)

        '''get mat_h'''
        self.if_test = False
        if if_test:
            self.if_test = True
            self.mat_h = self.test_H * math.sqrt(test_p)
            # print(self.mat_H.shape)
        else:
            self.mat_h = (self.vec_h[:, :self.K * self.N] + self.vec_h[:, self.K * self.N:] * 1.j).reshape(-1, self.K,
                                                                                self.N)
            self.mat_h *= math.sqrt(self.P)
            # variable SNR
            # self.mat_H[:self.mat_H.shape[0] // 3] *= math.sqrt(10)
            # self.mat_H[self.mat_H.shape[0] // 3:2 * self.mat_H.shape[0] // 3] *= math.sqrt(10 ** 1.5)
            # self.mat_H[2 * self.mat_H.shape[0] // 3:] *= math.sqrt(10 ** 2)

        '''get mat_w'''
        if if_mmse:
            self.mat_w, _ = compute_mmse_beamformer(
                self.mat_h, k=self.K, n=self.N, noise_power=self.noise_power, device=self.device)
        elif self.reward_mode == 'rl':
            vec_w = torch.randn((self.mat_h.shape[0], self.K * self.K), dtype=torch.cfloat, device=self.device)
            vec_w = vec_w / torch.norm(vec_w, dim=1, keepdim=True)
            self.mat_w = vec_w.reshape(-1, self.K, self.N)
        else:
            self.mat_w = torch.zeros_like(self.mat_h, device=self.device)  # self.mat_H.conj().transpose(-1, -2)

        '''get self.X'''
        if self.reward_mode == 'supervised_mmse' or self.reward_mode == 'supervised_mmse_curriculum':
            self.X, _ = compute_mmse_beamformer(self.mat_h, k=self.K, n=self.N, noise_power=self.noise_power,
                                                device=self.device)
        else:
            self.X = torch.randn(self.K, self.num_x, dtype=torch.cfloat).to(self.device)

        '''get mat_hw'''
        mat_hw = torch.bmm(self.mat_h, self.mat_w.transpose(-1, -2))

        self.num_steps = 0
        self.done = False
        return self.mat_h, self.mat_w, self.P, mat_hw

    def step(self, action):
        if self.reward_mode == 'rl' or (not self.if_test):
            sum_rate, mat_hw = self.get_vec_sum_rate(self.mat_h, action)
            reward = sum_rate
            self.mat_w = action.detach()
        else:
            obj, mat_hw = self.get_vec_reward(self.mat_h, action, self.X)
            sum_rate, mat_hw = self.get_vec_sum_rate(self.mat_h, action)
            if self.reward_mode == "supervised_mmse_curriculum":
                reward = (-obj / obj.norm(keepdim=True) * (1 - self.epsilon) +
                          sum_rate / sum_rate.norm(keepdim=True) * self.epsilon)
            else:
                reward = -obj

        self.num_steps += 1
        self.done = self.num_steps >= self.episode_length
        return (self.mat_h, self.mat_w, self.P, mat_hw.detach()), reward, self.done, sum_rate.detach()

    def generate_channel_batch(self, n, k, batch_size, subspace_dim, basis_vectors):
        coordinates = torch.randn(batch_size, subspace_dim, 1, device=self.device)
        basis_vectors_batch = basis_vectors[:subspace_dim].T.repeat(batch_size, 1).reshape(-1, 2 * k * n, subspace_dim)
        vec_channel = torch.bmm(basis_vectors_batch, coordinates).reshape(-1, 2 * k * n)
        return vec_channel / math.sqrt(2)

    @staticmethod
    def get_sum_rate(h, w):
        mat_hw = torch.matmul(h, w.T)
        mat_s = torch.abs(mat_hw.diag()) ** 2
        mat_i = torch.sum(torch.abs(mat_hw) ** 2, dim=-1) - torch.abs(mat_hw.diag()) ** 2
        noise = 1  # / self.P_
        sinr = mat_s / (mat_i + noise)
        reward = torch.log2(1 + sinr).sum(dim=-1)
        return reward, mat_hw

    def get_reward_analytical(self, h, w):
        mat_hw = torch.matmul(h, w.T)
        mat_hw_t = mat_hw.T.conj()

        trace = torch.trace(torch.matmul(mat_hw, mat_hw_t) - mat_hw - mat_hw_t).real
        return (trace + self.K * (1 / self.snr)).mean() / self.K, mat_hw

    def get_reward_empirical(self, h, w, x):
        mat_hw = torch.matmul(h, w.T)
        mat_hwx = torch.matmul(mat_hw / mat_hw.norm(keepdim=True), self.X)
        mat_norm = (mat_hwx - x).norm(dim=1, keepdim=True) ** 2
        return mat_norm.mean().real / 1000, mat_hw  # todo why / 1000?

    @staticmethod
    def get_reward_supervised_mmse(h, w, w_mmse):
        mat_hw = torch.matmul(h, w.T)
        return (torch.abs(w - w_mmse) ** 2).mean(), mat_hw

def compute_mmse_beamformer(mat_h, k=4, n=4, noise_power=1, device=torch.device("cuda:0")):
    p = torch.diag_embed(torch.ones(mat_h.shape[0], 1, device=device).repeat(1, k)).to(torch.cfloat)
    eye_n = torch.diag_embed((torch.zeros(mat_h.shape[0], n, device=device) + noise_power))
    denominator = torch.inverse(eye_n + torch.bmm(mat_h.conj().transpose(1, 2), torch.bmm(p / k, mat_h)))
    wslnr_max = torch.bmm(denominator, mat_h.conj().transpose(1, 2)).transpose(1, 2)
    wslnr_max = wslnr_max / wslnr_max.norm(dim=2, keepdim=True)
    mat_w = torch.bmm(wslnr_max, torch.sqrt(p / k))
    mat_hw = torch.bmm(mat_h, mat_w.transpose(-1, -2))
    mat_s = torch.abs(torch.diagonal(mat_hw, dim1=-2, dim2=-1)) ** 2
    mat_i = torch.sum(torch.abs(mat_hw) ** 2, dim=-1) - torch.abs(torch.diagonal(mat_hw, dim1=-2, dim2=-1)) ** 2
    sinr = mat_s / (mat_i + noise_power)
    return mat_w, torch.log2(1 + sinr).sum(dim=-1).unsqueeze(-1)

'''train'''

def get_cwd(env_name):
    file_list = os.listdir()
    if env_name not in file_list:
        os.mkdir(env_name)
    file_list = os.listdir('./{}/'.format(env_name))
    max_exp_id = 0
    for exp_id in file_list:
        if int(exp_id) + 1 > max_exp_id:
            max_exp_id = int(exp_id) + 1
    os.mkdir('./{}/{}/'.format(env_name, max_exp_id))
    os.mkdir('./{}/{}/{}/'.format(env_name, max_exp_id, 'source_code'))
    os.mkdir('./{}/{}/{}/'.format(env_name, max_exp_id, 'logs'))
    return f"./{env_name}/{max_exp_id}"

def run(gpu_id: int = 0, n_user: int = 8, n_mode: int = 3):
    k_antenna = n_user
    reward_mode = REWARD_MODES[n_mode]

    snr = 10
    power = 10.0 ** (snr / 10)  # not used
    mid_dim = 1024
    noise_power = 1
    learning_rate = 5e-5
    if_save = False
    if_wandb = False

    '''init save'''
    save_dir = get_cwd(f"MIMO_N{n_user}_K{k_antenna}_SNR{snr}")  # cwd (current work directory): folder to save network
    if if_save:
        import shutil
        [shutil.copy2(file, f"{save_dir}/source_code")
         for file in ["env_mimo.py", "net_mimo.py", "train.py"]]

    '''init wandb'''
    wandb_name = f"{reward_mode}_H_CL_REINFORCE_N{n_user}_K{k_antenna}_SNR{snr}"
    if if_wandb:
        config = {
            'method': 'REINFORCE',
            'objective': reward_mode,
            'SNR': snr,
            'mid_dim': mid_dim,
            'num_subspace_dim_update': 2,
            'path': save_dir,
            'num_env': 1024
        }
        wandb.init(
            project=f'REINFORCE_' + 'H' + f'_N{n_user}K{k_antenna}',
            entity="beamforming",
            sync_tensorboard=True,
            config=config,
            name=wandb_name,
            monitor_gym=True,
            save_code=True,
        )

    '''init train'''
    device = torch.device(f"cuda:{gpu_id}" if torch.cuda.is_available() else "cpu")
    net = NetMIMO(mid_dim=mid_dim, k=k_antenna, n=n_user).to(device)
    optimizer = torch.optim.AdamW(net.parameters(), lr=learning_rate)

    num_epochs = 1000000
    num_epochs_per_subspace = 1200
    num_epochs_to_save_model = 1e5
    num_env = 512
    epoch_end_switch = 20000

    env_mimo_relay = MIMOEnv(k=k_antenna, n=n_user, p=power, noise_power=noise_power, device=device, num_env=num_env,
                             reward_mode=reward_mode, episode_length=6)
    pbar = tqdm(range(num_epochs))
    sum_rate = torch.zeros(100, env_mimo_relay.episode_length, 2)
    sum_rate_train = torch.zeros(num_env, env_mimo_relay.episode_length, 1)
    test_powers = [10 ** 1, 10 ** 2]
    start_time = time.time()
    for epoch in pbar:
        state = env_mimo_relay.reset()
        loss = torch.zeros((), dtype=torch.float32, device=device).detach()
        while True:
            action = net(state)
            next_state, reward, done, _ = env_mimo_relay.step(action)
            if env_mimo_relay.reward_mode == "rl":
                loss -= reward.mean()
            else:
                loss -= reward.mean()
            if (epoch + 1) % 5 == 0:
                sum_rate_train[:, env_mimo_relay.num_steps - 1, 0] = _.squeeze()
            state = next_state
            if done:
                optimizer.zero_grad()
                loss.backward()
                optimizer.step()
                break
        if epoch % 20 == 0 and env_mimo_relay.reward_mode == 'supervised_mmse_curriculum':
            env_mimo_relay.epsilon = min(1, (epoch / epoch_end_switch))
        if os.path.isfile(os.path.join(save_dir, "change_to_sr")):
            env_mimo_relay.reward_mode = "rl"
        if epoch == epoch_end_switch:
            env_mimo_relay.reward_mode = "rl"
        if (epoch + 1) % num_epochs_to_save_model == 0 and if_save:
            torch.save(net.state_dict(), save_dir + f"{epoch}.pth")
        if (epoch + 1) % num_epochs_per_subspace == 0 and env_mimo_relay.subspace_dim <= 2 * k_antenna * n_user:
            env_mimo_relay.subspace_dim += int((2 * k_antenna * n_user) / 128)
        if (epoch + 1) % 5 == 0:
            with torch.no_grad():
                for i_p in range(2):
                    state = env_mimo_relay.reset(if_test=True, test_p=test_powers[i_p])
                    while True:
                        action = net(state)
                        next_state, _, done, reward = env_mimo_relay.step(action)
                        sum_rate[:, env_mimo_relay.num_steps - 1, i_p] = reward.squeeze()
                        state = next_state
                        if done:
                            break
                description = f"id: {epoch} | test_sum_rate_SNR=10: {sum_rate[:, :, 0].max(dim=1)[0].mean()} " \
                              f"| test_sum_rate_SNR=20:{sum_rate[:, :, 1].max(dim=1)[0].mean()}" \
                              f"| training_loss: {loss.mean().item() / env_mimo_relay.episode_length:.3f} " \
                              f"| gpu memory:{torch.cuda.memory_allocated():3d} " \
                              f"| elapsed_time:{time.time() - start_time}"  # todo
                pbar.set_description(description)
                if if_save:
                    log_path = open(os.path.join(save_dir, 'logs', 'log.txt'), "a+")
                    log_path.write(description + '\n')
                    log_path.close()
            if if_wandb:
                wandb.log({f"train_sum_rate_SNR=10": sum_rate_train[:, :, 0].max(dim=1)[0].mean(),
                           f"test_sum_rate_SNR=10": sum_rate[:, :, 0].max(dim=1)[0].mean(),
                           f"test_sum_rate_SNR=20": sum_rate[:, :, 1].max(dim=1)[0].mean(),
                           "training_loss": loss.mean().item() / env_mimo_relay.episode_length,
                           "elapsed_time": (time.time() - start_time)})

if __name__ == "__main__":
    Parser = ArgumentParser(description='ArgumentParser for ElegantRL')
    Parser.add_argument('--gpu', type=int, default=0, help='GPU device ID for training')
    Parser.add_argument('--user', type=int, default=8, help='the number of user, equal to the number of antenna')
    Parser.add_argument('--mode', type=int, default=3, help="3=RL+curriculum, 4=supervised_MMSE+curriculum")

    Args = Parser.parse_args()
    GPU_ID = Args.gpu
    N_USER = Args.user
    N_MODE = Args.mode

    REWARD_MODES = ['empirical', 'analytical', 'supervised_mmse', 'rl', 'supervised_mmse_curriculum']
    run(gpu_id=GPU_ID, n_user=N_USER, n_mode=N_MODE)

Thanks for Jiahao's contribution!

update record:

simplify the reward
simplify the torch operation
remove the REWARD_MODES, keep the model='rl' only

import os
import time
import math
import wandb
import torch as th
import torch.nn as nn
import pickle as pkl
from tqdm import tqdm
from functorch import vmap
from argparse import ArgumentParser

'''zjh: 2023-01-18 18:02:29 base on wsx
这不是正式提交的代码，这是我为了修改 累计梯度方案 而改出来的 single file
'''

'''network'''

class NetMIMO(nn.Module):
    def __init__(self, mid_dim=1024, k=4, n=4):
        super(NetMIMO, self).__init__()
        self.K = k  # k_antenna
        self.N = n  # n_user

        self.inp_dim = 2 * 3
        self.mid_dim = mid_dim

        self.net = nn.Sequential(
            BiConvNet(mid_dim=mid_dim, inp_dim=(self.inp_dim, k, n), out_dim=mid_dim * 4), nn.ReLU(),
            nn.Linear(mid_dim * 4, mid_dim * 2), nn.ReLU(),
            nn.Linear(mid_dim * 2, mid_dim * 1), nn.ReLU(),
            DenseNet(mid_dim * 1), nn.ReLU(),
            nn.Linear(mid_dim * 4, mid_dim * 2), nn.ReLU(),
            nn.Linear(mid_dim * 2, 2 * k * n), nn.Tanh(),
        )

    def forward(self, state):
        mat_h, mat_w, mat_p, mat_hw = state

        mat_h = (mat_h / (1e-5 + mat_h.norm(dim=1, keepdim=True))).reshape(-1, self.K * self.N)
        mat_w = (mat_w / (1e-5 + mat_w.norm(dim=1, keepdim=True))).reshape(-1, self.K * self.N)
        mat_hw = (mat_hw / (1e-5 + mat_hw.norm(dim=1, keepdim=True))).reshape(-1, self.K * self.N)

        vec_h = th.cat((mat_h.real, mat_h.imag), dim=1)
        vec_w = th.cat((mat_w.real, mat_w.imag), dim=1)
        vec_hw = th.cat((mat_hw.real, mat_hw.imag), dim=1)

        vec_i = th.cat((vec_h, vec_w, vec_hw), 1).reshape(-1, self.inp_dim, self.K, self.N)

        new_w = self.net(vec_i)
        new_w = new_w / th.norm(new_w, dim=1, keepdim=True)
        new_w_real, new_w_imag = new_w.chunk(2, dim=1)
        return (new_w_real + new_w_imag * 1.j).reshape(-1, self.K, self.N)  # complex number

class DenseNet(nn.Module):
    def __init__(self, lay_dim):
        super().__init__()
        self.dense1 = nn.Sequential(nn.Linear(lay_dim * 1, lay_dim * 1), nn.Hardswish())
        self.dense2 = nn.Sequential(nn.Linear(lay_dim * 2, lay_dim * 2), nn.Hardswish())
        self.inp_dim = lay_dim
        self.out_dim = lay_dim

    def forward(self, x1):
        x2 = th.cat((x1, self.dense1(x1)), dim=1)
        x3 = th.cat((x2, self.dense2(x2)), dim=1)
        return x3

class BiConvNet(nn.Module):
    def __init__(self, mid_dim, inp_dim, out_dim):
        super().__init__()
        i_c_dim, i_h_dim, i_w_dim = inp_dim
        self.cnn_h = nn.Sequential(
            nn.Conv2d(i_c_dim * 1, mid_dim * 2, (1, i_w_dim), bias=True), nn.LeakyReLU(inplace=True),
            nn.Conv2d(mid_dim * 2, mid_dim * 1, (1, 1), bias=True), nn.ReLU(inplace=True), )
        self.linear_h = nn.Linear(i_h_dim * mid_dim, out_dim)
        self.cnn_w = nn.Sequential(
            nn.Conv2d(i_c_dim * 1, mid_dim * 2, (i_h_dim, 1), bias=True), nn.LeakyReLU(inplace=True),
            nn.Conv2d(mid_dim * 2, mid_dim * 1, (1, 1), bias=True), nn.ReLU(inplace=True), )
        self.linear_w = nn.Linear(i_w_dim * mid_dim, out_dim)

    def forward(self, state):
        ch = self.cnn_h(state)
        xh = self.linear_h(ch.reshape(ch.shape[0], -1))
        cw = self.cnn_w(state)
        xw = self.linear_w(cw.reshape(cw.shape[0], -1))
        return xw + xh

'''environment'''

class MIMOEnv:
    def __init__(self, k=4, n=4, p=10.0, noise_power=1, max_step=6, num_env=4096, gpu_id: int = 0):
        self.N = n  # #antennas
        self.K = k  # #users
        self.P = p  # Power
        self.noise_power = noise_power

        self.num_envs = num_env
        self.max_step = max_step
        self.num_x = 1000  # ?
        self.if_test = False

        self.device = th.device(f"cuda:{gpu_id}" if th.cuda.is_available() else "cpu")

        '''reset'''
        self.t = 0
        self.mat_h = None  # state
        self.sum_rate = None

        '''curriculum learning'''
        self.part_dim = 1  # dimension of subspace (a part of full space)
        self.full_dim = 2 * k * n  # dimension of full space
        self.full_h, _ = th.linalg.qr(
            th.rand(self.full_dim, self.full_dim, dtype=th.float, device=self.device)
        )  # QR decomposition, return the matrixQ and matrixR

        self.get_vec_sum_rate = vmap(self.get_sum_rate, in_dims=(0, 0), out_dims=(0, 0))
        self.vmap_mm_n0 = vmap(lambda x, y: th.mm(x, y), in_dims=(None, 0), out_dims=0)

        '''load test data'''  # todo move to outside env
        self.num_test_samples = 120 if self.K == 4 else 100
        with open(f"./K{self.K}N{self.N}Samples={self.num_test_samples}.pkl", 'rb') as f:
            self.test_h = th.as_tensor(pkl.load(f), dtype=th.cfloat, device=self.device)

        '''different between vec_x and mat_x
        vec_x.dtype = float   # real number
        mat_x.dtype = cfloat  # complex number

        vec_real, vec_imag = vec_*.chunk(2, dim1)
        mat_x = vec_real + vec_imag * 1j
        '''

    def reset(self, if_test=False, test_power=None):
        vec_h = self.get_vec_h_for_reset()

        mat_h_real, mat_h_imag = vec_h.chunk(2, dim=1)
        mat_h = (mat_h_real + mat_h_imag * 1j) * math.sqrt(self.P)
        # '''variable SNR'''
        # self.mat_H[:self.mat_H.shape[0] // 3] *= math.sqrt(10)
        # self.mat_H[self.mat_H.shape[0] // 3:2 * self.mat_H.shape[0] // 3] *= math.sqrt(10 ** 1.5)
        # self.mat_H[2 * self.mat_H.shape[0] // 3:] *= math.sqrt(10 ** 2)

        mat_w = th.randn((self.num_envs, self.K, self.N), dtype=th.cfloat, device=self.device)
        mat_w /= mat_w.norm(dim=(1, 2), keepdim=True)

        mat_hw = th.bmm(mat_h, mat_w.transpose(-1, -2))

        self.t = 0
        self.mat_h = mat_h
        self.sum_rate, _ = self.get_vec_sum_rate(self.mat_h, mat_w)

        state = mat_h, mat_w, mat_hw
        return state

    def get_vec_h_for_reset(self):
        if self.part_dim == self.full_dim:
            full = th.randn(self.num_envs, self.full_dim, dtype=th.cfloat, device=self.device)
        else:
            part = self.full_h[:self.part_dim].T
            coord = th.randn(self.num_envs, self.part_dim, 1, device=self.device)
            # assert part.shape ==                         (               self.full_dim, self.part_dim)
            # assert coord.shape ==                        (self.num_envs, self.part_dim, 1)
            # assert self.vmap_mm_n0(part, coord).shape == (self.num_envs, self.full_dim, 1)
            full = self.vmap_mm_n0(part, coord).squeeze(2)
        return full / math.sqrt(2)

    def step(self, action):
        self.t += 1

        mat_w = action.detach()
        sum_rate, mat_hw = self.get_vec_sum_rate(self.mat_h, mat_w)

        reward = sum_rate - self.sum_rate
        self.sum_rate = sum_rate

        done = self.t >= self.max_step
        return (self.mat_h, mat_w, mat_hw.detach()), reward, done, sum_rate.detach()

    def update_subspace_dim_for_curriculum_learning(self, add_dim: int = 2):
        self.part_dim = min(self.part_dim + add_dim, self.full_dim)

    @staticmethod
    def get_sum_rate(mat_h, mat_w):
        mat_hw = th.matmul(mat_h, mat_w.T)
        mat_s = th.abs(mat_hw.diag()) ** 2
        mat_i = th.sum(th.abs(mat_hw) ** 2, dim=-1) - th.abs(mat_hw.diag()) ** 2
        sinr = mat_s / (mat_i + 1)  # mat_s / (mat_i + noise/self.P_)
        reward = th.log2(1 + sinr).sum(dim=-1)
        return reward, mat_hw

def compute_mmse_beamformer(mat_h, k=4, n=4, noise_power=1, device=th.device("cuda:0")):
    p = th.diag_embed(th.ones(mat_h.shape[0], 1, device=device).repeat(1, k)).to(th.cfloat)
    eye_n = th.diag_embed((th.zeros(mat_h.shape[0], n, device=device) + noise_power))
    denominator = th.inverse(eye_n + th.bmm(mat_h.conj().transpose(1, 2), th.bmm(p / k, mat_h)))
    wslnr_max = th.bmm(denominator, mat_h.conj().transpose(1, 2)).transpose(1, 2)
    wslnr_max = wslnr_max / wslnr_max.norm(dim=2, keepdim=True)
    mat_w = th.bmm(wslnr_max, th.sqrt(p / k))
    mat_hw = th.bmm(mat_h, mat_w.transpose(-1, -2))
    mat_s = th.abs(th.diagonal(mat_hw, dim1=-2, dim2=-1)) ** 2
    mat_i = th.sum(th.abs(mat_hw) ** 2, dim=-1) - th.abs(th.diagonal(mat_hw, dim1=-2, dim2=-1)) ** 2
    sinr = mat_s / (mat_i + noise_power)
    return mat_w, th.log2(1 + sinr).sum(dim=-1).unsqueeze(-1)

'''train'''

def get_cwd(env_name):
    file_list = os.listdir()
    if env_name not in file_list:
        os.mkdir(env_name)
    file_list = os.listdir('./{}/'.format(env_name))
    max_exp_id = 0
    for exp_id in file_list:
        if int(exp_id) + 1 > max_exp_id:
            max_exp_id = int(exp_id) + 1
    os.mkdir('./{}/{}/'.format(env_name, max_exp_id))
    os.mkdir('./{}/{}/{}/'.format(env_name, max_exp_id, 'source_code'))
    os.mkdir('./{}/{}/{}/'.format(env_name, max_exp_id, 'logs'))
    return f"./{env_name}/{max_exp_id}"

def run_train(gpu_id: int = 0, n: int = 8):
    k = n  # k: number of antennas, n: number of users
    snr = 10
    power = 10.0 ** (snr / 10)  # not used
    mid_dim = 1024
    noise_power = 1
    learning_rate = 1e-3
    max_step = 6  # todo try large max_step
    if_save = False
    if_wandb = False

    '''init save'''
    save_dir = get_cwd(f"MIMO_N{n}_K{k}_SNR{snr}")  # cwd (current work directory): folder to save network
    if if_save:
        import shutil
        shutil.copy2('beta0.py', f"{save_dir}/source_code")
        # [shutil.copy2(file, f"{save_dir}/source_code") for file in ["env_mimo.py", "net_mimo.py", "train.py"]]

    '''init wandb'''
    wandb_name = f"REINFORCE_Curriculum_N{n}_K{k}_SNR{snr}"
    if if_wandb:
        config = {
            'method': 'REINFORCE',
            'SNR': snr,
            'mid_dim': mid_dim,
            'num_subspace_dim_update': 2,
            'path': save_dir,
            'num_env': 1024
        }
        wandb.init(
            project=f'REINFORCE_H_N{n}K{k}',
            entity="beamforming",
            sync_tensorboard=True,
            config=config,
            name=wandb_name,
            monitor_gym=True,
            save_code=True,
        )

    '''init train'''
    device = th.device(f"cuda:{gpu_id}" if th.cuda.is_available() else "cpu")
    net = NetMIMO(mid_dim=mid_dim, k=k, n=n).to(device)
    optimizer = th.optim.Adam(net.parameters(), lr=learning_rate)

    num_epochs = int(1e5)  # 1000000
    num_epochs_per_subspace = 1200
    num_epochs_to_save_model = 1e5
    num_env = 512

    env = MIMOEnv(k=k, n=n, p=power, noise_power=noise_power, num_env=num_env, max_step=max_step, gpu_id=gpu_id)
    pbar = tqdm(range(num_epochs))
    sum_rate = th.zeros(env.num_test_samples, env.max_step, 2)
    sum_rate_train = th.zeros(num_env, env.max_step, 1)
    test_powers = [10 ** 1, 10 ** 2]
    start_time = time.time()
    for epoch in pbar:
        state = env.reset()
        loss = th.zeros((), dtype=th.float32, device=device).detach()
        while True:
            action = net(state)
            next_state, reward, done, dict_info = env.step(action)
            loss -= reward.mean()

            if (epoch + 1) % 5 == 0:
                sum_rate_train[:, env.t - 1, 0] = dict_info.squeeze()
            state = next_state

            if done:
                optimizer.zero_grad()
                loss.backward()
                optimizer.step()
                break

        if (epoch + 1) % num_epochs_to_save_model == 0 and if_save:
            th.save(net.state_dict(), save_dir + f"{epoch}.pth")
        if (epoch + 1) % num_epochs_per_subspace == 0 and env.part_dim <= 2 * k * n:
            env.part_dim += int((2 * k * n) / 128)
        if (epoch + 1) % 5 == 0:
            with th.no_grad():
                for i_p in range(2):
                    state = env.reset(if_test=True, test_power=test_powers[i_p])
                    while True:
                        action = net(state)
                        next_state, _, done, reward = env.step(action)
                        sum_rate[:, env.t - 1, i_p] = reward.squeeze()
                        state = next_state
                        if done:
                            break
                description = f"| rSNR=10 {sum_rate[:, :, 0].max(dim=1)[0].mean():6.3f}" \
                              f"| rSNR=20 {sum_rate[:, :, 1].max(dim=1)[0].mean():6.3f}" \
                              f"| loss {loss.mean().item() / env.max_step:.3f}" \
                              f"| GPUm {th.cuda.memory_allocated(device):.1e}" \
                              f"| Time {time.time() - start_time:.0f}"
                pbar.set_description(description)
                if if_save:
                    log_path = open(os.path.join(save_dir, 'logs', 'log.txt'), "a+")
                    log_path.write(description + '\n')
                    log_path.close()
            if if_wandb:
                wandb.log({f"train_sum_rate_SNR=10": sum_rate_train[:, :, 0].max(dim=1)[0].mean(),
                           f"test_sum_rate_SNR=10": sum_rate[:, :, 0].max(dim=1)[0].mean(),
                           f"test_sum_rate_SNR=20": sum_rate[:, :, 1].max(dim=1)[0].mean(),
                           "training_loss": loss.mean().item() / env.max_step,
                           "elapsed_time": (time.time() - start_time)})

'''test'''

def run_test(gpu_id: int = 0, n: int = 8):
    k = n  # k: number of antennas, n: number of users
    snr = 10
    power = 10.0 ** (snr / 10)  # not used
    mid_dim = 1024
    noise_power = 1
    num_env = 512
    max_step = 6

    '''init train'''
    device = th.device(f"cuda:{gpu_id}" if th.cuda.is_available() else "cpu")
    net = NetMIMO(mid_dim=mid_dim, k=k, n=n).to(device)

    env = MIMOEnv(k=k, n=n, p=power, noise_power=noise_power, num_env=num_env, max_step=max_step, gpu_id=gpu_id)

    test_powers = [10 ** 1, 10 ** 2]
    sum_rates = th.zeros((len(test_powers), env.num_test_samples, env.max_step))

    for power_id in range(2):
        state = env.reset(if_test=True, test_power=test_powers[power_id])
        for step_t in range(env.max_step):
            action = net(state)
            state, _, done, reward = env.step(action)
            sum_rates[power_id, :, step_t] = reward.squeeze()

    sum_rates = sum_rates.max(dim=2)[0]
    sum_rates = sum_rates.mean(dim=1)
    print(f"|sun_rate SNR=(10, 20) {sum_rates[0]:6.3f} {sum_rates[1]:6.3f}")

if __name__ == "__main__":
    Parser = ArgumentParser(description='ArgumentParser for ElegantRL')
    Parser.add_argument('--gpu', type=int, default=0, help='GPU device ID for training')
    Parser.add_argument('--user', type=int, default=8, help='the number of user, equal to the number of antenna')

    Args = Parser.parse_args()
    GPU_ID = Args.gpu
    N_USER = Args.user

    # run_train(gpu_id=GPU_ID, n=N_USER)
    run_test(gpu_id=GPU_ID, n=N_USER)

license: MIT

license_source: github-api


text:
Windows安装简直是噩梦

如题

https://github.com/AIFSH/ComfyUI-Hallo/issues/9

authors: pppyl zappazack

repo: AIFSH/ComfyUI-Hallo


text:
Fix typo in README

Signed-off-by: Carlos Bilbao carlos.bilbao@amd.com

@nfont

source: gharchive/pull-request

repo: AMDESE/libhsmp


text:
CompositionExample not working

The CompositionExample throws an error on writing the Preface:
Exception in thread "main" java.lang.NullPointerException
	at tv.amwa.maj.industry.MediaEngine.getClassDefinition(MediaEngine.java:708)
	at tv.amwa.maj.io.aaf.AAFBuilder.generateAAFStructure(AAFBuilder.java:1855)
	at tv.amwa.maj.io.aaf.AAFBuilder.processPropertyValue(AAFBuilder.java:2084)
	at tv.amwa.maj.io.aaf.AAFBuilder.generateAAFStructure(AAFBuilder.java:1945)
	at tv.amwa.maj.io.aaf.AAFBuilder.generateMetaDictionary(AAFBuilder.java:2187)
	at tv.amwa.maj.io.aaf.AAFFactory.writePreface(AAFFactory.java:153)
	at tv.amwa.maj.example.CompositionExample.main(CompositionExample.java:107)

executed in eclipse with java 8 or 11, same error.

Same for me. I also had trouble reading some AAFs because of alias problems.
I forked a hacky version of this library to put in some very quick and dirty hacks for some element aliases that couldn't be found during reading.
So I think a proper fix would be somewhere in the aliasing resolving system.
https://github.com/AMWA-TV/maj/issues/14

repo: AMWA-TV/maj


text:
Add warning if there is no TEST_APPS folder

Print warning if current folder does not contain TEST_APPS folder. Fix for https://github.com/ARMmbed/mbed-os/issues/8120

This is definitely odd, but I don't see any issues with it.

authors: OPpuolitaival theotherjimmy

repo: ARMmbed/mbed-cli


text:
Updating mbed-os to mbed-os-5.6.5

Please test this PR
If successful then merge, otherwise provide a known issue.
Once you get notification of the release being made public then tag Master with mbed-os-5.6.5 .

Tested successfully with nanostack-border-router.

authors: adbridge artokin

repo: ARMmbed/nanostack-border-router


text:
Readme.md 中的获取管理员权限应该是使用管理员权限打开VSCode

Q:How to get the administrator authority?
Q:怎么获取管理员权限呢？
A:In windows,click right button on the vscode's icon,then check the [run with the administrator authority].
A:在windows环境中，可以右键单击vscode的图标，选择【以管理员身份运行】。
这里的Q应该是“怎么使用管理员权限打开VSCode呢？”

ok，我改下

ok，我改下

repo: AShujiao/vscode-background-cover


text:
Implement FindTaskCommand for TodoList

Fixes #175

Codecov Report

Merging #419 into master will decrease coverage by 0.47%.
The diff coverage is 12.50%.

@@             Coverage Diff              @@
##             master     #419      +/-   ##
============================================
- Coverage     18.72%   18.24%   -0.48%
  Complexity      329      329
============================================
  Files           205      210       +5
  Lines          3776     3874      +98
  Branches        458      477      +19
============================================
  Hits            707      707
- Misses         2991     3090      +99
+ Partials         78       77       -1

Impacted Files
Coverage Δ
Complexity Δ

src/main/java/seedu/address/MainApp.java
0.00% <ø> (ø)
0.00 <0.00> (ø)

...main/java/seedu/address/commons/core/Messages.java
0.00% <ø> (ø)
0.00 <0.00> (ø)

...ommands/contactlistcommands/AddContactCommand.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

...ands/contactlistcommands/DeleteContactCommand.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

...mmands/contactlistcommands/EditContactCommand.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

...nds/contactlistcommands/EditContactDescriptor.java
0.00% <ø> (ø)
0.00 <0.00> (ø)

...mmands/contactlistcommands/FindContactCommand.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

...mmands/contactlistcommands/ListContactCommand.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

...gic/commands/todolistcommands/FindTaskCommand.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

...a/seedu/address/logic/parser/ModuleListParser.java
48.27% <ø> (ø)
10.00 <0.00> (ø)

... and 21 more

Continue to review full report at Codecov.

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

authors: codecov-io jonasngs


text:
Add new command remark

Please do not merge this.

Shall be closed as participation has already been counted and PR is not relevant for VirusTracker


text:
Add Natural Date capability

Natural Date allows for user to input any date that they want (i.e. Mon, Monday, Wed, Weds, Wednesday). Time still needs to be in the same format as the usual dates.
Noted that the addo does not allow for multiple orders by the same person.
Will add in test cases later.

Codecov Report

Merging #141 (2429a1c) into master (775ca2b) will decrease coverage by 0.91%.
The diff coverage is 44.70%.

@@             Coverage Diff              @@
##             master     #141      +/-   ##
============================================
- Coverage     65.44%   64.52%   -0.92%
- Complexity      537      542       +5
============================================
  Files           101      103       +2
  Lines          1910     1993      +83
  Branches        215      237      +22
============================================
+ Hits           1250     1286      +36
- Misses          591      623      +32
- Partials         69       84      +15

Impacted Files
Coverage Δ

...va/seedu/address/model/order/DeliveryDateTime.java
71.42% <ø> (ø)

...a/seedu/address/model/order/NaturalDateParser.java
40.00% <40.00%> (ø)

...in/java/seedu/address/model/order/DateChecker.java
43.47% <43.47%> (ø)

...in/java/seedu/address/logic/parser/ParserUtil.java
85.93% <100.00%> (+0.45%)
:arrow_up:

Continue to review full report at Codecov.

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

authors: codecov-commenter punnyhuimin


text:
Fix URL validation regex

Related issues
Closes #139
Description
Fixed URL validation with proper regex (original regex attribution included in code)
How to test

Launch the app.
Run the following command: add n/Testing URL without http u/google.com d/10-05-2022 1200 dur/1 m/2 r/N. The meeting is created successfully. Note the https:// prepended to google.com.
Run the following incorrect commands:

add n/Wrong URL u/google d/10-05-2022 1200 dur/1 m/2 r/N
add n/Wrong URL u/https://google d/10-05-2022 1200 dur/1 m/2 r/N
add n/Wrong URL u/https:// d/10-05-2022 1200 dur/1 m/2 r/N
add n/Wrong URL u/https://.com d/10-05-2022 1200 dur/1 m/2 r/N

The commands above should fail with the correct error message printed.

Other information

Codecov Report

Merging #173 (4a118df) into master (c352531) will decrease coverage by 0.09%.
The diff coverage is 25.00%.

@@             Coverage Diff              @@
##             master     #173      +/-   ##
============================================
- Coverage     62.11%   62.01%   -0.10%
  Complexity      483      483
============================================
  Files            93       94       +1
  Lines          1874     1872       -2
  Branches        202      202
============================================
- Hits           1164     1161       -3
- Misses          611      612       +1
  Partials         99       99

Impacted Files
Coverage Δ

.../model/meeting/exceptions/InvalidUrlException.java
0.00% <0.00%> (ø)

...n/java/seedu/address/model/meeting/MeetingUrl.java
69.23% <50.00%> (-1.36%)
:arrow_down:

Continue to review full report at Codecov.

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

authors: NatalieTanML codecov-commenter


text:
[PE-D][Tester D] Hard to read command summary

Perhaps the command summary's readability can be improved (into a table form maybe)

Labels: type.DocumentationBug severity.Low
original: Guanzhou03/ped#6

resolved

authors: loyhongshenggg nus-se-script


text:
Remaining touch ups to UG

This PR contains last touch ups spotted for UG
To discuss with team:

Want to add events command?
Discuss further input validations (whether we want), using command format table
remove sort clients from command summary table?

Codecov Report
Base: 68.12% // Head: 68.12% // No change to project coverage :thumbsup:

Coverage data is based on head (b077f72) compared to base (90f2101).
Patch has no changes to coverable lines.

Additional details and impacted files
@@            Coverage Diff            @@
##             master     #220   +/-   ##
=========================================
  Coverage     68.12%   68.12%
  Complexity      996      996
=========================================
  Files           153      153
  Lines          3310     3310
  Branches        451      451
=========================================
  Hits           2255     2255
  Misses          864      864
  Partials        191      191

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

authors: codecov-commenter loyhongshenggg


text:
Update constraints for CompanyName and Role

Currently, there are alphanumeric constraints for CompanyName and Role. However, we feel that special characters should be allowed, such as having front-end developer as the role.
Hence, we would be removing alphanumeric constraints. Instead, the new constraints would be:

Cannot be blank
Maximum 50 characters

Fix by #126.


text:
Update UG for v1.4

This PR will include the following updates:

Q&A section is now populated
Pictures have been added to all features
Version Number for UG has been updated to v1.4

Close #145

authors: ReganChoy getsquared


text:
[PE-D][Tester A] Subjects are not sorted in alphabetical order

When sorting contacts by subjects, subjects in numbers are sorted in front of upper case letter subjects, and upper case subjects are listed in front of subjects in lower case letters. For instance, 111 comes before Math, and they both come before chinese, even though 'c' should have priority over 'm'. This counters the expected behaviour as stated in the UG in which subjects are expected to be sorted in alphabetical order.

Labels: type.FunctionalityBug severity.High
original: annabellekk/ped#19

I personally think this is a bug (not a feature flaw), so we can fix it. But there was a similar forum post about incorrectly sorting by ASCII and someone replied implying it's a feature flaw

Nope, Prof has replied and it's considered as feature flaw. Will have to consider under Planned Enhancements

Because we happened to mention that sort is case-insensitive in UG, we can fix this as a bug!

authors: AgentHagu nus-pe-script


text:
Modify when to give warning for AddOrder

As per image

Will wait for the command to mark order as completed/not completed to be implemented first before handling this.


text:
[PE-D][Tester E] app allows duplicate contact entries with the same name

The add command is supposed to only allow for adding of contacts with unique names. However it does not currently seem to able to handle case-insensitive inputs.
Currently I am able to add in multiple duplicate contacts as long as I change the capitalization of the names

This differs from the expected behavior of the add command, which is that I am only supposed to be able to add in a contact with a unique name, while duplicate names are rejected.
\
Steps taken to replicate:

add n/name1
add n/NAME1

Labels: severity.Medium type.FeatureFlaw
original: volleyballkickedme/ped#1

duplicate of #256

authors: ChenLeiyu nus-pe-script


text:
added outline

fixed tests such that they don't depend on application code

removed configs from integration tests
I know it was like this previously let us discuss it if you disagree so that we don't revert each others work

added the new config system
moved training setup to its own function (outside of application code)
have changed the way LR schedulers and optimisers are created.

@MartinBernstorff have added you as reviewer as I thought you might find it interesting
edit: static type check fejler pga. outdated application scripts. @frillecode vi Kaan tage et kig at omskrive dem når vi har reviewet rettelserne (evt. imorgen?)

Som sidenote: Det her er en case, hvor stacked-pr's vil være mega lækkert, så det er nemmere at reviewe 👍
https://stacking.dev/

Som sidenote: Det her er en case, hvor stacked-pr's vil være mega lækkert, så det er nemmere at reviewe 👍
https://stacking.dev/

Vil sikkert have været bedre som en stack

authors: KennethEnevoldsen MartinBernstorff


text:
[Snyk] Fix for 3 vulnerabilities

Snyk has created this PR to fix 3 vulnerabilities in the maven dependencies of this project.
Snyk changed the following file(s):

pom.xml

Vulnerabilities that will be fixed with an upgrade:

Issue
Score
Upgrade

Denial of Service (DoS) SNYK-JAVA-ORGECLIPSEJETTY-8186142
  610
org.apache.hbase:hbase-server:  2.3.3 -> 2.4.0  org.apache.hbase:hbase-testing-util:  2.3.3 -> 2.4.0  No Path Found No Known Exploit

Improper Validation of Syntactic Correctness of Input SNYK-JAVA-ORGECLIPSEJETTY-8186141
  590
org.apache.hbase:hbase-server:  2.3.3 -> 2.4.0  No Path Found Proof of Concept

Improper Validation of Syntactic Correctness of Input SNYK-JAVA-ORGECLIPSEJETTY-8186158
  590
org.apache.hbase:hbase-server:  2.3.3 -> 2.4.0  org.apache.hbase:hbase-testing-util:  2.3.3 -> 2.4.0  No Path Found Proof of Concept

[!IMPORTANT]

Check the changes in this PR to ensure they won't cause issues with your project.
Max score is 1000. Note that the real score may have changed since the PR was raised.
This PR was automatically created by Snyk using the credentials of a real user.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
📜 Customise PR templates
🛠 Adjust project settings
📚 Read about Snyk's upgrade logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Denial of Service (DoS)

Checkmarx One – Scan Summary & Details – 7c7ae2fa-754b-4028-a6b2-143b589128de
Policy Management Violations - Pull/merge request blocked

Policy Name
Rule(s)
Break Build

Basic-Policy - Default Policy
New vulnerabilities of High and Medium severity levels detected
true

New Issues

Severity
Issue
Source File / Package
Checkmarx Insight

CVE-2009-4611
Maven-org.mortbay.jetty:jetty-6.1.26
Vulnerable Package

CVE-2009-4611
Maven-org.mortbay.jetty:jetty-util-6.1.26
Vulnerable Package

CVE-2009-5045
Maven-org.mortbay.jetty:jetty-6.1.26
Vulnerable Package

CVE-2012-0881
Maven-xerces:xercesImpl-2.6.2
Vulnerable Package

CVE-2012-0881
Maven-xerces:xercesImpl-2.9.1
Vulnerable Package

CVE-2013-4002
Maven-xerces:xercesImpl-2.9.1
Vulnerable Package

CVE-2013-4002
Maven-xerces:xercesImpl-2.6.2
Vulnerable Package

CVE-2014-0114
Maven-commons-beanutils:commons-beanutils-1.9.3
Vulnerable Package

CVE-2014-0114
Maven-commons-beanutils:commons-beanutils-1.9.2
Vulnerable Package

CVE-2014-0114
Maven-commons-beanutils:commons-beanutils-1.8.3
Vulnerable Package

CVE-2015-1772
Maven-org.apache.hive:hive-service-0.13.1
Vulnerable Package

CVE-2015-2080
Maven-org.eclipse.jetty.aggregate:jetty-all-7.6.0.v20120127
Vulnerable Package

CVE-2015-2156
Maven-io.netty:netty-all-4.0.23.Final
Vulnerable Package

CVE-2015-2156
Maven-io.netty:netty-3.7.0.Final
Vulnerable Package

CVE-2015-2156
Maven-io.netty:netty-3.4.0.Final
Vulnerable Package

CVE-2015-2575
Maven-mysql:mysql-connector-java-5.1.31
Vulnerable Package

CVE-2015-3253
Maven-org.codehaus.groovy:groovy-all-2.1.6
Vulnerable Package

CVE-2015-3253
Maven-org.codehaus.groovy:groovy-1.7.9
Vulnerable Package

CVE-2015-5237
Maven-com.google.protobuf:protobuf-java-2.5.0
Vulnerable Package

CVE-2016-1000027
Maven-org.springframework:spring-web-5.3.39-atlassian-2
Vulnerable Package

CVE-2016-1000027
Maven-org.springframework:spring-webmvc-5.3.39-atlassian-2
Vulnerable Package

CVE-2016-1000031
Maven-commons-fileupload:commons-fileupload-1.3.3
Vulnerable Package

CVE-2016-1000338
Maven-org.bouncycastle:bcprov-jdk15on-1.50
Vulnerable Package

CVE-2016-1000342
Maven-org.bouncycastle:bcprov-jdk15on-1.50
Vulnerable Package

CVE-2016-1000343
Maven-org.bouncycastle:bcprov-jdk15on-1.50
Vulnerable Package

CVE-2016-1000344
Maven-org.bouncycastle:bcprov-jdk15on-1.50
Vulnerable Package

CVE-2016-1000352
Maven-org.bouncycastle:bcprov-jdk15on-1.50
Vulnerable Package

CVE-2016-2510
Maven-org.beanshell:bsh-2.0b4
Vulnerable Package

CVE-2016-3083
Maven-org.apache.hive:hive-exec-0.13.1
Vulnerable Package

CVE-2016-3083
Maven-org.apache.hive:hive-service-0.13.1
Vulnerable Package

CVE-2016-4970
Maven-io.netty:netty-all-4.0.23.Final
Vulnerable Package

CVE-2016-5007
Maven-org.springframework:spring-core-4.2.5.RELEASE
Vulnerable Package

CVE-2016-6814
Maven-org.codehaus.groovy:groovy-1.7.9
Vulnerable Package

CVE-2016-6814
Maven-org.codehaus.groovy:groovy-all-2.1.6
Vulnerable Package

CVE-2016-7051
Maven-com.fasterxml.jackson.core:jackson-core-2.2.2
Vulnerable Package

CVE-2016-7051
Maven-com.fasterxml.jackson.core:jackson-core-2.4.0
Vulnerable Package

CVE-2017-12963
Npm-node-sass-4.13.1
Vulnerable Package

CVE-2017-12964
Npm-node-sass-4.13.1
Vulnerable Package

CVE-2017-15095
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2017-15095
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2017-15095
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2017-15718
Maven-org.apache.hadoop:hadoop-yarn-server-nodemanager-3.3.0
Vulnerable Package

CVE-2017-17485
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2017-17485
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2017-17485
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2017-18640
Maven-org.yaml:snakeyaml-1.17
Vulnerable Package

CVE-2017-3523
Maven-mysql:mysql-connector-java-5.1.31
Vulnerable Package

CVE-2017-5637
Maven-org.apache.zookeeper:zookeeper-3.4.6
Vulnerable Package

CVE-2017-5637
Maven-org.apache.zookeeper:zookeeper-3.4.9
Vulnerable Package

CVE-2017-7525
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2017-7525
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2017-7525
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2017-7656
Maven-org.eclipse.jetty:jetty-server-9.3.14.v20161028
Vulnerable Package

CVE-2017-7656
Maven-org.eclipse.jetty:jetty-http-9.3.14.v20161028
Vulnerable Package

CVE-2017-7656
Maven-org.eclipse.jetty:jetty-http-9.3.19.v20170502
Vulnerable Package

CVE-2017-7656
Maven-org.eclipse.jetty:jetty-server-9.3.19.v20170502
Vulnerable Package

CVE-2017-7657
Maven-org.eclipse.jetty:jetty-server-9.3.14.v20161028
Vulnerable Package

CVE-2017-7657
Maven-org.eclipse.jetty:jetty-http-9.3.14.v20161028
Vulnerable Package

CVE-2017-7657
Maven-org.eclipse.jetty:jetty-server-9.3.19.v20170502
Vulnerable Package

CVE-2017-7657
Maven-org.eclipse.jetty:jetty-http-9.3.19.v20170502
Vulnerable Package

CVE-2017-7658
Maven-org.eclipse.jetty:jetty-server-9.3.19.v20170502
Vulnerable Package

CVE-2017-7658
Maven-org.eclipse.jetty:jetty-server-9.3.14.v20161028
Vulnerable Package

CVE-2017-9735
Maven-org.eclipse.jetty:jetty-util-9.3.19.v20170502
Vulnerable Package

CVE-2017-9735
Maven-org.eclipse.jetty:jetty-util-9.3.14.v20161028
Vulnerable Package

CVE-2018-1000613
Maven-org.bouncycastle:bcprov-jdk15on-1.50
Vulnerable Package

CVE-2018-11307
Maven-com.fasterxml.jackson.core:jackson-databind-2.9.5
Vulnerable Package

CVE-2018-11307
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2018-11307
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2018-11307
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2018-11499
Npm-node-sass-4.13.1
Vulnerable Package

CVE-2018-11693
Npm-node-sass-4.13.1
Vulnerable Package

CVE-2018-11694
Npm-node-sass-4.13.1
Vulnerable Package

CVE-2018-11696
Npm-node-sass-4.13.1
Vulnerable Package

CVE-2018-11697
Npm-node-sass-4.13.1
Vulnerable Package

CVE-2018-11698
Npm-node-sass-4.13.1
Vulnerable Package

CVE-2018-11768
Maven-org.apache.hadoop:hadoop-hdfs-3.0.3
Vulnerable Package

CVE-2018-11777
Maven-org.apache.hive:hive-exec-0.13.1
Vulnerable Package

CVE-2018-11777
Maven-org.apache.hive:hive-exec-3.1.0
Vulnerable Package

CVE-2018-12022
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2018-12022
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2018-12022
Maven-com.fasterxml.jackson.core:jackson-databind-2.9.5
Vulnerable Package

CVE-2018-12022
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2018-12023
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2018-12023
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2018-12023
Maven-com.fasterxml.jackson.core:jackson-databind-2.9.5
Vulnerable Package

CVE-2018-12023
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2018-12545
Maven-org.eclipse.jetty:jetty-server-9.3.19.v20170502
Vulnerable Package

CVE-2018-12545
Maven-org.eclipse.jetty:jetty-server-9.3.14.v20161028
Vulnerable Package

CVE-2018-1272
Maven-org.springframework:spring-core-4.2.5.RELEASE
Vulnerable Package

CVE-2018-1320
Maven-org.apache.thrift:libthrift-0.9.0
Vulnerable Package

CVE-2018-1320
Maven-org.apache.thrift:libthrift-0.9.2
Vulnerable Package

CVE-2018-1320
Maven-org.apache.thrift:libthrift-0.9.3
Vulnerable Package

CVE-2018-1337
Maven-org.apache.directory.api:api-ldap-client-api-1.0.0-M33
Vulnerable Package

CVE-2018-14718
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2018-14718
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2018-14718
Maven-com.fasterxml.jackson.core:jackson-databind-2.9.5
Vulnerable Package

CVE-2018-14718
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2018-14719
Maven-com.fasterxml.jackson.core:jackson-databind-2.9.5
Vulnerable Package

CVE-2018-14719
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2018-14719
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2018-14719
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2018-14720
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2018-14720
Maven-com.fasterxml.jackson.core:jackson-databind-2.9.5
Vulnerable Package

CVE-2018-14720
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2018-14720
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2018-14721
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2018-14721
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2018-14721
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2018-14721
Maven-com.fasterxml.jackson.core:jackson-databind-2.9.5
Vulnerable Package

CVE-2018-19360
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2018-19360
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2018-19360
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2018-19360
Maven-com.fasterxml.jackson.core:jackson-databind-2.9.5
Vulnerable Package

CVE-2018-19361
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2018-19361
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2018-19361
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2018-19361
Maven-com.fasterxml.jackson.core:jackson-databind-2.9.5
Vulnerable Package

CVE-2018-19362
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2018-19362
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2018-19362
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2018-19362
Maven-com.fasterxml.jackson.core:jackson-databind-2.9.5
Vulnerable Package

CVE-2018-19827
Npm-node-sass-4.13.1
Vulnerable Package

CVE-2018-3258
Maven-mysql:mysql-connector-java-5.1.31
Vulnerable Package

CVE-2018-5968
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2018-5968
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2018-5968
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2018-7489
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2018-7489
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2018-7489
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2018-8009
Maven-org.apache.hadoop:hadoop-common-3.1.1
Vulnerable Package

CVE-2018-8012
Maven-org.apache.zookeeper:zookeeper-3.4.6
Vulnerable Package

CVE-2018-8012
Maven-org.apache.zookeeper:zookeeper-3.4.9
Vulnerable Package

CVE-2018-8088
Maven-org.slf4j:slf4j-ext-1.7.7
Vulnerable Package

CVE-2018-8088
Maven-org.slf4j:slf4j-ext-1.5.10
Vulnerable Package

CVE-2019-0205
Maven-org.apache.thrift:libthrift-0.9.3
Vulnerable Package

CVE-2019-0205
Maven-org.apache.thrift:libthrift-0.9.2
Vulnerable Package

CVE-2019-0205
Maven-org.apache.thrift:libthrift-0.9.0
Vulnerable Package

CVE-2019-0231
Maven-org.apache.mina:mina-core-2.0.16
Vulnerable Package

CVE-2019-10086
Maven-commons-beanutils:commons-beanutils-1.9.2
Vulnerable Package

CVE-2019-10086
Maven-commons-beanutils:commons-beanutils-1.9.3
Vulnerable Package

CVE-2019-10172
Maven-org.codehaus.jackson:jackson-mapper-asl-1.9.2
Vulnerable Package

CVE-2019-10172
Maven-org.codehaus.jackson:jackson-mapper-asl-1.5.2
Vulnerable Package

CVE-2019-10172
Maven-org.codehaus.jackson:jackson-mapper-asl-1.9.13
Vulnerable Package

CVE-2019-10202
Maven-org.codehaus.jackson:jackson-mapper-asl-1.9.13
Vulnerable Package

CVE-2019-10202
Maven-org.codehaus.jackson:jackson-mapper-asl-1.9.2
Vulnerable Package

CVE-2019-12086
Maven-com.fasterxml.jackson.core:jackson-databind-2.2.2
Vulnerable Package

CVE-2019-12086
Maven-com.fasterxml.jackson.core:jackson-databind-2.9.5
Vulnerable Package

CVE-2019-12086
Maven-com.fasterxml.jackson.core:jackson-databind-2.7.8
Vulnerable Package

CVE-2019-12086
Maven-com.fasterxml.jackson.core:jackson-databind-2.4.0
Vulnerable Package

CVE-2019-12402

More results are available on AST platform


text:
The inverted pendulum model prerequisites

A note to my future self
What I am doing here is quite against my policy of doing the least necessary amount of quality work, but I am doing it as a partial fulfillment of my Master's degree secondary goal: to be proficient in model, simulation, and control using Julia. Otherwise, I would just use the ABCD matrix of the model and would call it a day.

To follow a TDD approach, I need a verified model of an inverted pendulum to compare the newly created model against it. To do so I need to:

[x] #12

The WSM model is a Modelica model, which means I need to

[x] #13

OMJulia relies on Open Modelica, so I have to figure out a way to

[ ] #14

Here is a quick summary of the components used in the model

Modelica.Icons.Library - This is a built-in icon library.
PlanarMechanics.Parts.Body - Represents the mass of the pendulum and the cart in planar mechanics.
PlanarMechanics.Parts.Fixed - Represents a fixed point in planar mechanics.
PlanarMechanics.Parts.FixedTranslation - Represents the length of the pendulum in planar mechanics.
PlanarMechanics.PlanarWorld - Represents the planar world in planar mechanics.
PlanarMechanics.Joints.Revolute - Represents a revolute joint in planar mechanics.
PlanarMechanics.Joints.Prismatic - Represents a prismatic joint in planar mechanics.
Modelica.Mechanics.Rotational.Sensors.AngleSensor - Represents an angle sensor in rotational mechanics.
Modelica.Blocks.Math.MatrixGain - Represents a matrix gain block for control.
Modelica.Mechanics.Translational.Sensors.PositionSensor - Represents a position sensor in translational mechanics.
Modelica.Mechanics.Rotational.Sensors.SpeedSensor - Represents a speed sensor in rotational mechanics.
Modelica.Mechanics.Translational.Sensors.SpeedSensor - Represents a speed sensor in translational mechanics.
PlanarMechanics.Sources.WorldForce - Represents a world force source in planar mechanics.

Other auxiliary components

Modelica.Blocks.Interfaces.RealOutput - Represents real output signals for various components.

Real - Represents real numbers for storing values.

Modelica.SIunits.Mass - Represents mass values in SI units.

Modelica.SIunits.Inertia - Represents inertia values in SI units.

Modelica.SIunits.Angle - Represents angle values in SI units.

Modelica.SIunits.Length - Represents length values in SI units.

Modelica.SIunits.Position - Represents position values in SI units.

Modelica.SIunits.Acceleration - Represents acceleration values in SI units.

Modelica.SIunits.AngularAcceleration - Represents angular acceleration values in SI units.

The PlanarMechanics.* components are provided via https://github.com/dzimmer/PlanarMechanics which is missing for ModelingToolkitStandardLibarary. So I have to add the following to MTKStdLib

[ ] #16
[ ] #15
[ ] #17
[ ] #18
[ ] #19
[ ] #20

Here is a PR that added the Mechnaical.Transitional module for inspiration and pitfalls https://github.com/SciML/ModelingToolkitStandardLibrary.jl/pull/85
only then I can start building the model using ModelingToolkit. oouf :tired_face:

PlanarMechanics_ReferenceResults

Merging https://github.com/SciML/ModelingToolkitStandardLibrary.jl/pull/220 means all the required components are upstream in the ModelingToolkitStandardLibrary.


text:
Unable to deploy the bot due to error with pyrogram 2.0

Please update the whole code to pyrogram 2.0 , as i am getting pyrogram error while deploying.

Fixed


text:
Controlling which color spaces appear in menus

There has been wide agreement that it would be helpful for config authors to be able to limit which color spaces appear in application menus.  Indeed, several features of OCIO v2 are aimed at improving this situation and a number of PRs have been merged.  At this point, it seems that it would be useful to summarize this topic and pull together the results of various conversations to make sure that we are all on the same page as to how this will work in v2 and decide on any remaining tweaks.
NOTE:  To clarify the scope of this issue, it is only concerning color space menus.  Applications also need to create menus for displays and views, but the display/view section of the config already filters a list of views based on what display is selected.  Furthermore, the new viewing rules allows an application to further filter the views based on the color space of the image being viewed.  So display/view filtering is out of scope for the present issue.
OVERVIEW
To recap and frame the color space menu problem, there are several new and existing mechanisms that are relevant:

The roles may be used to specify that there should be no user choice (i.e., a fixed color space should be used).  An example of this that is used in Maya is the "rendering" role.  If this role is present, the application rendering space menu in Preferences is locked to this color space.

The new inactive_colorspaces property of a config or the corresponding environment variable may be used to remove color spaces from application menus while still allowing them to be used, if necessary.  For example, an old scene file may use deprecated color space names.  Leaving them in the config allows an application to read and process the old files but adding those color spaces to the inactive list means they won't show up in menus by default.  Note that an application may temporarily add a given space to the menu in this scenario when displaying what was assigned to a given asset in the scene.

The proposed "aliases" feature (Issue #1129) would provide another way to prevent color spaces from appearing in menus while still allowing them to be used elsewhere (e.g., to be used in file rule paths).

An application may include all roles in color space menus in special circumstances.  This statement might seem contrary to several discussions in TSC meetings concluding that it is generally undesirable for applications to add roles to color space menus.  (If a config author wants them to be in the menu, a color space with the desired name could be added.)  However, there are some situations where roles could be appropriate.  For example, if an application allowed editing of file rules, it would be appropriate to allow a role to be selected as a rule's color space.

The family attribute of a color space may be used to group the menu contents into hierarchical menus.  (This does not actually control whether a space appears but could be used to similar effect, e.g., by putting spaces under a "DO NOT USE" heading, which is sometimes used as a workaround in v1.)

Other color space attributes such as encoding, isdata, and equalitygroup could also be used to filter color spaces.

The new display_colorspaces section of the config could provide another means for an applications to sort types of color spaces.

And last, but not least, the primary purpose of the new categories attribute of a color space is to filter what shows up in each menu.

APP HELPERS
In order for these capabilities to be implemented in a uniform manner, there needs to be some example code provided.  The ColorSpaceMenuHelper class in the App Helpers code is intended to serve this purpose and already supports a number of the above mechanisms (nos. 1, 2, 4, 5, and 8).  The App Helpers were introduced in PR #952 and PR #1220 (in progress) moves it into the core library.
CATEGORIES
The item that needs the most elaboration is the last one: categories.  The categories feature was added in PR #627 and has been discussed in Issue #623 and at many meetings.  However we still need to get alignment on what set of official strings will be documented and how the App Helpers code should filter based on them.
During the discussions, there have been two main use-cases that have been discussed:
Menu-based (or Task-based) filtering -- In this scenario, the categories contain a description of the task that a given application menu is used for.  For example, Maya has a menu for assigning a color space to a file texture and another menu for selecting the rendering (working) space.  Clearly, a different set of color spaces are appropriate for those two tasks.  From an app developer's point of view, these category string(s) would be predetermined and fixed for a given menu (and they should be documented by the app developer for the benefit of config authors).  A baseline set of strings should be documented by OCIO to promote consistency among developers but, as with roles, it should be possible to introduce more without requiring any library changes.
Artist-based filtering -- In this scenario, the categories contain a description of the type of person using the application based on what type of tasks they focus on.  For example, in a large studio there are departments for modeling, layout, look-dev, lighting, compositing, and many others.  The degree to which a given sort of artist is knowledgeable about color spaces and is expected to be able to select which ones are appropriate varies a lot with their role.  Hence it makes sense to filter color spaces based on this.  From an app developer's point of view, the category string(s) being looked for are not predetermined and the expectation is that they would need to be set at runtime (e.g., by an environment variable).  However, it would still be useful for OCIO to document a baseline set of strings to promote consistency (and again with the understanding that it does not need to be an exhaustive list).
Another way of looking at this is that the app developer hard-codes one set of keys (the menu categories) and the app end-user provides another set of keys at runtime (the artist categories) and the intersection of these is what filters what is provided by the config author.  In other words, another way of framing the problem is to think of it in terms of a set of hard-coded app-based categories plus a set of runtime end-user-based categories.
That brings us to the question of how the App Helpers example code should filter color space lists using categories.  Currently, the code takes one list of strings and will select all color spaces that contain any of those strings (in other words, a union or logical OR).  If no strings are provided, or the config does not use categories, the color spaces are not filtered by them.
The limitation of the existing algorithm is that it does not allow expressing a logical AND relationship, which seems like it would be necessary to capture the menu-type AND artist-type intersection that is desired.
This issue proposes extending the App Helpers code to take two lists of categories rather than one -- an app-supplied list and an end-user-supplied list.  The following algorithm would then be used:
if (no categories are provided to App Helpers)  --> don't filter based on categories

app_set = FindColorSpaces(app_categories)
end_user_set = FindColorSpaces(end_user_categories)

if ( !isempty(app_set) && !isempty(end_user_set) )  --> use the intersection of the two sets
else if ( !isempty(app_set) )  --> filter using the app categories
else if ( !isempty(end_user_set) )  --> filter using the end-user categories
else  --> don't filter based on categories

MENU-BASED CATEGORIES STRINGS
Here is a proposed baseline set of Menu-based categories:

file-io -- For menus setting the color space of imported or exported files.
working-space -- For menus setting a working color space.
look-process-space -- For menus setting the process space for applying a CDL or LUT.

OTHER FILTERING
Note that the above menu-based categories are intended to be used in connection with the "encoding" property of the color space (Issue #1031, merged in PR #1038).  So for example, rather than define "scene_linear_working_space", "log_working_space", etc., there is only a "working-space" category.  If an application needs scene-linear working spaces, they would provide App Helpers with a category of "working-space" and an encoding of "scene-linear".  Hence another refinement proposed here is to allow an encoding to be presented to the ColorSpaceMenuHelper class (which is not currently implemented).
Similarly, it seems that it could be useful to further filter the list to show either all color spaces, only display color spaces (Issue #926, merged in PR #939), or only non-display color spaces.  (The Config class API already supports this, but it could be useful to add that to ColorSpaceMenuHelper too.)
ARTIST-BASED CATEGORY STRINGS
The Artist-based categories are a bit harder to enumerate.  There are a lot of different department names in a big VFX or animation studio and it might be difficult to agree on a representative list.  Furthermore, there may be little point to distinguish between certain types of artists if they have similar needs in terms of color management (e.g., modeling vs. layout).  So perhaps one way of approaching it is to delineate between 3d (modeling, animation, lighting, etc.) and 2d (editorial, compositing, etc.) departments/jobs and based on the amount of access needed?  Here is a proposed baseline set:

basic-3d -- For artists in 3d departments needing only basic color management.
advanced-3d -- For artists in 3d departments needing advanced color management access.
basic-2d -- For artists in 2d departments needing only basic color management.
advanced-2d -- For artists in 2d departments needing advanced color management access.

SUMMARY
In summary, here is the proposal:
Add to ColorSpaceMenuHelper in App Helpers:

The ability to specify a second list of categories, to be used in intersection with the first (existing) set (thereby allowing both an app-based set and an end-user-based set).
The ability to specify an encoding to further filter the categories results.
The ability to further filter the results to all color spaces, only display color spaces, or only non-display color spaces.

Document the set of Menu-based and Artist-based categories listed above as the recommended baseline set.

Dig it!
Here are some thoughts and ideas, increasingly out-of-scope:

I think the proposed algorithm for handling app-demanded and user-provided categories is great.

I also really like the idea of using the color space "encoding" property to get menu-based categories "for free." I suppose "encoding" values are expected (but not required?) to be one of: [data, scene-linear, display-linear, log, sdr-video, hdr-video, sdr-cinema, hdr-cinema] ...?

Any consideration given to sort order? How are merged / filtered color spaces presented? Are hierarchical menus preserved when presenting filtered color spaces? Should special consideration be given to colorspaces that are assigned to certain roles? (e.g., floating the color space assigned to the "color_timing" role to the top of a "look-process-space" menu?)

I would like the option to enable a standard "strict-sorting" method that forces families, followed by color spaces, to be listed in alphabetical order. (And I think it should be an option specified in the config, as opposed to an environment variable set at runtime).

Even though we have other ways of explicitly enabling / disabling color space visibility, I still think users would find it useful to be able to hide (from unfiltered menus) color spaces belonging to certain families. I was thinking an intuitive mechanism for this might be to filter any color spaces whose family string is prefixed with a period, or includes a separator delimiter immediately followed by a period. For instances, color spaces under the  ".DO_NOT_USE" and "foo/.bar" families would be hidden, but not necessarily color spaces directly under "foo" or "foo/mew" or what have you. Thoughts?

How are ViewTransform categories used?

As mentioned in the TSC meeting, I'd prefer something explicit over 'magic' hiding based on naming of the family string pattern matching some set of values.
Kevin

This proposal has now been implemented in PR #1220.  Thanks for the comments above, here are the responses based on the latest work:
Zach,

Yes you are correct about the encodings.
The sort order basically preserves the ordering of the config, please refer to the comments in OpenColorAppHelpers.h for more details.
Hierarchical menus are preserved by the filtering, but note that the application ultimately controls how they order and present the hierarchical menus since creating them is more complicated than simply iterating over a list.
The ViewTransform categories are not currently used but the idea was that they could ultimately be used to provide some additional filtering on Views, similar to what has been done for color spaces.

Mark, per your request, we have not added the proposed category strings listed above into the header files.  Currently they are only used in the unit tests as plausible real-world examples.

Closing this as fixed via PR #1220.

Closing this as fixed via PR #1220.

authors: KevinJW doug-walker zachlewis

repo: AcademySoftwareFoundation/OpenColorIO


text:
Update NanoVDB Merge Candidate from Master

This updates the feature/nanovdb_merge_candidate to use v9 and with support for OpenEXR v3.

Looks like the feature/nanovdb_merge_candidate branch is now passing all the Houdini CI checks (due to the OpenEXR 3 changes coming in on this branch), but is failing the white-space and trailing space CI checks.

Closing in favor of #1213

repo: AcademySoftwareFoundation/openvdb


text:
Project lifecycle update - Add sandbox, adjust incubation

Signed-off-by: John Mertic jmertic@linuxfoundation.org

@kdt3rd indicated the TAC is good with this - so merging it in.

repo: AcademySoftwareFoundation/tac


text:
Replace Zombienet with Chopsticks

I am trying to replace Zombient with Chopsticks as a local testnet, but unfortunately I am facing some issues/limitations that make it not possible yet.
There are two different ways of using Chopsticks to deploy a network:
1. Running chains from genesis files

Problem: #634
Solution: #635

2. Forking production state.

Problem: Runtime upgrades are potentially very slow, and predicting their completion duration is not possible.
Solutions:

Having a local node with minimal latency for the RPC storage requests

It mitigates the problem, but runtimes upgrades could still take too long

Override the involved migrated storage data with some dummy data

It would't really test the production storage migration, plus needs manual intervention for each release. I am looking for an automated process that always works.

Add in the configuration file a method for pre-fetching the migrated storage data

Needs manual intervention for each release. I am looking for an automated process that always works.

Bulk query the keys to speed up the migration process? Possible?
Make Chopsticks to work also with a copy of the production DB in your local
Add some kind of event I can subscribe to know when the migration has ended to resume running my tests. Currently, it produces a new block when running a runtime upgrade, however, Chopsticks stops working until the migrations finish. It would be great if I can pause my tests and resume them when Chopsticks is operative again.

While it doesn't resolve the problem of slow migrations, at least I can automate the process of running the tests.

you could try use https://github.com/open-web3-stack/parachain-launch to generate genesis with hrmp channel opened
the block production shouldn’t be too slow with runtime upgrade. one reason could make it slow is migration modifying a lot of data

https://github.com/AcalaNetwork/chopsticks/pull/641
this will make migration run faster if you have specified a cache db

Sorry, I posted the issue by mistake before completion. Please check it again.

one reason could make it slow is migration modifying a lot of data

Yes, exactly, that is the problem. I am trying to automate the testing process, but I can not really continue the testing flow after a runtime upgrade.

Add some kind of event I can subscribe to know when the migration has ended to resume running my tests
This might do the trick for a simple solution

Block should not be produced until migration is done.
- While it doesn't resolve the problem of slow migrations, at least I can automate the process of running the tests.

I think this is probably the easiest and optimal solution.

not sure what you mean. block is not produced before migration

authors: NachoPal ermalkaleci xlc

repo: AcalaNetwork/chopsticks


text:
Please invite me to the GitHub Community Organization

Name
Krishna Agarwal

Thanks a lot

repo: AccessibleForAll/Support


text:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

aaaaaaaaaaaaaaaaaaaaaaaaa

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

authors: Aconka KittenMoon

repo: Aconka/babot

license: WTFPL


text:
Add better support for logging and monitoring in Azure Monitor

Replaced the existing logging with triggering of events and the possibility to add multiple custom listeners. A default listener for logging is provided.

I realize that #22 also included a specific logger for Application Insights. I would say we complete this PR and merge it, then add the App Inssights / Azure monitor implementation,

authors: PeterOrneholm elinohlsson


text:
fix(versions): update Activiti/activiti-cloud-dependencies versions into develop

UpdateBot pushed maven dependency: org.activiti.cloud.rb:activiti-cloud-runtime-bundle-dependencies to: 7.1.54

UpdateBot commands:
updatebot push-version --kind maven org.activiti.cloud.rb:activiti-cloud-runtime-bundle-dependencies 7.1.54

repo: Activiti/activiti-cloud-dependencies


text:
fix(versions): update Activiti/activiti-cloud-example-chart-modeling versions

UpdateBot pushed helm dependency: activiti-cloud-modeling to: 7.1.34

UpdateBot commands:
updatebot push-version --kind helm activiti-cloud-modeling 7.1.34


text:
update org.activiti.cloud.dependencies:activiti-cloud-dependencies to 7.0.190

UpdateBot pushed maven dependency: org.activiti.cloud.dependencies:activiti-cloud-dependencies to: 7.0.190

UpdateBot commands:
updatebot push-version --kind maven org.activiti.cloud.dependencies:activiti-cloud-dependencies 7.0.190 --merge false

repo: Activiti/ttc-connectors-reward


text:
Invalid Parse result of negative number in scientific notation

Bug: input = input.Replace(numberFormatProvider.NegativeSign, String.Empty);
if input starts with NegativeSign, it will replace ALL NegativeSigns in the string.
To Fix: input = input.Substring(1);
To Test: new BigDecimal("-123.123E-20");

Thanks for bringing this to my attention.
This should be fixed now.
Test it out. If you are satisfied with the solution, feel free to close
the ticket. Otherwise if I don't hear anything from you for a week or two I will probably close it at that point.

I've tested fix. It works as expected. Thank you.

authors: AdamWhiteHat Degot

repo: AdamWhiteHat/BigDecimal


text:
#717 Updated nunit to 3.x to make it work in VS2017 again

ToDo:

[x] Updated nunit 3.x
[x] Verify that tests can be executed again in visual studio 2017
[ ] Fix remaining failing tests due to breaking changes between nunit 2.x and 3.x
[ ] Verify AppVeyor test execution still works as expected
[ ] Verify NightlyBuilder tool is still able to read test results
[ ] Remove old "start test project using nunit UI" settings that have been superseded by VS integrated test discovery for a while now, once it works again

Work in progress to fix to issue #716

Do you want assistance in porting / fixing the remaining tests to the new nunit in this PR branch?

Would be appreciated as iam not familiar with the tests themselves. I believe the update broke something that is related to the setupfixture which in turn causes some tests to fail.

I'll take a look as soon as I manage.

Checked out the PR branch, and VS discovers all tests as expected in the Test Explorer window, but fails to run any of them.
This is the output I'm getting:
[13/04/2019 14:18:42 Informational] ------ Discover test started ------
[13/04/2019 14:18:43 Informational] ========== Discover test finished: 0 found (0:00:01.2818452) ==========
[13/04/2019 14:18:43 Informational] ------ Run test started ------
[13/04/2019 14:18:43 Informational] ========== Run test finished: 0 run (0:00:00.4048189) ==========

Seems there is some sort of dissonance between test discovery in the UI and for actually running them. Any idea what's missing?

Progress

Fixed the remaining test failures.
Verified AppVeyor can still run the tests without issues.

ToDo

Verify NightlyBuilder tool is still able to read test results
Remove old "start test project using nunit UI" settings that have been superseded by VS integrated test discovery for a while now, once it works again
Final clean up and review of code changes

Progress

Fixed NightlyBuilder build script with msbuild 15.0 / VS 2017.
Found that the NightlyBuilder tool is currently not able to read back test results, likely because it uses the wrong test runner.

ToDo

Fix NightlyBuilder test result readback and verify it works again.
Remove old "start test project using nunit UI" settings that have been superseded by VS integrated test discovery for a while now, once it works again
Final clean up and review of code changes

Hmm what is this nightlybuilder tool? Why not use the dotnet tooling? Nowadays it can even make nuget packages for you.

Progress

Fixed test runner version used by NightlyBuilder.
Found that the test result XML file format has been changed between v2 and v3, needs some adjustments in readback.

ToDo

Fix NightlyBuilder test result readback and verify it works again.
Remove old "start test project using nunit UI" settings that have been superseded by VS integrated test discovery for a while now, once it works again
Final clean up and review of code changes

Hmm what is this nightlybuilder tool? Why not use the dotnet tooling? Nowadays it can even make nuget packages for you.

It's essentially a legacy tool that was used for CI-like workflow before AppVeyor took over most of its tasks. It's still used for packaging as part of the AppVeyor CI build right now and should probably be replaced by out of the box tooling at this point.
Until it's gone, it should be maintained though for good measure.
(Ping me back in a different issue in case you're interested in helping ripping it out!)

Ah then it makes sense. Made issue about it so we can start gathering idea's: https://github.com/AdamsLair/duality/issues/718

authors: Barsonax ilexp

repo: AdamsLair/duality


text:
Changes in input pipeline

This issue summarizes the tested changes in the input pipeline.
This issue can be more or less treated as a log file. This issue will be tracked by the project board in "Done" section.

Date
Feature
Commit
Result (at the time of change)
Retained?
Comments

June 14
Vanilla, as in pycls
https://github.com/AdityaKane2001/regnety/pull/1/commits/40f93df36d97c005ceb0eb8d8a0f6c66878dede4
NA
No
-

June 26
tf vision RandAugment
https://github.com/AdityaKane2001/regnety/commit/3275b4db165379b1e0b62d4aeffa50aa2a6888d6
~40imgs/sec
No
Non vectorized

June 26
Resize images to 512
https://github.com/AdityaKane2001/regnety/commit/25a75b5353b36a4cd4a8e642d249ebedd4c33319
~40imgs/sec
Yes
Improved later

June 27
GCS, interleave, determinism=False
https://github.com/AdityaKane2001/regnety/commit/80d558dbddbda788956231dcfc35ee4ec35ccc1e
~50imgs/sec
Yes
Retained until final version

June 28
Vectorized random_sized_crop
https://github.com/AdityaKane2001/regnety/commit/9365f3a25363b0e5b933a46f0adf93a6c17d764f
~60imgs/sec
No
Removed in favor of random_crop

June 29
WeakRandAugment - All augmentations
https://github.com/AdityaKane2001/regnety/commit/4394214e0235c374344e3e52bad01c20420d313d
~50imgs/sec
No
All numbers henceforth are  reported with cache

July 2
Caching
NA, removing and adding back frequently
NA
Yes
-

July 3
Using AI Platform notebooks
NA
~110imgs/sec
Yes
n1-standard-8 with Tesla T4

July 5
Removing redundant augs:  invert, sharpen, cutout, color_degrade, shear, translate
https://github.com/AdityaKane2001/regnety/commit/897cdb070fbcc9626eeb5cc9a2288b9698041453
~200imgs/sec
Yes
Best performing, as least augmentations and cache were involved

July 7
Added back random rotate and crop
https://github.com/AdityaKane2001/regnety/commit/37f1607deef583472e8acb41b4abe0b0c60d9159
~140imgs/sec
Yes
Final speed, with random rotate and random crop

August 1
Added Inception crop, pca jitter
Numerous
~1800 (on final hardware) imgs/sec
Yes
Final, in the repo

IMPORTANT: The first few versions were extremely slow and thus the numbers are approximate. The later numbers are relatively more accurate due to use of Tensorboard and AI Platform notebooks.
I will update this table as and when required.

Closing this one as input pipeline is now freezed.


text:
🛑 Website is down

In 4bde143, Website (https://adityacprtm.dev) was down:

HTTP code: 500
Response time: 3223 ms

Resolved: Website is back up in 8c98e9e.

repo: Adityacprtm/uptime


text:
Cannot use username with Auth:attempt($credentials) instead

Laravel Version: #5.5.3#
Adldap2-Laravel Version: #3.0.5#
PHP Version: #7.0#

Description:
Cannot use username with Auth:attempt but works fine with email
Steps To Reproduce:
Setup the login with username instead of email, added the methode username to the login controller.
But only works when i use email as a field to login.

I have tested another mapping with adldap_auth,
It seems i can only use the ldap field 'userprincipalname', instead of samaccountname
mapped to another field "upn"
    'usernames' => [
        'ldap' => 'userprincipalname',
        'eloquent' => 'upn',
    ],


text:
ACMS-2479: [DevDocs] update externally facing documentation for the n…

…ew T&C

updated affected pages

Purpose of this pull request
This pull request (PR) uses the new links for the terms & conditions applicable to the Marketplace DevPortal.
Affected pages

https://developer.adobe.com/commerce/marketplace/guides/sellers/account-setup-process/
https://developer.adobe.com/commerce/marketplace/guides/sellers/developer-register/

also includes an updated image of the pop-up

Note: After this PR is reviewed, these changes can get published immediately.  The new terms & conditions that this PR uses already exist. 👍

repo: AdobeDocs/commerce-marketplace


text:
Hotspot JDK12 binaries are building jdk-updates/jdk12u and not jdk/jdk12

It seems the JDK12 Hotspot builds have openjdk jdk12u bug fixes in which are not present in the jdk12 repo. For example JDK-8219650 which is targetted for 12.0.2.
I am thus guessing the JDK12 Hotspot builds are cloning jdk-updates/jdk12u rather than jdk/jdk12 ?
jdk-updates/jdk12 is for updates to jdk12 12.0.1, 12.0.2, including merges from the jdk/jdk12.

John and I are having fun trying to figure this out.

Your assumptions are correct.  12.0.0-ga will get released from jdk12 and 12.0.1+ will get released from jdk12u

authors: andrew-m-leonard karianna

repo: AdoptOpenJDK/openjdk-build


text:
Reenable  test-packet-x64-ubuntu-16-04-1

@shelley.lambert @sophiag
Reenable  test-packet-x64-ubuntu-16-04-1

Peter Stanton:  "the machine itself is still up and running and appears to be ok. There are a lot of patches required - perhaps that is why it was disabled.
There are also a few old Jenkins jobs hanging around. I'll patch it and reboot it.
It is patched and rebooted and online in Jenkins"
Brad Blondin: test-packet-x64-ubuntu-16-04-1
has been renamed in Jenkins to
test-packet-ubuntu1604-x64-1
to align with the new inventory naming convention. System is on-line

repo: AdoptOpenJDK/openjdk-infrastructure


text:
Add step to process jck results using xunit

Added a hook for xunit plugin in JenkinsfileBase
Added an XSLT script to be used by xunit to transform JCK XML to Junit style XML

Signed-off-by: Mesbah_Alam@ca.ibm.com Mesbah_Alam@ca.ibm.com

Tests:
Here's a sanity.jck build run with the PR: Test_grinder/job/Grinder/3480/

Not sure if ci.adoptopenjdk.net has xunit installed or not. If not it might be helpful to install it as it support a lots of different test outputs also support customized output?
Though this should not block any builds in AdoptOpenJDK even if no xunit installed.

Just an FYI.. Updated the xsl script to correctly generate <failure> blocks under a failed test case - which now allows the jenkins junit plugin to correctly represent a failure in the UI:
https://hyc-runtimes-jenkins.swg-devops.com/view/Test_grinder/job/Grinder/3699/testReport/

sanity.jck build with latest changes: https://hyc-runtimes-jenkins.swg-devops.com/view/Test_grinder/job/Grinder/3700/testReport/

authors: Mesbah-Alam sophia-guo

repo: AdoptOpenJDK/openjdk-tests


text:
Riscv support

This has got past the initial detection phase in https://ci.adoptopenjdk.net/view/Test_grinder/job/Grinder/3263/console although may well fall over later. See also https://github.com/AdoptOpenJDK/openjdk-systemtest/pull/349 in the ST repo

Taking back out of draft as https://ci.adoptopenjdk.net/view/Test_grinder/job/Grinder/3264/console seems to be running through quite well.

Just note that SPEC value needs to be added/matched in ottawa.csv as well. Otherwise, tests with variations (i.e., ModeXXX) will not work properly.
FYI @ChengJin01

@llxia & @ShelleyLambert ,  I already had draft changes (not yet submitted for review) at https://github.com/ChengJin01/TKG/tree/add_riscv_support_tkg, which including the change of ottawa.csv.  I will change it back to linux_riscv64_cmprssptrs to match the buildspec in OpenJ9.

Riscv change https://github.com/AdoptOpenJDK/openjdk-tests/pull/1832 is merged. Close this PR.

authors: ChengJin01 llxia sxa


text:
stf looks for tools.jar which does not exist on Java 9

openjdk.test.debugging/.classpath contains an entry for tools.jar, which is required if tests are running on java 8.
tools.jar is absent on Java 9 - the classes have been merged into the jdk modules.
stf stops with an exception if any of the classpath entries cannot be found.
Tests still need to run against Java 8, so the classpath entry needs to be present in that situation.
Some code should be added to only resolve a tools.jar entry if we are testing Java 8.

PR submitted to fix: https://github.com/AdoptOpenJDK/stf/pull/4

@sxa555, please can you rerun the test with Java 9 and close if OK

Looks good. Closing

repo: AdoptOpenJDK/stf