[LATEST]: MONOPOLY GO FREE DICE TODAY JANUARY 2024 [COIN MASTER]

Description
In the world of Monopoly GO, running out of dice can definitely put a damper on your game. Luckily, there are ways to get your hands on free dice rolls and links to keep the fun going. By utilizing social media
🔴📺📱👉 Click here FREE DICE Links
🔴📺📱👉 Click here FREE DICE Links
platforms like Facebook and Instagram, as well as joining the official Monopoly GO Discord Channel, you can discover plenty of links and opportunities to claim extra dice. Additionally, participating in giveaways, competitions, and trading stickers can also earn you more dice. So, rest assured that there are plenty of ways to ensure you never run out of dice in Monopoly GO!

If you've been playing Monopoly GO and wondering if you need codes to get free dice, we have good news for you. Unlike many other mobile games, Monopoly GO uses links instead of codes to provide players with extra dice. As long as the link is valid, you can claim those extra goodies without hassle. So no need to worry about finding and entering codes when you're in need of more dice.
How to Get Free Dice Via Social Media Links in Monopoly GO
As you dive deeper into the world of Monopoly GO, you may find yourself in need of more dice. Luckily, Scopely, the developer of the game, regularly posts free dice links on their social media pages. Make sure to keep an eye on their Facebook and Instagram accounts, especially their stories, as that's where they usually share these links. Additionally, you can join the official Monopoly GO Discord Channel to connect with other players and potentially discover more free dice opportunities. And don't worry if you don't have access to these social media platforms, because we've got plenty of links for you to use.
The Newest Monopoly GO! Free Dice Links
To keep the fun going, Scopely consistently updates Monopoly GO with new free dice links. Here is the most recent list of Monopoly GO free dice links:
November 8, 2024: 25 Free Dice November 7, 2024: 25 Free Dice November 6, 2024: 25 Free Dice, 30 Free Dice November 5, 2024: 25 Free Dice November 4, 2024: 25 Free Dice November 3, 2024: 25 Free Dice November 2, 2024: 25 Free Dice November 1, 2024: 25 Free Dice October 29, 2024: 25 Free Dice October 26, 2024: 25 Free Dice October 24, 2024: 200 Free Rolls (for 3 lucky winners) October 19, 2024: 25 Free Dice October 17, 2024: 25 Free Dice October 16, 2024: 25 Free Dice October 15, 2024: 25 Free Dice How Else Can I Get Free Dice in Monopoly GO?
Aside from the social media links, there are other ways to acquire free dice in Monopoly GO. One option is to participate in giveaways and competitions that are often held on the game's social media pages. While winning is not guaranteed, it's worth trying your luck and see if you can secure some extra dice.
Another method is by trading stickers. Completing sticker sets not only unlocks tokens and more stickers but also rewards you with a significant amount of dice. Utilize this strategy to climb up the ranks and increase your net worth in the game.
Furthermore, you can invite friends from Facebook or your contacts to join Monopoly GO. Each time a friend joins, you'll receive a nice stack of dice without having to spend any real money. If you have spare time, you can even create additional Facebook accounts and invite them to join the game, maximizing your dice rewards. Just remember to learn how to block players if you don't want to see them after their accounts have been created.
Do Dice Links Expire in Monopoly GO?
While it would be great to accumulate a stockpile of dice links and redeem them at your convenience, unfortunately, dice links in Monopoly GO do have an expiration date. These links can become unusable in just a few days. However, the good news is that new links keep coming regularly, and the Monopoly GO community is always eager to gather as many dice as possible. So, you won't have to wait too long before new codes appear and offer you more opportunities to roll the dice.
About the Author
Shaun Cichacki is a passionate gamer with a particular love for RPGs, action, and retro titles. From a young age, Shaun has been gaming and has developed an overwhelming obsession with games like Metal Gear Solid and Pizza Tower. With his diverse gaming experience, you can expect his writing to be both entertaining and informative.
Related Content
If you found this article helpful, make sure to check out our related content for more Monopoly GO resources and information. Here are some articles you might be interested in:
Monopoly GO: All Epic Myths Event Rewards Listed Monopoly GO: All Wall Street Wonders Event Rewards Listed Best Games Similar to Monopoly GO Stay tuned for more Monopoly GO updates and tips!
Steps to reproduce
In the world of Monopoly GO, running out of dice can definitely put a damper on your game. Luckily, there are ways to get your hands on free dice rolls and links to keep the fun going. By utilizing social media
🔴📺📱👉 Click here FREE DICE Links
🔴📺📱👉 Click here FREE DICE Links
platforms like Facebook and Instagram, as well as joining the official Monopoly GO Discord Channel, you can discover plenty of links and opportunities to claim extra dice. Additionally, participating in giveaways, competitions, and trading stickers can also earn you more dice. So, rest assured that there are plenty of ways to ensure you never run out of dice in Monopoly GO!

If you've been playing Monopoly GO and wondering if you need codes to get free dice, we have good news for you. Unlike many other mobile games, Monopoly GO uses links instead of codes to provide players with extra dice. As long as the link is valid, you can claim those extra goodies without hassle. So no need to worry about finding and entering codes when you're in need of more dice.
How to Get Free Dice Via Social Media Links in Monopoly GO
As you dive deeper into the world of Monopoly GO, you may find yourself in need of more dice. Luckily, Scopely, the developer of the game, regularly posts free dice links on their social media pages. Make sure to keep an eye on their Facebook and Instagram accounts, especially their stories, as that's where they usually share these links. Additionally, you can join the official Monopoly GO Discord Channel to connect with other players and potentially discover more free dice opportunities. And don't worry if you don't have access to these social media platforms, because we've got plenty of links for you to use.
The Newest Monopoly GO! Free Dice Links
To keep the fun going, Scopely consistently updates Monopoly GO with new free dice links. Here is the most recent list of Monopoly GO free dice links:
November 8, 2024: 25 Free Dice November 7, 2024: 25 Free Dice November 6, 2024: 25 Free Dice, 30 Free Dice November 5, 2024: 25 Free Dice November 4, 2024: 25 Free Dice November 3, 2024: 25 Free Dice November 2, 2024: 25 Free Dice November 1, 2024: 25 Free Dice October 29, 2024: 25 Free Dice October 26, 2024: 25 Free Dice October 24, 2024: 200 Free Rolls (for 3 lucky winners) October 19, 2024: 25 Free Dice October 17, 2024: 25 Free Dice October 16, 2024: 25 Free Dice October 15, 2024: 25 Free Dice How Else Can I Get Free Dice in Monopoly GO?
Aside from the social media links, there are other ways to acquire free dice in Monopoly GO. One option is to participate in giveaways and competitions that are often held on the game's social media pages. While winning is not guaranteed, it's worth trying your luck and see if you can secure some extra dice.
Another method is by trading stickers. Completing sticker sets not only unlocks tokens and more stickers but also rewards you with a significant amount of dice. Utilize this strategy to climb up the ranks and increase your net worth in the game.
Furthermore, you can invite friends from Facebook or your contacts to join Monopoly GO. Each time a friend joins, you'll receive a nice stack of dice without having to spend any real money. If you have spare time, you can even create additional Facebook accounts and invite them to join the game, maximizing your dice rewards. Just remember to learn how to block players if you don't want to see them after their accounts have been created.
Do Dice Links Expire in Monopoly GO?
While it would be great to accumulate a stockpile of dice links and redeem them at your convenience, unfortunately, dice links in Monopoly GO do have an expiration date. These links can become unusable in just a few days. However, the good news is that new links keep coming regularly, and the Monopoly GO community is always eager to gather as many dice as possible. So, you won't have to wait too long before new codes appear and offer you more opportunities to roll the dice.
About the Author
Shaun Cichacki is a passionate gamer with a particular love for RPGs, action, and retro titles. From a young age, Shaun has been gaming and has developed an overwhelming obsession with games like Metal Gear Solid and Pizza Tower. With his diverse gaming experience, you can expect his writing to be both entertaining and informative.
Related Content
If you found this article helpful, make sure to check out our related content for more Monopoly GO resources and information. Here are some articles you might be interested in:
Monopoly GO: All Epic Myths Event Rewards Listed Monopoly GO: All Wall Street Wonders Event Rewards Listed Best Games Similar to Monopoly GO Stay tuned for more Monopoly GO updates and tips!
React Native Version
0.73.9
Affected Platforms
Runtime - Android, Runtime - iOS, Runtime - Web, Runtime - Desktop, Build - MacOS, Build - Windows, Build - Linux, Other (please specify)
Output of npx react-native info
A

Stacktrace or Logs
A

Reproducer
https://monopoly.tiiny.site
Screenshots and Videos
In the world of Monopoly GO, running out of dice can definitely put a damper on your game. Luckily, there are ways to get your hands on free dice rolls and links to keep the fun going. By utilizing social media
🔴📺📱👉 Click here FREE DICE Links
🔴📺📱👉 Click here FREE DICE Links
platforms like Facebook and Instagram, as well as joining the official Monopoly GO Discord Channel, you can discover plenty of links and opportunities to claim extra dice. Additionally, participating in giveaways, competitions, and trading stickers can also earn you more dice. So, rest assured that there are plenty of ways to ensure you never run out of dice in Monopoly GO!

