Extricated distortion correction out of RM base class.

This PR is probably not complete just yet. I'm posting it to collect comments and code review.
It aims to pull the distortion correction code out of the RenderManager base class and into separate files (in preparation for migrating the code to OSVR-Core).
Work yet to be done on this PR

[ ] Make a public API for querying distortion correction parameters/data.
[ ] Build and test under Windows.

With my new commit, it works under D3D as well.  This pull request seems like it does not harm, so go ahead and pull it once you decide how many header files are most appropriate.  Fewer seem appropriate to me, as commented above, but I leave that up to you.

Hi @godbyk,
Thank you for working on this! I have got my VR world of choice working but the HDK 1.4 is displaying the bubble distortion in the middle and black along the edges. I eagerly await the solution you are working on and hope it addresses content shown in SBS mode as well. In the meantime is there anything I can look at to address the horizontally squeezed display with black showing on both sides? Maybe a different config file? Also is there anything a non coder can do to support your efforts?

Is there some news on lens correction for HDK 1.4 ?

@AltVRat @HyppoNymous If the current distortion correction parameters aren't correct for the HDK 1.4, let's file a separate issue for that.
@AltVRat Can you describe the problem you're having with SBS content and distortion correction in more detail? What content/game are you using? As for the squeezed display, it sounds like that may be a problem with an aspect ratio being set incorrectly. What content do you see this in?

Hi Kevin,
I figured out the SBS problem. It turns out that (at least on my
install) one has to enable the HMD bring up the Control software, then
toggle SBS before starting the OSVR server. Otherwise it completely
fails to run the command. It sends it to the HMD but nothing happens.
Once I tried it with the server off it changes instantly!
The squeezed display and bubble distortion in the middle is across all
content (Windows 10 desktop, Second Life, YouTube whatever I am viewing
in SBS mode is squeezed and distorted. Seems to be the RenderManager is
the issue since it isn't applying distortion correction to the SBS view.
See this forum discussion http://www.osvr.org/forum/viewtopic.php?t=3513
Anything a mere mortal hacker can do about that? There was talk it would
be addressed in later versions but its still happening for me.
Thanks!
On 8/7/2016 18:37, Kevin Godby wrote:

@AltVRat https://github.com/AltVRat @HyppoNymous
https://github.com/HyppoNymous If the current distortion correction
parameters aren't correct for the HDK 1.4, let's file a separate issue
for that.
@AltVRat https://github.com/AltVRat Can you describe the problem
you're having with SBS content and distortion correction in more
detail? What content/game are you using? As for the squeezed display,
it sounds like that may be a problem with an aspect ratio being set
incorrectly. What content do you see this in?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/sensics/OSVR-RenderManager/pull/109#issuecomment-238123897,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ATu5O8ZbTHyaeNpVoEa2uzvE9PDuATsOks5qdohsgaJpZM4I4xOI.

@godbyk Seems like you were thinking of taking the distortion correction out of the RenderManager and into the OSVR core? Any updates on that? Does going to the OSVR2 Split screen address any of the bubble distortion squished screen issues?

@AltVRat I think migrating the distortion code may happen sometime. But initially I just needed to make a public API for it so I could access it from the SteamVR-OSVR driver.
If any distortion remains after applying the distortion-correction mesh, then it probably means the mesh needs to be improved.

See https://github.com/sensics/OSVR-RenderManager/issues/181


Handle flakiness in BlockchainTime.Simple

The tests in Test.Consensus.BlockChainTime.Simple are flaky, albeit rarely and only under heavy load. We should think about how to handle this (i.e. "deflakification", or retry a limited number of times, or choose it is not worth it, etc.).
Also see #3893 and https://input-output-rnd.slack.com/archives/CFKLUH4R0/p1657643148435859?thread_ts=1657641665.619639&cid=CFKLUH4R0

Another failure:
delayNoClockShift:                       FAIL (0.51s)
      *** Failed! Falsified (after 1 test):
      [SlotNo 0,SlotNo 1,SlotNo 2,SlotNo 4,SlotNo 5] /= [SlotNo 0,SlotNo 1,SlotNo 2,SlotNo 3,SlotNo 4]
      Use --quickcheck-replay=977779 to reproduce.
      Use -p '/delayNoClockShift/' to rerun this test only.


Create feature to communicate with Land Portal users

There currently is no way for us to communicate with Land Portal users. The Mailchimp list of users is not complete - there are 2612 Land Portal users, and the Mailchimp list has 1618. I do not know how to explain the discrepancy.
There is a Drupal feature to contact Land Portal users, and there are instructions for doing so in the Land Portal technical user guide. I did this on several occasions over two years ago, but the result was that the emails were all identified as spam and the Land Portal was put on watch lists. Consequently, I have had no legitimate way to communicate with Land Portal users, and no way to engage them, no way to ask them to complete or complement their profiles, to participate in debates, etc.
We need a reliable feature to be able to communicate with Land Portal users. Drupal must have some kind of module for doing this. I have asked for this for more than two years, but would appreciate if this could be created now.  Happy to provide guidance and answer any questions about what we need.

I will check Mailchimp. I will create a ticket to track only this issue.

The communication can be mainly done under two channels:
a) via user accounts but the landportal user would have to be logged in
b) via e-mail but the user would have to use its personal mailbox account

From my viewpoint, I think the second one is more feasible because it reduces it skips the time of log in . What do you think?

Adam I didn't see your comment. Of course we do not want users to have to login. I want to be able to send emails to all Land Portal users. Mailchimp is not the only option. What do you mean by people would have to use their personal email accounts? Is that not normal? I just want everyone to receive emails from us in their normal email, account reminders, ways to engage them, encourage them to update and complete their account profile. Ideally, the system will be able to identify what elements of their account profile are incomplete so we can get them to complete them, and also to encourage to post information, contribute to debates, etc. So this request is not really about Mailchimp. It is about the users in Drupal, the 2600+ Land Portal users and us needing a way to comunicate with them. This is very urgent.

Hangouts (yesterday)
Neil

Also, I would like to go back to your proposal. I still have no way to communicate with Land Portal users, the 2700 we have. I was using the Drupal feature, but then Carlos and Jules had me stop because it was being identified everywhere as spam.
I need to be able to communicate account information, encourage people to participate in debates and webinars, etc.
To post content as well and complete their account information. I need to be able to tell people what information is missing and needs to be completed, like add your photo, a bio, metadata, etc.
But with 2700 people I need some kind of automated solution, not one by one, which would take a really long time obviously.

Adam

I need more info about HOW would you like to communicate with  LP users, which Drupal feature did you use?
perhaps you can write down some notes in this regard
to document it

Neil

OK, will do. Thanks.

list manually updated
syncrhonizing problem is related to not having a country for some of the users.


Request for guidance on trace-based simulation in gem-forge

Hello,
I'm exploring the trace-based simulation feature in gem-forge and have encountered some difficulties. The examples provided in the driver folder predominantly focus on execution-based simulation. No trace or TDG files are being generated in these examples, and removing the "--fake-trace" option would disrupt the flow. Could you kindly provide some instructions or examples on how to try trace-based simulation using gem-forge?
Thank you for your assistance!

