Please refer flutter_fix . It might fix you problem.
try to clear cache
Shift + F5: The Hard Refresh
I'm not trying to do anything like that but I wanted to add some logic to Keycloak authenticators so I was interested in this question. The redirect uri ( ru
) is in the client_data
URL path parameter encoded to base64, of the request starting the Login and then it is passed to the Register and finally used. I don't see an option to replace it - at least not in the authenticator.
found a site that was able to figure this out. seems like its geared towards SaaS use though.
https://send.co/
According to the following references, the default port or EZVIZ cameras is 554
In my case this url worked with opencv and python
rtsp://admin:****@192.168.0.86:554
Like you, I initially thought the port was 8000 after checking the Ezviz mobile app
The images are from a pdf I found : https://svtclti.com/manuales/CCTV/CAMARAS/EZVIZ/C%C3%B3mo%20activar%20RTSP%20en%20Ezviz.pdf
More details:
I have a same problem.
When I opened a TCPDF-generated PDF with embedded CMYK JPGs in Illustrator, the document's color mode was CMYK. Therefore, the method given by jgtokyo did not solve the problem.
I will comment again when the problem is solved.
this is the piece of code I have if the user enter the email appart from quest-global.com we have to throw error if he entered gmail or hotmail we have to dispaly the message please enter the valid email address?
On the Issues page, you can write, e.g., closed:>@today-1y
in the search bar — that would filter for issues that were closed in the last year. Other filter options include created:
and merged:
.
check if you have the below line added in in the scripts section of your package.json file present in the root directory of your project :
"start" : "react-scripts start"
this is the line that enables the "npm start" command to build and run your react application
Solutions :
1.Install the latest version of image_cropper.
2.In the latest version you can pass the property of uiSettings
. Inside you can pass the property AndroidUiSettings
.
3.Wrap your app in a SafeArea
.
4.Use MediaQuery.of(context).padding
for adjusting the content.
The problem was the directory structure. Locating the source files in a src
sub-directory resolved the issue.
my_module/
+---LICENCE.md
+---pyproject.toml
+---README.md
+---requirements.txt
+---src/
| +---my_module/
| +---__init__.py
| +---my_module.py
| +---my_module.tcss
+---git/
Free Fire Beta 2025 APKLULU.COM.xapk
1 INSTALL_FAILED_NO_MATCHING_ABIS: INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113
2 Apl tidak terpasang
In short, write model doesn't mean that you cannot read the data from the store. You just cannot read it from the Presentation (UI, client,...). Within write model you can start a transaction, read policies, read anything from the write store that helps you to validate the command, then execute the command and write the state to the store.
So, write store should be the primary store, i.e. all policies should be available in write store. In general, all data should be in primary store first, then replicate to the read stores. All transactions in the write model are strongly consistent. But for the whole application, it's eventually consistent because the client reads from the read stores.
It's similar to database clustering. All transactions must be executed on the primary shard, while queries can be sent to replica shards. DB cluster doesn't prevent you to send the queries to the primary shard, but obviously it would be better for scaling if you route the queries to replicas.
It happenes me too, I am even using Next.js 15 latest version.
I just opted out optimization option.
Tone.Sampler doesn't do multiple samples per key, you will have to do this yourself. You could try to do them seperately. Don't use Tone.PitchShift. It is not use to play multiple notes with different pitches together
Can you please share me the DDL using AFTER SERVER ERROR ON DATABASE
CRM stands for Customer Relationship Management. It refers to a technology, strategy, and process that helps businesses manage and improve their interactions with current and potential customers. CRM systems are used to:
Track customer interactions across channels (email, phone, social media, etc.)
Organize and store customer data
Check your internet connection speed. That could be culprit.
Usually takes max 15-20 mins for full image download and 10-15 for the docker compose up.
Let's break down the behavior of these DAX formulas and the concept of context transitions:
Filter Context: The set of filters applied to the data model when a calculation is evaluated.
Row Context: The context of a single row in a table being processed by an iterator function like FILTER
.
Context Transition: The automatic conversion of row context to filter context when using CALCULATE
.
Example 2 :=
CALCULATE (
[Sales Amount],
FILTER (
ALL ( 'Date' ),
'Date'[Date] <= MAX ( 'Date'[Date] )
)
)
MAX
Return the Last Date in the Table?Row Context vs. Filter Context:
The FILTER
function iterates over each row of ALL('Date')
, creating a row context for each date.
However, MAX('Date'[Date])
is evaluated in the filter context of the visual, not the row context of the FILTER
iteration.
Without a context transition (via CALCULATE
), MAX
remains unaware of the row context and only sees the filter context of the visual.
If the visual is filtered to a specific date (e.g., a slicer selects January 1), MAX('Date'[Date])
returns that specific date, not the last date in the table.
If no filters are applied, MAX
returns the last date in the entire Date
table.
MAX
does not perform a context transition. It inherits the outer filter context (from the visual), not the row context of the FILTER
iteration.Example 1 :=
CALCULATE (
[Sales Amount],
FILTER (
ALL ( 'Date' ),
'Date'[Date] <= [MaxDate]
)
)
[MaxDate]
is a measure like MaxDate := MAX('Date'[Date])
, it captures the maximum date from the visual's filter context before the FILTER
iteration begins. This creates a "fixed" maximum date for all rows in FILTER
.Example 3 :=
CALCULATE (
[Sales Amount],
FILTER (
ALL ( 'Date' ),
'Date'[Date] <= CALCULATE ( MAX ( 'Date'[Date] ) )
)
)
CALCULATE
around MAX
forces a context transition, resetting the filter context to ALL('Date')
. Thus, MAX
returns the last date in the entire table.| Example | Behavior | Context Transition | |---------|--------------------------------------------------------------------------|--------------------| | 1 | [MaxDate]
captures the visual's filter context before iteration. | No | | 2 | MAX
inherits the visual's filter context (no transition). | No | | 3 | Inner CALCULATE
resets filter context to ALL('Date')
. | Yes |
Example 2 is dynamic and depends on the visual's filter context. It calculates the running total up to the selected/max date in the visual.
Example 1 & 3 are static and calculate the running total up to the last date in the entire table, regardless of visual filters.
Use Example 2 when you want the running total to respect the visual's filters (e.g., a slicer selecting a specific date range).
Use Example 1/3 when you want the running total to always go up to the last date in the table, ignoring visual filters.
This behavior is foundational to DAX's "context transition" mechanics, which are critical for mastering dynamic calculations in Power BI and Analysis Services.
You have to explicitly tell Fusion that you are interested in non-optimal solutions. See the remark in
https://docs.mosek.com/latest/pythonfusion/accessing-solution.html#retrieving-solution-values
For example
M.acceptedSolutionStatus(AccSolutionStatus.Feasible)
G Hub only let's you use the macro buttons on Logitech keyboards as triggers, so u can't assign macros or lua scripts to regular keys. It's possible to use modifiers as conditions, such as triggering the script with MMB only if lctrl is pressed, but not with lctrl alone.
This should be simple to do in Autohotkey, but some anti-cheats could flag that as irregular software interactions. Give it a try if that's not your case.
Okay - the issue is that the nodes also need a key value:
const checkbox1 = {
label:"checkbox 1",
key: 'checkbox_1'
};
const checkbox2 = {
label:"checkbox 2",
key: 'checkbox_2'
};
I have using a program called Advik EML Converter. This app basically extract attachments from EML files into .pdf, .csv, ics, etc. If your email file saved attachments in .pdf then it will export attachments it in .pdf file.
Just like OP I was trying to get row-based conditional formatting going. Using OFFSET worked for me. Thanks @ttaaoossuu. The naysayers may not like it but it seems to be the only workaround that actually works.
Additionally, note that conditional formatting does not allow boolean indicators like AND, but easily got around that by creating hidden columns to do the hard work of combining conditions.
if still wants to use LinearLayout Please remove relative layout. try the below code, Relplace the image with yours original one i have used placeholder. If still you see the bad UI please share the file @style/MediaButton
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingHorizontal="10dp"
android:gravity="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:paddingVertical="6dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp"
android:weightSum="5">
<ImageButton
android:id="@+id/btnvolumdown"
android:layout_width="0dp"
android:layout_height="35dp"
android:layout_weight="1"
android:background="@android:drawable/ic_media_next"
android:contentDescription="Volume Down"
android:tint="@color/black" />
<ImageButton
android:id="@+id/rew"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@android:drawable/ic_media_previous"
android:contentDescription="Rewind" />
<ImageButton
android:id="@+id/play"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@android:drawable/ic_media_play"
android:contentDescription="Play" />
<ImageButton
android:id="@+id/ffwd"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@android:drawable/ic_media_next"
android:contentDescription="Fast Forward" />
<ImageButton
android:id="@+id/btnvolumup"
android:layout_width="0dp"
android:layout_height="35dp"
android:layout_weight="1"
android:background="@android:drawable/ic_media_pause"
android:contentDescription="Volume Up" />
</LinearLayout>
</LinearLayout>
If you are using com.google.android.material.textfield.TextInputLayout
and com.google.android.material.textfield.TextInputEditText
, just adding the code below is enough.
textInputEditText.isFocusableInTouchMode = true
textInputEditText.setFocusable(true)
textInputEditText.requestFocus()
Is there a way of adding API controllers to the server project and calling them from the client?
Also, there is also no longer a Main startup method in the client, so I can't see how to add services to the client project.
Neither Bcrypt or Argon2 use SHA-256 or SHA-512 internally.
Bcrypt: is based on Blowfish cipher and has its own key setup mechanism, it's designed in the late 90s but still considered secure when properly configured (e.g., cost factor ≥12).
Argon2: uses BLAKE2b, newer cryptographic hash function, it has multiple versions: Argon2id, Argon2i, Argon2d.
Argon2id is considered best password hash function today.
You should not use SHA-256 or SHA-512 for passwords, these hash are for data integrity purposes, like signing requests, checking file integrity, or token hashing.
You can read more about argon2 and password storage
There is no built-in setting in LM-studio that can automatically do that. You will have to manually do the conversion outside of LM-studio
Try disabling extensions in browser if using. In my case the speechify extension in my browser was interfering the smooth scroll behavior after disabling , it worked.
Use io.ReadFull to slurp up the desired number of bytes on each iteration of the loop.
buf := make([]byte, 10)
for {
_, err := io.ReadFull(r.Body, buf)
if err == io.ErrUnexpectedEOF || err == io.EOF {
// Success!
break
} else if err != nil {
// Something bad happened.
log.Fatal(err)
}
time.Sleep(time.Second)
}
It's easy, all you have to do is translate this post into English. Here are the instructions: https://tecnologiageek.com/android-desactiva-asi-la-pantalla-de-inicio-del-sistema/#google_vignette
For a single directory:
for %a in (*.*) do find /i "string to search for"
Will do the job. Otherwise, you can do something like
dir /s /b *.txt > filelist.txt
to get a recursive list and then
for /f %a in (filelist.txt) do find /i "string to search for"
You can also use && and || to specify other things like && echo %a to echo the file name. . . will work, but might not be as fast as recursive grep.
Use the for
statement to call CopyN(io.Discard, r.Body, 10)
in a loop and sleep after each chunk.
for {
n, err := io.CopyN(io.Discard, r.Body, 10)
if err == io.EOF {
// Body successfully discarded.
break
} else if err != nil {
log.Fatal(err)
}
time.Sleep(time.Second)
}
Try --ssl-no-revoke
option with curl like
curl --ssl-no-revoke https://maintenanceplus.nl
tsconfig.ts is No modifications are needed.
I merely added the comments for the "output" directory.
execute npm i prisma @prisma/client
npx npx prisma generate
is will be OK
surl & furl in payu request should be an api endpoint. Payu sends the status of the transaction to your api endpoint. once you receive the request from payu, process it, save it to your database and return a redirect request(send transaction id etc) to your client app for further processing.
i have an asp.net webapi and angular app and this is how i was able to handle redirection from payu.
Right after commenting I actually figured this out. For people using the Azure Devops Xcode pipeline task (ver. 5.*), check your 'Advanced' settings
Once I unchecked the "Use xcpretty" option I could see all the build and build phase script output that I'm used to seeing locally. This includes the downstream CompileC failure errors that I was missing too
text tags: missing script build phase print output logs Xcode azure
Another possibility for those struggling with aws grok - the log files I was trying to crawl were in uft-16 LE BOM (just what the 3rd party system was creating) and grok would not work - changed the log files to utf-8 and it worked
Sorry about the late answer. Yes it can be done.
AABB-AABB intersections can be done by tracing a ray segment along each edge of each box against the other box (TLAS intersection testing).
Triangle-triangle intersection testing can be done by constructing 3 fake triangles orthogonal to each original triangle along each edge of the triangle (to catch the special case of the original triangles being coplanar) and then tracing a ray segment along each edge of each original triangle.
kitikiplot
Python library can be used to visualize sequential categorical data. Also, sliding window can be applied, focus can be set.
pip install kitikiplot
from kitikiplot.core import KitikiPlot
# Consider 'df' is a 'pd.DataFrame' containing 'Summary' column
ktk= KitikiPlot( data= df["Summary"].values.tolist() )
ktk.plot( )
Grid Plot For Short Genome Sequences
GitHub Source Code: https://github.com/BodduSriPavan-111/kitikiplot
it depends how you setup your project, you has defined the Buefy in a global state above will work when the function hit this code, else you need to import the Buefy within the component where are you are using it.
"The inviteToken is passed as input."
How are you passing this value to the custom policy?
The REST API requires this as input. Since this is not given a value anywhere in the custom policy, this may explain the error?
I tried to check the local port before creating the container and found that port 5433 was already in use.
C:\Windows\System32>netstat -aon | findstr LISTENING
TCP [::]:5433 [::]:0 LISTENING 6017
I checked the information and found that postgrep.exe had occupied port 5433.
C:\Windows\System32>tasklist /FI "PID eq 6012"
Choose a non-used port to create a container and the connection will be successful
When you load your app, you're presumably going to the /
route. When using a browser to visit a page, a GET
request is sent. Since the /
route only allows POST
requests, Flask returns an error.
POST requests are used when data needs to be sent to the server. See the corresponding MDN page for more information
Since no processing of user data is done in the main
function, remove methods=["POST"]
from its decorator. This will set the allowed methods to GET. (see Flask Docs)
I am not very familiar with Canvas LMS but based on your description it sounds like they restrict JavaScript for security reasons. as you mentioned CSS pseudo-classes and browser events would normally help in this case but it seems those are not possible given the limitations.
One suggestion I can offer is to use the title attribute for the words you want to display the tooltip for. It is a basic solution with limited styling through inline CSS but it does show a tooltip on hover and might still be useful.
Good luck!
final void Function() startQuiz;
remove void here
A bit late maybe, but it might help someone: you can simply group by the sort field, so when that sort field is repeated, it will sort and group at the same time.
<p-table
[value]="data"
groupRowsBy="index"
rowGroupMode="rowspan" >
i know this is an older thread and late to a reply but https://www.querystreams.com
It appears as though there is an option to teardown a provider state here: https://github.com/pact-foundation/pact-net/blob/b3c2fe14a513a886dab165721b156526765690fa/tests/PactNet.Tests/Verifier/ProviderStateOptionsTests.cs#L24
Alright, so this is one of those classic Flutter notification quirks that loves to waste your time. You’ve got the zonedSchedule call working just enough to add a pending notification, but then it just chills in limbo like it's waiting for a divine signal that never comes. First off, make sure you’ve actually initialized your timezone — and no, not just initializeTimeZones(), but also setLocalLocation() using flutter_timezone. Without that, tz.local is basically a confused tourist with no map. Put it in main() before anything else runs.
Then we get to Android 12+, where Google decided that exact alarms are dangerous and must be tamed. So yes, even if you slapped <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/> into the manifest, it still does nothing unless the user manually gives your app permission through system settings. You can try triggering Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM) on the native side, but for debugging, just test on Android 11 or below first so you don’t lose your mind.
Also, your scheduling logic seems fine on paper, but remember: if the scheduled time is even a hair too close to DateTime.now(), it might just silently ignore it. Add a buffer, like 30 seconds, just to be safe. That means tz.TZDateTime.from(DateTime.now().add(Duration(seconds: 30)), tz.local), not some half-second offset that gets eaten by execution delay. Oh, and androidAllowWhileIdle: true should always be set if you want it to actually fire when the device is dozing off in a dark corner.
So in summary:
– Initialise the timezone properly, not halfway.
– Android 12+ needs manual permission for exact alarms.
– Always give it a scheduling buffer.
– androidAllowWhileIdle must be set.
– If it works with show() but not zonedSchedule(), then congrats: the problem is timezone, permissions, or scheduling time — pick your poison.
Hope this spares you the descent into madness. Let me know if you want a full working example that’s not possessed.
# Criando o arquivo naruto_vs_beach.py com o código do jogo
code = """
import pygame
import random
# Inicialização do Pygame
pygame.init()
# Tamanho da tela
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Naruto vs Beach")
# Cores
WHITE = (255, 255, 255)
BLUE = (135, 206, 235) # Céu
SAND = (194, 178, 128)
# Clock para controlar FPS
clock = pygame.time.Clock()
FPS = 60
# Player (Naruto) settings
player_width, player_height = 50, 70
player_x, player_y = WIDTH // 2, HEIGHT - player_height - 50
player_speed = 5
# Inimigo settings
enemy_width, enemy_height = 50, 70
enemies = []
enemy_speed = 3
spawn_timer = 0
# Ataque settings
attack = False
attack_cooldown = 0
# Font para mostrar texto
font = pygame.font.SysFont(None, 36)
def draw_player(x, y):
# Corpo do Naruto (retângulo laranja)
pygame.draw.rect(screen, (255, 140, 0), (x, y, player_width, player_height))
# Cabeça (círculo)
pygame.draw.circle(screen, (255, 224, 189), (x + player_width // 2, y - 20), 20)
def draw_enemy(x, y):
# Corpo do inimigo (retângulo vermelho)
pygame.draw.rect(screen, (255, 0, 0), (x, y, enemy_width, enemy_height))
# Cabeça (círculo)
pygame.draw.circle(screen, (139, 0, 0), (x + enemy_width // 2, y - 20), 20)
def draw_attack(x, y):
# Representa um ataque (um círculo azul na frente do player)
pygame.draw.circle(screen, (0, 0, 255), (x + player_width + 20, y + player_height // 2), 15)
def main():
global player_x, attack, attack_cooldown, spawn_timer
running = True
score = 0
while running:
screen.fill(BLUE) # Céu
pygame.draw.rect(screen, SAND, (0, HEIGHT - 100, WIDTH, 100)) # Praia (areia)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
# Movimento do player
if keys[pygame.K_LEFT] and player_x > 0:
player_x -= player_speed
if keys[pygame.K_RIGHT] and player_x < WIDTH - player_width:
player_x += player_speed
# Ataque com espaço
if keys[pygame.K_SPACE] and attack_cooldown == 0:
attack = True
attack_cooldown = 20 # Cooldown de frames para o ataque
# Atualiza ataque
if attack:
draw_attack(player_x, player_y)
attack_cooldown -= 1
if attack_cooldown <= 0:
attack = False
attack_cooldown = 0
# Spawn de inimigos
spawn_timer += 1
if spawn_timer > 60: # Spawn a cada 1 segundo
enemy_x = random.randint(0, WIDTH - enemy_width)
enemy_y = HEIGHT - enemy_height - 100
enemies.append([enemy_x, enemy_y])
spawn_timer = 0
# Movimenta inimigos
for enemy in enemies[:]:
enemy[0] += enemy_speed * (1 if enemy[0] < player_x else -1) # inimigos vão na direção do player
draw_enemy(enemy[0], enemy[1])
# Checa colisão com ataque
if attack and (player_x + player_width + 5 < enemy[0] < player_x + player_width + 50):
enemies.remove(enemy)
score += 1
# Se inimigo alcançar o player, fim de jogo
if abs(enemy[0] - player_x) < 40:
running = False
draw_player(player_x, player_y)
# Mostrar score
score_text = font.render(f"Score: {score}", True, WHITE)
screen.blit(score_text, (10, 10))
pygame.display.flip()
clock.tick(FPS)
pygame.quit()
if __name__ == "__main__":
main()
"""
file_path = "/mnt/data/naruto_vs_beach.py"
with open(file_path, "w") as f:
f.write(code)
file_path
Install miniconda (a minimal version of conda) following instructions in this link. You can do it as a regular user, no sudo needed.
conda init bash
and relogin (or source) to add conda to your PATH.
conda create -n env_name python=3.10
conda activate env_name
Now you can install packages with conda install
or pip install
, but better to stick to one method.
Conda is really cool piece of software - it combines python version management, virtual environment and package installing.
How would you modify your script to allow multiple range within same sheet to export as multiple PDF pages?
I might have edited too much of the original post so I post that message to answer my own question, trying to gain clarity and hoping to make it clearer for other users stomping upon that very same problem.
I did have both ruby versions, the first one being 3.3.8
installed via the xbps-install
VoidLinux's package-manager and the second one being 3.5.0dev
, built from source.
The solution was to nuke the previous ruby installation and all its environment, including the following packages: ruby
, ruby-lsp
, ruby-manpages
, ruby-multi_xml`
and ruby-ri.
I also ditched both /usr/lib/ruby`
and /usr/lib64/ruby
dossiers.
I then removed all environment variables related to Ruby (viz. RUBY_ROOT
, GEM_PATH,
GEM_ROOT
, RUBY_GC_LIBRARY
, GEM_HOME
and RUBY_CONFIGURE_OTS).
I then carried out gem update --system
then gem update
, and finally gem install ruby-lsp
.
I removed the bin's path of solargraph (another ruby LSP) from my $env.PATH
as only directories - not binaries - are used there.
Thank you for your time.
That happens because you have 2 or more python interpreters on your system
for solving this problem , before pip , you have to choose your target interpreter , for example you can say : python3.13 -m pip install numpy
Hope it helps
Essentially you want to send BCC calendar invitations that hide each invitee from each other. You can achieve this within your Outlook calendar application by creating a separate invitation for each attendee with the same Zoom link and meeting information. My understanding is Outlook no longer supports emails in the resources filed and in any event forwarding is not advisable since they are less likely to add it to their calendar and may not receive default reminders. If you want to automate the creation of multiple invites per event you can either try the Graph API or use Salepager which lets you send BCC Outlook calendar invitation with the Zoom link.
traditional approach is initializing mux with option, that decides which code to set based on grpc-metadata in context. Also there is way of manipulating codes per rpc(enpoint) using options in proto definitions, but i have not tried that way yet.
Actually, nowdays both ways are described at https://grpc-ecosystem.github.io/grpc-gateway/docs/mapping/customizing_your_gateway/#controlling-http-response-status-codes
The function names in your error (vkCreateInstance@12
) strongly suggest you are compiling a 32-bit. You must link against the 32-bit version of the Vulkan library.
just in case this helps anyone, I was having this issue and I was doing everything I had done in previous projects/lessons while learning but the image still wouldn't show.
I had src="./Resources/Images/books.jpg" and compared to previous files with same format and was stumped. Turns out because I had moved the html files into a separate folder for multiple pages, the ./Resource path was no longer working. I had to but the full path in which worked.
src=
"C:\git_Repositories\Portfolio_Project\Resources/books.jpg"
You might want to consider using --editable
vcpkg install mypackage --editable
This will allow you to modify the source code in buildtrees to develop a patch. it is not for production
If you have a Data-Driven board, you are not able to update the column headers, these are fixed to the field you used to define the column during creation. You can update the column names on a freeform board simply by clicking the name, but sadly that is not what you're looking for.
Editing Freeform board column header by selecting it
Data driven board creation window
There is a table which manages these: vtb_lane, however, if you make a modification to the name field, the next time you navigate to the board it will re-build the column headers and your updated name will not be visible. It will also delete that vtb_lane record you just edited.
Your problem might be related to the updates in Google Photos API. Some scopes are removed from the Library API after March 31, 2025 which you can check in this documentation. You might also find some helpful insights in this Reddit post.
thanks so much for your fully ideas.
i have an other question about this problem, i run your answers and my model works well but first number of agents ( for example first 28 agents) untill full 28 agents does not wait in hold block and pass it one by one but i need even first 28 number or any other batch number holded in hold agent.
how should i do it?
you can use the HAVING clause.
Yes, you can definitely create a Python virtual environment with a higher version than the system default. Here's how:
First, install pyenv. This lets you install and switch between multiple Python versions on the same system.
curl https://pyenv.run | bash
Then install your desired version, e.g. Python 3.11.3:
pyenv install 3.11.3
pyenv global 3.11.3
Now create and activate your virtual environment:
python -m venv myenv
source myenv/bin/activate
You can now install your project dependencies and run your code with the newer version – fully isolated from the global Python on the node. This approach works well on most systems where pyenv can be installed.
Alternative: Docker
If you’re on a restricted system where you can’t install or compile your own Python version, Docker is a good alternative. Use a base image like python:3.11 and run everything inside the container.
That way, your environment is portable and version-controlled – even if the host OS uses an older Python.
Let me know if you want a basic Dockerfile or pyenv install script.
Good luck!
– Tipps-TECH
Looks to me like you are using a Set for rowSelectionModel but MUI DataGrid is expecting an array. Try updating selectedFilter to be an array of ids.
In case this helps anyone, in my case this turned out to be caused by the PayPal Honey for Safari extension.
where your_column not like '%your_text%'
In my case, I had set the evironment variable OPENSSL_CONF to an invalid value. Once I removed, I was able to make ssl connection to a private repo.
Gentlemen. After 6 years I stumbled on this thread. It seems as if it's the only source for what I need for my work in the whole of internet. So, very impressive, thank you very much. I need this code because I'm a strength analyst, and an Excel heavy user. I need to be able to compare the formulas straight to the equations presented in standards, because it takes effort to figure out the corresponding measure for each address in the formula. In order to reach the required level of automation I taped PEH's code with the code by M-- in the thread:
How to run a string as a command in VBA
M--'s code creates, writes, runs and deletes Module1 in VBA editor. That way PEH's command to modify the equation shape can be constucted and run as a string. I was not able to solve the initiation of the equation ether, so the first equation opened will modify. I call my macro from Developer:Macros. In the pictures below are the views of my VBA Editor and Calculation sheet. Create similar Excel, and create a userform by clicking Insert: UserForm in the VBA editor. Insert textbox and a button objects to the userform. Clicking them opens the list of object attributes, and mark the name of the textbox as "TxtCellAddress" and the name of the button as "CommmandButton1". Then create two new modules by clicking Insert: Module twise. Then delete Module1. In Module2 create the sub (presented in the picture) that initiates the userform when macro is called.
The UserForm1 in the VBA editor has "View object" and "View code" buttons in the top left corner of the project vindow. Click on the "View code" button to view the canvas, and paste the code below on it. (Check each line first to prevent malice code!)
Option Explicit
Private Sub CommandButton1_Click()
On Error GoTo ErrorHandler
'UserForm1 contains a textbox(TxtCellAddress) and a button(CommandButton1).
'When user writes CELL address, and clicks the button, the first shape on the
'ActiveSheet(In this case, the shape is an equation box, which has previously
'been plased on the sheet manually.) is evoked. This program modifies the
'equation box to present the formula.
'This code requires lowering your Excel security. Do not open Excel files sent
'by other people while you work, and please remember to reverse these changes
'after your work. Remember that malicious macros open, when Excel workbook is
'opened. From File: Options: Trust Center: Macro Settings:
'Click: Enable VBA macros(not recommended; potentially dangerous code can run)
'Click: Trust access to the VBA project object model
'The formula to be presented in equation box is obtained as a string value
'from a cell the user must name in in the textbox. First the string containing
'the formula is checked for INDIRECT() functions, that are evaluated.
'The string containing the formula is then processed so, that the cell
'addresses in formula are replaced by the names of the measures they keep. The
'names of the measures may consist of symbols or they may have two parts,
'first the normal part, and second the subscripted part. The default font of
'Excel Equation Editor is "Cambria Math". I dont know how to change that, so
'it is advisable to use that font in the column of the names of the measures.
'In the ActiveSheet the calculation is set on column J, The description of the
'measures are on column D, and the names of the measures are on column E. The
'identifications of the calculation are marked on row 8. When the calculation
'is copied column to column for say analysis of flanges in different pipe
'locations, the identification helps, and thus we also want to see it in the
'equation box. The string with the formula is then translated to a string
'consisting of a set of character commands, readable by the equation editor.
'Next a subroutine ExecuteString() is called. It creates Module1, and writes
'the subs foo(), MakeEquationLinear() and MakeEquationProfessional(), and then
'calls a subroutine foo() to be executed. Subroutine foo() sends the info to
'the Equation Editor, that one has to previously open manually. The code
'expects the Equation Editor to appear in the first shape i.e.
'ActiveSheet.Shapes(1). Afterwards Module1 is deleted. Put the subroutine that
'calls Userform1 to another module, because Module1 is reserved for the
'operation of this code.
Dim start As Long
Dim count As Integer
Dim aihio As String
Dim measureText As String
Dim aihioLen As Integer
Dim state As Integer
Dim char As String * 1
Dim prevChar As String * 1
Dim i As Long
Dim ii As Integer
Dim originalText As String
Dim cellAddress As String
Dim measure(0 To 1000) As String
Dim indirectNum As Integer
Dim indirectLocation(1 To 1000) As Long
Dim indirectLength(1 To 1000) As Integer
Dim indirectRef As String
Dim iE As String
Dim rowNum As Integer
Dim colNum As Integer
Dim stringToRun As String
Dim columnOfMeasureNames As String
Dim CN As Integer
Dim rowOfItemNames As Integer
Dim rE As Range
columnOfMeasureNames = "C"
rowOfItemNames = 8
CN = Columns(columnOfMeasureNames).Column
'Get cell adress from textbox. "Me" refers to the userform object. Because
'this subroutine is in the UserForm1 module the precise object identification
'is not required.
cellAddress = Me.TxtCellAddress.Value
'Get row number of the cell named in textbox
rowNum = ActiveSheet.Range(cellAddress).Row
'Get column number of the cell named in textbox
colNum = ActiveSheet.Range(cellAddress).Column
'Get the formula as string from the cell named in textbox
originalText = ActiveSheet.Range(cellAddress).Formula
'************ START OF INDIRECT() FUNCTIONS PROCESSING ************'
'If this segment causes a problem, remove it
indirectNum = 0
state = 0
For i = 1 To Len(originalText)
char = Mid(originalText, i, 1)
If (char = "I" Or char = "i") And state = 0 Then
state = 1
ElseIf (char = "N" Or char = "n") And state = 1 Then
state = 2
ElseIf (char = "D" Or char = "d") And state = 2 Then
state = 3
ElseIf (char = "I" Or char = "i") And state = 3 Then
state = 4
ElseIf (char = "R" Or char = "r") And state = 4 Then
state = 5
ElseIf (char = "E" Or char = "e") And state = 5 Then
state = 6
ElseIf (char = "C" Or char = "c") And state = 6 Then
state = 7
ElseIf (char = "T" Or char = "t") And state = 7 Then
state = 8
indirectNum = indirectNum + 1
indirectLocation(indirectNum) = i - 7
ElseIf char = "(" And state > 7 Then
state = state + 1
ElseIf char = ")" And state > 8 Then
state = state - 1
If state = 8 Then
indirectLength(indirectNum) = i - indirectLocation(indirectNum) + 1
'Go back incase of INDIRECT statements inside INDIRECT statement.
i = indirectLocation(indirectNum) + 7
state = 0
End If
ElseIf state < 9 Then
state = 0
End If
Next
If indirectNum > 0 Then
For i = indirectNum To 1 Step -1
'Get the formula between the caps of the indirect function
indirectRef = Mid(originalText, indirectLocation(i), indirectLength(i))
'Evaluate the line formula betveen the caps of the indirect function
iE = Application.Evaluate(Mid(indirectRef, 10, indirectLength(i) - 10))
'Replace the Indirect function with the evaluation in the formula
originalText = Replace(originalText, indirectRef, iE)
Next
End If
'************ END OF INDIRECT() FUNCTIONS PROCESSING ************'
'Get the Address of the name of the measure from the column of names
originalText = ActiveSheet.Cells(rowNum, CN).Address & originalText
'************ START OF LISTING CELL ADDRESSES IN FORMULA *************'
'Consider each character in string that contains the formula. If it is an
'alphabetic letter or a "$" sign, then start making a record of an address. If
'the next is also alphabetic or a "$" sign continue makin record. If the next
'is a number, continue making the record, but accept only numeral characters
'from now on. If the character is something else, then stop making record. If
'the record is a full address when stopped, add it to the measure array,
'otherwise discard it.
state = 0
count = 0
For i = 1 To Len(originalText)
char = Mid(originalText, i, 1)
If IsAlpha(char) Or char = "$" Then
If state = 0 Then
aihio = char
If i > 1 Then
prevChar = Mid(originalText, i - 1, 1)
Else
'No previous character for the first letter. Here it's just A
prevChar = "A"
End If
state = 1
ElseIf state = 1 Then
aihio = aihio & char
ElseIf state = 2 Then
state = 0
measure(count) = aihio
count = count + 1
End If
ElseIf IsNumeric(char) And state > 0 Then
aihio = aihio & char
state = 2
'If formula ends in a cell address, the last character is a number.
If i = Len(originalText) Then
'If another sheet "!" or an array of cells ":" is referenced.
If prevChar = "!" Or prevChar = ":" Then
state = 0
Else
measure(count) = aihio
count = count + 1
End If
End If
ElseIf state = 2 Then
If prevChar = "!" Or prevChar = ":" Or char = ":" Then
state = 0
Else
state = 0
measure(count) = aihio
count = count + 1
End If
Else
state = 0
End If
Next
'************ END OF LISTING CELL ADDRESSES IN FORMULA *************'
'**** START OF REPLACING CELL ADDRESSES WITH THE NAMES OF THE MEASURES ****'
'For each name of measure in measure array
For i = 0 To count - 1
Set rE = ActiveSheet.Range(Replace(measure(i), "$", ""))
'If the cell of the measure is not empty
If Not IsEmpty(rE.Value) Then
'Get name of the measure
measureText = ActiveSheet.Cells(rE.Row, CN).Value
If measureText = "" Then
'Forgot to name the measure in the column of measure names?
measureText = "?"
Else
'For each character in name of the measure
For ii = 1 To Len(measureText)
'If the character in the name of the measure in the cell is subscript
If ActiveSheet.Cells(rE.Row, CN).Characters(ii, 1).Font.Subscript Then
'Add markings for subscript
measureText = Left(measureText, ii - 1) _
& "_(" & Right(measureText, Len(measureText) - ii + 1) & ")"
'Break the For loop when the objective is accomplished
Exit For
End If
Next
End If
'Replace addresses in the formula string with the name of the measure
originalText = Replace(originalText, measure(i), measureText)
End If
Next
'**** END OF REPLACING CELL ADDRESSES WITH THE NAMES OF THE MEASURES ****'
'The Identification of the calculation is added to the equation string
originalText = ActiveSheet.Cells(rowOfItemNames, colNum).Value _
& ":" & originalText
'Adds the start of the command to the command linestring
stringToRun = "MyEquation.DrawingObject.Text = " & outputString(originalText)
'Here the subroutine to write, execute and delete a new module is called.
ExecuteString stringToRun
Exit Sub
ErrorExit:
Exit Sub
ErrorHandler:
Debug.Print Err.Number & vbNewLine & Err.Description
Resume ErrorExit
End Sub
Function IsAlpha(s$) As Boolean
'This function returns true if the input character (String * 1) is alphabetic.
'Otherwise it retuns false. Copied from
'https://stackoverflow.com/questions/29633517/how-
'can-i-check-if-a-string-only-contains-letters
IsAlpha = Not s Like "*[!a-zA-Z]*"
End Function
Function outputString(inputString$) As String
On Error GoTo ErrorHandler
'If the text is taken from Cell as text, only the ASCII characters and
'markings are presented correctly. Others, symbols and such are presented
'by ?.'This function takes every character, weather ASCII or a Symbol, and
'gives it ChrW number. The output is a string of ChrW commands, that is
'readable by the Excel Equation Editor. This was copied from
'https://stackoverflow.com/questions/55478312/is-there-any-documentation-on-
'how-to-drive-the-office-equation-editor-through
Dim ChrIdx As Long
For ChrIdx = 1 To Len(inputString)
outputString = outputString & IIf(outputString <> vbNullString, " & ", "") _
& "ChrW(" & AscW(Mid$(inputString, ChrIdx, 1)) & ")"
Next ChrIdx
ErrorExit:
Exit Function
ErrorHandler:
Debug.Print Err.Number & vbNewLine & Err.Description
Resume ErrorExit
End Function
Sub ExecuteString(s As String)
On Error GoTo ErrorHandler
'This subroutine creates a new module, then runs the code from within, and
'then deletes the module after use. The Idea is, that because there are no
'direct vba commands to dynamically operate the Excel Equation Editor. The
'dynamic(using information in command that is not provided by the programmer)
'operation is made possible by automatically creating new module, writing
'new subroutines and the executing them. The codes here are copied and
'modified from the following sources:
'https://stackoverflow.com/questions/43216390/how-to-run-a-string-as-a-
'command-in-vba
'https://stackoverflow.com/questions/55478312/is-there-any-documentation-on-
'how-to-drive-the-office-equation-editor-through
'The Excel Equation Manager takes input as it is evoked from a list of ChrW
'commands. It is propably possible somehow to give the command as combination
'of ASCII tect and ChrW commands just to make the command string shorter.
Dim code As String
code = "Option Explicit" & vbCrLf
code = code & "Sub foo()" & vbCrLf
code = code & "On Error GoTo ErrorHandler" & vbCrLf
code = code & "Dim MyEquation As Shape" & vbCrLf
code = code & "Set MyEquation = ActiveSheet.Shapes(1)" & vbCrLf
code = code & "MakeEquationLinear MyEquation" & vbCrLf
code = code & "Application.EnableEvents = False" & vbCrLf
Dim i As Long
Dim ii As Long
'**** START OF SPLITTING THE COMMAND STRING TO LINES < 1024 CHAR ****'
i = IIf(1000 < Len(s), 1000, Len(s)) 'IIf() = Min(1000,Len(s))
ii = 1
While i <= Len(s)
If Mid(s, i, 1) = " " Then
code = code & Mid(s, ii, i - ii + 1) & "_" & vbCrLf
ii = i + 1
'If Min() was available in VBA: IIf() = Min(999,Len(s)-i-1)
i = i + IIf(999 < Len(s) - i - 1, 999, Len(s) - i - 1)
ElseIf i = Len(s) Then
code = code & Mid(s, ii, i - ii + 1) & vbCrLf
End If
i = i + 1
Wend
'**** END OF SPLITTING THE COMMAND STRING TO LINES < 1024 CHAR ****'
code = code & "Application.EnableEvents = True" & vbCrLf
code = code & "MakeEquationProfessional MyEquation" & vbCrLf
code = code & "ErrorExit:" & vbCrLf
code = code & " Application.EnableEvents = True" & vbCrLf
code = code & " Exit Sub" & vbCrLf
code = code & "ErrorHandler:" & vbCrLf
code = code & "Debug.Print Err.Number & vbNewLine & Err.Description" & vbCrLf
code = code & "Resume ErrorExit" & vbCrLf
code = code & "End Sub" & vbCrLf
Dim suba As String
suba = "Public Sub MakeEquationLinear(ByVal Equation As Shape)" & vbCrLf
suba = suba & "On Error GoTo ErrorHandler" & vbCrLf
suba = suba & "Dim OriginalSheet As Object" & vbCrLf
suba = suba & "If Equation.Parent.Name <> ActiveSheet.Name Then" & vbCrLf
suba = suba & " Set OriginalSheet = ActiveSheet" & vbCrLf
suba = suba & " Equation.Parent.Activate" & vbCrLf
suba = suba & "End If" & vbCrLf
suba = suba & "Application.EnableEvents = False" & vbCrLf
suba = suba & "Equation.Select" & vbCrLf
suba = suba & "Application.CommandBars.ExecuteMso ""EquationLinearFormat""" _
& vbCrLf
suba = suba & "Application.EnableEvents = True" & vbCrLf
suba = suba & "If Not OriginalSheet Is Nothing Then OriginalSheet.Activate" _
& vbCrLf
suba = suba & "ErrorExit:" & vbCrLf
suba = suba & " Application.EnableEvents = True" & vbCrLf
suba = suba & " Exit Sub" & vbCrLf
suba = suba & "ErrorHandler:" & vbCrLf
suba = suba & " Debug.Print Err.Number & vbNewLine & Err.Description" _
& vbCrLf
suba = suba & " Resume ErrorExit" & vbCrLf
suba = suba & "End Sub" & vbCrLf
Dim subb As String
subb = "Public Sub MakeEquationProfessional(ByVal Equation As Shape)" & vbCrLf
subb = subb & "On Error GoTo ErrorHandler" & vbCrLf
subb = subb & "Dim OriginalSheet As Object" & vbCrLf
subb = subb & "If Equation.Parent.Name <> ActiveSheet.Name Then" & vbCrLf
subb = subb & "Set OriginalSheet = ActiveSheet" & vbCrLf
subb = subb & "Equation.Parent.Activate" & vbCrLf
subb = subb & "End If" & vbCrLf
subb = subb & "Application.EnableEvents = False" & vbCrLf
subb = subb & "Equation.Select" & vbCrLf
subb = subb & "Application.CommandBars.ExecuteMso ""EquationProfessional""" _
& vbCrLf
subb = subb & "Application.EnableEvents = True" & vbCrLf
subb = subb & "If Not OriginalSheet Is Nothing Then OriginalSheet.Activate" _
& vbCrLf
subb = subb & "ErrorExit:" & vbCrLf
subb = subb & " Application.EnableEvents = True" & vbCrLf
subb = subb & " Exit Sub" & vbCrLf
subb = subb & "ErrorHandler:" & vbCrLf
subb = subb & " Debug.Print Err.Number & vbNewLine & Err.Description" _
& vbCrLf
subb = subb & " Resume ErrorExit" & vbCrLf
subb = subb & "End Sub" & vbCrLf
Dim tempVBC As Object
Set tempVBC = ActiveWorkbook.VBProject.VBComponents.Add(1)
tempVBC.CodeModule.AddFromString code
tempVBC.CodeModule.AddFromString suba
tempVBC.CodeModule.AddFromString subb
Application.Run tempVBC.Name & ".foo"
ThisWorkbook.VBProject.VBComponents.Remove tempVBC
ErrorExit:
Exit Sub
ErrorHandler:
Debug.Print Err.Number & vbNewLine & Err.Description
Resume ErrorExit
End Sub
In the code you can edit the following lines to match the column and row on your sheet:
columnOfMeasureNames = "C"
rowOfItemNames = 8
Result:
I am a Professional Digital marketer Apple podcast promotion, Spotify promotion and Youtube Expert. I am highly experienced and skilled in podcast promotion services since 2018. Value of my expertise is the success of your podcast marketing. If you want to grow your Podcast Top Ranking and audiences downloads and higher placement I'm here to give you the best version of podcast marketing services. I have developed strategy and a team for podcast promotion services. The strategy will ensure to grow your listeners' downloads, audience response and popularity growth on multiple platforms.
My service is 100% safe, real and legitimate. So I would say check me at least once time. I'm sure you'll succeed.
Contact me here:-
Gmail: [email protected]
Have the same exact question, curious to see if this is intended simulator behavior or just a version specific quirk!
Im probably just occasionally stumble into explanation of this situation while was reserching yet another annoying unavoidable problem with Deno. In this article was mentioned that symbol #
is used to provide hashing mechanism for the import
. So my guess is that Deno treat everything that is following after #
symbol inside a path of some imported file as hash and by that searching for a trimmed version of used path despite showing the full path in the error message. All other symbols from ASCII table except #
seems to be safe for use in file names. I guess.
From the error, I figured not everything was sent when I called request_response.send_response()
.
To fix this I had to set the max request size and response size when defining the request_reponse Behaviour
so it can accept and send larger files.
let codec = cbor::codec::Codec::default()
.set_request_size_maximum(u64::MAX) // specify max file size
.set_response_size_maximum(u64::MAX);
let request_response = request_response::cbor::Behaviour::with_codec(
codec,
[(
StreamProtocol::new("/file-exchange/1"),
ProtocolSupport::Full,
)],
request_response::Config::default(),
);
The ternary tuple in such case is (1 market, 1 department, 1..* products). Therefore, the resulting reading logic (also in terms of tuples) is:
For each 1 market: (1 department, 1..* products)
For each 1 department: (1 market, 1..* products)
For each 1..* product(s): (1 market, 1 department)
If a department sells products to market, then a market buys products (from department) and they (e.g.) operate on 1..* product(s). Hence:
For each 1 market:
For each 1 department:
For each 1..* product(s):
1 department operates 1 market [to sell that/those 1..* product(s)]; or
1 market is operated by 1 department [to buy that/those 1..* product(s))
It seems you have created and started the loop, but your transport hasn't started. Maybe that is why it doesn't enter your callback
I see multiple options, but in my case due to proxy I was facing this issue, most of company needs proxy, as per your org setup here:
File>>Settings>>Search for "HTTP Proxy"
PyPDF2 is deprecated. You should use pypdf instead.
If you must use PyPDF2, you can pip install 'PyPDF2<3.0'
in your environment.
Turns out this is an actual bug in 4.32.0: github.com/liquibase/liquibase/issues/6982
Temp workaround is to downgrade to 4.31.0.
Thanks to @mario-champion for posting about it in the comments below!
It says it here in the error message
PyPDF2.errors.DeprecationError: PdfFileReader is deprecated and was removed in PyPDF2 3.0.0. Use PdfReader instead.
So you need to:
pip install PdfReader
remove PyPDF2
import PdfReader
When you start dragging a window’s title bar to move it or adjust its size by dragging its border, your program first receives a WM_ENTERSIZEMOVE
message. This message simply notifies you that dragging is about to begin. Subsequently, a WM_SYSCOMMAND
message arrives, where the wParam
value determines the action type. You’ll use switch (GET_SC_WPARAM(wParam))
to handle it. When the switch hits case SC_MOVE:
or case SC_SIZE:
, it indicates that the system is entering drag mode. If you directly forward this message to DefWindowProc()
, it blocks by starting its own internal message loop, handling mouse movements, window resizing, and other complex operations internally. When you release the mouse, DefWindowProc()
returns 0
, ending the blocking. Finally, it sends a WM_EXITSIZEMOVE
message to notify you that drag mode has ended.
For scenarios like game development, video player implementations, etc.—where you cannot rely on blocking-style GetMessage()
loops with timers (Timer
callbacks) and must avoid blocking during message processing (e.g., DefWindowProc()
blocking)—yet still need to support window dragging and resizing, here’s a workaround technique to interrupt and recover from blocking.
First, my window message handler is non-blocking. It’s named PollWindowEvents()
and is called repeatedly by the user’s main loop. The caller handles its own tasks (e.g., rendering dynamic content) and then invokes PollWindowEvents()
to process window messages, check keyboard inputs, etc. Similar to GLFW’s design, as long as PollWindowEvents()
doesn’t block, the caller’s loop keeps running.
The logic of PollWindowEvents()
roughly looks like this:
while (PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
if (msg.message == WM_QUIT)
{
w->should_quit = 1;
w->exit_code = (int)msg.wParam;
}
else
{
DispatchMessageW(&msg);
}
}
During window dragging, although DefWindowProc()
blocks, timer events (WM_TIMER
) still reach your window procedure. Additionally, WM_MOVE
, WM_SIZE
, and WM_SIZING
messages are delivered frequently during drag/resize operations.
If within these messages, I can break out of DefWindowProc()
’s context and make PollWindowEvents()
return, blocking is resolved. On the next call to PollWindowEvents()
, I jump back into the message handler as if nothing happened, resuming DefWindowProc()
’s drag logic to complete the cycle.
Achieving this jump requires setjmp()
and longjmp()
from the C standard library. Unfortunately, they’re problematic here. MSVC’s longjmp()
enforces RAII resource cleanup rules in C++ and handles uncaught exceptions. It assumes longjmp()
is a non-returning operation, requiring all stack resources and exceptions to be resolved before jumping. This "safety" conflicts with our need, where jumping back into the context later shouldn’t disrupt normal RAII or exception handling.
Jumping is only part of the problem. The blocking DefWindowProc()
uses its stack frame, while returning from PollWindowEvents()
lets the caller use its stack frame. If we longjmp()
out (which restores the stack pointer to the setjmp()
state), two stack frames are used simultaneously—leading to data corruption and stack overwrites. Thus, we need two separate stacks.
longjmp()
: Bypass MSVC’s extra safety checks using custom shellcode._aligned_malloc()
to allocate a 16-byte aligned memory block as the new stack.jmp_to_new_stack()
, which does three things:
my_longjmp()
to return from the new stack to the old stack’s setjmp()
position.Why my_longjmp()
instead of restoring the old stack pointer directly? Because both stacks are active; the original stack pointer becomes invalid after leaving its context.
Setting jump targets:
PollWindowEvents()
(before PeekMessageW
), use setjmp()
to set a "re-entry point" for resuming blocked operations.PollWindowEvents()
(after the PeekMessageW
loop), use setjmp()
to set an "escape point" for breaking out of blocking.WM_TIMER
/WM_MOVE
/WM_SIZE
handlers, use setjmp()
to set "re-entry points" for jumping back into the blocking function.Entering blocking mode:
WM_SYSCOMMAND
handler (for SC_MOVE
/SC_SIZE
), create a timer, allocate the new stack, then call jmp_to_new_stack()
. The provided callback invokes:DefWindowProcW(w->Window, WM_SYSCOMMAND, wParam, 0); // Enters blocking
Escaping blocking mode:
WM_TIMER
/WM_MOVE
/WM_SIZE
handlers (executing on the new stack), use my_longjmp()
to jump to the "escape point" at PollWindowEvents()
’s end—returning control to the caller.Re-entry logic:
PollWindowEvents()
call detects the interrupted state and uses my_longjmp()
to jump back to the handler’s "re-entry point."Exiting blocking mode:
DefWindowProcW()
returns (after drag ends), use my_longjmp()
to jump to PollWindowEvents()
’s start, letting normal message processing resume._my_longjmp()
__declspec(noreturn)
void _my_longjmp(jmp_buf jb, int value)
{
#ifdef _M_IX86
static const uint32_t shellcode_my_longjmp[] =
{
0x0424548B,
0x0824448B,
0x8301F883,
0x2A8B00D0,
0x8B045A8B,
0x728B087A,
0x10628B0C,
0xFF04C483,
0x90901462,
};
#elif defined(_M_X64)
static const uint64_t shellcode_my_longjmp[] =
{
0x4808598B48D08948,
0x4818698B4810618B,
0x4C28798B4820718B,
0x4C38698B4C30618B,
0x0F48798B4C40718B,
0x5C69D9E2DB5851AE,
0x6F0F6660716F0F66,
0x80816F0F44667079,
0x896F0F4466000000,
0x6F0F446600000090,
0x0F4466000000A091,
0x4466000000B0996F,
0x66000000C0A16F0F,
0x000000D0A96F0F44,
0x0000E0B16F0F4466,
0x00F0B96F0F446600,
0x9090905061FF0000,
};
#else
// If your computer is not x86 nor x64, implement your own `longjmp()` shellcode for your CPU.
longjmp(jb, value);
#endif
static DWORD dwOldProtect = 0;
if (!dwOldProtect) VirtualProtect((void *)shellcode_my_longjmp, sizeof shellcode_my_longjmp, PAGE_EXECUTE_READ, &dwOldProtect);
void(*my_longjmp)(jmp_buf jb, int value) = (void *)shellcode_my_longjmp;
my_longjmp(jb, value);
}
_jmp_to_new_stack()
__declspec(noreturn)
void _jmp_to_new_stack(void *stack_buffer, size_t stack_size, void(*function_to_run)(void *userdata), void *userdata, jmp_buf returning, int longjmp_val)
{
#ifdef _M_IX86
static const uint32_t shellcode_jmp_to_new_stack[] =
{
0x608be089,
0x08600304,
0xff1870ff,
0x70ff1470,
0x0c50ff10,
0x6804c483,
0xdeadbeef,
0x909002eb,
0x0424548b,
0x0824448b,
0x8301f883,
0x2a8b00d0,
0x8b045a8b,
0x728b087a,
0x10628b0c,
0xff04c483,
0x90901462,
};
#elif defined(_M_X64)
static const uint64_t shellcode_jmp_to_new_stack[] =
{
0x0148cc8948e08948,
0x4c2870ff3070ffd4,
0xff4120ec8348c989,
0xeb5a5920c48348d0,
0x9090909090909007,
0x4808598b48d08948,
0x4818698b4810618b,
0x4c28798b4820718b,
0x4c38698b4c30618b,
0x0f48798b4c40718b,
0x5c69d9e2db5851ae,
0x6f0f6660716f0f66,
0x80816f0f44667079,
0x896f0f4466000000,
0x6f0f446600000090,
0x0f4466000000a091,
0x4466000000b0996f,
0x66000000c0a16f0f,
0x000000d0a96f0f44,
0x0000e0b16f0f4466,
0x00f0b96f0f446600,
0x9090905061ff0000,
};
#else
fprintf(stderr, "[UNIMPLEMENTED] Please provide your shellcode for your CPU to implement `jmp_to_new_stack()` by doing these steps:\n");
fprintf(stderr, "[UNIMPLEMENTED] Save your current stack pointer register to a volatile register whichever you'd like to use, the volatile register stores your original stack pointer and could help you to retrieve your parameters;\n");
fprintf(stderr, "[UNIMPLEMENTED] Set your stack pointer register to the end of my stack buffer: `(size_t)stack_buffer + stack_size`;\n");
fprintf(stderr, "[UNIMPLEMENTED] After moving to the new stack, save your 5th and 6th paramters to the new stack;\n");
fprintf(stderr, "[UNIMPLEMENTED] Retrieve your 4th parameter `userdata` from the original stack (using the saved stack pointer in the volatile register);\n");
fprintf(stderr, "[UNIMPLEMENTED] Your 3rd parameter is a pointer to a callback function (the function to run on the new stack). Call it and pass `userdata`. NOTE: This function will destroy your volatile register as usual occasion;\n");
fprintf(stderr, "[UNIMPLEMENTED] After calling the function, balance your stack;\n");
fprintf(stderr, "[UNIMPLEMENTED] Retrieve your 5th (`jmp_buf`) and 6th (`longjmp_value`) parameters from where you saved them on the new stack, these parameters are for returning to your previous stack via a `longjmp()`;\n");
fprintf(stderr, "[UNIMPLEMENTED] IMPORTANT: Both stacks are actively changing, do not attempt to restore the stack pointer directly;\n");
fprintf(stderr, "[UNIMPLEMENTED] Implement and execute a `longjmp(jmp_buf, longjmp_value)` to return to the original stack\n");
assert(0);
#endif
static DWORD dwOldProtect = 0;
if (!dwOldProtect) VirtualProtect((void *)shellcode_jmp_to_new_stack, sizeof shellcode_jmp_to_new_stack, PAGE_EXECUTE_READ, &dwOldProtect);
void(*jmp_to_new_stack)(void *, size_t, void(*)(void *), void *, jmp_buf, int) = (void *)shellcode_jmp_to_new_stack;
jmp_to_new_stack(stack_buffer, stack_size, function_to_run, userdata, returning, longjmp_val);
}
The arrays contain shellcode (machine code) for context switching. Implementations:
x86 my_longjmp
:
bits 32
;void my_longjmp(jmp_buf jb, int value);
my_longjmp:
mov edx, [esp + 4]
mov eax, [esp + 8]
cmp eax, 1
adc eax, 0
mov ebp, [edx + 0]
mov ebx, [edx + 4]
mov edi, [edx + 8]
mov esi, [edx + 12]
mov esp, [edx + 16]
add esp, 4
jmp [edx + 20]
times 4 - ($ - $$ & 3) nop ; Alignment
x64 my_longjmp
:
bits 64
;void my_longjmp(jmp_buf jb, int value);
my_longjmp:
mov rax, rdx
mov rbx, [rcx + 0x08]
mov rsp, [rcx + 0x10]
mov rbp, [rcx + 0x18]
mov rsi, [rcx + 0x20]
mov rdi, [rcx + 0x28]
mov r12, [rcx + 0x30]
mov r13, [rcx + 0x38]
mov r14, [rcx + 0x40]
mov r15, [rcx + 0x48]
;rip = [rcx + 0x50]
ldmxcsr [rcx + 0x58]
fnclex
fldcw [rcx + 0x5C]
movdqa xmm6, [rcx + 0x60]
movdqa xmm7, [rcx + 0x70]
movdqa xmm8, [rcx + 0x80]
movdqa xmm9, [rcx + 0x90]
movdqa xmm10, [rcx + 0xA0]
movdqa xmm11, [rcx + 0xB0]
movdqa xmm12, [rcx + 0xC0]
movdqa xmm13, [rcx + 0xD0]
movdqa xmm14, [rcx + 0xE0]
movdqa xmm15, [rcx + 0xF0]
jmp [rcx + 0x50]
times 8 - ($ - $$ & 7) nop ; Alignment
x86 jmp_to_new_stack
:
bits 32
;void jmp_to_new_stack(void *stack_buffer, size_t stack_size, void(*function_to_run)(void *userdata), void *userdata, jmp_buf returning, int longjmp_value);
jmp_to_new_stack:
mov eax, esp ; Save old ESP
mov esp, [eax + 4] ; Set ESP = stack_buffer
add esp, [eax + 8] ; ESP = stack_buffer + stack_size
; Set up args for callback & my_longjmp
push dword [eax + 24] ; longjmp_val
push dword [eax + 20] ; returning jmp_buf
push dword [eax + 16] ; userdata
call dword [eax + 12] ; Call func(userdata) on new stack
add esp, 4 ; Cleanup
push dword 0xDEADBEEF ; There should be a returning address, but we don't return this way.
jmp my_longjmp
times 4 - ($ - $$ & 3) nop ; Alignment
%include "x86_my_longjmp.asm"
x64 jmp_to_new_stack
bits 64
;void jmp_to_new_stack(void *stack_buffer, size_t stack_size, void(*function_to_run)(void *userdata), void *userdata, jmp_buf returning, int longjmp_value);
jmp_to_new_stack:
mov rax, rsp ; Save old RSP
mov rsp, rcx ; Set RSP = stack_buffer
add rsp, rdx ; RSP = stack_buffer + stack_size
push qword [rax + 48] ; longjmp_val
push qword [rax + 40] ; returning jmp_buf
mov rcx, r9 ; userdata
sub rsp, 32 ; x64 call needs to pre-allocate stack memory for 4 parameters for the home of RCX, RDX, R8, R9
call r8 ; Call func(userdata) on new stack
add rsp, 32 ; Cleanup
pop rcx ; Retrieve longjmp_val
pop rdx ; Retrieve returning jmp_buf
jmp my_longjmp
times 8 - ($ - $$ & 7) nop ; Alignment
%include "x64_my_longjmp.asm"
State Tracking Structure:
typedef struct
{
void *new_stack; // Allocated stack memory
size_t new_stack_size; // Stack size
volatile int hack_is_on; // 1 if in blocking escape mode
volatile int is_returned_from_timer; // Flag for escaped state
WPARAM syscommand_wparam; // Saved WM_SYSCOMMAND param
jmp_buf jb_returning; // Escape point (Poll end)
jmp_buf jb_reentering; // Re-entry point (handlers)
jmp_buf jb_exit_hacking; // Exit point (blocking ends)
}HackWayAntiBlocking;
Code to be added into PollWindowEvents()
before PeekMessage()
:
if (setjmp(w->hack.jb_exit_hacking) == 1)
{ // After blocking ends (DefWindowProc returns)
KillTimer(w->Window, 1);
w->hack.hack_is_on = 0;
}
if (w->hack.hack_is_on)
{ // Re-enter blocked context if needed
if (w->hack.is_returned_from_timer)
_my_longjmp(w->hack.jb_reentering, 1);
}
Code to be added into PollWindowEvents()
before returning:
if (setjmp(w->hack.jb_returning) == 1)
{ // Escape from the blocked call
return;
}
WndProc
Handler Additions:
WM_SYSCOMMAND
:case WM_SYSCOMMAND:
switch (GET_SC_WPARAM(wp))
{
case SC_MOVE:
case SC_SIZE:
w = (void *)GetWindowLongPtrW(hWnd, 0);
assert(w->hack_is_on == 0);
w->hack.syscommand_wparam = wp;
if (!w->hack.new_stack)
{ // Allocate memory for the new stack, 64 KiB is not too much or too less
w->hack.new_stack_size = (size_t)1 << 16;
w->hack.new_stack = _aligned_malloc(w->hack.new_stack_size, 16);
}
if (w->hack.new_stack)
{ // From here, we are going to switch to the new stack and call the blocking function.
w->hack.hack_is_on = 1;
// Start timer. When blocking, our `WndProc()` still can receive `WM_TIMER` event.
SetTimer(w->Window, 1, 1, NULL);
_jmp_to_new_stack(w->hack.new_stack, w->hack.new_stack_size, _run_blocking_proc, w, w->hack.jb_exit_hacking, 1);
}
else
{ // Can't allocate memory for the new stack? Give up here.
w->hack.new_stack_size = 0;
}
break;
default:
return DefWindowProcW(hWnd, msg, wp, lp);
}
break;
WM_TIMER
/WM_MOVE
/WM_SIZE
:case WM_MOVE:
case WM_SIZING:
case WM_SIZE:
case WM_TIMER:
if (msg != WM_TIMER || wp == 1)
{
w = (void *)GetWindowLongPtrW(hWnd, 0);
if (w->hack.hack_is_on)
{
int j = setjmp(w->hack.jb_reentering); // Set re-entry point and escape blocking
switch (j)
{
case 0:
// Escape blocking
w->hack.is_returned_from_timer = 1;
_my_longjmp(w->hack.jb_returning, 1);
break;
case 1:
// Re-entry to here
break;
default:
assert(0);
}
w->hack.is_returned_from_timer = 0;
}
}
break;
_run_blocking_proc()
:// Callback running on the new stack
void _run_blocking_proc(WindowsDemoGuts *w)
{ // Blocks here
DefWindowProcW(w->Window, WM_SYSCOMMAND, w->hack.syscommand_wparam, 0);
}
Cleanup:
_aligned_free(w->hack.new_stack);
w->hack.new_stack = 0;
w->hack.new_stack_size = 0;
With these modifications, dragging/resizing a window won’t block PollWindowEvents()
—it returns immediately—allowing the caller’s loop to maintain smooth rendering and audio playback.
Complete source code:
C/C++ compilers are designed to turn C/C++ into machine code.
They are not designed to check your code for logic errors.
Checking your code for logic errors would greatly increase compile time. Its also a really, really hard problem for a computer to solve. Checking your code for type errors is easy.
Update the Chrome to latest version (137.0.7151.104) have solved the problem for me. It will no longer close the chrome when debugging is stopped from Visual Studio after this update.
REF: https://www.reddit.com/r/VisualStudio/comments/1l52ssj/bug_stop_debugging_closes_all_browserstabs/
I have a similar error, Importbuddy offers option to wipe all tables before start so used that.
No way of knowing what files in public_HTML might be a problem but when I do it the script never ends I just get the spinning thing top right.
Status logs don't give much of a clue
The website gives this status message
Site undergoing maintenance.Site undergoing maintenance.
It would be interesting to know how to disable and see if the site loads.
From Rust 1.88.0 onwards (releasing in late June 2025) you can just do #[cfg(true)] or #[cfg(false)]
See https://releases.rs/docs/1.88.0/ or https://github.com/rust-lang/rust/issues/131204
One very important thing to note. If your acm domain starts like api.yourdomain.com, make sure to provide 'api' in all the CAA records you create for amazon. If you dont do this, you will get CAA error
Here is one approach that reuses the array in every call of rng.standard_normal
:
import numpy as np
rng = np.random.default_rng()
size = 1000
arr = np.empty(size)
rng.standard_normal(size, out=arr)
this is achieved using TabView
and role: .search
like this:
Tab("Search", systemImage: "magnifyingglass", role: .search) {
...
}
I have the springdoc in my application that generates swagger using the default url http://localhost:8090/swagger-ui/index.html
If your app is listening on port 8090 inside the container then you need to map the host port to 8090 in your compose file e.g.:
ports:
- '8090:8090'
I was looking for this today, and here's what I found:
This is something that is configured on a per institution basis - there is a configuration that they can choose to set for showing full RDC account numbers - if yes, you will see the full, unmasked, account number.
You are correct. I use Union All when I have used a Conditional Split to divvy up the data for filling in columns, for example, and then bringing them back together. I also use it for when I have log outputs from multiple tasks and I want to pull them together before inserting into a log table.
Found the answer. Leaving it here if anyone finds helpful:
{
"name": "highestSales",
"update": "extent( pluck( data( 'dataset' ), 'Sales Total' ))[1]"
}
The pluck
function returns a column as an array, and the extent
function returns an array containing the minimum and the maximum of the given array.
Sharing a simple neat solution to this, especially if you are using a third party tree pack and don't want to edit a lot of fbx origins; simply set the y coordinate of all the child LOD0-N game objects in the tree prefab to something like -0.2. All terrain tree instances will immediately pick this up so you can tweak the y value and watch the affect until it looks embedded in the terrain.
Dude I'm facing the exact same issue and i thought it was regional but it's not and from a few YT videos which have been posted in the last 6-8 months, this works, so idk i think its a very recent issue, let me know if you find a fix i've been struggling to do this
mongodb+srv://<db_usernam>:<db_password>@<projectname>.xbygdv0.mongodb.net/?retryWrites=true&w=majority&appName=<projectname>
or go to your clusters tab and select your DB > connect > Drivers > in steps (View full code sample) then copy and use the full uri and try to connect with prisma
I tried to move this statement , <script src="script.js"></script>outside the <head></head> section from your index.html file. It works perfectly.
<html>
<head><!--<script src="script.js"></script>--></head>
<body>
</body>
<script src="script.js"></script>
</html>
you can query via projection see https://www.baeldung.com/spring-data-jpa-projections
Did you consider: typeof(SomeTestClass).Assembly
?