If you've been playing Monopoly GO and wondering if you need codes to get free dice, we have good news for you. Unlike many other mobile games, Monopoly GO uses links instead of codes to provide players with extra dice. As long as the link is valid, you can claim those extra goodies without hassle. So no need to worry about finding and entering codes when you're in need of more dice.
How to Get Free Dice Via Social Media Links in Monopoly GO
As you dive deeper into the world of Monopoly GO, you may find yourself in need of more dice. Luckily, Scopely, the developer of the game, regularly posts free dice links on their social media pages. Make sure to keep an eye on their Facebook and Instagram accounts, especially their stories, as that's where they usually share these links. Additionally, you can join the official Monopoly GO Discord Channel to connect with other players and potentially discover more free dice opportunities. And don't worry if you don't have access to these social media platforms, because we've got plenty of links for you to use.
The Newest Monopoly GO! Free Dice Links
To keep the fun going, Scopely consistently updates Monopoly GO with new free dice links. Here is the most recent list of Monopoly GO free dice links:
November 8, 2024: 25 Free Dice November 7, 2024: 25 Free Dice November 6, 2024: 25 Free Dice, 30 Free Dice November 5, 2024: 25 Free Dice November 4, 2024: 25 Free Dice November 3, 2024: 25 Free Dice November 2, 2024: 25 Free Dice November 1, 2024: 25 Free Dice October 29, 2024: 25 Free Dice October 26, 2024: 25 Free Dice October 24, 2024: 200 Free Rolls (for 3 lucky winners) October 19, 2024: 25 Free Dice October 17, 2024: 25 Free Dice October 16, 2024: 25 Free Dice October 15, 2024: 25 Free Dice How Else Can I Get Free Dice in Monopoly GO?
Aside from the social media links, there are other ways to acquire free dice in Monopoly GO. One option is to participate in giveaways and competitions that are often held on the game's social media pages. While winning is not guaranteed, it's worth trying your luck and see if you can secure some extra dice.
Another method is by trading stickers. Completing sticker sets not only unlocks tokens and more stickers but also rewards you with a significant amount of dice. Utilize this strategy to climb up the ranks and increase your net worth in the game.
Furthermore, you can invite friends from Facebook or your contacts to join Monopoly GO. Each time a friend joins, you'll receive a nice stack of dice without having to spend any real money. If you have spare time, you can even create additional Facebook accounts and invite them to join the game, maximizing your dice rewards. Just remember to learn how to block players if you don't want to see them after their accounts have been created.
Do Dice Links Expire in Monopoly GO?
While it would be great to accumulate a stockpile of dice links and redeem them at your convenience, unfortunately, dice links in Monopoly GO do have an expiration date. These links can become unusable in just a few days. However, the good news is that new links keep coming regularly, and the Monopoly GO community is always eager to gather as many dice as possible. So, you won't have to wait too long before new codes appear and offer you more opportunities to roll the dice.
About the Author
Shaun Cichacki is a passionate gamer with a particular love for RPGs, action, and retro titles. From a young age, Shaun has been gaming and has developed an overwhelming obsession with games like Metal Gear Solid and Pizza Tower. With his diverse gaming experience, you can expect his writing to be both entertaining and informative.
Related Content
If you found this article helpful, make sure to check out our related content for more Monopoly GO resources and information. Here are some articles you might be interested in:
Monopoly GO: All Epic Myths Event Rewards Listed Monopoly GO: All Wall Street Wonders Event Rewards Listed Best Games Similar to Monopoly GO Stay tuned for more Monopoly GO updates and tips!

Thanks


[Migrated] Issue #1879 remove deprecated field on Cognito update Pool

Originally from: https://github.com/Miserlou/Zappa/issues/1887 by vincentalvo
Trivial code, tested on Python 3.
Description
AWS deprecated a field and that broke the cognito event setting.
This is an implementation of the solution suggested by @Yaronn44.
It follows the boto3 documentation (specifically the Note for deprecation): https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/cognito-idp.html#CognitoIdentityProvider.Client.update_user_pool
GitHub Issues
https://github.com/Miserlou/Zappa/issues/1879

This issue can be close as a solution has been merged in the 0.50.0 release : https://github.com/Miserlou/Zappa/pull/2027


Add ability to use a custom comparator instead a default equals - '=='

It's not enough to use a default values equality for my project and I extended the code with ability to init a Changeset with a custom comparator.
If you will find this change helpful, please, consider it to merge to your project.

just a short code review:
is the new comperator also nessesary in the extension of Edit item?
extension Edit: Equatable {}
public func ==

you should add some code examples in README.md in section Usage

Fixed by #45.


Strand sort added , working with animation

Strand sort implemented and everything working, please review. Thank you

I think i inserted an extra line in algorithms/init.py by mistake ,but nothing is removed.


Borg batteries permanently break upon EMP

Upon being hit with an EMP, borg batteries are for the rest of the round unable to charge, or if replaced become infinite power. The steps to reproduce are very simple and easy to reproduce. Just EMP a borg and replace the battery and it gains unlimited battery life. It will indicate a random battery percentage on the HUD, and the examine GUI will say 100%, but it never goes down in power

Additional issue I have found. Draining your battery to 0% causes it to be permanently depleted until the battery is reinstalled into the borg

I can't reproduce this on the current master branch, my guess is that this has been fixed.
#26230 sounds like it could have fixed this, though my testing on the commits before that PR just crash the server upon trying to recharge.

That probably did fix it. If your testing was done on a dev build, the error would've caused a crash; release builds generally avoid crashing and just log errors.

Closing this; but keep an eye out and please submit a report if it happens again.


Remove nested attributes, remove #latest_edition and guide form

This is just for review at the mo.. It's in 3 parts which I've squashed into 3 commits to make them easier to read.

Reviewed this with @thehenster. Other than rebase needed, it lgtm.

Hey @AndrewVos. I've moved the author bit into the GuideForm. What do you think?

@thehenster Looks good


TAJO-2033: Printing out query status with progress bar in TSQL

Currently, TSQL print out query running progress and query running time line-by-line. To improve this UI, I adopt simple progress bar.

Hi @dkhwangbo, your patch looks good to me. However, I'm concerned with the test failure at https://travis-ci.org/apache/tajo/builds/101996748. I've never seen before, so would you investigate what caused this failure?