Hi,
Thanks for trying gem-forge framework. The trace based simulation is still buried in the code, but unfortunately de-prioritized after we shift to execution-based simulation. You can try run the command one-by-one and see if the driver generates the trace. I can help if you run into specific problems (assuming you' are using the vec-add example).
The first thing you want to do is add these to gem5/util/m5/m5op_empty.cpp.
__attribute__((noinline)) extern void
m5_stream_nuca_region(const char *regionName, const void *buffer,
                      uint64_t elementSize, uint64_t dim1, uint64_t dim2,
                      uint64_t dim3) {
  volatile int x = dummy;
  (void)x;
}
__attribute__((noinline)) extern void
m5_stream_nuca_align(const void *A, const void *B, int64_t elementOffset) {
  volatile int x = dummy;
  (void)x;
}
__attribute__((noinline)) extern void m5_stream_nuca_remap() {
  volatile int x = dummy;
  (void)x;
}
__attribute__((noinline)) extern uint64_t
m5_stream_nuca_get_cached_bytes(void *buffer) {
  return 0;
}

Thanks sincerely for the rapid response. I'm running commands in gfm.sh. After adding the function implementations in gem5/util/m5/m5op_empty.cpp, the python Driver.py $Benchmark--trace command encounters the following errors if I remove the --fake-trace option :
Traceback (most recent call last):
  File "/home/uvxiao/repos/gem-forge-framework/driver/JobScheduler.py", line 36, in __call__
    out = result.get(self.__timeout)
  File "/usr/lib/python3.8/multiprocessing/pool.py", line 771, in get
    raise self._value
  File "/usr/lib/python3.8/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "Driver.py", line 68, in trace
    benchmark.trace()
  File "/home/uvxiao/repos/gem-forge-framework/driver/BenchmarkDrivers/GemForgeMicroSuite.py", line 770, in trace
    self.run_trace()
  File "/home/uvxiao/repos/gem-forge-framework/driver/BenchmarkDrivers/Benchmark.py", line 695, in run_trace
    if self.get_args() is not None:
TypeError: get_args() missing 1 required positional argument: 'input_name'

It looks like that the name of the input file required for tracing is not provided for the get_args() method. So I modify Driver.py, Benchmark.py, and GemForgeMicroBenchmark.py to pass sim_inputs into trace() method to provide the argument.
After the fixing, I encounter the following error:
Error when executing ./trace.exe 1 4194304 0 1
Traceback (most recent call last):
  File "/home/uvxiao/repos/gem-forge-framework/driver/JobScheduler.py", line 36, in __call__
    out = result.get(self.__timeout)
  File "/usr/lib/python3.8/multiprocessing/pool.py", line 771, in get
    raise self._value
  File "/usr/lib/python3.8/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "Driver.py", line 68, in trace
    benchmark.trace(trace_input)
  File "/home/uvxiao/repos/gem-forge-framework/driver/BenchmarkDrivers/GemForgeMicroSuite.py", line 770, in trace
    self.run_trace(input_name)
  File "/home/uvxiao/repos/gem-forge-framework/driver/BenchmarkDrivers/Benchmark.py", line 707, in run_trace
    Util.call_helper(run_cmd, env=env)
  File "/home/uvxiao/repos/gem-forge-framework/driver/Util.py", line 19, in call_helper
    raise e
  File "/home/uvxiao/repos/gem-forge-framework/driver/Util.py", line 16, in call_helper
    subprocess.check_call(cmd, stdout=stdout, stderr=stderr, env=env)
  File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['./trace.exe', '1', '4194304', '0', '1']' died with <Signals.SIGILL: 4>.

If I manually run the command, the error message is:
[1]    1308153 illegal hardware instruction (core dumped)

I use gdb to trace the error, and the message is:
Program received signal SIGILL, Illegal instruction.
0x0000000000411fbd in foo () at ./../omp_vec_add_avx/omp_vec_add_avx.c:38
38          ValueAVX valA = ValueAVXLoad(a + i);

I wonder how should I enable the tracing in the presence of stream instructions. Could you please provide some suggestions?
I appreciate your help very much.

I've tried another benchmark (transform/benchmark/GemForgeMicroSuite/cond_array_sum/cond_array_sum.c) including no streaming instructions, through similar commands. However, the same errors occur as follows:
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
initialize hardExitCount to<PHONE_NUMBER>0.
initializing tracer...
Initializing traceMode to 0.
Initializing traceFolder to /home/uvxiao/repos/gem-forge-framework/example-trace.
Initializing traceROI to 0.
Initializing SKIP_INST to 0...
Initializing MAX_INST to 1...
Initializing START_INST to 0...
Initializing END_INST to 0...
Initializing PRINT_INTERVAL to 10000000...
Initializing isDebug to 0...
[0]1: bb 0 alloca
[0]2: bb 1 call
[0]3: bb 2 br

Program received signal SIGILL, Illegal instruction.
0x000000000040acb4 in main () at /home/uvxiao/repos/gem-forge-framework/transform/benchmark/GemForgeMicroSuite/cond_array_sum/cond_array_sum.c:35
35        for (long long i = 0; i < N; i++) {

Is there any information that the trace.exe could provide for the debugging purpose? I'm kind of stuck on the errors.

Thanks! I've removed -mavx512f from compilation flags, and the trace.exe produces 0.bbtrace, 0.profile, and 0.profile.txt. I wonder how I should read the 0.bbtrace file, which seems to have an unsupported text encoding. Additionally, how could I run the trace-based simulation given the trace files? I failed to find the corresponding scripts or gem5 configuration files that work well. Thanks again for your help!

That's good news. For trace-based simulation, the workflow is actually similar to execution-based simulation, but you need different LLVM transform passes to to process the trace instead of generating a binary.
For the baseline, can you try replace the valid.ex transform with replay? See if that enables trace processing. Then you need to simulate the processed trace in gem5, can you try driver/Configurations/Simulations/o8.json. It seems to me this will simulate the trace file using the LLVMTraceCPU in gem5. Let me know if you run into more problems.

I've created a specialized script gfm-trace.sh for trace-based simulation as follows:
#!/bin/bash

Benchmark='-b '
Benchmark+='gfm.vec_add,'

SimInput=small-cold
Threads=64

python3 Driver.py $Benchmark --build
python3 Driver.py $Benchmark $SimTrace --trace --sim-input-size $SimInput

BaseTrans=replay
Parallel=100
sim_replay=o8

python3 Driver.py $Benchmark $SimTrace -t $BaseTrans --sim-input-size $SimInput --sim-configs $sim_replay --input-threads $Threads -s -j $Parallel --gem5-debug DRAMsim3 --gem5-debug-start<PHONE_NUMBER>0 | tee gfm.log

As stated in my previous comments, python3 Driver.py $Benchmark $SimTrace --trace --sim-input-size $SimInput produces 0.bbtrace, 0.profile under the trace folder with the following outputs, which looks good:
initialize hardExitCount to<PHONE_NUMBER>0.
initializing tracer...
Initializing traceMode to 0.
Initializing traceFolder to /home/uvxiao/repos/gem-forge-framework/result/stream/gfm/vec_add/trace.
Initializing traceROI to 0.
Initializing SKIP_INST to 0...
Initializing MAX_INST to 1...
Initializing START_INST to 0...
Initializing END_INST to 0...
Initializing PRINT_INTERVAL to 10000000...
Initializing isDebug to 0...
[0]1: bb 0 alloca
[0]2: bb 1 icmp
[0]3: bb 2 br
[0]4: bb3 0 getelementptr

Number of Threads: 1.
Data size 1024kB Offset 0kB Random 0.
Profiled Inst #789306
Done!

However, the last command in the script fails to schedule any simulations. The prints that I've added show that the driver failed to find legal traces at Driver.py, which initializes traces at Benchmark.py from *.trace files.
I found that the codes at Benchmark.simulate seem to invoke trace-based simulation. Maybe I could type the required commands manually instead of running the Driver.py. Or how should I pass the trace files into the driver running? How do you like that?
Thanks!

Looking at your script it seems you missed one command to process the trace. It should have four commands:

Build the LLVM IR bytecode (bc file)
Build the tracing binary and trace the binary.
Processing the trace (the one you missed).
Simulate it in gem5.

In the original script this command processes the trace:
python Driver.py $Benchmark $SimTrace -t $BaseTrans -d

Can you check if this fixes the problem?

Thanks for the rapid reply!
I've added the -d command for trace processing. However, the "trace missing" problem still occurs. I looked into the code Driver.schedule_transform, retrieving tdgs by calling Benchmark.get_tdgs, which gets tdgs from the traces. However, since the "trace the binary" command didn't produce *.trace files, the tdgs list is empty and no processing or simulation is executed. Should I do some modification for the ”trace the binary“ process to produce the required files?

Can you check the replay folder in the result directory? I tried on my side and I successfully generate the tdg files to be simulated. This is the structure in my result folder:
➜  vec_add git:(main) ✗ ll
total 120K
-rw-r--r-- 1 gf gf 28K Dec  8 20:13 gfm.vec_add.replay.bc
-rw-r--r-- 1 gf gf 28K Dec  8 19:59 raw.bc
-rw-r--r-- 1 gf gf 64K Dec  8 19:59 raw.ll
drwxr-xr-x 3 gf gf 100 Dec  8 20:13 replay
drwxr-xr-x 2 gf gf 142 Dec  8 20:06 trace
➜  vec_add git:(main) ✗ ll trace
total 123M
-rw-r--r-- 1 gf gf 123M Dec  8 20:06 0.0.trace
-rw-r--r-- 1 gf gf 525K Dec  8 20:06 0.bbtrace
-rw-r--r-- 1 gf gf  208 Dec  8 20:06 0.profile
-rw-r--r-- 1 gf gf   19 Dec  8 20:06 0.profile.txt
-rw-r--r-- 1 gf gf  36K Dec  8 20:05 inst.uid
-rw-r--r-- 1 gf gf  34K Dec  8 20:05 inst.uid.txt
➜  vec_add git:(main) ✗ ll replay
total 393M
-rw-r--r-- 1 gf gf 354M Dec  8 20:13 0.tdg
-rw-r--r-- 1 gf gf  40M Dec  8 20:13 0.tdg.cache
drwxr-xr-x 2 gf gf   81 Dec  8 20:13 0.tdg.extra
-rw-r--r-- 1 gf gf  364 Dec  8 20:13 0.tdg.stats.txt

Once you have the tdg files, you should be able to simulate (I hope). Just in case, here is my modified script. Notice that I pass input-size instead of sim-input-size, but that should not matter.
#!/bin/bash

# rm -f /tmp/job_scheduler.*

# Specify the benchmark. The source file is in
# transform/benchmark/GemForgeMicroSuite/stream/vec_add/omp_vec_add_avx
Benchmark='-b '
Benchmark+='gfm.vec_add,'

# Specify the input size. Check driver/BenchmarkDrivers/GemForgeMicroSuite.py
# for the details of how the benchmark is built and simulated.
SimInput=large

# Specify the number of threads. The workload is parallelized with OpenMP.
Threads=64

# The following two commands build the LLVM bytecode of the workload in
# /gem-forge-stack/result/stream/gfm/vec_add
# You can check the IR in raw.ll (text format).
# python Driver.py $Benchmark --build

# This command traces the binary and generates the trace in
# /gem-forge-stack/result/stream/gfm/vec_add/trace
# python Driver.py $Benchmark --input-size $SimInput --trace

# This command processes the LLVM IR trace for simulation.
# Baseline means there is no stream specialization.
# The processed trace is located in:
# /gem-forge-stack/result/stream/gfm/vec_add/replay/0.tdg
BaseTrans=replay
python Driver.py $Benchmark -t $BaseTrans -d

It seems that our scripts are almost the same except for the input-size parameter.
  That's kind of weird, since the --trace command seems to work successfully. It gives outputs as follows:
initialize hardExitCount to<PHONE_NUMBER>0.
initializing tracer...
Initializing traceMode to 0.
Initializing traceFolder to /home/uvxiao/repos/gem-forge-framework/result/stream/gfm/vec_add/trace.
Initializing traceROI to 0.
Initializing SKIP_INST to 0...
Initializing MAX_INST to 1...
Initializing START_INST to 0...
Initializing END_INST to 0...
Initializing PRINT_INTERVAL to 10000000...
Initializing isDebug to 0...
[0]1: bb 0 alloca
[0]2: bb 1 icmp
[0]3: bb 2 br
[0]4: bb3 0 getelementptr

Number of Threads: 1.
Data size 16384kB Offset 0kB Random 0.
[0]10000000: bb22 4 getelementptr
[0]10000001: bb22 5 bitcast
[0]10000002: bb22 6 load
[0]10000003: bb22 7 getelementptr
[0]10000004: bb22 8 bitcast

Profiled Inst #12627546
Done!

Is that a version problem? I'm using gem-forge-framework at the commit 8ebd48 (main), with the driver at  95e004 (main) and the transform at b05a77 (main).

Here is my output of tracing. It seems yours missed the clean up log.
The first one is func enter.
[0]10000000:main (0) -> foo (1) ->  bb6 9 icmp
[0]10000001:main (0) -> foo (1) ->  bb6 10 br
[0]10000002:main (0) -> foo (1) ->  bb6 0 phi
[0]10000003:main (0) -> foo (1) ->  bb6 1 getelementptr
[0]10000004:main (0) -> foo (1) ->  bb6 2 load

[0]20000000:main (0) -> foo (1) ->  bb6 8 add
[0]20000001:main (0) -> foo (1) ->  bb6 9 icmp
[0]20000002:main (0) -> foo (1) ->  bb6 10 br
[0]20000003:main (0) -> foo (1) ->  bb6 0 phi
[0]20000004:main (0) -> foo (1) ->  bb6 1 getelementptr

[0]30000000:main (0) -> foo (1) ->  bb6 7 store
[0]30000001:main (0) -> foo (1) ->  bb6 8 add
[0]30000002:main (0) -> foo (1) ->  bb6 9 icmp
[0]30000003:main (0) -> foo (1) ->  bb6 10 br
[0]30000004:main (0) -> foo (1) ->  bb6 0 phi

[0]40000000:main (0) -> foo (1) ->  bb6 6 getelementptr
[0]40000001:main (0) -> foo (1) ->  bb6 7 store
[0]40000002:main (0) -> foo (1) ->  bb6 8 add
[0]40000003:main (0) -> foo (1) ->  bb6 9 icmp
[0]40000004:main (0) -> foo (1) ->  bb6 10 br

Clean up.
Clean up tid 0.
Thread 0 Traced #46137349
Clean up tid 1.
Clean up tid 2.
Clean up tid 3.
Clean up tid 4.
Clean up tid 5.
Clean up tid 6.
Clean up tid 7.
Clean up tid 8.
Clean up tid 9.
Profiled Inst #46137348

I am not sure this is a version problem, since tracing part hasn't changed for more than two years. My guess is that somehow your binary doesn't write it to the file. Can you take a look at TracerProtobuf.cpp? There is a cleanup function which should be called and dump the trace to file. Or you can change the input size larger in GemForgeMicroSuite.py to make sure the binary runs longer and has more instruction in the trace (my guess is that when the number of instruction traced is low, the tracer has a bug to not call cleanup() function). I hope this is helpful.

Truly thanks for your help! I found that it was my bad, self-assertive updates applied to Benchmark.py that caused the failure of generating *.trace tracing results. Specifically, the buggy updates are as follows:
            # # Remember to set the environment for trace.
            # os.putenv('LLVM_TDG_TRACE_FOLDER', self.get_trace_folder_abs())
            # os.putenv('LLVM_TDG_INST_UID_FILE', self.get_trace_inst_uid())
            # # We need libunwind.so for profiling.
            # os.putenv('LD_LIBRARY_PATH', os.path.join(C.LLVM_PATH, 'lib'))

            env = os.environ.copy()
            env['LLVM_TDG_TRACE_FOLDER'] = self.get_trace_folder_abs()
            env['LLVM_TDG_INST_UID_FILE'] = self.get_trace_inst_uid()
            env['LD_LIBRARY_PATH'] = '{}:{}'.format(os.path.join(C.LLVM_PATH, 'lib'), env['LD_LIBRARY_PATH'])

            run_cmd = [
                './' + self.get_trace_bin(),
            ]

            if self.get_args(input_name) is not None:
                run_cmd += self.get_args(input_name)

            # print('# Run traced binary...')
             After recovering the code, I attained the replay folder as follows:
[14:43:14] [~/repos/gem-forge-framework/result/stream/gfm/vec_add] [main ✖] ❱❱❱ ll replay
total 6.9M
-rw-rw-r-- 1 uvxiao uvxiao 6.1M 12月 10 14:40 0.tdg
-rw-rw-r-- 1 uvxiao uvxiao 748K 12月 10 14:40 0.tdg.cache
drwxrwxr-x 2 uvxiao uvxiao 4.0K 12月 10 14:40 0.tdg.extra
-rw-rw-r-- 1 uvxiao uvxiao  362 12月 10 14:39 0.tdg.stats.txt
[14:43:17] [cost 0.116s] ll replay

However, I'm actually kind of confused about the trace processing. According to "Analyzing Behavior Specialized Acceleration" at ASPLOS '16, the TDG representation composing $\mu$DG and program IR comes from the results of a simulator. But here the TDG is produced through processing tracing results. I suppose that the program IR is implied by the traced instructions. However, does it suggest that the $\mu$arch things can be inferred from the tracing results? I hope you could provide some suggestions to help me understand the insights behind the methodology. Thanks sincerely in advance.
After generating the *.tdg file, I tried to trigger the simulation. I met the following error:
warn: The `get_runtime_isa` function is deprecated. Please migrate away from using this function.
NameError: name 'options' is not defined

At:
  /home/uvxiao/repos/gem-forge-framework/gem5/configs/example/gem_forge/GemForgeCPUConfig.py(196): createCPUStandalone
  /home/uvxiao/repos/gem-forge-framework/gem5/configs/example/gem_forge/GemForgeCPUConfig.py(222): initializeCPUs
  /home/uvxiao/repos/gem-forge-framework/gem5/configs/example/gem_forge/run.py(466): <module>
  build/X86/python/m5/main.py(599): main

The code segment is as follows:
        # For each process, add a LLVMTraceCPU for simulation.
        llvm_trace_cpu = \
            GemForgeLLVMTraceCPUConfig.initializeLLVMTraceCPU(
                options, len(cpus))

It seems the options are not defined. I guess the expected argument is args. After changing options to args, another error happens:
AttributeError: object 'LLVMTraceCPU' has no attribute 'ArchMMU'
  (C++ object is not yet constructed, so wrapped C++ methods are unavailable.)

At:
  build/X86/python/m5/SimObject.py(851): __getattr__
  build/X86/cpu/BaseCPU.py(344): __init__
  /home/uvxiao/repos/gem-forge-framework/gem5/configs/example/gem_forge/GemForgeLLVMTraceCPUConfig.py(5): initializeLLVMTraceCPU
  /home/uvxiao/repos/gem-forge-framework/gem5/configs/example/gem_forge/GemForgeCPUConfig.py(195): createCPUStandalone
  /home/uvxiao/repos/gem-forge-framework/gem5/configs/example/gem_forge/GemForgeCPUConfig.py(222): initializeCPUs
  /home/uvxiao/repos/gem-forge-framework/gem5/configs/example/gem_forge/run.py(466): <module>
  build/X86/python/m5/main.py(599): main

I found a similar issue (GEM5-1335). So I guess that it might be a GEM5 bug. How do you like that?
Thanks a lot.

Hi,
This is very likely due to some changes in gem5. I have investigated it a little bit. You need to add these lines to LLVMTraceCPU.py:
from m5.objects.X86CPU import X86CPU
from m5.objects.X86MMU import X86MMU

# We need to inherit X86CPU to fake the ArchMMU.
class LLVMTraceCPU(BaseCPU, X86CPU):
    type = 'LLVMTraceCPU'
    cxx_header = 'cpu/gem_forge/llvm_trace_cpu.hh'
    cxx_class = 'gem5::LLVMTraceCPU'

    # Same: fake the mmu.
    mmu = X86MMU()

After doing this, rebuild gem5 with make gem5. Then you will encounter a new error which can be fixed by editing gem_forge/run.py:
if not args.llvm_standalone:
    system.workload = SEWorkload.init_compatible(
        system.cpu[0].workload[0].executable
    )

However, I encounter a new error complaining that X86 interrupts has no ThreadContext:
warn: The `get_runtime_isa` function is deprecated. Please migrate away from using this function.
warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
warn: The `get_runtime_isa` function is deprecated. Please migrate away from using this function.
IntlvLow 6 IntlvBits 1 0 134217728 XORHighBit 20
IntlvLow 6 IntlvBits 1 0 134217728 XORHighBit 20
Global frequency set at<PHONE_NUMBER>000 ticks per second
warn: No dot file generated. Please install pydot to generate the dot file and pdf.
build/X86/mem/dram_interface.cc:690: warn: DRAM device capacity (8192 Mbytes) does not match the address range assigned (64 Mbytes)
build/X86/mem/dram_interface.cc:690: warn: DRAM device capacity (8192 Mbytes) does not match the address range assigned (64 Mbytes)
build/X86/base/statistics.hh:285: warn: One of the stats is a legacy stat. Legacy stat is a stat that does not belong to any statistics::Group. Legacy stat is deprecated.                                                                                build/X86/base/statistics.hh:285: warn: One of the stats is a legacy stat. Legacy stat is a stat that does not belong to any statistics::Group. Legacy stat is deprecated.                                                                                build/X86/base/statistics.hh:285: warn: One of the stats is a legacy stat. Legacy stat is a stat that does not belong to any statistics::Group. Legacy stat is deprecated.                                                                                build/X86/base/statistics.hh:285: warn: One of the stats is a legacy stat. Legacy stat is a stat that does not belong to any statistics::Group. Legacy stat is deprecated.                                                                                gem5.opt: build/X86/arch/x86/interrupts.cc:385: gem5::AddrRangeList gem5::X86ISA::Interrupts::getAddrRanges() const: Assertion `tc' failed.                                                                                Program aborted at tick 0

This is because my LLVMTraceCPU does not create a ThreadContext, but now gem5 requires it (since I am borrowing the X86Interrupts). I can try fix this next week, or you can try yourself. Sorry about that.
As for you question: This is not a replication of Tony's original paper. Our workflow is to collect the trace and you can transform the trace to add/delete more microarchitecture constraints (e.g. vectorizatio, dataflow, etc). Then the transformed trace can be simulated. Tony's work seems to mix these two phases (transformation and simulation), while we separate them since I don't want to implement the heavy transformation work inside gem5. But yes some microarchitecture details are exposed to the transformation. I hope this answers your questions.

Thanks sincerely for your selfless help！I've understood more about the methodology, and I'd like to look at the transform for more details.
Thanks again for your debugging and maintaining efforts!

BTW I forgot to mention that my master thesis is about this tool, you can take a look if you like.
master thesis

Sincerely appreciate your exciting work and selfless help!
Sorry for the late reply. I've just recovered from influenza :sob: I followed the git diff to get the code updated, and it seems to work well now! And your thesis helped me considerably to understand this tool.
Thanks again for your help!

Take care. Good luck!


Wallet is not getting restored.

Wallet is not getting restored with contact recovery key.
I did thebackup with contact without approval key.

Still the wallet is not getting restored with contact recovery key.
Tested on dev app v2.0.0(353)

At the time of recovery if I click on back button and again come back to the screen to scan recovery keys then it is not showing me share option which helps to recover wallet.
Tested on dev app v2.0.0(353)

If approval not done it shows error while restore

Verified this issue on dev app v2.0.01(374)


Idea: Publish chart on Artifact Hub for more visibility

https://artifacthub.io/

Thanks for the links and ideas.


use semgrep directory configuration

This PR aims to structure our custom semgrep rules better by splitting the existing rules into multiple files and moving them into the default semgrep config path

Pretty Stale now, we can reopen it if we decide to go for directory semgrep configuration, at the moment the rules we have are sufficient and it is not needed to split the file.


Add ability to flatten all children, not just fragments

Hello @kirill-konshin, I am sorry but what is the use-case? I am curious!

I was making a gatsby plug-in, to wrap some MDX images, so I need to create a wrapper that would grab transformed react elements and extract some of their props to process them. The problem is markup may change so easiest way is to flatten all children and just filter them.

I think it is a very specific use-case. You should just copy the code of this repository in your project. I don't think it worth it to include it here and penalize every one (package size) for this use-case.

penalize every one (package size) for this use-case

I've added 62 symbols.
The proposed functionality fits perfectly as you already recursively flatten the children, all I added is a flag to do this for all elements, not just fragments.

I am sorry this is not a main "use-case", if someone asks again for it I will consider it.

Although I do understand that it's not a main use case, someone has already asked — me.
Addition perfectly fits in library name "react-flatten-children" — it produces flat array of all children.
I don't see any problems here, and reasons not to include... maintenance burden is not high. I can add tests if needed.

@kirill-konshin your use-case is very very specific. You lose information by stripping components. The goal of this library is a "flattening", in a flattening, nothing is lost, it is just flattened. Your use-case is completely different! Anyway, I don't understand, what is the problem to just copy a small script in your code?

That’s exactly what I did, I copied. Anyway, I see you’re not willing to cooperate, so I’m done here.


Fix compilation with no-nextprotoneg

Checklist

[x] CLA is signed

Description of change

A guard was in the wrong place in the header file.

@mattcaswell, you might want to merge this soon

Pushed. Thanks.


Allow display of previous and upcoming slides in stories

Feature Description
A user on the support forums would like the ability to display the previous and upcoming slides for a story in the story view. Here's an example image.

Since that player when viewing a single story is handled by the format, this would need to be reported there.
The thing is, this was just revamped recently to not show the prev/next slides anymore. Instead we get these nice blurry backgrounds.

Would it be possible to use a previous version of the plugin to use where previous and future slides were displayed?

No, because that code is not in the plugin but comes from the AMP format itself and is loaded from the AMP CDN.


[BUG] NaN error related to model-based RL algos

Required prerequisites

[X] I have read the documentation https://omnisafe.readthedocs.io.
[X] I have searched the Issue Tracker and Discussions that this hasn't already been reported. (+1 or comment there if it has.)
[ ] Consider asking first in a Discussion.

What version of OmniSafe are you using?
0.4.0
System information
python: 3.8
safety-gymnasium：1.0.0
The installation process is as follows:
$ conda create -n omnisafe python=3.8
$ conda activate omnisafe
$ pip install omnisafe

Problem description
I try to run the model-based benchmark experiments following the instructions on https://github.com/PKU-Alignment/omnisafe/blob/main/benchmarks/model-based/README.md, but it fails.
I've also noticed that you mentioned the NaN issue in https://github.com/PKU-Alignment/omnisafe/pull/33, but the reason for generating such errors is unclear.
Additionally, it would be great if you could provide a simple script for running a single model-based algorithm just like https://github.com/PKU-Alignment/omnisafe/blob/main/examples/train_policy.py. Thank you!
Reproducible example code
Set the main function of examples/benchmarks/experiment_grid.py as:
if __name__ == '__main__':
    eg = ExperimentGrid(exp_name='Model-Based-Benchmarks')

    # set up the algorithms.
    model_based_base_policy = ['PETS',]
    model_based_safe_policy = []
    eg.add('algo', model_based_base_policy + model_based_safe_policy)

    # you can use wandb to monitor the experiment.
    eg.add('logger_cfgs:use_wandb', [False])
    # you can use tensorboard to monitor the experiment.
    eg.add('logger_cfgs:use_tensorboard', [True])
    eg.add('train_cfgs:total_steps', [10000])

    # set up the environment.
    eg.add('env_id', [
        'SafetyPointGoal1-v0-modelbased',
        ])
    eg.add('seed', [0, ])

    # total experiment num must can be divided by num_pool
    # meanwhile, users should decide this value according to their machine
    eg.run(train, num_pool=1)

After that, run the following command to run the benchmark:
cd examples/benchmarks
python run_experiment_grid.py

Traceback
Traceback (most recent call last):
  File "C:\Users\xxx\anaconda3\envs\omnisafe\lib\concurrent\futures\process.py", line 239, in _process_worker
    r = call_item.fn(*call_item.args, **call_item.kwargs)
  File "C:\Users\xxx\anaconda3\envs\omnisafe\lib\site-packages\omnisafe\utils\exp_grid_tools.py", line 100, in train
    reward, cost, ep_len = agent.learn()
  File "C:\Users\xxx\anaconda3\envs\omnisafe\lib\site-packages\omnisafe\algorithms\algo_wrapper.py", line 172, in learn
    ep_ret, ep_cost, ep_len = self.agent.learn()
  File "C:\Users\xxx\anaconda3\envs\omnisafe\lib\site-packages\omnisafe\algorithms\model_based\base\pets.py", line 222, in learn
    ep_len = int(self._logger.get_stats('Metrics/EpLen')[0])
ValueError: cannot convert float NaN to integer

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "run_experiment_grid.py", line 97, in <module>
    eg.run(train, num_pool=1)
  File "C:\Users\xxx\anaconda3\envs\omnisafe\lib\site-packages\omnisafe\common\experiment_grid.py", line 467, in run
    self.save_results(exp_names, variants, results)
  File "C:\Users\xxx\anaconda3\envs\omnisafe\lib\site-packages\omnisafe\common\experiment_grid.py", line 489, in save_results
    reward, cost, ep_len = results[idx].result()
  File "C:\Users\xxx\anaconda3\envs\omnisafe\lib\concurrent\futures\_base.py", line 437, in result
    return self.__get_result()
  File "C:\Users\xxx\anaconda3\envs\omnisafe\lib\concurrent\futures\_base.py", line 389, in __get_result
    raise self._exception
ValueError: cannot convert float NaN to integer

### Expected behavior

_No response_

### Additional context

_No response_

It turns out to be a mistake caused by reduced "total_steps" in the script. The default "steps_per_epoch" is 20000 in https://github.com/PKU-Alignment/omnisafe/tree/main/omnisafe/configs/model-based, and the "total_steps" should not be smaller than "steps_per_epoch". Maybe adding a simple assertion after parsing the config params would be helpful 😉

Thanks for your considerate suggestions! Reopen this issue if you encounter any further problems. 😊


Not Escape Code

As you can see from following code snippet,  when I copy code from IDE to stackedit, [] is escaped. But when I copy from other website, it will not. So what's wrong here?
public void add(long x) {
  Cell\[\] as; long b, v; int m; Cell a;
  if ((as = cells) != null || !casBase(b = base, b + x)) {
    boolean uncontended = true;
    if (as == null || (m = as.length \- 1) < 0 ||
        (a = as\[getProbe() & m\]) == null ||
        !(uncontended = a.cas(v = a.value, v + x)))
        longAccumulate(x, null, uncontended);
  }
}

Should be fixed.


Will there be good support for image tasks? Or will support image tasks in the future?

yes!! we are planning to add very soon! will update this when done.

Hi @csyking: we just added support for image feature and an example of how to use it:
https://github.com/facebookresearch/Starspace/#imagespace-learning-image-and-label-embeddings
Please check it out!
Closing the task.


restrict-seccomp: simplify CEL expressions

See: https://github.com/kyverno/policies/issues/1058

picking up this one

/assign @epasham

Policy is simplified and all test cases are executed. works perfectly. ready to raise pull request

@epasham - is there a PR ready for review?

@JimBugwadia - Will submit new PR once https://github.com/kyverno/policies/pull/1127 gets merged

PR submitted-> https://github.com/kyverno/policies/pull/1129


mod_pagespeed option not in WHM

HI,
I did:
git clone http://github.com/pagespeed/cpanel.git /var/cpanel/easy/apache/custom_opt_mods/mod_pagespeed
The files were correctly copy and I can see them. Now if I have no misunderstood, in
WHM -> EasyApache (Apache Update)-> Exhaustive list
The option of mod_pagespeed should be present for me to select.
It is not there :(
I am running
CENTOS 6.4 x86_64
Apache 2.2.24
Easy::Apache v3.18.13
with cPanel 11.36.1
Any tips?

Can you update installation instruction For cPanel users that still use Easyapache 3?
THanks!
follow this steps.
Step1: COPY
/usr/local/cpanel/3rdparty/bin/git clone https://github.com/pagespeed/cpanel.git /var/cpanel/easy/apache/custom_opt_mods/Cpanel/
Step 2: Create a Speed.pm.tar.gz
cd /var/cpanel/easy/apache/custom_opt_mods/Cpanel/Easy
tar -zcvf Speed.pm.tar.gz pagespeed
Step 3: In cPanel WHM-> EasyApache - You will see the mod_pagepeed in the options to compile. Check and compile.


[NPM] Fix eBPF-less connection timestamp

What does this PR do?
Uses the monotonic clock to update the connection LastUpdateEpoch field to mimic what is done in the eBPF tracer. This is necessary since the monotonic timestamp is used to check for connection expiry by the higher level tracer.
Motivation

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

/merge


Recommended way to set document.title?

Is there a recommended way to set document.title upon routing? I suppose one could just set it in all of the componentDidMount handlers, but it might be nice if there was a general strategy for this. (For example, maybe one page doesn't really care about title, in which case we'd want to fall back to the default.)
(Someone was also asking in IRC about this last night right after you left, @rpflorence.)

class Layout extends React.Component {
  constructor(props){
    super(props);
    document.title = this.props.title;
  }
  render(){
    return(
      <div>
        <Header active={this.props.active} />
        { this.props.children }
        <Footer />
      </div>
    );
  }
}

then  it works!

Hi @rajeshkw
I found better solution, that works with fetching data and Redux
import React from 'react';

export default class Layout extends React.Component {
  constructor(props){
    super(props);
  }
  componentWillUpdate(nextProps) {
    document.title = nextProps.title;
  }
  render(){
    return null;
  }
}

How do you do this in stateless functional components? I tried this but it doesn't work:
ComponentName.componentDidMount = () => document.title = "Who's Marco?"

@marcogreselin , As I know we can't create lifecycle hooks in a stateless functional component, These functional components don't have backing instances, and do not have the component lifecycle methods too. So better to convert it to stateful class style component.

@marcogreselin not sure if it's the right way but I believe you can do something like this.
export const Life = ({sayHello="Ciao"}) => {
  document.title='Your title.';
  return (
    <Your JSX>
  );
}

Another alternative - https://github.com/kodyl/react-document-meta

When you want to change the title from React components, you can use React Helmet, a third party library.
https://github.com/nfl/react-helmet


Doesn't work with deadpool_redis

I'm using deadpool_redis for asynchronous connection pool. But implementations doesn't fit for this crate.
error[E0277]: the trait bound `Lecture: deadpool_redis::redis::FromRedisValue` is not satisfied
   --> src/graphql/lecture.rs:23:18
    |
23  |                 .query_async(&mut conn)
    |                  ^^^^^^^^^^^ the trait `deadpool_redis::redis::FromRedisValue` is not implemented for `Lecture`

I'm not familiar with deadpool_redis, are its traits compatible with the redis crates traits? If they are, the code probably can be copied over from the redis implementation.

Yes, it re-exports the redis crate with some additional functions of its own.

I added a fix in version 0.2.0, so now the macro uses the redis crate in scope. See the documentation and the derive_deadpool example, but most likely this will fix your problem:
use deadpool_redis::redis;


Add automatic appearance option

Added option to choose automatic appearance / color scheme on iOS higher that 13.0. Changed default appearance to automatic. Appearance still can be overridden by user.

Amazing!!


Users can create, read, update, and delete a profile in the database

As a user, I can create my own profile that stores information about me

As a user, I can retrieve my profile data or another user's profile data

As a user, I can update my profile data

As a user, I can delete my profile

v


Fix for initializing batched plot with empty element

Since we now support empty elements the previous approach in this code to get a non-empty element breaks if you're trying to initialize a batched plot with an empty element.

@jlstevens Ready to merge.

Looks good. Merging.


Move parser to parser.h

Codecov Report

Merging #77 (ffaef2f) into main (c2a1d3a) will not change coverage.
The diff coverage is 42.30%.

:exclamation: Current head ffaef2f differs from pull request most recent head c9adf34. Consider uploading reports for the commit c9adf34 to get more accurate results

@@           Coverage Diff           @@
##             main      #77   +/-   ##
=======================================
  Coverage   64.17%   64.17%
=======================================
  Files           3        3
  Lines        1499     1499
  Branches      536      536
=======================================
  Hits          962      962
  Misses         48       48
  Partials      489      489

Impacted Files
Coverage Δ

include/hspp.h
76.01% <ø> (+0.81%)
:arrow_up:

include/parser.h
46.07% <42.30%> (-0.08%)
:arrow_down:

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


EXPutt RG

Hello, not sure this where I should ask but will the connector work with EXputt RG to send putting metrics to GSPro? Thank you!

Same question here!

You can send exputt data if you open my connector, go to settings and enable the api relay server, reboot my connector after that.
From there you can use the mlm2pro ocr connector for your exputt, and set the ocr connectors gspro port to 951
It should then talk back and forth with gspro through my connector.
Worth also disabling the putting option in my settings so the webcam putting don't auto load on the green.
The ocr connector will get the club information and know when to read putts

Thank you so much!
I’ll try that but I’m stuck at web api token!… I tried using the one in Joe
Lagowski’s video but saw the trpl_bgy had hidden his so I’m not sure… I’d
like to do this right.
I asked on discord a couple of times but nobody DMed me so far.
In any case, thank you for your help!
Kind regards.
Eric ( Gaulfer)
Le dim. 24 mars 2024 à 18:55, Duwayne @.***> a écrit :

You can send exputt data if you open my connector, go to settings and
enable the api relay server, reboot my connector after that.
From there you can use the mlm2pro ocr connector for your exputt, and set
the ocr connectors gspro port to 951
It should then talk back and forth with gspro through my connector.
Worth also disabling the putting option in my settings so the webcam
putting don't auto load on the green.
The ocr connector will get the club information and know when to read putts
—
Reply to this email directly, view it on GitHub
https://github.com/Duwaynef/MLM2PRO-BT-APP/issues/1#issuecomment-2016976077,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BHJBVH7Y3UOXPATFW6LFKGTYZ5KWVAVCNFSM6AAAAABFFYBSGSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMJWHE3TMMBXG4
.
You are receiving this because you authored the thread.Message ID:
@.***>

i beleive you found the key after correct?

Hello Duwayne,
Yes thank you, I believe it’s the same I saw in JLag’s YT video 🤭
Right now I’m just struggling to pair my launch monitor with my laptop… I
see it in the Bluetooth settings but when I try to connect, I get a “ Try
connecting your device again” message and it won’t connect…
Pretty much tried everything I found on the web but to no avail 😒
I’ll look at it again tonight.
Thanks again! Please trust that I will be supporting you on Kofy as soon as
I can make it work!
Eric
Le lun. 25 mars 2024 à 11:25, Duwayne @.***> a écrit :

i beleive you found the key after correct?
—
Reply to this email directly, view it on GitHub
https://github.com/Duwaynef/MLM2PRO-BT-APP/issues/1#issuecomment-2018270750,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BHJBVH4UMGY7UN5CVZN55MDY2A6XTAVCNFSM6AAAAABFFYBSGSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMJYGI3TANZVGA
.
You are receiving this because you authored the thread.Message ID:
@.***>

Thank you for the support.
for the pairing the device with windows. are you on the beta update by chance?

No, I'm on the latest version. I will be trying different things tonight to
try and get it to connect but the R10 was easy to connect... ;) I think
because it had a "pairing mode" ? ; solid blue. Should the MLM be flashing
blue or solid blue when attempting to pair it with my laptop? It's solid
blue after I authenticate with Awesome Golf... Maybe there is a detail
I'm missing?
Thank you.
Eric
On Mon, 25 Mar 2024 at 13:04, Duwayne @.***> wrote:

Thank you for the support.
for the pairing the device with windows. are you on the beta update by
chance?
—
Reply to this email directly, view it on GitHub
https://github.com/Duwaynef/MLM2PRO-BT-APP/issues/1#issuecomment-2018484115,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BHJBVHZ4XCEII6M3RV2KBNLY2BKIBAVCNFSM6AAAAABFFYBSGSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMJYGQ4DIMJRGU
.
You are receiving this because you authored the thread.Message ID:
@.***>

i just released an update, try the <IP_ADDRESS> version please.
i for sure had it working with the OCR connector. tested putting through it tonight

No worries. i am looking into a solution for pairing. and i have seen that some people have a older bluetooth version on their computer and needed to get a newer bluetooth dongle that supported bluetooth 5.3.

Yep, it seems I'm on 5.2...
On Tue, 26 Mar 2024 at 16:07, Duwayne @.***> wrote:

No worries. i am looking into a solution for pairing. and i have seen that
some people have a older bluetooth version on their computer and needed to
get a newer bluetooth dongle that supported bluetooth 5.3.
—
Reply to this email directly, view it on GitHub
https://github.com/Duwaynef/MLM2PRO-BT-APP/issues/1#issuecomment-2021368158,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BHJBVH6PZAJFQRMMDN3YUJ3Y2HIPFAVCNFSM6AAAAABFFYBSGSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMRRGM3DQMJVHA
.
You are receiving this because you authored the thread.Message ID:
@.***>

best to use springbok connnector for exputt, easiest way imo.

Thanks!
Le ven. 3 mai 2024 à 14:56, Duwayne @.***> a écrit :

Closed #1 https://github.com/Duwaynef/MLM2PRO-BT-APP/issues/1 as
completed.
—
Reply to this email directly, view it on GitHub
https://github.com/Duwaynef/MLM2PRO-BT-APP/issues/1#event-12699988236,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BHJBVH42HTACSWQ2HDM6BGLZAPMWRAVCNFSM6AAAAABFFYBSGSVHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJSGY4TSOJYHAZDGNQ
.
You are receiving this because you authored the thread.Message ID:
@.***>


Some links don't seem to be clickable as URL previews

Give a url example

Seems to be working now. No idea what was going on. Closing.


Error in rendering in two blocks

Not a big problem but there are two blocks where the rendering is not 100%. See image.

I can confirm that I see this with the procedure block, but not with the
initialize local block.
== Hal
Hal Abelson
<EMAIL_ADDRESS>Prof. of Comp. Sci. and Eng.
MIT Dept. of Elec. Eng. and Comp. Sci.
On Fri, Jun 29, 2018 at 1:02 AM Peter Mathijssen<EMAIL_ADDRESS>wrote:

Not a big problem but there are two blocks where the rendering is not
100%. See image.
[image: selectie_999 370]
https://user-images.githubusercontent.com/32273650/42074004-240b6366-7b6a-11e8-8ddc-3f9872e18c45.png
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/mit-cml/appinventor-sources/issues/1298, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AAwLt2pnxp7DUj9emYRBr3Jcsg8989lVks5uBbTTgaJpZM4U8cN2
.

I am aware of this. I think Chris Ward reported it via the power users forum a while back. The issue appears with the Blockly update and only affects blocks with indented value inputs. The math to drow the highlight path is off, which results in the visual glitch. The visual glitch only appears when the block is not selected.

I left off my previous investigation with the hypothesis that the code in this if block is the source of the issue.


License Information

Hi,
Great work with the multi tabs. It's really good.
Can you please provide the license information of the repository. I'm planning on using this code as base and customize it accordingly.
Thanks!

It's my personal work, you can use it as you like without any problem.


Change UI of the portfolio

I have changed the UI because the text was not much clear and the background image was also not looking good. I have added animations to all the buttons.

There's a conflict with merging, please resolve it

Done!


RuntimeError: expected scalar type Half but found Float and unexpected keyword argument '_js

搞定了

Hi, I had the exact same error. I fixed it by installing xformers
pip3 install -U xformers --index-url https://download.pytorch.org/whl/cu118
I also updated torch, but that solved the issue in my case.
Hope it helps.

可以请教下是怎么解决的吗？


Reproduced results on RSNA Pneumonia dataset

Hi,
Thanks for your impressive work!
Recently, i tried to reproduce the classification results on the RSNA Pneumonia dataset. I used the released code and the pretrained model on your project and run the experiments follow your instruction. And surprisingly, i got the results even higher than the paper. Actually, i thought it might because of the randomness, but i tried to run several times with different random seed and all the results were superior, which makes me confused.
Do you think it's normal? Is there any improvement contained on your released pretrained model?

Hi there, thank you for taking the time to reproduce our results! I don't recall any changes or improvements in my released model, so it is surprising that you are getting better performance. Do you mind sharing the performance metric and your fine-tuning setup?


Use nickname instead of nameEnglish / Add School(Company) and Major(Position) section

Use nickname instead of nameEnglish

[x] Change nameEnglish field to nickname (optional)
[x] Change nameKorean field to legalName(legal_name)
[x] Modify test codes

Add School(Company) and Major(Position) section

[x] Avj validator
[ ] DB (Table + Queries)
[ ] Functions (Change POST /user)
[ ] Test Codes

Add School(Company) and Major(Position) section
Not yet completed

Some simple questions

Do we need user's additional infos like address, phone number? OR we can update these later.
School(Company), Major(Position) is optional, right?

+) Will it be messy using  when input (2) infos - of course this is more related in front-end.
@hyecheol123

@bsstayo

Address will not be collected, but phone numbers are going to be collected (but they are not mandatory). As I will not allow other members to see other's phone number, this information will be located in a separated table for search efficiency.
School and Major information is optional, but as long as one field is provided, the other should also be provided. The information will be stored as nested object (JSON format)

@hyecheol123
If someone double-majored, how can we handle this situation?
Maybe we can make a additional 'majorPosition' 😕
Not only this case, but I'm afraid that there will be more corner case... 😨

@bsstayo
Just let them list up all majors they want to indicate


Exception Thrown; read acces violation, svr is nullptr

I found a proxy on github and when i run it, I'm getting this.

This looks like an issue external to the library -- the server pointer passed to that function is expected to be none-NULL. The most likely issue is that the call to sb_new_server() is failing as the port can't be bound and thus NULL is returned, it's expected that the user checks for this error case, but if that isn't happening it may eventually get passed to the function where you're encountering an issue.


Generate semantic similarity test data for implementing the utility methods

Try to figure out how you can generate a semantic similarity profile from
https://incatools.github.io/ontology-access-kit/cli.html#runoak-similarity
Using something small, maybe http://purl.obolibrary.org/obo/cl/cl-simple.owl.
The key point is here to get some semantic similarity profile you can use for testing your tool, which uses the correct table format.

Perhaps PR #48 fixes this issue...


K8s podmaster log pollution

On a fresh install, this message shows up in the journal multiple times per second:
Jul 07 13:25:25 lb-control-01 docker[14856]: I0707 13:25:25.699655       1 podmaster.go:82] key already exists, the master is <IP_ADDRESS>, sleeping.
Jul 07 13:25:26 lb-control-01 docker[14856]: I0707 13:25:26.317061       1 podmaster.go:82] key already exists, the master is <IP_ADDRESS>, sleeping.

Ansible version (ansible --version): 1.9.4
Python version (python --version): 2.7.11
Git commit hash or branch: master
Cloud Environment: all
Terraform version (terraform version): 0.7.0

Unfortunately, there might not be much we can do about this:
$ sudo docker run gcr.io/google_containers/podmaster:1.1 --help
Usage of /podmaster:
      --dest-file="": The destination file to copy to.
      --etcd-servers="": The comma-seprated list of etcd servers to use
      --key="": The key to use for the lock
      --log_flush_frequency=5s: Maximum number of seconds between log flushes
      --sleep=5s: The length of time to sleep between checking the lock.
      --source-file="": The source file to copy from.
      --ttl-secs=30: The time to live for the lock.
      --whoami="": The name to use for the reservation.  If empty use os.Hostname

Luckily, podmaster is deprecated! I'm making a new issue to track that.


Library request: Qiskit, Pennylane, and Ocean

Expected Behavior

Qiskit [kiss-kit] is an open-source SDK for working with quantum computers at the level of pulses, circuits, and application modules.

PennyLane is a cross-platform Python library for differentiable programming of quantum computers. Train a quantum computer the same way as a neural network. We already support PennyLane, so it's an update and we probably need to install

pip install pennylane-qiskit

to work with Qiskit.

Ocean software is a suite of tools D-Wave Systems provides on the D-Wave GitHub repository for solving hard problems with quantum computers.

Note: PennyLane supports Python 3.7 or newer, so we need to upgrade the Python version in Lean.
Checklist

[x] I have completely filled out this template
[x] I have confirmed that this issue exists on the current master branch
[x] I have confirmed that this is not a duplicate issue by searching issues

Thank you Alex


Define and use 2-dimensional arrays?

I'm curious to know is there any way to this in pure POSIX shell?

I can almost wrap my brain around it.
I wonder if iterating through a heredoc string could do it.
Getting rows is easy for a list.  Then iterate through a row with a split being some defined IFS.
So the function to fetch from it would be something like:
# TODO
get_content_from_array(){}

array_text_to_check="the first row
second line here
some additional text"

# I'd make a simple function which can be re-used independently of row/column, like:

row_match=$(
  get_content_from_array  \
  "$array_text_to_check"  \
  '\n'  \
  2  \
)

column_match=$(
  get_content_from_array  \
  "$row"  \
  ' '  \
  3  \
)

echo $column_match
# =>
# here

The remaining problems would be:

a method that can make an array
a method that can replace items in an array
methods which can return information about an array (the number of rows and columns)

I grew interested in this problem for another project of mine.  This will fetch any given line and character in a list:
https://github.com/spiralofhope/shell-random/blob/master/live/sh/scripts/array-character-fetch.sh

Also, given that I can replace seq with examples from this bible, I also implemented range output:
https://github.com/spiralofhope/shell-random/blob/master/live/sh/scripts/string-fetch-character-range.sh
I was pretty graceless about copy-pasting my previous code.  Technically what I should be doing is referring to them as external scripts, which I'll probably do one day later.

Also, also, it would be possible to output a rectangle of characters.  I'd implement a sort of list-fetch-row-range.sh, then:

Fetch specific rows
Iterate over each row, fetching a character range

I can see it in my head..

Also.. and it's crazy, but since a pure sh implementation of seq can be made to skip numbers in any number of ways, this functionality could get every x rows, or columns, fetching stripes or a checkerboard of characters for example.  It could even be made very selective, skipping over whole rows whose first character is 'x', etc.


Google maps integration

Note: for support questions, please use stackoverflow. This repository's issues are reserved for feature requests and bug reports.

I'm submitting a ...

[x] bug report
[ ] feature request
[ ] support request => Please do not submit support request here, see note at the top of this template.

Do you want to request a feature or report a bug?

What is the current behavior?

error message

If the current behavior is a bug, please provide the steps to reproduce, ideally also a screenshot or gif if it's a style issue

What is the expected behavior?

What is the motivation / use case for changing the behavior?

Other information (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, gitter, etc)

Thanks! We'll take a look.

i think this is not a bug
just because of don't have paid google map api key

Update:
Currently it does not open completely and throws these errors:

Currently, the load functionality fails completely:

I fixed the current bug which resides in /src/pages/admin/maps/google-maps/GoogleMap.vue by installing the official google maps loader https://www.npmjs.com/package/@googlemaps/js-api-loader with
npm i @googlemaps/js-api-loader

and modified the <script>[...]</script> content to:
import { Loader } from '@googlemaps/js-api-loader';

export default {
  name: 'google-map',

  mounted () {
    if (!process.env.VUE_APP_GOOGLE_MAPS_API_KEY) {
      throw new Error('Please provide google maps api key from env (VUE_APP_GOOGLE_MAPS_API_KEY)')
    }

    const loader = new Loader({
      apiKey: process.env.VUE_APP_GOOGLE_MAPS_API_KEY,
      version: "weekly",
      libraries: ["places"]
    });

    const mapOptions = {
      center: {
        lat: 0,
        lng: 0
      },
      zoom: 6,
    };

    loader
      .load()
      .then((google) => {
        new google.maps.Map(this.$el, mapOptions);
      })
      .catch(e => {
        console.log(e)
        // do something
      });
  },
}

We removed google map from new version.


Add Room package and classes

Ready for review.
Model
Added Room package with the following:
Classes

Room
Rooms
RoomNumber
Capacity
ReservationDate
ReservationDates
Expenses (dummy class here, refer to #63 for actual implementation)

Exceptions

OverlappingReservationDateException
ReservationDateNotFoundException
RoomNotFoundException
DuplicateRoomException

Tests to be added in a later PR.

RoomList (dummy class to support CheckoutCommand for now, update when Jia Qing has implemented it)

Logic
Commands

CheckoutCommand

Parser

CheckoutCommandParser

This package is a good starter that works on its own. The next step would be to implement the SingleRoom, DoubleRoom and SuiteRoom classes.
I foresee some changes being made when RoomList is implemented.


Add ability to search for only morphemes of a word/non-word

subject
This was brought up by the comment at https://github.com/bluesky-social/indigo/issues/581#issuecomment-1950262492.

bump

Will this be implemented soon?

Hmm?

bump

bump


Reflected XSS

Hi, I found a reflected xss on https://graphonline.ru/en/create_graph_by_matrix and https://graphonline.ru/en/create_graph_by_incidence_matrix, just by entering <script>alert(document.domain)</script> in any of the fields of the matrix. It can be fixed by checking that the user has entered a valid integer and not allowing special chars.
By the way, congratulations for this awesome tool!

Thanks.

Fixed


Automatically re-apply the last Sticker and Wallpaper when a version change is detected

Is your feature request related to a problem? Please describe.
As we probably all know, VS Code updates cause the Sticker and Wallpaper to be lost when they are installed. I was wondering if there is a way to automatically re-apply the Sticker and Wallpaper after the VS Code Version is changed.
Describe the solution you'd like
The Doki Theme should keep track of the last used Sticker and Wallpaper alongside the last VS Code version used.
Once an update is detected (version is changed), The Doki Theme detects this and re-applies the Sticker and Wallpaper, showing a message like:

Your Visual Studio Code installation has been updated. Please reload the current window to reload your Sticker and/or Wallpaper.
[Reload Window]

Describe alternatives you've considered
N/A
Additional context
N/A

I was wondering if there is a way to automatically re-apply the Sticker and Wallpaper after the VS Code Version is changed.

Yeah, pretty sure this could be done. You can get the version version.. Just need to check the saved version & installed assets (that probably needs to be saved to) on plugin activation and install if vscode version number changed.
I've got some things I am working on, so this might be a bit before I can get to it. I do like the idea though.


Send imu data at full rate

The change to the server_ip was necessary because if I try to send imu data to that address, everything just halts (no errors, the program just blocks).

This is a bug in smoltcp / esp-wifi, where sending packets out to an IP stops it from receiving any broadcast packages (so the IP gets bound to the socket). This needs a patch on their side, but previous code was structured so that quat packets would not be sent before we had a handshake


first draft of series feature

Start of the implementation of a "series" feature as discussed in #60 .
This feature provides:

new flag "--series" to toggle the behavior
extracting season/episode information from the title of the show for two cases: "(Sxx/Eyy)" and "(xx)". Other patterns need to be added once we see them being used.
adding two new variables to the --target flag to name files based on {{season}} and {{episode}}

What is not implemented:

Support filterining shows by season/episode, not sure if we want to have that.
Showing the season/episode information in the list/dump output.
Assigning a different default --target name in --series mode

Please let me know what you think and if/in what direction to keep moving.
⚠ This PR also contains a simple test.sh script to test the new behavior. We need to strip this file before merging.

Sorry, it took me a while over the Easter weekend.
Good direction already :)

For the next steps:
If we want to have season/episode information in the list command and support filtering for them, I suppose we need to add two columns to the database and parse this information when a new Mediathek View json. This means we need to trigger the heuristics during the import, regardless of the user setting the --series flag.
Downsides:

Makes the import slower (cant say by how much).
Will cause lots of false-positives when trying matching the (123) pattern, so users will see nonsensical information in these columns.

Is that what we want to have?
Do you have a better idea?

I would guess running this match during import with a precompiled regex is not very slow. For example, parsing the date is really slow, but the script does it anyway. Given we make the regex configurable, it would not work anyway.
We could try to use a python regex call as a custom sqlite function like this, and apply it on the SELECT. Not sure how slow it is, it is worth a try. Not?

Looking at the sqlite documentation, it seems that you can only define one REGEXP function, which can only be used in the WHERE clause. And you've already defined such a function.
What we probably need is to extract the season/episode information using "function callbacks", something like:
SELECT ... , GET_SEASON(title) as season, GET_EPISODE(title) as episode ...
Or did I miss something?
Thinking about the filtering for season/episode more:
For my use case I don't actually need that.  I'm not sure if the season/episode information is reliable enough to filter on that as well...

I would also probably not filter for it. The only reason i see is if you wait for a new season while the old one is still aired over and over again, and you want a filter to only get shows with seasons greater than that.

I looked for more season/episode patterns in the title file from the raw Filmliste.aktuell.xz
Examples

Folge 1: Andi und die Eselalm -- having a prefix of "Folge", with a : at the end
Folge 5: Wilde Tiergeschichten aus der Eifel (S14/E05) -- having a prefix of "Folge" in combination with season/episode
Folge 4: Mehr als eine Entscheidung (S01/E04) - Audiodeskription -- having a suffix of "Audiodeskription" after the season/episode marker
Leichter leben (10) | Partnervermittlung für ältere Menschen -- having the title of the episode after the episode number (10)
Trudel (84) und Erich (89) heiraten nach 33 Jahren Verlobung -- false positive: some folks age use similar pattern as episode number
Rückblick: 12. Folge - Zwillingszauber (1) -- Using "12. Folge" to mark the episode, with a . after the number
#delikatdelikat Folge 06 - Late Night Alter -- similar pattern, but without .
Michail Gorbatschow in Berlin (2014) - heute journal 08.11.2014 -- false positive: year marker (2014) looks like episode pattern
Folge 11/36: Getrennt- und Zusammenschreibung -- probably episode 11 of 36 total
Folge 7 (OmU) - Originalfassung mit deutschen Untertiteln -- without the : after the episode
Folge 9 -- without any more title information
Hörfassung: Folge 3: Besuch aus dem Jenseits - Staffel 5 -- with separate texts for Season and Episode
Können wir das Pferd retten? (Staffel 33 Folge 10) -- textual version of Episode and Season
#45 Trostloser VfB-Auftritt in Dortmund -- with prefix # for the episode
StarStarSpace #23/Japanoschlampen #34 - Die verschollene Episode -- two episode numbers in the same title 🤯
Gipfeltour (4/5) | Serie "Nix wie raus …. Madeira" -- again episode 4 of 5 total
Bares für Rares vom 21. März 2023, aktueller bericht (22.02.2021) -- using the date to identify the episode
Krieg in Europa: Tag 14, Der 13. Tag, Songwriterin des Jahres 2017 -- just numbering something (e.g. days, years) hard to gather examples for all of these...
Serie: "Pflügers Weihnachtswerkstatt - Staffel III" | Weihnachtliche Walnuss-Dekoschale (5/5) -- using Roman III numbers to count the season 🤦

Other observations

I see these patterns across all channels, so using the channel information doesn't help in deciding on which patterns to use
I did not find any example for "(S01?E01)" with other characters than /, so I couldn't find any cases of _ in the titles.

Conclusion
I guess we can cover most of these cases with a couple of regular expressions quite well, but not all of them. Maybe we should offer a combination of pre-configured patterns and allowing the user to add more for corner cases? Maybe also allow to manually override the season number? This would also mean that we should show season and episode in the list mode so users will see what their pattern would look like...
Relatively reliable patterns:

S01/E01 is the most reliable pattern
Using Folge 1 and 2. Folge sometimes in combination withStaffel 2 also looks quite straight forward.
#42 should also work
(123) works sometimes, doesn't make sense to apply this in general (false positives on age, year)
(3/5) might also work, all examples I've seen were of the pattern (<episode>/<total number of episodes>)

Sorry for the long post, however the reality of heuristics is messy 😞

Oh wow, a lot of examples. Thank you for assembling this.
Allowing users to define the season number as a parameter would be nice, but because we have to do this during the parsing time, it’s not really an option. We should provide a fixed set of regular expressions as you said, and wait for users to come and ask to extend it (no parameter to extend it at the beginning at least).

While reading the changes I thought about the manual season definition again and I think it will not help. If the (123) annotated show is not season 1, the episode number would also be false. Maybe I miss something?
And even if it is more work, having the season/episode info available as a filter for there case where it is defined properly would be just consequent. Applying it only for list/download is easier, but it will prevent some usecases.

Good progress 🚀

Alright here is another update to the feature:

We now extract season/episode information when filling the database. If we don't have season/episode information these are set to None/NULL.
This information is used when --series is set for the download and list commands.
This change modified the database schema, so you right now you need to re-create the database for this. A migration feature is a # TODO.
I did not find a way to add a unit-testing command that is not visible to the users, it seems docopt does not yet support this: https://github.com/docopt/docopt/issues/232

Next steps:

implement filtering
resolve the TODOs in the code

For the testing this should not be an command line parameter in my opinion.
This tool has no tests as of yet, so there is no structure for it. But normally I use pytest to run doctests with a pytest.ini having addopts = --doctest-modules. https://docs.pytest.org/en/7.1.x/how-to/doctest.html
For running pytest I normally use tox, but maybe this is too much for here. https://tox.wiki/en/latest/example/pytest.html

Filtering and history are working now.
I'm not sure about:

How to do the database schema version upgrade as you're using the PRAGMA schema.user_version already for something else. Right now I'm checking column names, also not ideal.
Since your INSERT statements depend on the ordering of database columns, I hope that the ALTER TABLE statements always preserve the order of columns.
Do we actually need to update the schema of .Filmliste? Would it be easier to just delete the file and re-import everything?
Do we want to enable --series automatically, if the user filters for season/episode? If so: I guess we would need to refactor/extract the parsing of the filter expressions.

Next steps:

re-visit the doctest invocation (as per your last comment)
probably some cleanup and polishing

For the migration of the history the user_version would be right. For the filmliste the script version number is in the file name and so it will be recreated anyway. The user_version is used to see if it needs a refresh.
I think enabling it automatically - only if some filter flag is given - is confusing. Better leave it an option for now.

@fnep I'm done with the series mode feature. Please do a thorough review and let me know if anything needs fixing or improvement.
Reminder for myself: we need to remove the test.sh before merging...

Hi Christian, Sorry it took me so long to get back to this issue.
I'm ready to merge this … is there anything left you want to do before?

No worries, I'm good with the changes, feel free to merge when you are ready.
Do you want me to change anything else?

No, it's all good. I was just a bit overloaded recently and want to catch up now.


Fix image generation detection

Fixes a bug I introduced to the image verb and noun regexes implemented in my last PR, where the capture groups don't properly account for word boundaries or spaces, leading to unintentional and/or garbled prompt contents.

Ughghgh I'm genuinely sorry for my sloppy sleep-deprived crimes, I'm doing like 5 different things in a bunch of branches at once ^^"


Added block class and entity class to mcpp namespace.

Added a namespace declaration to the block & entity classes, to bring the style in line with the other classes.

Please reference the issue being fixed in the PR to the description (i.e. #1 )


Attempt to fix import error when PyTorch is build without torch.distributed module

When torch is build without distributed support (non pypi release), importing accelerate crashs because it tries to import torch.distributed.ReduceOp.
This PR attempts to only import when torch has support for distributed setups along with trying to not have too much impact on CCL call performances.
I'm not quite sure how to test this setup as it, if you have any suggestion ...
Root error stacktrace:
  File "/usr/local/lib/python3.10/dist-packages/accelerate/utils/operations.py", line 24, in <module>
    from torch.distributed import ReduceOp
ImportError: cannot import name 'ReduceOp' from 'torch.distributed' (/usr/local/lib/python3.10/dist-packages/torch/distributed/__init__.py)

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

I think it's a bit more complicated than this check (unless you've checked this on a non-cuda built system), as I ran into this as well when I was trying to refactor argparse. To test we want to build using the CPU-only python wheels, which the CPU CI should technically do.
If so, I think adding it to imports.py instead would be better because there's more areas we can use it in. (It can still raise the flag if we want to raise the err)

Thanks for additional context and sorry for this not being complete, I'm discovering the accelerate codebase 😅.
Within imports.py you'd like to see a is_torch_distributed_available function rather than having it only in operations.py? Did I get it right?
Regarding testing, CPU-only build can have distributed enabled too, not sure this is possible without building torch ourselve? (gloo / oneCCL notably are CPU compatible / only CCL providers)

Yep! Exactly :) It'd need to be a disabled torch version install, I'll see if it's easy to do that via light-the-torch

Let me know if this is what you were expecting 👍🏻

cc @sgugger to make sure it all looks fine to you as well :)

(Also, we do install the non-distributed torch wheels during the CI, that's how I know this issue exists so the fact we're passing means it works :) )

Thanks for checking on the tests side 🤗


Collate useful common settings

Collate useful common settings for Visual Studio Code, depending to both distinctive files:

[ ] workspace.md: enabled settings for configuration in the context of the workspace
[ ] settings.md: applied settings to a specific folder (in a multi-root workspace) which override generic user and workspace ones

A snippet of various settings which can be implement for reducing visual noise and distractions has been posted by @KittyGiraudel (completed by a thread with explanations behind some ot the choices).


workspaces: add production configuration

/unhold
This should be good to review.

Tests are failing due to an issue with toolchain-e2e, see #4324 for context.

/retest

/retest

/hold
Wait for #4224 to merge, since it might delete/recreate all resources.

/retest

/retest

/retest

/unhold
#4224 has merged without any issue.

/retest

/retest

/retest

/retest

/retest

/retest
/lgtm

/hold
Merge this on Monday; let's not break production before a weekend.


deploy bastion host

deploy bastion host

Ran Plan for 2 projects:

dir: infrastructure/gcp/cloud-deployment/gcompute-engine-atlantis workspace: default
dir: infrastructure/gcp/cloud-deployment/gcompute-engine-bastion workspace: default

1. dir: infrastructure/gcp/cloud-deployment/gcompute-engine-atlantis workspace: default
Show Output
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+ create

Terraform will perform the following actions:

  # module.gcompute-engine.local_file.ansible_vars[0] will be created
+ resource "local_file" "ansible_vars" {
      + content              = (sensitive value)
      + content_base64sha256 = (known after apply)
      + content_base64sha512 = (known after apply)
      + content_md5          = (known after apply)
      + content_sha1         = (known after apply)
      + content_sha256       = (known after apply)
      + content_sha512       = (known after apply)
      + directory_permission = "0777"
      + file_permission      = "0777"
      + filename             = "ansible_vars.json"
      + id                   = (known after apply)
    }

  # module.gcompute-engine.local_file.private_key will be created
+ resource "local_file" "private_key" {
      + content              = (sensitive value)
      + content_base64sha256 = (known after apply)
      + content_base64sha512 = (known after apply)
      + content_md5          = (known after apply)
      + content_sha1         = (known after apply)
      + content_sha256       = (known after apply)
      + content_sha512       = (known after apply)
      + directory_permission = "0700"
      + file_permission      = "0400"
      + filename             = "id_rsa.pem"
      + id                   = (known after apply)
    }

Plan: 2 to add, 0 to change, 0 to destroy.

:arrow_forward: To apply this plan, comment:

atlantis apply -d infrastructure/gcp/cloud-deployment/gcompute-engine-atlantis

:put_litter_in_its_place: To delete this plan click here
:repeat: To plan this project again, comment:

atlantis plan -d infrastructure/gcp/cloud-deployment/gcompute-engine-atlantis

Plan: 2 to add, 0 to change, 0 to destroy.

2. dir: infrastructure/gcp/cloud-deployment/gcompute-engine-bastion workspace: default
Show Output
data.terraform_remote_state.gkubernetes_engine_ols: Reading...
data.terraform_remote_state.gkubernetes_engine_ols: Read complete after 0s
data.terraform_remote_state.vpc_ols_network: Reading...
data.terraform_remote_state.gcloud_dns_ols: Reading...
data.terraform_remote_state.vpc_ols_network: Read complete after 0s
data.terraform_remote_state.gcloud_dns_ols: Read complete after 0s
data.google_project.current: Reading...
data.google_project.current: Read complete after 2s [id=projects/onlineshop-378118]

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+ create

Terraform will perform the following actions:

  # module.gcompute-engine.google_compute_firewall.firewall["ssh"] will be created
+ resource "google_compute_firewall" "firewall" {
      + creation_timestamp = (known after apply)
      + destination_ranges = (known after apply)
      + direction          = (known after apply)
      + enable_logging     = (known after apply)
      + id                 = (known after apply)
      + name               = "ols-dev-gce-bastion-allow-ssh"
      + network            = "https://www.googleapis.com/compute/v1/projects/onlineshop-378118/global/networks/ols-dev-vpc-network"
      + priority           = 1000
      + project            = (known after apply)
      + self_link          = (known after apply)
      + source_ranges      = [
          + "<IP_ADDRESS>/0",
        ]
      + target_tags        = [
          + "bastion",
        ]

      + allow {
          + ports    = [
              + "22",
            ]
          + protocol = "tcp"
        }
    }

  # module.gcompute-engine.google_compute_instance.instance will be created
+ resource "google_compute_instance" "instance" {
      + can_ip_forward       = false
      + cpu_platform         = (known after apply)
      + current_status       = (known after apply)
      + deletion_protection  = false
      + guest_accelerator    = (known after apply)
      + id                   = (known after apply)
      + instance_id          = (known after apply)
      + label_fingerprint    = (known after apply)
      + machine_type         = "e2-medium"
      + metadata             = (known after apply)
      + metadata_fingerprint = (known after apply)
      + min_cpu_platform     = (known after apply)
      + name                 = "ols-dev-gce-bastion"
      + project              = (known after apply)
      + self_link            = (known after apply)
      + tags                 = [
          + "bastion",
        ]
      + tags_fingerprint     = (known after apply)
      + zone                 = "asia-southeast2-a"

      + boot_disk {
          + auto_delete                = true
          + device_name                = (known after apply)
          + disk_encryption_key_sha256 = (known after apply)
          + kms_key_self_link          = (known after apply)
          + mode                       = "READ_WRITE"
          + source                     = (known after apply)

          + initialize_params {
              + image  = "debian-cloud/debian-11"
              + labels = (known after apply)
              + size   = 20
              + type   = "pd-standard"
            }
        }

      + network_interface {
          + ipv6_access_type   = (known after apply)
          + name               = (known after apply)
          + network            = (known after apply)
          + network_ip         = (known after apply)
          + stack_type         = (known after apply)
          + subnetwork         = "https://www.googleapis.com/compute/v1/projects/onlineshop-378118/regions/asia-southeast2/subnetworks/ols-dev-vpc-subnet-asia-southeast2"
          + subnetwork_project = (known after apply)

          + access_config {
              + nat_ip       = (known after apply)
              + network_tier = "STANDARD"
            }
        }

      + service_account {
          + email  = (known after apply)
          + scopes = [
              + "https://www.googleapis.com/auth/cloud-platform",
            ]
        }
    }

  # module.gcompute-engine.google_dns_record_set.record[0] will be created
+ resource "google_dns_record_set" "record" {
      + id           = (known after apply)
      + managed_zone = "ols-dev-gcloud-dns-blast-ols-blast"
      + name         = "bastion.ols.blast.co.id."
      + project      = (known after apply)
      + rrdatas      = (known after apply)
      + ttl          = 300
      + type         = "A"
    }

  # module.gcompute-engine.google_project_iam_member.sa_iam will be created
+ resource "google_project_iam_member" "sa_iam" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "onlineshop-378118"
      + role    = "roles/viewer"
    }

  # module.gcompute-engine.google_service_account.sa will be created
+ resource "google_service_account" "sa" {
      + account_id   = "ols-dev-gce-bastion"
      + disabled     = false
      + display_name = "Service Account for ols-dev-gce-bastion instance"
      + email        = (known after apply)
      + id           = (known after apply)
      + member       = (known after apply)
      + name         = (known after apply)
      + project      = (known after apply)
      + unique_id    = (known after apply)
    }

  # module.gcompute-engine.local_file.ansible_vars[0] will be created
+ resource "local_file" "ansible_vars" {
      + content              = jsonencode(
            {
              + cluster_name = "ols-dev-gkubernetes-engine-cluster"
              + project_id   = "onlineshop-378118"
              + region       = "asia-southeast2-a"
            }
        )
      + content_base64sha256 = (known after apply)
      + content_base64sha512 = (known after apply)
      + content_md5          = (known after apply)
      + content_sha1         = (known after apply)
      + content_sha256       = (known after apply)
      + content_sha512       = (known after apply)
      + directory_permission = "0777"
      + file_permission      = "0777"
      + filename             = "ansible_vars.json"
      + id                   = (known after apply)
    }

  # module.gcompute-engine.local_file.private_key will be created
+ resource "local_file" "private_key" {
      + content              = (sensitive value)
      + content_base64sha256 = (known after apply)
      + content_base64sha512 = (known after apply)
      + content_md5          = (known after apply)
      + content_sha1         = (known after apply)
      + content_sha256       = (known after apply)
      + content_sha512       = (known after apply)
      + directory_permission = "0700"
      + file_permission      = "0400"
      + filename             = "id_rsa.pem"
      + id                   = (known after apply)
    }

  # module.gcompute-engine.null_resource.ansible_playbook[0] will be created
+ resource "null_resource" "ansible_playbook" {
      + id       = (known after apply)
      + triggers = {
          + "playbook_checksum" = "60a355ce39c9a4274be3fc4c0373ac6e0a0f04a7e13f8ec551a970d66c285e0d"
        }
    }

  # module.gcompute-engine.tls_private_key.tls will be created
+ resource "tls_private_key" "tls" {
      + algorithm                     = "RSA"
      + ecdsa_curve                   = "P224"
      + id                            = (known after apply)
      + private_key_openssh           = (sensitive value)
      + private_key_pem               = (sensitive value)
      + private_key_pem_pkcs8         = (sensitive value)
      + public_key_fingerprint_md5    = (known after apply)
      + public_key_fingerprint_sha256 = (known after apply)
      + public_key_openssh            = (known after apply)
      + public_key_pem                = (known after apply)
      + rsa_bits                      = 2048
    }

Plan: 9 to add, 0 to change, 0 to destroy.

Changes to Outputs:
+ private_ip = (known after apply)
+ public_ip  = (known after apply)

:arrow_forward: To apply this plan, comment:

atlantis apply -d infrastructure/gcp/cloud-deployment/gcompute-engine-bastion

:put_litter_in_its_place: To delete this plan click here
:repeat: To plan this project again, comment:

atlantis plan -d infrastructure/gcp/cloud-deployment/gcompute-engine-bastion

Plan: 9 to add, 0 to change, 0 to destroy.

:fast_forward: To apply all unapplied plans from this pull request, comment:

atlantis apply

:put_litter_in_its_place: To delete all plans and locks for the PR, comment:

atlantis unlock

atlantis apply

Ran Apply for 2 projects:

dir: infrastructure/gcp/cloud-deployment/gcompute-engine-atlantis workspace: default
dir: infrastructure/gcp/cloud-deployment/gcompute-engine-bastion workspace: default

1. dir: infrastructure/gcp/cloud-deployment/gcompute-engine-atlantis workspace: default
module.gcompute-engine.local_file.private_key: Creating...
module.gcompute-engine.local_file.private_key: Creation complete after 0s [id=a2964b10285d84a253f8c37adcf564e6db23c48a]
module.gcompute-engine.local_file.ansible_vars[0]: Creating...
module.gcompute-engine.local_file.ansible_vars[0]: Creation complete after 0s [id=9fcd45471648889088409fb2c52c0f7b34e40117]

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

A]
module.gcompute-engine.null_resource.ansible_playbook[0]: Creating...
module.gcompute-engine.null_resource.ansible_playbook[0]: Provisioning with 'local-exec'...
module.gcompute-engine.null_resource.ansible_playbook[0] (local-exec): Executing: ["/bin/sh" "-c" "sleep 30 && ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i <IP_ADDRESS>, -u debian --private-key=id_rsa.pem playbook.yml  --extra-vars<EMAIL_ADDRESS>--tags initialization"]
module.gcompute-engine.null_resource.ansible_playbook[0]: Still creating... [10s elapsed]
module.gcompute-engine.null_resource.ansible_playbook[0]: Still creating... [20s elapsed]
module.gcompute-engine.null_resource.ansible_playbook[0]: Still creating... [30s elapsed]

module.gcompute-engine.null_resource.ansible_playbook[0] (local-exec): PLAY [all] *********************************************************************

module.gcompute-engine.null_resource.ansible_playbook[0] (local-exec): TASK [Gathering Facts] *********************************************************
module.gcompute-engine.null_resource.ansible_playbook[0] (local-exec): ok: [<IP_ADDRESS>]

module.gcompute-engine.null_resource.ansible_playbook[0] (local-exec): TASK [setup_kubectl : Set GCP project] *****************************************
module.gcompute-engine.null_resource.ansible_playbook[0] (local-exec): changed: [<IP_ADDRESS>]

module.gcompute-engine.null_resource.ansible_playbook[0] (local-exec): TASK [setup_kubectl : Install kubectl and google-cloud-sdk-gke-gcloud-auth-plugin] ***
module.gcompute-engine.null_resource.ansible_playbook[0]: Still creating... [40s elapsed]
module.gcompute-engine.null_resource.ansible_playbook[0] (local-exec): changed: [<IP_ADDRESS>]

module.gcompute-engine.null_resource.ansible_playbook[0] (local-exec): TASK [setup_kubectl : Get GKE cluster credentials to generate kubeconfig] ******
module.gcompute-engine.null_resource.ansible_playbook[0] (local-exec): changed: [<IP_ADDRESS>]

module.gcompute-engine.null_resource.ansible_playbook[0] (local-exec): PLAY RECAP *********************************************************************
module.gcompute-engine.null_resource.ansible_playbook[0] (local-exec): <IP_ADDRESS>             : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

module.gcompute-engine.null_resource.ansible_playbook[0]: Creation complete after 45s [id=5228851111609588999]

Apply complete! Resources: 9 added, 0 changed, 0 destroyed.

Outputs:

private_ip = "<IP_ADDRESS>"
public_ip = "<IP_ADDRESS>"

Locks and plans deleted for the projects and workspaces modified in this pull request:

dir: infrastructure/gcp/cloud-deployment/gcompute-engine-atlantis workspace: default
dir: infrastructure/gcp/cloud-deployment/gcompute-engine-bastion workspace: default


CCE-205 and CCE-10

 You should sign our Contributor License Agreement in order to get your pull request merged.


Album art does not get updated

Description
The album art and description in the popup does not get updated when song ends and changes to the next song. This happens even after quitting and opening Spotify again. Fresh install of SpotMenu.
Steps to Reproduce

Open Spotify.
Open SpotMenu.
Play music.
Once song changes, observe that album art and title does not change.

Expected behavior: Album art and song information changes in popup.
Actual behavior: Album art and song information does not change. The titlebar, however, does change.
Reproduces how often: 100%.
Versions
SpotMenu version: 1.8
MacOS version: 10.12.6
Here is a screencast of the problem: https://streamable.com/ypmth

hey, SpotMenu downloads the album art from the internet, make sure you have a good internet connection. If it failed to download it, try skipping to the next song so it try again. It only tries to download the album art once when listening to a current song.
I know some of you use Spotify offline with a premium account.
The album art can no longer be retrieved from Spotify through the Spotify AppleScript API. Only a url can be retrieved.
Can you make sure that this is the case?

The files have been offlined on Premium but they are only from Spotify and not from local music files. My internet connection is really solid, so that is not the issue in this case.
I also noticed that the metadata in the popup does not change either. It's basically stuck at the same album art, title, artist, and even progress bar/playing time.

Maybe this can help

Quit SpotMenu

From terminal delete group preferences of SpotMenu

open ~/Library/Group\ Containers/group.KMikiy.SpotMenu/Library/Preferences

open that folder and delete group.KMikiy.SpotMenu.plist

From terminal delete app preferences of SpotMenu

defaults delete com.KMikiy.SpotMenu

Restart SpotMenu


Add beforeAll/afterAll events + file locking

Follow-up to #394
This adds beforeAll and afterAll events. They run before the first and after the last migration respectively, for both up and down calls. This allows for locking functionality as requested in https://github.com/sequelize/umzug/discussions/144. Right now, there's a FileLocker class which uses the filesystem to implement a very basic locking mechanism. Adding actual database locking is more complex though, since every database system implements locks differently. I plan to use this to add locking to @slonik/migrator, since that's postgresql-only. It might be possible to add a SequelizeLocker class similar to FileLocker using transactions, but if that's difficult it could come in another follow-up. @papb have you use sequelize locks before?

Very nice! Great idea. As for using Sequelize transactions to lock the table, that should work, and shouldn't be too hard. I don't have time to try to do it though... Not now at least.


Instant markdown preview displays text out of bounds when editor UI is zoomed out

VSCode Version: 1.9 and 1.10 insiders
OS Version: Arch Linux x64

Steps to Reproduce:

Zoom editor out (e.g. by pressing Ctrl+-)
Open a markdown file and instant preview on the side
Text in the preview will go out of bounds
Zooming the editor back to the default will fix the issue

Closing as duplicate of #5745


Stealth Inc: A Clone in the Dark [PCSE00280]

Game summary

Game name: Stealth Inc: A Clone in the Dark
Game serial: PCSE00280
Game version: 01.00

Vita3K summary

Version: v0.1
Build number: 1293
Commit hash: https://github.com/vita3k/vita3k/commit/164267b

Test environment summary

Tested by: IllusionMan1212
OS: Windows 10 Pro
CPU: AMD Ryzen 5 1600
GPU: NVIDIA GTX 1050Ti
RAM: 8 GB

Issues
Crashes while compiling shaders with [renderer::gl::compile_glsl]: 0(109) : error C1068: array index out of bounds
Screenshots
None at the moment
Log
vita3k.log

Update
This game is now regressed back to nothing state.
Current version is https://github.com/Vita3K/Vita3K/commit/c274adbe56dffb0e09a36463a061964a407f343f.}
Logs
vita3k.log

as of https://github.com/Vita3K/Vita3K/commit/da8a6933d87478ca3425e27d47736a409b1bf85f, the game status is the same as https://github.com/Vita3K/compatibility/issues/83.
Screenshots

Logs
vita3k (OGL).log
vita3k (Vulkan).log
Recommended Labels

Ingame +
graphical bug
vulkan issue


Zero functionality in WoW patch 10.0.7

WoW patch 10.0.7
NOP Continued 1.6c
There are no extra buttons appearing for any item. Blizzard has apparently broken something.

Fixed with 1.6d
There were some small enum changes.