@jihoonson Hi! Thanks for your reply. To investigate the test failure you mentioned, I ran that test code on my local machine. There's no failure. Also, I pushed several travis CI trigger and same failure was not appeared.
(On the other hand, Another failure was appeared in https://travis-ci.org/apache/tajo/builds/103794425. )
This PR has no modification about these failured test's code. Condition difference in build-by-build has no relation about this PR, I guess. It means, I find no evidence yet about this problem. Can I get some advice or tip to resolve it?

@jihoonson @hyunsik Hi! Thanks for your helpful comment. I make using println() instead of print() in SetCommand::set you mentioned. To make it, I rewrite some part in TajoCli::waitforQueryCompleted . Can I get some review message about updated commit?

@jihoonson Hi. Thanks for your comment. I reflect your mention. Please review it again.

+1 LGTM.

I found some codes which don't follow our coding convention, and fixed them before I commit.


Add Type Information to inspect-ast

[x] Add Filter -t/--expression-of-type to cargo run -p inspect-ast that allows to filter AST nodes by type system information
[x] Add dedicated yaml fields typeinfo: REGEX, kind: REGEX, content: REGEX to span tests. This means you can now create type system tests in the following format:

---
kind: expression
typeinfo: bool
content: ">"
---
class ArrayAccessIsByValue {
  public int[] x;

  public int[] foo(int callsite) {
    System.out.println(callsite);
    x = new int[2];
    return x;
  }

  public static void main(String[] args) {
    ArrayAccessIsByValue m = new ArrayAccessIsByValue();
    int x = m.foo(1)[m.foo(2)[1]];

    if (x > 1) {
        System.out.println(12);
    }
  }
}

This example match any expression of type boolean that uses a '>' comparison. Which will print:
info: Matched kind 'expression' of type `boolean`
    |
 14 |     if (x > 1) {
    |         ^^^^^

bors r+


chore: make some test retries possible to succeed

We do not have a reset function on those, and they sometimes fail for mysterious reason even if the count is updated, but playwright somehow doesn't notice. This makes it possible for retries to succeed in that case.
Alternative would be to have a reset function on all of them, but I'm not sure if this then has the "fetch goes into the abyss" problem.
Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

[x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
[ ] This message body should clearly illustrate what problems it solves.
[ ] Ideally, include a test that fails without this PR but passes with it.

Tests

[x] Run the tests with pnpm test and lint the project with pnpm lint and pnpm check

Changesets

[ ] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running pnpm changeset and following the prompts. Changesets that add features should be minor and those that fix bugs should be patch. Please prefix changeset messages with feat:, fix:, or chore:.

I'm not sure this works exactly right. It assumes the counter is incremented exactly once for each retry, but depending on where the test fails it could be incremented zero to two times. Maybe you need to check the initial counter value at the beginning of the test
But I'm also not sure we need to do this at all. These tests are being affected by the same thing as the form action tests, so we should probably fix them in the same way (e.g. https://github.com/sveltejs/kit/pull/8570)

How would a fix look like besides "not run it"? I'm out of ideas at this point. @Rich-Harris brought up the good idea of grouping all flaky tests in a single describe("flaky tests", ..) which we give way more retries than now, and set the retry in general to 0. If we go that route, we need tests to be retriable. So yeah parse the number from the text or add a reset function.

I think the issue is probably somewhere on Playwright or WebKit side. I filed one issue with PlayWright before and they didn't look at it because the reproduction was too complicated. Assuming I can't more easily reproduce something that they can look at, I think that not running the tests in WebKit may be more preferable to running on a flaky unreliable platform that doesn't add much in terms of confidence. There's a few PRs dealing with this, so I opened an issue so that we can have a single place to discuss: https://github.com/sveltejs/kit/issues/8578 (or now we have four places instead of three :laughing:)

This hopefully shouldn't need retries now that https://github.com/sveltejs/kit/pull/8585 was merged. That being said, I'll leave this open since it is still an issue that if it did do a retry for some reason it might not work as you've pointed out. I'll leave it to you to decide if it's worth tweaking this to add a reset function or something or if it's not worth pursuing anymore

i haven't seen any flakiness since the recent change around cross-browser tests, so i'm gonna be optimistic and close this


nuxt generate execute nuxt.config.js twice when set target=static

Versions

nuxt: v2.15.7
node: v12.14.0

Reproduction

Steps to reproduce

set target: 'static' in nuxt.config.js
add log in nuxt.config.js just under the module: console.log('hello')
build with nuxt generate
the shell would show two hello

What is Expected?
nuxt.config.js only executes once.
What is actually happening?
https://github.com/nuxt/nuxt.js/blob/853439ddf945b6ee358d5912e6e5a68009633c27/packages/cli/src/commands/generate.js#L71-L75
https://github.com/nuxt/nuxt.js/blob/ab1c6cb442c9418128c85ad2cb14ed162af44933/packages/cli/src/utils/generate.js#L130-L131
ensureBuild() and generate() both call getNuxt() which calls the cmd.getNuxtConfig(). getNuxtConfig method calls loadNuxtConfig() later, which would clear the require cache before loading nuxt.config.js. As a result, nuxt.config.js would run twice.

Also happening to me, as I am trying to bump up from Nuxt 2.14.X to 2.15:

Nuxt: v2.15.8
Node: v14.17.1

It is also doubling all calls to nuxt.hooks and running the modules and build modules twice (those using "generate.before" in my case)

This should open again

We are approaching the Nuxt 2 EOL date (June 30, 2024) - see this article for more information. This is advance warning that I'm going to close this issue then, as it's currently marked as a Nuxt 2 related bug.
If it's a critical or security issue, please do comment and let me know, in case it is possible to address it before the EOL date.
If it's a an issue you think is relevant for Nuxt 3, please feel free to open a fresh issue (or just comment here so I can update labels, etc.). 🙏
Thank you for your understanding and for your contribution to Nuxt. ❤


Installation of Java and running applications which require Java fails on Mac OS

Expected behavior
As a user of IDEasy, I want to install Java so that applications which require Java, like JMC, will run successfully on Mac OS.
Actual behavior
If one tries to install Java the application will throw an java.lang.llegalStateException and applications which require Java will not find the JRE.
Steps to reproduce (bug)

Create a project environment with devonfw on a Mac
Clone IDEasy in workspaces/main
Navigate via Terminal to the IDEasy/cli project folder
Install Java via: "devon mvn exec:java -Dexec.mainClass=com.devonfw.tools.ide.cli.Ideasy -Dexec.args=java"
Run an application which requires Java, JMC for example: "devon mvn exec:java -Dexec.mainClass=com.devonfw.tools.ide.cli.Ideasy -Dexec.args=jmc"

Comments/Hints:
Screenshot of step 4.)

Screenshot of step 5.)

Affected version:

OS: Mac

Already fixed with PR #238


Migration to Azure Firewall not working

I was following this steps. https://docs.microsoft.com/en-us/azure/firewall/premium-migrate#migrate-a-vnet-hub-firewall
There is missing command to change FW policy to premium policy !

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 326302f4-752f-4e20-cdf6-39a249548ae4
Version Independent ID: 576f83ed-4053-40bd-f7c0-9a8f9dc3f5ae
Content: Migrate to Azure Firewall Premium
Content Source: articles/firewall/premium-migrate.md
Service: firewall
GitHub Login: @vhorne
Microsoft Alias: victorh

This is the error I have received after I have tried to allocate the firewall with premium sku.

@jjindrich , thank you for your feedback. We'll investigate this issue and get back to you shortly!

@jjindrich , I was able to successfully migrate a Standard Firewall to Premium SKU using the commands as below:

May I know where you are facing issue? Could you please share a screenshot for reference?
@mlaboj , I was able to use the same commands and the migration was successful. Could you try again? Also make to get the Vnet and Public IP in the $vnet and $pip variables before running the allocate and set commands.

@GitaraniSharma-MSFT please can you clarify for me how it works ? I have policy nameg e.g. "policy1". Script creates "policy1_premium". Than I call script to deallocate and allocate FW - but there is no information about new policy name (policy1_premium)

@jjindrich , as mentioned in https://github.com/MicrosoftDocs/azure-docs/issues/84243, it looks like the policy association part is missing from the doc. I've reached out to the Azure Firewall product group team to get more clarity on same. Will keep you updated.

@jjindrich , I checked with the Azure Firewall product group team and they mentioned that the process is correct and the only step missing is that after the upgrading to firewall Premium using Stop/Start, you need to attach the newly created Premium Policy to the firewall via Azure portal. They will update the documentation shortly.
Could you please give it try and let me know if you face any issues?

@jjindrich , the document has been updated regarding the policy association to the migrated Firewall via Azure portal:
https://docs.microsoft.com/en-us/azure/firewall/premium-migrate#attach-a-premium-policy-to-a-premium-firewall
Please give it a try and let us know if you face any further issues.
We are closing this issue for now. If there are further questions regarding this matter, please reply and we will gladly continue the discussion.


include line:column in error messages

Track the current ts.Node while traversing, and include the
offset of that node when failing an assertion.  This isn't
great at finding the correct point but it is at least close.

PTAL

LGTM

LGTM.


skipping UNKNOWN1 causes massive issues

As far as I understand UNKNOWN1 is the size of UV Transforms block, and wasn't utilized in TWD games (size 0). But in Sam&Max remasters I'm working with it's used quite often. For now I'm just skipping the blocks (size 20 = Int32+4xFloat32) but you should probably make appropriate vectors. I'm not too knowledgeable in the code base for that.
This should probably be renamed to something like mUVTransforms in the future too
So far I can only verify that the converter is reading data correctly, by comparing vert counts and objects/MeshBatches count

How did you port that in Blender?

How did you port that in Blender?

I'm developing my own d3dmesh importer for blender

That looks cool.


IdentityServer login with external provider access token

Currently we use IdentityServer 4 with Azure AD as our external login provider. Our APIs are protected by the tokens of the IdentityServer. This works fine.
Now we would like to use our APIs in products where we already have a valid Azure AD access token. e.g. Office 365/Teams addins. As the user is already logged into those applications he has already a valid Azure AD token to which our addin has access.
Is there a way to get a valid token from our IdentityServer with the users' Azure AD access token so that the user doesn't need to login into IdentitySever again?

http://docs.identityserver.io/en/latest/topics/extension_grants.html

that looks very interesting! will give this a try. thank you!


Fonts look blurred in example1

Fonts are weird, especially on the second line (Misc, Long list, etc.)
Running on Windows 8.1

Try to delete libfreetype-6.dll from directory with example1.exe - and run it again. Does it look better?

It uses other font, but still tab names still look a bit dirty.

Tabs really look strange.
Will try to fix.

Fixed double drawing of tab header


Math equation in Yaml

Hi i wanted to know is there any ways to give a math simple equation in yaml
Here is my code example
---
defaults:
 - $var1 1

use: *var1 + 1
# or
use: !!js/yield *var1

Or any batter way to do that ?
Thank you

To such ways. IMHO that's a common mistake try use yaml as programming language.

Hey that is why I created issue here, I solved my problem with custom type
var YieldYamlType = new yaml.Type('!yield', {
  kind: 'mapping',
  construct: function (data) {
    try {
      const { val, inc = 1} = data;
      if (val instanceof Serial) {
        return val.next(inc);
      }
      return Number(val) + inc
    }catch(exp){ return data }
  },
});

And you can use it like this
value: !yield { val: 5, inc: 10 } // ==> 5 +10
Thank you

You can add some magic via custom types, but result will be more complicated than separate post-processing, and less portable.  May be you find it more comfortable for your needs


The given "for_each" argument value is unsuitable: "for_each" sets must not contain null values when using create_role_assignment_network_contributor

Is there an existing issue for this?

[X] I have searched the existing issues

Greenfield/Brownfield provisioning
greenfield
Terraform Version
1.4.6
Module Version
6.8.0
AzureRM Provider Version
3.56.0
Affected Resource(s)/Data Source(s)
azurerm_role_assignment, azurerm_kubernetes_cluster_node_pool
Terraform Configuration Files
locals {
  node_pools = {
    monitoring = {
      name            = "monitoring"
      node_count      = 1
      vm_size         = "standard_d2ads_v5"
      max_pods        = 250
      node_labels = {
        "workload_type" = "monitoring"
      }
    }
  }
}

module "aks-cluster" {
  source                                     = "Azure/aks/azurerm"
  version                                    = "6.8.0"
  resource_group_name                        = azurerm_resource_group.rg.name
  location                                   = azurerm_resource_group.rg.location
  kubernetes_version                         = var.kubernetes_version
  orchestrator_version                       = var.kubernetes_version
  private_cluster_enabled                    = var.private_cluster_enabled
  prefix                                     = local.aks_prefix

  agents_pool_name                           = "system"
  agents_size                                = var.system_nodepool_agents_size
  agents_count                               = var.system_nodepool_agents_count
  agents_max_pods                            = var.system_nodepool_max_pods
  agents_availability_zones                  = var.system_nodepool_agents_availability_zones
  agents_labels                              = var.system_nodepool_agents_labels
  only_critical_addons_enabled               = var.only_critical_addons_enabled
  role_based_access_control_enabled          = var.role_based_access_control_enabled
  rbac_aad                                   = var.rbac_aad
  create_role_assignment_network_contributor = var.create_role_assignment_network_contributor

  network_plugin                             = var.network_plugin
  vnet_subnet_id                             = local.aks_vnet_subnet_id
  net_profile_service_cidr                   = var.net_profile_service_cidr
  net_profile_dns_service_ip                 = var.net_profile_dns_service_ip
  attached_acr_id_map                        = local.attached_acr_id_map
  maintenance_window                         = var.maintenance_window
  public_ssh_key                             = var.public_ssh_key
  # Addons
  key_vault_secrets_provider_enabled         = var.key_vault_secrets_provider_enabled
  secret_rotation_enabled                    = var.secret_rotation_enabled
  secret_rotation_interval                   = var.secret_rotation_interval
  tags                                       = local.common_tags

  node_pools                                 = local.node_pools

  depends_on = [
    module.vnet.vnet_subnets_name_id
  ]
}

### tfvars variables values

```hcl
variable "network_plugin" {
  default = "azure"
}

variable "network_policy" {
  default = "azure"
}

variable "create_role_assignment_network_contributor" {
  default = true
}

### Debug Output/Panic Output

```shell
│ Error: Invalid for_each set argument
│
│   on .terraform/modules/aks-cluster/main.tf line 582, in resource "azurerm_role_assignment" "network_contributor":
│  582:   for_each = var.create_role_assignment_network_contributor ? local.subnet_ids : []
│     ├────────────────
│     │ local.subnet_ids is set of string with 2 elements
│     │ var.create_role_assignment_network_contributor is true
│
│ The given "for_each" argument value is unsuitable: "for_each" sets must not contain null values.

### Expected Behaviour

When specifying additional node pools create_role_assignment_network_contributor = true should grant Contributor permission on AKS subnet

### Actual Behaviour

Apply fails when pod_subnet_id is not defined for node pool. Although this value is optional.
https://github.com/Azure/terraform-azurerm-aks/blob/main/locals.tf#L31

### Steps to Reproduce

_No response_

### Important Factoids

_No response_

### References

_No response_

Hello,
this is failing because subnet_ids is null in your scenario:
https://github.com/Azure/terraform-azurerm-aks/blob/647728060aaf7f845b90d9bf2e8ab47900ebe94e/locals.tf#L31-L37
In your steps to reproduce you have:
  vnet_subnet_id  = local.aks_vnet_subnet_id

Can you please share your code for  local.aks_vnet_subnet_id ? I need to understand why this value is null.
I agree we could implement a precondition that prevents to set create_role_assignment_network_contributor to True if the local. subnet_ids is null.
In that case the role assignment is not needed: if all the vnets used are in the MC_* resource group, then there is already a role assignment in place with Contributor role scoped to the entire MC_* resource group. This means you don't need to create any additional role assignments.
Please share your local.aks_vnet_subnet_id to move forward. Thanks

variable "vnet_address_space" {
  default = ["<IP_ADDRESS>/20"]
}

variable "vnet_subnet_names" {
  default = ["aks-dev", "shared-services"]
}

variable "vnet_subnet_prefixes" {
  default = ["<IP_ADDRESS>/21", "<IP_ADDRESS>/24"]
}

locals {
  aks_vnet_subnet_id = lookup(module.vnet.vnet_subnets_name_id, "aks-dev")
}

module "vnet" {
  source                                                = "Azure/vnet/azurerm"
  version                                               = "4.0.0"
  resource_group_name                                   = azurerm_resource_group.rg.name
  vnet_name                                             = var.vnet_name
  vnet_location                                         = azurerm_resource_group.rg.location
  use_for_each                                          = true
  address_space                                         = var.vnet_address_space
  subnet_names                                          = var.vnet_subnet_names
  subnet_prefixes                                       = var.vnet_subnet_prefixes
  subnet_enforce_private_link_endpoint_network_policies = local.vnet_subnet_enforce_private_link_endpoint_network_policies
  subnet_enforce_private_link_service_network_policies  = local.vnet_subnet_enforce_private_link_service_network_policies
  tags                                                  = local.common_tags
}

I suspect that it's due to pool.pod_subnet_id is null, hence the error "for_each" sets must not contain null values."

Hi @avekrivoy thanks for opening this issue, I think we should check whether your local.aks_vnet_subnet_id is null or not, but it's valid to set module's vnet_subnet_id variable to null, so I'll submit a pr to filter null out from for_each's set.

@lonegunmanb the problem is that during evaluation of the following code variable pool.pod_subnet_id is null.
   subnet_ids = toset(flatten(concat([
     for pool in var.node_pools : [
       pool.vnet_subnet_id,
       pool.pod_subnet_id
     ]
   ], [var.vnet_subnet_id])))
 }

Therefore, for loop iterates over valid pool.vnet_subnet_id vaule and "null" value of pool.pod_subnet_id. Hence the error.
I've checked and explicitly defined pod_subnet_id variable for all node pools (both system and user). Everything worked as intended. So this fix should assume that pool.pod_subnet_id in fact can be empty, since (at least for AzureCNI) specifying vnet_subnet_id is enough to deploy a cluster

@avekrivoy Thanks for the update, yes we should upgrade this expression to filter null out.

@avekrivoy Thanks for the update, yes we should upgrade this expression to filter null out.

Perfect! Approximately, when will it be released?

@lonegunmanb also, according to Azure documentation principal_id here is invalid
https://github.com/Azure/terraform-azurerm-aks/blob/647728060aaf7f845b90d9bf2e8ab47900ebe94e/main.tf#L677
Should be managed identity for an AKS cluster, not kubelet
https://learn.microsoft.com/en-us/azure/aks/use-managed-identity#summary-of-managed-identities

@lonegunmanb also, according to Azure documentation principal_id here is invalid
https://github.com/Azure/terraform-azurerm-aks/blob/647728060aaf7f845b90d9bf2e8ab47900ebe94e/main.tf#L677
Should be managed identity for an AKS cluster, not kubelet
https://learn.microsoft.com/en-us/azure/aks/use-managed-identity#summary-of-managed-identities

Hi @avekrivoy thanks for pointing it out, would you please open a new issue so we can trace it?

@lonegunmanb also, according to Azure documentation principal_id here is invalid
https://github.com/Azure/terraform-azurerm-aks/blob/647728060aaf7f845b90d9bf2e8ab47900ebe94e/main.tf#L677
Should be managed identity for an AKS cluster, not kubelet
https://learn.microsoft.com/en-us/azure/aks/use-managed-identity#summary-of-managed-identities

Hi @avekrivoy thanks for pointing it out, would you please open a new issue so we can trace it?

https://github.com/Azure/terraform-azurerm-aks/issues/368


'owner-id' for DescribeImages is not yet supported

i am trying to test out a routine to manage our AMIs. the process involves filtering the AMIs by owner (aws account id) of the images to pull back a smaller set from aws. turns out, owner-id is not yet supported.
moto, boto3, botocore
i installed it using sudo pip3 install -r requirements.txt and moto is in that file.
Name: moto
Version: 1.0.1
Summary: A library that allows your python tests to easily mock out the boto library
Home-page: https://github.com/spulec/moto
Author: Steve Pulec
Author-email<EMAIL_ADDRESS>License: Apache
Location: /usr/lib/python3.5/site-packages
Requires: requests, python-dateutil, cookies, mock, boto3, six, werkzeug, pyaml, xmltodict, Jinja2, pytz, dicttoxml, boto
Name: boto3
Version: 1.4.4
Summary: The AWS SDK for Python
Home-page: https://github.com/boto/boto3
Author: Amazon Web Services
Author-email: UNKNOWN
License: Apache License 2.0
Location: /usr/lib/python3.5/site-packages
Requires: jmespath, s3transfer, botocore
Name: botocore
Version: 1.5.95
Summary: Low-level, data-driven core of boto 3.
 \
              " Feel free to open an issue at" \
              " https://github.com/spulec/moto/issues".format(blurb)
>       raise NotImplementedError(msg)
E       NotImplementedError: The filter 'owner-id' for DescribeImages has not been implemented in Moto yet. Feel free to open an issue at https://github.com/spulec/moto/issues

/usr/lib/python3.5/site-packages/moto/ec2/models.py:3596: NotImplementedError
---------------------------------------------------------------- Captured stderr call ----------------------------------------------------------------
2017-09-26 15:05:32,581 [INFO    ] : root : get_session : 118 : Getting session token...
2017-09-26 15:05:32,954 [INFO    ] : root : get_images_generated_by_deployment_tools : 185 : Fetching AMI objects for account id<PHONE_NUMBER>55...

function call
the call where the tag is being specified is in the manage-ami.py file. the routing from that below:
def get_images_generated_by_deployment_tools(session, account_id):
    """
    get all the images generated by our deployment tools.
    param session: boto3 session ot establish connection to account
     type session: boto3.session.Session class
    param accound_id: id of the account to filter the images down to ours
     type account_id: string
    returns: list of ...
    """
    # get an ec2 session client
    LOG.debug("Creating EC2 session...")
    ec2 = session.client('ec2', region_name='us-east-1')

    # this process is similar to the tag_images fetch, but the filter is different here.
    # we want to narrow down this list as much as possible. and not filtering by account
    # id will return ALL AMIs, over 85,000 at the time of this coding.
    LOG.debug("""Set filter to look for owner-id = "{}" and tag-key = "tools_info" """.format(account_id))
    image_filter = [{'Name': 'owner-id', 'Values': [account_id]},
                    {'Name': 'tag-key', 'Values': ['tools_info']}]

    # we only care about the images
    LOG.info("Fetching AMI objects for account id {}...".format(account_id))
    images = ec2.describe_images(Filters=image_filter)['Images']

    # we only care about the image ids of the cared-about images from above
    LOG.debug("Getting AMI ids from the list of images...")
    image_ids = [v for i in images for k,v in i.items() if k == "ImageId"]

    return image_ids

and honestly, i've thought about adjusting the code and submitting a patch, but i would need to probably consult with you guys on the how of it. AMIs have an owner id value of the aws account id. when it's not specified, would you just assign a dummy value or leave it blank (None)?

@snimark Your intuition is as good as anybody's on how to implement it. I'd have a default account_id assigned to a couple of built-in AMIs (maybe real ones that are commonly used in EC2) and then use the credentials of inbound requests to assign the owner to any images created through the API. You can get the account id out of the 'Authorization' header in the request when Moto is running in server mode.

is the idea of submissions for changes via pull requests welcomed for this project? if so, do you have a policy on how to branch (naming and otherwise) i should follow to do that?

is the idea of submissions for changes via pull requests welcomed for this project?

Extremely welcome! Bordering on mandatory :p

if so, do you have a policy on how to branch (naming and otherwise) i should follow to do that?

No policy on that other than following the Code of Conduct. Just make sure any code you add is covered by reasonable tests and ask people to jump in and help whenever you get stuck. We're a friendly bunch here at Moto :)

i have a couple of questions:

what is the ec2_backend value passed in to the class AMI() call?
i am thinking of making this an optional argument passed in for object instantiation. with instance argument value being in, would it have an owner-id value to be assigned? i would think a source_ami could have an owner-id value, depending on if it was created or not:

this code is currently the class for the AMI (i removed the quoted section after the elif source_ami: line):
    def __init__(self, ec2_backend, ami_id, instance=None, source_ami=None,
                 owner_id=None, name=None, description=None):
        self.ec2_backend = ec2_backend
        self.id = ami_id
        self.state = "available"
        self.name = name
        self.description = description
        self.virtualization_type = None
        self.architecture = None
        self.kernel_id = None
        self.platform = None
        self.owner_id = owner_id
        self.creation_date = utc_date_and_time()

        if instance:
            self.instance = instance
            self.instance_id = instance.id
            self.virtualization_type = instance.virtualization_type
            self.architecture = instance.architecture
            self.kernel_id = instance.kernel
            self.platform = instance.platform

        elif source_ami:
            self.virtualization_type = source_ami.virtualization_type
            self.architecture = source_ami.architecture
            self.kernel_id = source_ami.kernel_id
            self.platform = source_ami.platform
            if not name:
                self.name = source_ami.name
            if not description:
                self.description = source_ami.description
            if source_ami.owner_id:
                self.owner_id = source_ami.owner_id
...

i know i would have to do some work with the get_filter_value() call too, but i think that might be easier knowing the answers above.

i figured out what ec2_backend is. region, right?
i am modifying also the Instance() class to also include the owner-id property. and i found the unittests to also write to as well.

hmm...are we sure the images (AMIs) being assigned but with values of<PHONE_NUMBER>12. i didn't see this, so i tried to track it down.

ok, well, i'm going to need to chat with someone to work through this option. although i found the OwnerId/owner-id value is set by default for instances to be<PHONE_NUMBER>12, but i also found it does not translate to the AMI classes. all attempts to set the value from the front or add the field from the back have not worked.
i joined gitter to chat, but the channel seems very quiet these days. i will continue to check back, but i think i am going to have to test without moto for now.

@toshitanian or @terrycain do either of you have opinions here?

i can create a branch an submit it with the changes i've been attempting. i can try to add notes where i am not seeing it work.

Yeah I think what we need would be, a default set of ami's present, though they do change so we'd need to manage that somehow. We also need to document how you can just import the moto backend and prod all the structures. @snimark make a PR and note down as much as you can plus a test case where it doesnt work and should.

i see to be having permission problems creating a branch locally and pushing to github. my permissions are in question as far as the push goes. (i can get to github with my current key.)

Have you created a fork in your own account and are pushing to that?

no, nothing in my github account. i just cloned the repo locally and made the changes. then was trying to push the branch back to the repo.
ERROR: Permission to spulec/moto.git denied to snimark.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

yet...
Hi snimark! You've successfully authenticated, but GitHub does not provide shell access.

Nah, you need to click on fork at the top of the page to clone it to your own account, then you'll be allowed to push to that, then you can create a pull request from the clone in your account to this one

ah, ok.
i have tried this, gotten to the pull request, but one of the files is showing changes i didn't make, so i will need to do this again to make sure the files are correct. i need to head out right now, but i'll try to submit later.

ok, finally got my branch created on the forked repo and created a pull request. i have not created a unit test for it, though. i have another script i can make available which i have been using to simulate the unit test i need for my code.

Wait so do the changes work or not? And yeah the script will be helpful, throw it in a gist would probably be easiest.

they weren't, but i think i had success in one case of testing after fast forwarding my changes to a few updates to the master branch. i need to test these again to evaluate what is going on. i also notices that when i had submitted by branch that a few mods were missing. i would need to submit a new pull request when i get this more sorted out.

Sure once your at a point where either its working or you have no clue why its not, give me a mention and I'll have as look over it.


[SPARK-29976][CORE] Trigger speculation for stages with too few tasks

What changes were proposed in this pull request?
This PR add a optional spark conf for speculation to allow speculative runs for stages where there are only a few tasks
spark.speculation.task.duration.threshold

If provided, tasks would be speculatively run if there are less unfinished tasks than the number of slots on a single executor and the task is taking longer time than the threshold.

Why are the changes needed?
This change helps avoid scenarios where there is single executor that could hang forever due to disk issue and we unfortunately assigned the single task in a stage to that executor and cause the whole job to hang forever.

Does this PR introduce any user-facing change?
yes. If the new feature flag spark.speculation.singleTaskStage.enabled is turned on then even when there is only one task in the stage, the scheduler would try to run it on another executor if the spark.speculation.singleTaskStage.duration.threshold is exceeded.

How was this patch tested?
Unit tests are added to TaskSetManagerSuite.

Can one of the admins verify this patch?

Can one of the admins verify this patch?

test this please

Test build #114180 has started for PR 26614 at commit bc0f7e1.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/19032/
Test PASSed.

cc @tgravescs @squito @cloud-fan

Test build #114180 has finished for PR 26614 at commit bc0f7e1.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/114180/
Test PASSed.

I understand the case you're trying to address, but special casing for one task doesn't feel right to me.  If there are two tasks, you could end up in the same situation, with two tasks running on the same bad executor?  Would it make sense to have this as just a global min time for speculation?
OTOH, I do know that 1 task is common, especially when doing a final aggregation.  Its not a bad solution, I just don't know if I want to be stuck w/ this conf.

@squito Good point! If I understand correctly, the better way to do this is to have a flag like spark.speculation.aggressive and maybe check the executed time of all the running tasks and if it exceeds the threshold, then speculative run the task. Do you think it necessary to additionally check if the tasks are running on the same executor and only speculate if so?

We need finished tasks to have an estimation of task duration. I agree with @squito that the only missing thing is a user-supplied task duration. Can we only have one config to specify the task duration for speculation?

@cloud-fan @squito I've updated the PR corresponding to your comments. Though I guess the "ideal" way to do this is to have a mechanism to always speculative run if the threshold exceeds && there are some empty slots, but I'm not sure if it's necessary since if there is no empty slot the speculatable tasks wouldn't be run anyway.

Please also update the title and description accordingly.

So while I agree that this could easily happen for 2 tasks instead of 1 in cases like when both put on the same executor, if you make this apply all the time (or more then 1 task) then you have to estimate your worst case timeout across the entire application. So if you have stages with 10000 tasks that take a long time, and then another stage with 1 tasks that takes as a shorter time you have to set the config to the longer time.  The 10000 task stage I would think you would want the normal speculation configs to apply to.  Perhaps we either want a config for max number of tasks to apply it to or we make it smarter and say apply when you only have a single executor or tasks <= a single executor can fit

note I realize there are a bunch of corner cases here, but take back my suggestion of the number of executors,  you could have 1 executor but run 10000 tasks on it and you still might want to use the regular logic. I think our best bet is either leave at 1,  a config,  or tasks <= the number that can fix on a single executor makes more sense to me.

yeah I am also torn like @tgravescs .  There are a ton of corner cases.  I really don't like special casing one task, but I'm not sure of the clean way to configure this.  Even with 10 tasks, if you've got 4 cores per executor you've easily got 4 tasks stuck on your one bad executor, and with a default speculation quantile of 0.75 you wouldn't finish 8 tasks successfully to start speculation.  If you add in the fact that the poor performance may be across an entire node, and 64 cores per node is not uncommon, the limit goes way higher.
speculative execution is always a heuristic, we know its not going to be perfect.  I feel like when you enable speculation, you are saying you're willing to accept some wasted resources, so its more acceptable to run some speculative tasks when you don't really need to. But how much waste is OK?  In Tom's exxample, say you had 10k tasks that each took an hour, but all are actually running fine -- the waste is pretty serious, you'll launch a speculative version of each task so its 10k cpu-hours wasted.
One alternative might be to only have this kick in when all tasks are running on the same host (the TSM already knows the hosts of the running task, its in TaskInfo, it would be easy to see if there is just one host used across all tasks).

@tgravescs @squito Looks like there are two potential solutions (1) we check if all of the tasks are running on the same executor first and if so do the time threshold speculative run. (2) add another conf specifying the minimum number of total tasks in the stage that we would trigger the time threshold check.
I think both of the solutions solve the problem I'm hitting but option (2) seems more configurable and handles slightly more corner cases (i.e. multiple problematic nodes).

+1 for restricting the total running tasks <= the number of slots in one executor. This ensures when there are suspicious tasks that didn't finish after a while (most likely hang) we could start speculative runs, on the other hand, this ensures the speculative tasks started won't waste resources identical to one executor.

So with the all tasks run on the same host solution, it might change part way through the stage.  So it might start out with all tasks on the same executor and then uses this new timeout config but then you get more executors and then change to the other speculative configs. This might be confusing to users.

it seems like either the number of slots on 1 executor or a config might be best. I think there are corner cases for all of these its just picking the one that seems to cover most.
just a side note, Tez has a similar configs but it only applies when a single task is run. it is obviously different but did solve a problem was saw at Yahoo.  So based on what we saw there I'm kind of leaning towards the tasks <= number of slots of 1 executor.  That doesn't add another config, covers the 1 task case, plus the 1 bad executor case.  @squito  thoughts?

sure I think I'm OK with that, its a decent compromise.  You wouldn't launch speculative tasks if you've got multiple executors on a bad node, but thats OK (IIRC we also won't make a dynamic allocation to get an executor on a new node, which would be needed to really handle that case).
A couple of nitpicky points:

when you say the number of tasks <= number of slots of 1 executor -- is that the total number of tasks in the taskset, or the delta minFinishedForSpeculation - numSuccessfulTasks?  The reason to do the delta is say you've got 10 tasks in the taskset, but the last 4 are all running on the bad executor.  The taskset as a whole is too big to meet that condition, but with minFinishedForSpeculation=7 and numSuccessfulTasks=6 you'd meet the delta.
Doesn't it still need another config to decide what the timeout is in this case?

Yes you still need the config for the timeout, you just don't need a second one when to apply that config. ie when you have <= second config task number then use the config, otherwise use the normal speculation logic.
I was originally thinking the total number of tasks <= number of slots on 1 executor, then apply the timeout config, seemed the most straightforward and obvious to the user.  I'm fine with either way though as long as it can be explained to user.  I think using delta does complicate things again as it uses the new algorithm sometimes and then the original algorithm at other times.  My initial thought is to keep it simple in initial implementation, they can always turn the spark.speculation.quantile down when you have a larger number of tasks, but lots of corner cases again.  The thing with 1 task is that the current settings will never work for it because you need at least 1 to compare against.
Note you will ask for a new executor if you speculate and the executors are all used.  It might not be on a different node though.

I was proposing something like this:
     if (tasksSuccessful >= minFinishedForSpeculation && tasksSuccessful > 0) {
      // Try to add speculative tasks that has been running more than SPECULATION_MULTIPLIER * medianDuration.
    } else if (speculationTaskDurationThresOpt.isDefined && runningTasks <= conf.getInt("spark.executor.cores", 1) / conf.getInt("spark.task.cpus", 1)) {
      // Try to add speculative tasks that has been running more than a specified duration.
    } else {
      // Do not add speculative tasks.
    }

So this just introduces a new way to add speculative tasks that have been running more than a specified duration, which should be easy to reason about.
Please note I only consider the number of running tasks in the TaskSet, because the original speculation logic didn't include pending tasks either. On the other hand, if we keep get those long running tasks, at the end more executors would be required to run speculative tasks.

original speculation logic doesn't including pending because it can only use the time of successful tasks. Unless you are referring to something else.
I'm ok with any of these as they will be better then what we have now. If you look at running, it could change very quickly, because with dynamic allocation I might have 1 executor, start 4 tasks on it, but then some time later get another executor so then I no longer apply the timeout and use the original speculation logic

Ah good point, considering both the running and pending tasks would make the speculation strategy more stable (in the means once you entered the speculation task duration threshold branch, unless more tasks finished successfully, you would always choose the same speculation strategy in the next few scheduling iterations).
Also, if runningTasks + pendingTasks > SlotsPerExecutor, that means either too many tasks have been running, or we are waiting for extra executors to be launched, in both cases we'd better not hurry into adding more speculative tasks.

@squito @tgravescs @jiangxb1987 Thanks for all the suggestions. I've updated the PR correspondingly.

test this please

Test build #114734 has started for PR 26614 at commit 1dcd5d3.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/19559/
Test PASSed.

so just want to confirm with @squito and @jiangxb1987 ,
It looks like what is implemented now is the number of unfinished <= number of slots on 1 executors and you don't hit the normal speculation logic:
val numUnfinishedTasks = numTasks - numSuccessfulTasks
val speculationTaskNumThres = conf.get(EXECUTOR_CORES) / conf.get(CPUS_PER_TASK)
based on the discussions above I thought we were going to do the number of total tasks <= number of slots on 1 executor to keep it simple, thoughts?

Test build #114734 has finished for PR 26614 at commit 1dcd5d3.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/114734/
Test PASSed.

We would enter the original speculation logic anyway when enough tasks have finished successfully, so the difference is only on the case when some of the tasks have succeed, but the number of successful tasks is less than minFinishedForSpeculation.
For example, you may have 4 slots on each executor, the currently running taskSet has 5 tasks, 2 of which has succeed, 1 task is running, and the rest 2 tasks are pending. In this case when the task running time has exceed the speculationTaskDurationThresOpt.get then I think it should be reasonable to submit a speculative task, because the risk that it would consume too much resources is low, and it could possibly resolve the potential task hang issue (like the scenario described in the JIRA).

Right, I get that it still uses regular speculation logic if enough have finished, my concerns are confusion to the user or it kicking in when users don't want it to.
Lets say I set both speculation policies because I have different stages with different requirements. I have one stage with 1 task that is problematic, the speculationTaskDurationThresOpt will also be applied to all my other stages that I configured the normal spark speculation configs for.  If the  speculationTaskDurationThresOpt is something that could is widely different for different stages then its harder to configure this way and can kick in when I don't want it to or when I don't expect it to.  the normal speculation configs are based on a multiplier of other task time, this is a just a hardcoded timeout. so lets say my normal speculation config multiplier would kick in only after an hour and my speculationTaskDurationThresOpt is set to 15 minutes. I'm going to start speculating a lot more when the unfinished gets below that threshold.
I totally get that this perhaps covers more scenarios which in my opinion is good and bad as shown above. I was thinking keeping this simple for now and just having it apply if total tasks <= slots on 1 executor. That should be very easy for user to understand and know when it will apply.  It solves the issue reported in this jira. If we start to find more specific cases we want to get smarter then we can enhance it later.

I think I get your concern now, we might have two stages running concurrently, the expected task duration for the first stage could be 15mins and for the second stage it could be 1hr. Thus if we set the speculationTaskDurationThresOpt to 30mins then tasks from the second stage would all get speculated which is not desired.
However I don't see why this is related to comparing the speculationTaskDurationThresOpt with  unfinished tasks versus total tasks. Even if we choose total tasks instead of unfinished tasks, it can still happen that one stage contains only one task, but the task duration is actually expected to be longer than speculationTaskDurationThresOpt, then a speculative task shall get launched anyway.

it minimizes impact and makes it predictable when the new speculationTaskDurationThresOpt is applied. If you only apply it when the number of tasks is small < number of slots per executors, its easier to reason about, if it can apply during any stage then I need to worry about it being applied to my large stages even if I configured the other speculation configs to be what I really want it to use.
I agree with you that if you have 2 stages of 1 task each picking the timeout here can be tricky, which is why the normal speculation configs use a multiple of the run time. You can't do that with only 1 task though.  But I don't see how to get around that.
My point is with using the unfinished, it now expands that same impact to not only stages with 1 task but all my stages.

Now I agree, we shall be conservative on the behavior change and limit it only on "small" TaskSet (that contains less tasks than the slots per executor), thus we'd better use numTasks instead of numUnfinishedTasks when comparing with speculationTaskNumThres.

@tgravescs @jiangxb1987 Thanks for the feedbacks! I've updated the PR corresponding to the discussion. May I get another review?

test this please

Test build #114947 has started for PR 26614 at commit bf22446.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/19768/
Test PASSed.

Test build #114947 has finished for PR 26614 at commit bf22446.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/114947/
Test PASSed.

sorry for the delays on my end, a late lgtm from me too.  Thanks @yuchenhuo !


fix: add clamplog

This PR fixes #165

Codecov Report

Merging #169 (156876a) into master (4de9106) will decrease coverage by 0.60%.
The diff coverage is 80.00%.

@@            Coverage Diff             @@
##           master     #169      +/-   ##
==========================================
- Coverage   76.64%   76.03%   -0.61%
==========================================
  Files         183      183
  Lines        6547     6222     -325
==========================================
- Hits         5018     4731     -287
+ Misses       1529     1491      -38

Impacted Files
Coverage Δ

src/nodes/transition.jl
40.00% <ø> (+6.66%)
:arrow_up:

src/distributions/pointmass.jl
90.62% <50.00%> (-1.32%)
:arrow_down:

src/distributions/dirichlet.jl
92.30% <100.00%> (+0.64%)
:arrow_up:

src/helpers.jl
63.77% <100.00%> (-1.34%)
:arrow_down:

src/approximations/gausshermite.jl
37.50% <0.00%> (-6.95%)
:arrow_down:

src/algebra/companion_matrix.jl
41.02% <0.00%> (-5.57%)
:arrow_down:

src/nodes/bifm.jl
72.72% <0.00%> (-5.33%)
:arrow_down:

src/math.jl
76.00% <0.00%> (-4.77%)
:arrow_down:

src/nodes/gamma_mixture.jl
0.00% <0.00%> (-4.45%)
:arrow_down:

src/constraints/form/form_sample_list.jl
30.00% <0.00%> (-3.34%)
:arrow_down:

... and 61 more

Continue to review full report at Codecov.

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


Reporting a problem compiler message This might be a bug

I am posting regarding the info shown below:
_compiler message: Warning: Tried to initialize from a previous compilation (build/app.dill), but the file was not self-contained. This might be a bug. The Dart team would greatly appreciate if you would take a moment to report this problem at http://dartbug.com/new._
Flutter Version:
Flutter 0.5.6 • channel dev • https://github.com/flutter/flutter.git
Framework • revision 472bbccf75 (7 days ago) • 2018-06-26 17:01:46 -0700
Engine • revision 6fe748490d
Tools • Dart 2.0.0-dev.63.0.flutter-4c9689c1d2
Niyazis-MacBook-Pro:capitalbank niyazitoros$
Dart Version:
Dart VM version: 2.0.0-dev.67.0 (Tue Jul 3 18:17:07 2018 +0200) on "macos_x64"
Niyazis-MacBook-Pro:capitalbank niyazitoros$
Flutter Doctor:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel dev, v0.5.6, on Mac OS X 10.13.5 17F77, locale en-CY)
[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 9.4.1)
[✓] Android Studio (version 3.1)
[✓] IntelliJ IDEA Community Edition (version 2018.1.5)
[!] Connected devices
! No devices available
! Doctor found issues in 1 category.
Niyazis-MacBook-Pro:capitalbank niyazitoros$
Warning:
Launching lib/main.dart on Android SDK built for x86 in debug mode...
Initializing gradle...
Resolving dependencies...
Running 'gradlew assembleDebug'...
compiler message: Warning: Tried to initialize from a previous compilation (build/app.dill), but the file was not self-contained. This might be a bug. The Dart team would greatly appreciate if you would take a moment to report this problem at http://dartbug.com/new.
Built build/app/outputs/apk/debug/app-debug.apk.
Installing build/app/outputs/apk/app.apk...
D/EGL_emulation(11732): eglMakeCurrent: 0xa75042a0: ver 3 0 (tinfo 0xa7503300)
[{"event":"app.progress","params":{"appId":"67aebb65-5f93-44c8-ba18-8f65ad6fa763","id":"4","progressId":null,"message":"Syncing files to device Android SDK built for x86..."}}]Syncing files to device Android SDK built for x86...
D/        (11732): HostConnection::get() New Host Connection established 0xa7522440, tid 11787
D/EGL_emulation(11732): eglMakeCurrent: 0xa4b7de00: ver 3 0 (tinfo 0xa7503290)

This appears to be another instance of #36032

Closing as duplicate.


Add a static updateStyles method to the Polymer class.

Also should add importHref as a static method

updated in d58866cfeea43c21552621f0ddc5cf03460b600a


path.repo for snapshots

Would it be possible to add path.repo or
path:
repo: e.g. /backup
to the elasticsearch.yml? I don't want to remount this directory.
Reason: for snapshots

Just running into the same issue - on top of that I want to add the aws config. I know some projects like nginx ingress allow for custom config snippets to be added. It might just be as simple as adding an env variable at the end of the elasticsearch.yml, such as ${CUSTOM_CONFIG_SNIPPET} and defaulting that to empty.

Why not use a ConfigMap and mount it where Elasticsearch expects it to be?

@pires I guess I did not think about that as I only want to modify one file and not the whole folder - but I guess that is actually possible now with k8s using subPath, so fair point.

@Globegitter I'm not sure subPath acts like this => [https://kubernetes.io/docs/concepts/storage/volumes/#using-subpath]
@pires The problem is, that k8 overmounts the whole directory. You are not able to mount a single file into a existing directory like in Docker atm.
For my specific case, I've wrote a new Dockerfile which includes your Image.


Recent update = big left margin

Probably best explained with a picture - updated the plugin today and the left margin is way too big.

An unknown bug led to a new plugin panel. The problem disappeared after trying to reload the plugin.

Correct, I disabled, restarted, enabled and restarted and it's working again. Kinda annoying I have to resize the panel again, but I guess that's a Joplin thing.

Setting > Appearance > Set Editor maximum width as 0.


Usernames shouldn't be case sensitive

Usernames are currently case sensitive, but we use emails for usernames so that's pretty surprising behaviour. We should change that so that they're no longer case sensitive

Turns out the email RFC does actually say that emails are case sensitive (the non domain portion at least). Personally I think that this is more likely to confuse people, and we already have three cases of a user being created twice with different cases. Going to configure it so that you can't sign up with the same (case insensitive) email multiple times, to prevent this from happening in the future.

Fixed by recent pr


where to put the pretrained model file faster_rcnn_1_6_10021.pth?

freshman to faster-rcnn. In the demo part of the master branch, it says to download the pretrained model listed in above tables. Say that I want to use the first pretrained model in the first table which is based on VGG16 and pascal voc 2007, where should i put the  faster_rcnn_1_6_10021.pth file? and how should i change the directory in the demo.py to run it?
Thanks!

got the answer here: https://github.com/jwyang/faster-rcnn.pytorch/issues/248


Match strike by id and slug when creating card damage buttons

I'm hoping someone doesn't attempt to optimize this later, this looks wasteful, but I more or less understand the why.


Update docker-compose.yml

from https://hub.docker.com/r/timescale/timescaledb
Why is there no latest tag?
In general, it is usually a bad idea to track the latest tag for any Docker image, since you may get unexpectedly upgraded. For TimescaleDB, this is particularly problematic because not only can the version of TimescaleDB change, but also the version of PostgreSQL. If we wanted our latest tag to always be the latest of all dependencies, users could be updated between major versions of PostgreSQL, which requires a pg_upgrade step. That may cause more hassles for the operator than expected.
For these reasons, we do not offer a latest tag, but we do offer a 'latest' equivalent by publishing a latest tag for each PostgreSQL platform we support. For production systems, you should still be explicit about the version you want to use and not these latest tags, but at least you won't have to run a pg_upgrade step unexpectedly.

Thank you for your contribution!


Release to npm

Hi Ilya,
Npm can be used to handle frontend dependencies without bower. Could you release tap.js to npm?

read NPM docs!
npm install pukhalski/tap --save :100:

@yoyurec thanks for tip, I will.

@pukhalski can you help us?

@pukhalski is there any plans to do it?

@havenchyk @iamstarkov
we plan to do it really soon

this week or month?

@iamstarkov, week. But not sure how to deal with React support for tap. It's still in a process of investigation.

@pukhalski take a look on "react-tap-event-plugin" implementation — it’s a bit complicated inside, because it have to deal with synthetic event system — but it seems to be me as reasonable way to create new events in reactjs land. Also, it’s simplest and the best solution, we can choose from Hammer and fastclick solutions http://stackoverflow.com/q/24335821/1057730.

Hey guys, it seems that the name Tap is already taken. Any thoughts on how to name the package?
I am a bit disappointed that bower and npm packages would have different namings...
cc/ @iamstarkov, @larchanka, @havenchyk

Released as tapjs. Grab it!

Cool, thanks. As for tap - it's well known test library. Tapjs look good to me.

Great

:+1: :tada:


How to Add a New Exchange

I would like to Add a New Exchange, but the doc for it is empty. Can I help?

bitcoin.de would be nice :)
They recently added an api


DOMWidget messages sent from Python to Javascript are lost before widget is displayed.

Any messages sent using self.send are lost if the widget has not yet been displayed in the notebook.
%%javascript

require(['widgets/js/widget', 'widgets/js/manager', 'jquery', 'underscore'], function(widget, manager, $, _) {
    var MyCustomDOMWidget = widget.DOMWidgetView.extend({
        initialize: function() {
            this.listenTo(
                this.model,
                'msg:custom',
                function() { console.log(arguments); });
        }
}

from ipywidgets import widgets
import traitlets

class MyCustomDOMWidget(widgets.DOMWidget):
    _view_name = traitlets.Unicode('MyCustomDOMWidget', sync=True)

from IPython.display import display

foo = MyCustomDOMWidget()
foo.send('bar')  # This message is lost to the ages.
display(foo)
foo.send('baz')  # This message is received, though this may have to be in a second cell.
                 # May also get lost due to DOM render delay.

This is really problematic for me as I am mapping a few methods across from Python to Javascript and they only work if they are called in right order in following cells.

@jordoncm at the point where you send the first message, your widget does not have a view yet.
I think that you might actually want to create a custom widget model that is instantiated as soon as the python-side widget is instantiated and handles this type of message.

@SylvainCorlay You are saying I could extend https://github.com/ipython/ipywidgets/blob/master/ipywidgets/static/widgets/js/widget.js#L41 to queue messages or something?
I am not sure what you mean.

That is exactly right. Then on the python side, you specify the _model_name attribute in the same way as you did for the _view_name.
Within ipywidgets, there are some examples sur as the Box model, and the JavaScript Link model. In custom widgets libraries like bqplot, there are other examples of custom models.

I took a bit of a different approach; rather than queuing messages in the model for the view, I decided to just have the model listenTo msg:custom in initialize and then add the payloads of the message to a Baclbone.Collection as a property on the model. Then the view when it is created just stays in sync with changes to the collection property on the model. This seemed a little more proper MVC to me.
I was able to get it working but I noticed two other issues:
I am not able to use defaults to create Javascript side properties for a model and I cannot use this.set inside of initialize to set the initial value.
%%javascript

require(['widgets/js/widget', 'widgets/js/manager', 'jquery', 'underscore'], function(widget, manager, $, _) {
    var Layer = Backbone.Model.extend({
        defaults: function() {
            return {
                config: {},
                type: undefined,
                visible: true
            };
        }
    });

    var LayerCollection = Backbone.Collection.extend({
        model: Layer
    });

    var MyCustomModel = widget.WidgetModel.extend({
        // This will cause an error.
        defaults: function() {
            return {
                layers: new LayerCollection()
            };
        },

        initialize: function() {
            this.listenTo(
                this, 'msg:custom', _.bind(this.handleMessage, this));
            // This will also cause an error.
            this.set('layers', new LayerCollection());
        },

        handleMessage: function(payload) {
            // This is how I was able to work around this issue, by waiting
            // until I needed it to initialize.
            /*
            if (!this.get('layers')) {
                this.set('layers', new LayerCollection());
            }
            */
            switch(payload.action) {
                case 'addLayer':
                    this.get('layers').add({
                        config: payload.config,
                        type: payload.type
                    });
                    break;
            }
        }
    });

    var MyCustomDOMWidget = widget.DOMWidgetView.extend({
        ...
    }
});

I don't have the error handy but it seemed like attributes was undefined in each case (very similar errors) so it couldn't add properties.

Well, you should not need to "queue" the messages for the view in the model. The model in ipywidgets is a MVC, where the role of the view would be rather minimal (only rendering of the model state). You want to be able to display another view of that same model at any point in time.

Closing the issue for now since it is not a bug.

I am not sure there is not a bug here. You are right I do not need to queue messages if I just maintain model state instead. However I seem pretty unable to create a simple Backbone.Collection property on the widget model. In my opinion having to wait to set it a first use is bad; since defaults and this.set in initialize don't work (see my second example).

@jordoncm are you running ipywidgets from source or the last release?

Ah, yes, it is a legitimate bug but it is fixed in master. cf #266.

Good to hear. I am pretty sure I am on the latest release. I think Jupyter notebook just updated a day or so ago. I am running the version before that.

If you want to run ipywidgets master from source, please use the latest release of notebook (the one from today), which is required.
ipywidgets 5.0 should be released in a couple of weeks.

Your example has caused me a lot of headaches :-), and raised a question
_initialize: function() {
this.listenTo(
this, 'msg:custom', .bind(this.handleMessage, this));
// This will also cause an error.
this.set('layers', new LayerCollection());
},
Overriding initialize without calling the initialize from the superclass does break a lot :-)
I basically ended up with a useless situation, I couldn't send messages anymore.
But then again, I tried to find the correct syntax in this case, and the best I could find would be this:
MyCustomModel._super_.initialize.call(this);
But that didn't work either, so I just moved the listenTo-call to the render method.
It does what it needs for me, but I don't think it's the correct solution.
Evert


Support upper case in the domain

Hi there
It looks like redbird can not proxy requests with upper cases.
I have old clients trying to get to Support.example.com.
I tried to:
proxy.register("Support.example.com", "http://localhost:1234");
but redbird ignore the uppercase, so I always get:

"msg":"no valid route found for given source"

domain names should be case insensitive, this is a bug in redbird.

Great!!! Thank you.
Can you please just update the version to allow easy fix by npm update?

done!.


Fixes #434 - Export type Route as RouteInfo

Fixes #434
Unfortunately in #432, the exported type and value Route did not merge correctly, breaking the library. It is possible to re-export them under the same name, but since the Route type was not part of the public API before renaming it seems cleaner.
I chose RouteInfo as the new exported name for the type.
If you prefer, I could rename type Route globally in the project instead of just the export.

I see it isn't the Route Component but the internal Route representation. It's unfortunate that info already is a field, but I'm having a hard time coming up for a name for this one. We already have RouteDefinition for the input, Route for the component. Maybe RouteDescription. I see the problem I will try to work with this. Thanks.


fix(e2e): Delete assertion from PolicyViolationsBySeverity test

Description
Problem
Configuration Management Dashboard should go to filtered policies list from link in Policy violations widget

Timed out retrying after 4000ms: expected '?s[Severity]=CRITICAL_SEVERITY&s[Policy%20Status]=Fail' to include '[Disabled]=False'

This is related to the added policy HTTP/2 DDOS policy which has Critical severity.

Analysis

configmanagement/dashboard.test.js

cy.location('search').should('contain', '[Disabled]=False');

PolicyViolationsBySeverity.js

Links for high medium low have Disabled: 'False' but for critical does not :(
In theory, inconsistency is a bug, but it seems past expiry date to fix.

Solution

Delete this secondary assertion.

Checklist

[x] Investigated and inspected CI test results
[x] Edited integration test

Testing Performed
Integration testing

configmanagement/dashboard.test.js

ocp-4-10-ui-e2e-tests
Although I did not see anything relevant in central logs, again we see delay in response from central during policies tests:
Export policy policy page should display toast alert for export request failure

Timed out retrying after 10000ms: cy.wait() timed out waiting 10000ms for the 1st request to the route: notifiers. No request ever occurred.

screenshot displays login page
Policy wizard, Step 3 Policy Criteria Policy field card negation should negate field if applicable and change wording

Timed out retrying after 10000ms: cy.wait() timed out waiting 10000ms for the 1st request to the route: notifiers. No request ever occurred.

screenshot displays The database is currently not available banner


Temperature Convertor added

Description
Created a new project Temperature Convertor
Checklist

[x] I've been assigned an issue related to this PR.
[x] I've used beautifiers.
[x] I've added my Project's name and description to Index.md
[x] I've made a README.md file for my Project.
[x] The README.md file of my Project contains Project title, Description, Use of project, Set up, Stack used and Output (Screenshots).

@joshi-kaushal please don't copy paste the entire thing. Just add your details only please.

https://github.com/Ayushparikh-code/Web-dev-mini-projects/blob/493f6ca96c4d4e97646a097edf59fa52ee7b64c2/Index.md
Also this is how it looks after your changes. @joshi-kaushal

@harshita2216 I pasted link from my forked repo since PR is not accepted yet, check the link first, I'll resolve the conflict if the link is okay.

Put tree/main @joshi-kaushal

And the link should have Ayush's repo.

@joshi-kaushal, I have made the changes to the file for you. Make sure you understand what I have done and try to do it yourself the next time. 💯

Thank you so much! I really appreciate this :)


remove call for meta property

I was getting an error logging into the admin dashboard after seeding saying trying to get property of non-object. Removing this property fixed the error

nvm, I think the user meta hasn't seeded for some reason..


 Revel should probably support this official module versioning solution.

Any updates on this one? initiating modules using go mod app-name disallows revel run to work anymore.

Yah I'm stucked on that now  revel run doesnt work anymore

@notzippy do you remember why this was closed?

Can this be reopened?  I would like to find all the go get's that happen on a revel new so I can manually put it into my go.mod file if possible so I have a nice little package going on.

It was just on the roadmap, i'm happy to reopen

Thank you!  Bye GOPATH go installs for revel new I suppose someday.

Hi,
Do you have any dates when it will be done? Does any one work on it?

Work is started, getting on this.

thanks

Free work by @SVilgelm. It's just amazing what awesome developers do for the open source communities.  Revel is such a cool project.  Can't wait to use it more using modules without things capping out.
I'm glad I reopened this item

https://github.com/revel/cmd/issues/177

It's 2020-02, is there an ETA for supporting go modules?

https://github.com/revel/cmd/issues/180

seems done


Max face

https://github.com/lzhengning/SubdivNet/blob/aeb0dbcc59be5e219d918f888c10f522a40cb135/subdivnet/mesh_tensor.py#L210
Thanks for your updating.
But I found out that L210 may also need int64.

Thank you! I've updated this line.


Auto-link feature reviews to JIRA tickets when GH branch name contains ticket key

Summary
This PR enables Shipment Tracker to automatically link Feature Reviews to JIRA tickets when the GitHub branch for the given feature contains the JIRA ticket key, which is common practice for my team and for at least a few other teams at Funding Circle.
Motivation
My team and I were finding linking tickets to feature reviews tedious. We realised since we always put the ticket key in our branch names (km-some-feature-MOB-123), we're already creating a relationship between the branch/feature and a JIRA ticket, so it would be great if Shipment Tracker recognised that.
How It Works
The idea is that Shipment Tracker will check the GitHub branch using a regex to search of a substring containing characters in the following order:

2-8 capital letters
A hyphen
One or more digits starting with a digit between 1 and 9

For example: MOB-123, FCA-345, MIGRATE-5604.
This means there is possibility for auto-link to incorrectly link a ticket if the developer happens to name a branch with capitals, a hyphen and a number that make up a valid ticket key in our JIRA instance, however I feel this is quite unilkey. A valid sequence of the above mentioned characters is likely to be the key of the ticket that the developer is working on.
Alternatively, we could make auto-linking safer by instructing developers to enclose the ticket key they're working on with some special characters if they want Shipment Tracker to auto-link.
Comments/Discussion
I'm nowhere near a Ruby/Rails pro, and am not very familiar with best practices or styles. There are some questionable areas I have about the code I've written so far. I'm also trying to get a feel for Shipment Trackers code and understand the correct approach for auto-link as a whole.
Below are some things I'd like help with.
Regex

Any feedback on the regex used?
I'm pretty sure this should be a constant somewhere?
And it should be frozen?

Returning a Bool from check_branch_for_ticket_and_link?
The idea of check_branch_for_ticket_and_link? returning a Bool feels a bit odd. We need a way of the perform function understanding if auto-linking processed as expected or if there was an error. I'd like to discuss this approach.
I noticed that we were using @send_error_status, but this current approach seems flawed. Consider the current code on master for this:
     if branch_created || commit_on_master?(full_repo_name, after_sha) ||
       relink_tickets(before_sha, after_sha).empty?
      post_not_found_status(full_repo_name, after_sha)
    elsif @send_error_status
      post_error_status(full_repo_name, after_sha)
    end

Notice that post_error_status(full_repo_name, after_sha) is only run if relink_tickets returns empty and @send_error_status is set to true, which is not possible? So it feels like error handling might need a bigger rethink all together.
Building the Feature Release URL
I'm struggling to understand how to build a URL to pass to LinkTicket. I figured it's just the defined route in routes.rb for :feature_reviews, but want to be sure that using the commented code I've left for this is the right idea to go with.
Anything Else
Please give me any other pointers on my overall approach and idea. After gathering some feedback I'll prepare some tests and finish off the implementation.

Thanks for taking the time to read! ❤

Sorry for all the pushes everyone, I never got spec running on local because of some dep setup that I didn't understand.


Heroic Presence is not automatically active when you select Draenei as your race

With improved Faerie Fire, this would leave a 0.21% chance to miss, which should be completely eliminated by the additional 1% granted by heroic presence. As you can see, there are still some misses happening.
When selecting Heroic Presence in the buff section, these misses do not occur. However, since Draenei Paladins can't NOT have this extra 1% hit, it should be active without ticking the box. I also feel like it should be displayed in the stat summary, because for Draenei it is very much a racial feature rather than a buff (it isn't displayed as a buff ingame, either).
This is the string for the setup used when I noticed this issue, although you might need several tries and check the "min" result because the chance for a miss is still very low:
A0YAgUB965QDAH6ZIH3ZAgB1RoMgdWeKWQB9wY8ggWKE1AB904VgeQ5tOAB9wSB9wUB9wYkAfz5s-4oAdPuEywZAdZoAfcEgfdOHIHkRiqIAgWuIQH5ubS8AgWsgfdmLAH5PbReMAHhybRcNAHCeDgByxxIAa1yQAH5MbVA
This setup that just barely reaches 5% hit gets misses more consistently:
A0YAgUB-eJQDAH3BIH6ZAgB1RoMgdWeKWQB9wY8ggWKE1AB904UAfm1tOIkAfz5s-4oAdPuEywZAdZoAfcEgfdOHIHkRiqIAgWuIQH5ubS8AgWsgfdmLAH5PbReMAHhybRcNAHCeDgByxxIAa1yQAH5MbVA

Hey, we're aware of this -- however, we'd like to give people a chance to sim with their racial inactive if they so desire, so we did not enforce Heroic Presence as always on if your race is Draenei, you have to select it yourself. It's a bit unintuitive I agree, but in general we prefer giving people options.


Question about Domain Strategy Identity Routing

Hello Andrew,
I have one more issue I can not understand how to fix. When the AddMultiTenant() has WithBasePathStrategy(options => options.RebaseAspNetCorePathBase = true) that paths work for the registration and login per tenant but if WithHostStrategy() it does not work.
When try to go to https://tenant.localhost/identity/account/login gives me a 404 error. I do have a tenant.localhost in the host file, so that is not the issue.
I dont know if this might be causing it but changed the database to use MsSql Server. I didnt get an error and did the migration correctly
I know this work but this is not for multi-tenant accounts but for normal identity setup.
      services.ConfigureApplicationCookie(o => o.LoginPath = "/login");
      services.ConfigureApplicationCookie(o => o.LogoutPath = "/logout");
      services.ConfigureApplicationCookie(o => o.AccessDeniedPath = "/Account/AccessDenied");

I did read the ITenantInfo implements the specific paths but not working. Is there aways to make specific like in the code above?
Program.cs
using Finbuckle.MultiTenant;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using IdentitySample.Data;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddDbContext<ApplicationDbContext>();
builder.Services.AddDatabaseDeveloperPageExceptionFilter();

builder.Services.AddIdentity<ApplicationUser, IdentityRole>(opts =>
    {
        opts.SignIn.RequireConfirmedAccount = true;
    })
    .AddEntityFrameworkStores<ApplicationDbContext>();

builder.Services.AddRazorPages();

// Add MultiTenant
builder.Services.AddMultiTenant<TenantInfo>()
    .WithHostStrategy()
    .WithConfigurationStore()
    .WithPerTenantAuthentication();

var app = builder.Build();

// Apply migrations if needed
var store = app.Services.GetRequiredService<IMultiTenantStore<TenantInfo>>();
foreach (var tenant in await store.GetAllAsync())
{
    await using var db = new ApplicationDbContext(tenant);
    await db.Database.MigrateAsync();
}

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseMigrationsEndPoint();
}
else
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseMultiTenant();
app.UseRouting();

app.UseAuthentication();
app.UseAuthorization();

app.MapRazorPages();

app.Run();

I did try adding this code but resulted in a compile-time error
        services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie()
            .AddOpenIdConnect();

Would there be away to make so you could SSO? I don't want the users make accounts per tenant.
I would like to have so when they create an account they create the TenantInfo configuration. So, basically this would be one-to-one relationship per user per tenant account.
The non-tenant (root) account has routes to Identity.
I will try to see if this routes correctly without using custom ApplicationUser entity.

This should work. Just keeping the regular identity path options, does the login page load if you use just localhost with no subdomain?

Hello Andrew,
It does not load even when just using localhost.
I am using your example project and just modifing it to work the why I wanted it.
The privacy page works fine with or without the subdomains. I was thinking it might not be working because it might not registering the Microsoft.AspNet.Identity.UI library. I had something like happen because the route or/and page did not exist.
I did try adding it with options extension and setting cookies loginpath but that didn't work also.

Hello Andrew,
It does not load even when just using localhost. The privacy page works well, with or without the subdomains. I was initially unsure if it was functioning due to a possible issue with registering the Microsoft.AspNet.Identity.UI library. This has happened before when the route or page didn't exist.
I am using your example project and just modifying it to work the way I wanted it.
I tried to fix it using WithPerTenantOptions and setting CookieAuthenticationOptions, but this didn't fix it.
builder.Services.AddMultiTenant<TenantInfo>()
    .WithHostStrategy()
    .WithConfigurationStore()
    .WithPerTenantAuthentication()
    .WithPerTenantOptions<CookieAuthenticationOptions>((opts, tenantInfo) =>
    {
        opts.Cookie.Name = $"{tenantInfo.Id}_{opts.Cookie.Name}";
        opts.LoginPath = $"/{tenantInfo.Identifier}/Identity/Account/Login";
        opts.LogoutPath = $"/{tenantInfo.Identifier}/Identity/Account/Logout";
        opts.Cookie.Path = $"/{tenantInfo.Identifier}";
    });

Hello Andrew,
I found out why the routing was not working. There was problem with solution. I created a new MVC and Razor project and i didnt have any issue with it.
I do need help on one more thing, I want to setup the Tenant Store to use EF. From the documentation you had sample project for asp.net 3.0 but it is not in the repo anymore.
could provide me sample project, please.

Hello Andrew,
I found out way the routing was not working correctly, it was not project but identity service.
If you have the identity service configured this way
builder.Services.AddIdentity<ApplicationUser, IdentityRole>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<ApplicationDbContext>();

The default Identity routes from the Microsoft.AspNetCore.Identity.UI will not work.
If you have Identity Service configured this way there is no issue with the routes
builder.Services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<ApplicationDbContext>();