Query thru Service principal

Will this work for a Service Principal or for an MFA-enabled user?

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

ID: 476e6b04-34c2-0502-7f00-4f89b24fc475
Version Independent ID: f0b07c53-8175-6b83-f66f-ab69f8c5313b
Content: Use Java to query Azure SQL Database
Content Source: articles/sql-database/sql-database-connect-query-java.md
Service: sql-database
GitHub Login: @ajlam
Microsoft Alias: andrela

Hi @Ayanmullick
Azure Active Directory authentication for MFA-enabled user is not supported with MSSQL JDBC Driver.
You can find samples and details on supported authentication modes with Azure here. If by Service Principal you mean SPN as used in this example, it can be used to acquire access token which can be further used for authentication with JDBC Driver.
On the contrary to clarify, serverSPN is not supported for Azure AD Authentication. Furthermore if you can explain with a sample code what exactly are you trying to connect with, we can clarify better.
Thanks!

@Ayanmullick Thank you for the detailed inquiry. The Use Java to query Azure SQL Database uses SQL Authentication, but the following document walks you through Azure Active Directory Authentication with Azure SQL Database using a Java client and all supported Auth types: Connecting using Azure Active Directory Authentication

Connecting using ActiveDirectoryMSI Authentication Mode
Connecting using ActiveDirectoryIntegrated Authentication Mode
Connecting using ActiveDirectoryPassword Authentication Mode
Connecting using Access Token

Please let me know if you have any additional questions. The above document is specific to AAD.

@cheenamalhotra , for sharing the link. In my opinion, that link should be added to the Next Steps section of this document.
#please-close


Claiming namespace [locple]

Package information

Package link: https://registry.platformio.org/libraries/locple/LiquidCrystal I2C Multilingual
Package link: https://registry.platformio.org/libraries/locple/LiquidCrystal_I2C_UTF8

Description
I'm the author of these two packages from Arduino Library that were downloaded by PlatformIO automatically.
Now can I claim this namespace in order to update them to newer versions?
Thank you!
Le Phuoc Loc<EMAIL_ADDRESS>

Please verify your email and log-in with locple account.

Thank you very much!


Training not converging well, Dataset available

Here are my modifications to the source code
diff --git a/configs/Test/images.yaml b/configs/Test/images.yaml
index 81a5824..4435fb2 100644
--- a/configs/Test/images.yaml
+++ b/configs/Test/images.yaml
@@ -12,4 +12,5 @@ training:
   auto_scheduler: True
   eval_pose_every: -1
 extract_images:
-  resolution: [540, 960]
\ No newline at end of file
+  resolution: [3024, 4032]
+with_depth: False
diff --git a/configs/preprocess.yaml b/configs/preprocess.yaml
index c56b1fd..d3ec72c 100644
--- a/configs/preprocess.yaml
+++ b/configs/preprocess.yaml
@@ -1,9 +1,9 @@
 depth:
   type: DPT
 dataloading:
-  path: data/nerf_llff_data
-  scene: ['fern']
+  path: data/Test
+  scene: ['images']
   resize_factor:
   load_colmap_poses: False
 training:
-  mode: 'all'
\ No newline at end of file
+  mode: 'all'
diff --git a/dataloading/dataset.py b/dataloading/dataset.py
index d40af73..846273d 100644
--- a/dataloading/dataset.py
+++ b/dataloading/dataset.py
@@ -82,11 +82,16 @@ class DataField(object):
         _, _, h, w = imgs.shape

         if customized_focal:
-            focal_gt = np.load(os.path.join(load_dir, 'intrinsics.npz'))['K'].astype(np.float32)
+            #focal_gt = np.load(os.path.join(load_dir, 'intrinsics.npz'))['K'].astype(np.float32)
+            FX_ = 13/35.0
+            CX_ = 4032
+            CY_ = 3024
+            FY_= FX_*(CY_/CX_)
:
+  scene: ['images']
   resize_factor:
   load_colmap_poses: False
 training:
-  mode: 'all'
\ No newline at end of file
+  mode: 'all'
diff --git a/dataloading/dataset.py b/dataloading/dataset.py
index d40af73..846273d 100644
--- a/dataloading/dataset.py
+++ b/dataloading/dataset.py
@@ -82,11 +82,16 @@ class DataField(object):
         _, _, h, w = imgs.shape

         if customized_focal:
-            focal_gt = np.load(os.path.join(load_dir, 'intrinsics.npz'))['K'].astype(np.float32)
+            #focal_gt = np.load(os.path.join(load_dir, 'intrinsics.npz'))['K'].astype(np.float32)
+            FX_ = 13/35.0
+            CX_ = 4032
+            CY_ = 3024
+            FY_= FX_*(CY_/CX_)
+            focal_gt = [[FX_, 0, CX_], [0, FY_, CY_], [0, 0, 1]]
             if resize_factor is None:
                 resize_factor = 1
-            fx = focal_gt[0, 0] / resize_factor
-            fy = focal_gt[1, 1] / resize_factor
+            fx = focal_gt[0][0] / resize_factor
+            fy = focal_gt[1][1] / resize_factor
         else:
             if load_colmap_poses:
                 fx, fy = focal, focal
diff --git a/environment.yaml b/environment.yaml
index dfde749..a81a313 100644
--- a/environment.yaml
+++ b/environment.yaml
@@ -4,12 +4,13 @@ channels:
   - conda-forge
   - anaconda
   - defaults
+  - nvidia
 dependencies:
-  - python=3.9
-  - pytorch=1.7
-  - torchvision=0.8.2
-  - torchaudio
-  - cudatoolkit=10.1
+  - python
+  - pytorch=2.0.0
+  - torchvision=0.15.0
+  - torchaudio=2.0.0
+  - pytorch-cuda=11.8
   - cffi
   - cython
   - imageio
@@ -39,4 +40,4 @@ dependencies:
     - lpips
     - setuptools
     - kornia==0.5.0
-    - imageio-ffmpeg
\ No newline at end of file
+    - imageio-ffmpeg
~
~
~
(END)
+  scene: ['images']
   resize_factor:
   load_colmap_poses: False
 training:
-  mode: 'all'
\ No newline at end of file
+  mode: 'all'
diff --git a/dataloading/dataset.py b/dataloading/dataset.py
index d40af73..846273d 100644
--- a/dataloading/dataset.py
+++ b/dataloading/dataset.py
@@ -82,11 +82,16 @@ class DataField(object):
         _, _, h, w = imgs.shape

         if customized_focal:
-            focal_gt = np.load(os.path.join(load_dir, 'intrinsics.npz'))['K'].astype(np.float32)
+            #focal_gt = np.load(os.path.join(load_dir, 'intrinsics.npz'))['K'].astype(np.float32)
+            FX_ = 13/35.0
+            CX_ = 4032
+            CY_ = 3024
+            FY_= FX_*(CY_/CX_)
+            focal_gt = [[FX_, 0, CX_], [0, FY_, CY_], [0, 0, 1]]
             if resize_factor is None:
                 resize_factor = 1
-            fx = focal_gt[0, 0] / resize_factor
-            fy = focal_gt[1, 1] / resize_factor
+            fx = focal_gt[0][0] / resize_factor
+            fy = focal_gt[1][1] / resize_factor
         else:
             if load_colmap_poses:
                 fx, fy = focal, focal
diff --git a/environment.yaml b/environment.yaml
index dfde749..a81a313 100644
--- a/environment.yaml
+++ b/environment.yaml
@@ -4,12 +4,13 @@ channels:
   - conda-forge
   - anaconda
   - defaults
+  - nvidia
 dependencies:
-  - python=3.9
-  - pytorch=1.7
-  - torchvision=0.8.2
-  - torchaudio
-  - cudatoolkit=10.1
+  - python
+  - pytorch=2.0.0
+  - torchvision=0.15.0
+  - torchaudio=2.0.0
+  - pytorch-cuda=11.8
   - cffi
   - cython
   - imageio
@@ -39,4 +40,4 @@ dependencies:
     - lpips
     - setuptools
     - kornia==0.5.0
-    - imageio-ffmpeg
\ No newline at end of file
+    - imageio-ffmpeg

And my dataset
https://drive.google.com/drive/folders/1ZZgZUrFrnP47rx8bN5K6yvYnSC50a-9G?usp=sharing
When what I have done to start training is put the images in
data/Test/images/images
then run the preprocess and train commands
and I have found the tensorboard attached here:
log.zip

Is this OK?
or did I muck up the intrinsics?
attached in a JPG to look at the EXIF information

I think it may be 14 rather than 13 I will try again.

Made a change to 14 rather than 13 and          if customized_focal: become          if customized_focal or True:

Looks like this is a red hot tip:
https://github.com/t-bence/exif-stats/blob/master/focal_stats.py#L44

Maybe all I needed was patience.

Does this seem correct?

Yeah nah, didn't work trying again with different intrinsics values
diff --git a/configs/Test/images.yaml b/configs/Test/images.yaml
index 81a5824..264c4cf 100644
--- a/configs/Test/images.yaml
+++ b/configs/Test/images.yaml
@@ -12,4 +12,5 @@ training:
   auto_scheduler: True
   eval_pose_every: -1
 extract_images:
-  resolution: [540, 960]
\ No newline at end of file
+  resolution: [765, 1008]
+with_depth: False
diff --git a/configs/default.yaml b/configs/default.yaml
index adb9cb0..92aae7b 100644
--- a/configs/default.yaml
+++ b/configs/default.yaml
@@ -75,7 +75,7 @@ training:
   load_distortion_dir: model_distortion.pt
   n_training_points: 1024
   scheduling_epoch: 10000
-  batch_size: 1
+  batch_size: 8
   learning_rate: 0.001
   focal_lr: 0.001
   pose_lr: 0.0005
diff --git a/configs/preprocess.yaml b/configs/preprocess.yaml
index c56b1fd..d3ec72c 100644
--- a/configs/preprocess.yaml
+++ b/configs/preprocess.yaml
@@ -1,9 +1,9 @@
 depth:
   type: DPT
 dataloading:
-  path: data/nerf_llff_data
-  scene: ['fern']
+  path: data/Test
+  scene: ['images']
   resize_factor:
   load_colmap_poses: False
 training:
-  mode: 'all'
\ No newline at end of file
+  mode: 'all'
diff --git a/dataloading/dataset.py b/dataloading/dataset.py
index d40af73..717ce8d 100644
--- a/dataloading/dataset.py
+++ b/dataloading/dataset.py
@@ -81,12 +81,17 @@ class DataField(object):
         imgs = np.transpose(imgs, (0, 3, 1, 2))
         _, _, h, w = imgs.shape

-        if customized_focal:
-            focal_gt = np.load(os.path.join(load_dir, 'intrinsics.npz'))['K'].astype(np.float32)
+        if customized_focal or True:
+            #focal_gt = np.load(os.path.join(load_dir, 'intrinsics.npz'))['K'].astype(np.float32)
+            FX_ = 14.0/35.0
+            CX_ = 35.0/2.0
+            CY_ = (2032/3024) * CX_
+            FY_= FX_*(CY_/CX_)
+            focal_gt = [[FX_, 0, CX_], [0, FY_, CY_], [0, 0, 1]]
             if resize_factor is None:
                 resize_factor = 1
-            fx = focal_gt[0, 0] / resize_factor
-            fy = focal_gt[1, 1] / resize_factor
+            fx = focal_gt[0][0] / resize_factor
+            fy = focal_gt[1][1] / resize_factor
         else:
             if load_colmap_poses:
                 fx, fy = focal, focal
diff --git a/environment.yaml b/environment.yaml
index dfde749..a81a313 100644
--- a/environment.yaml
+++ b/environment.yaml
@@ -4,12 +4,13 @@ channels:
   - conda-forge
   - anaconda
   - defaults
+  - nvidia
 dependencies:
-  - python=3.9
-  - pytorch=1.7
-  - torchvision=0.8.2
-  - torchaudio
-  - cudatoolkit=10.1
+  - python
+  - pytorch=2.0.0
+  - torchvision=0.15.0
+  - torchaudio=2.0.0
+  - pytorch-cuda=11.8
   - cffi
   - cython
   - imageio
@@ -39,4 +40,4 @@ dependencies:
     - lpips
     - setuptools
     - kornia==0.5.0
-    - imageio-ffmpeg
\ No newline at end of file
+    - imageio-ffmpeg

This is with training from COLMAP and hallucinated depth maps

https://github.com/ActiveVisionLab/nope-nerf/assets/102564797/2b64c14b-40b8-4109-af7e-f1d6c770d4c3
What are the limitations on the input dataset?

Hi, sorry for my late reply. The input images I used are consecutive and closely sampled from a video. This is essential because the point cloud loss requires a dense matching between two views. I noticed that the images you provided are rather sparse, which might make the point cloud loss less effective.

Yeah they are from photos rather than a video. I can try shooting the same location from another photographic approach with much more dense sampling. Thanks for your response


Fix bugs in semantic version

Describe your changes :

Fix bugs in semantic version, for going from current version to next major version.

Type of change :

[x] Bug fix

Frontend Preview (Screenshots) :
For frontend related change, please link screenshots of your changes preview! Optional for backend related changes.

Checklist:

[x] I have read the CONTRIBUTING document.
[x] I have commented on my code, particularly in hard-to-understand areas.
[x] I have added tests that prove my fix is effective or that my feature works.

Reviewers

@anhnguyenphung can you provide some examples of what would be minor and major versions will look like

@harshach For example, currently if a current version is 2.3 and the next version is a major version, the version will be 3.3, which does not conform to the semantic version.  I propose the fix that makes the next version will be 3.0

@anhnguyenphung can you please add a unit test around this code. It doesn't need to be an integration test just a unit test would be good of what will happen around the boundary conditions

@harshach Yes I can do that

@anhnguyenphung checking to see if you are interested in carrying this work?

@harshach Yes, I am interested in carrying out the work if needed. As I mentioned before, the problem here is that the next major version is calculated incorrectly, and it can be fixed with some minor changes.


Hook called in iOS simulator but not called on-device

I'm trying to hook os_log_shim_enabled, a private function in CoreFoundation that changes how NSLog() behaves. Here's my code:
static BOOL FLEXDidHookNSLog = NO;
BOOL (*orig_os_log_shim_enabled)() = nil;
BOOL my_os_log_shim_enabled() {
    return NO;
}

@implementation FLEXSystemLogViewController

+ (void)load {
    FLEXDidHookNSLog = rebind_symbols((struct rebinding[1]) {
        "os_log_shim_enabled",
        (void *)my_os_log_shim_enabled,
        (void **)&orig_os_log_shim_enabled
    }, 1) == 0;
}

...

As the title says, it works in the simulator, but has no effect on-device. I came across this issue, but I don't really understand what might be going wrong. rebind_symbols returns 0 in both cases, and stepping through the code running on-device I can see that fishhook does indeed find the symbol and does replace it here from within __la_symbol_ptr:
static void perform_rebinding_with_section(...) {
    ...
--> indirect_symbol_bindings[i] = cur->rebindings[j].replacement;
    ...
}

When I set a breakpoint for the original function, I can see it's being called instead of my replacement. Here's a screenshot of the debugger:

Is _CFLogvEx3 just not using the lazy binding in this case? Does that mean I'll need to use another hooking library that uses trampolines?

I think calls to symbols in the shared cache just go through directly, since they're all linked together? Since the simulator doesn't use a shared cache (to my knowledge) it must go through a PLT stub, which fishhook can intercept.

Ah, that makes sense. Well, now anyone else running into this will hopefully find this issue through Google with this explanation. Thanks!


Update Java-WebSocket to 1.5.3 in series/0.23

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

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.java-websocket", artifactId = "Java-WebSocket" } ]

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

Superseded by #6275


General questions

Hello Koss,
sorry for opening an issue, I was actually looking for a private channel to contact you, but couldn't find any :). I've stumbled upon your gem while searching for dynamic attributes solutions in Rails. Your solution really looks promising, but i do have few questions as I am still learning ruby and am a bit confused.

do i understand correctly only one model can have dynamic attributes? From gem code i can't see a way to define multiple models which carry dynamic attribute definitions (config.provider_class)?
would it be possible to add Boolean values?
is it possible to search by these attributes?

What I would actually like to achieve is to have an Asset model with dynamic attributes - but these attributes would be defined based on Asset Category. So, in my case I would actually need to define additional attributes for the Asset on Asset Category. Would that be possible?
I see the repo is active, so I am really considering giving it a try, but need to clarify these problems I could have in the future. If you know of any better solution to what I would like to achieve, I would really appreciate any advice.
Thanks for your help,
Mitja

Hey @Svashta ,
I'm happy to help. So regarding your questions:

you can have as many models with dynamic attributes as you want. You're right that there's only one provider_class, but it can be used to resolve dynamic attributes for multiple models. I added an example to README showing how it works
You're not required to use built-in ActiveDynamic::DataType enumeration. In fact, I'm planning to remove it from the library in the nearest future, so I would encourage you to use your own. You can create an enumeration with any data types that you want to support (booleans included). Just make sure that enumeration values should be integers because they are stored in integer column in DB
I haven't tried that, but generally speaking, I think it is. You can write a query to join your own tables with ActiveDynamic table, and then use standard SQL queries. If you decide to give it a try, let me know if you run into any issues.

Looks promising! :) Thanks for the updated Readme, I have a better understanding now.
Some further questions:

if there are multiple models, and as i understand all dynamic attributes and values are going into the same DB table - are there any performance considerations? I guess if there are 10 models, this table could potentially grow in size pretty fast.
i am trying to picture how to create dynamic attributes definitions on category, but use them on asset. Do you have any idea on that? Can't really picture it at the moment.
for searching i am already considering to maybe do it via elasticsearch - but this is not so important right now, i am sure there is some elegant way to do it :)

Thanks for all the answers. I am definitely going to try it with help of this gem. I think it is really close to what i need to achieve and would be of great help.

Yeah, you're right that all the values go into a single DB table, but so far I haven't experienced any performance issues. There are DB indices on both model type and model id columns, so retrieval time for DB records is proportional to the number of rows belonging to a specific model, not to the total number of rows in the table.
you can take a look at this example project (https://github.com/koss-lebedev/active_dynamic_demo); basically, it uses ContactAttribute model to store attribute definitions and then uses them on Contact model, I think it's pretty close to what you're trying to achieve

Hey, sorry to bother you again.
I've come pretty far i guess as basic things are working perfectly.
This is what i have so far (simplified):
#Asset
has_dynamic_attributes
belongs_to :asset_category

#AssetCategory
has_many :assets
has_many :asset_attributes

#AssetAttribute
belongs_to :asset_category

#Provider
...
def call
    if @model_class == Asset
      AssetAttribute.all.map do |field|
        ActiveDynamic::AttributeDefinition.new(
          field.name,
          datatype: field.datatype,
          required: field.required?)
      end
    else
      []
    end
  end
...

I can create AssetAttributes, which belong to some specific AssetCategory.
Now, the problem is, as far as i see i can only assign these Attributes to any Asset.
What I would need is a way to somehow pass the category to the call and be able to select only those attributes which are necessary for specific category. I don't think this is currently possible.
I see few options:

to extend initialize parameter to pass in *args and simply use whatever i would need (this i think would be best solution)
to simply call all the attributes and then hide or reject or something the ones i don't need in view and in params (here i suspect i would be having problems with attributes that are set as require) - feels messy

What do you think, did I over complicated things.
I know one other option (STI) and different classes for categories, but i need users to define categories, they are not to be predefined.
I hope you see where I'm stuck :). Thanks for any input.

That's an interesting question.
I figured that the best way to handle this is to pass the actual instance of the model to the constructor of Provider, not just model class. This way,  we can access properties of the model within call method, so in your case, you would be able to get AssetCategory off of Asset instance.
You can give it a try, just install the gem from the Github source:
gem 'active_dynamic, github: 'koss-lebedev/active_dynamic'
and update the logic in your provider class since now it will receive the actual Asset instance.

This is perfect! I already had a little bit different solution, where I did a select on AttributeDeffinitions array for asset_category I needed, but this is now better as I can do it directly in the Provider. Its much cleaner and useful.
I have everything set now and things work really well!
I do have one more "problem" where you could maybe help me a bit more.
You have a predefined set of attributes on AttributeDefinition (:display_name, :name, :datatype, :value).
Now, in my AssetAttributes I have a little bit more information that can be set, like description and placeholder (for simple_form hint and placeholder values.). Eventually, there could be more on other types of dynamic attributes.
I solved the problem by monkey patching your AttributeDefinition class like so:
AttributeDefinition.class_eval do

    attr_reader :display_name, :name, :datatype, :value, :asset_category, :description, :placeholder

    def initialize(display_name, options = {})
      @display_name = display_name
      @name = options[:system_name] || display_name.parameterize.underscore
      @datatype = options[:datatype]
      @value = options[:default_value]
      @required = options[:required]
      @asset_category = options[:asset_category]
      @description = options[:description]
      @placeholder = options[:placeholder]
    end

    def required?
      !!@required
    end

  end

It works perfectly and i can use those values on my form just fine.
The problem is, while i am developing and testing it, when something goes wrong i get an error like this:
ArgumentError - A copy of DynamicAttributesProvider has been removed from the module tree but is still active!
And any further requests are not working anymore until I restart the application.
As I said, I am still learning, and I can't say for sure is this because of monkey patching your class or general problem (i guess it is my monkey patching causing this because it is only evaluated once as it is in initializer, and when something goes wrong this class is than broken or something).
Anyway, things work, but I would like to know whether it is possible to do this (additional AttributeDefinition attributes) without monkey patching? I don't need to save those value to your table in the DB as they are only for form view purposes, but still , i need to access them somehow.
Otherwise, I am really happy how things are progressing and I am really gratefull for this nice gem!

I see now I have troubles with my own AttributeDefinition attributes :)
So far I have been focused on getting things work in basic terms - like form display and create records.
While this is perfectly OK, persisted records (edit form) is a different story. Now It doesn't go through provider it just selects from active_dynamic_attributes and of course:

there is currently no way to know which attributes are for current asset category
i can't display edit form because description/placeholder is not saved and as it doesn't go through Provider i can't get to the value

Any hints? :)

Hey, another day another me :)
I've solved the problem with "A copy of DynamicAttributesProvider ...". It wasn't monkey patching, nor gem code. It was a way I was calling AssetAttribute inside Provider. I had to change it to ::AssetAttribute. Solved.
I have also progressed with my custom attributes, which are now saved into the table, so i can access them on edit form.And speaking of editing...

currently you retrieve all attributes for saved object from the table. Which is fine , except when object was saved and additional dynamic attributes are defined later. Then, this object is not aware of new attributes? I am looking for a way to combine saved attributes and those from Provider. But no luck so far. This, I think, should be somehow possible,
how do i save "required" value with the object? Currently, although everything is fine on New object form, when it is actually saved, required value is always false. I don't see anything related to that in demo project. I am wondering how to save it with the attribute.

I very far to what I want and this is of great help. Just some more polishing :)
I would also suggest that you include dependant: :destroy to has_many definition as there is probably no reason to keep model associated attributes in the table.
BR

I see what you mean. I think it will be a quite common use case to have dynamic attributes loaded from the provider all the time, not only for new records, so the configurable option would be fine.
I added resolve_persisted_proc option that works kind of like provider class - it will be passed a model and it has to return true if you want your saved records to resolve dynamic attributes from the provider or false to resolve attributes from DB:
ActiveDynamic.configure do |config|
    config.provider_class = ProfileAttributeProvider
    config.resolve_persisted_proc = Proc.new { |model| false }
end

So far I've tested only that this change doesn't break any of existing functionality, but I still need to rewrite specs to include tests for new logic. Feel free to add details here if you run into any issues.
Also, I don't like the name resolve_persisted_proc, it's not very descriptive. Maybe you have a better suggestion?

Hey, thanks for helping me out.
It seems like ActiveDynamic.configuration.resolve_persisted_proc.call(self) always returns False, so it always goes to resolve_from_db. I've tried to go directly with resolve_combined, but i am getting undefined method <<' for #<ActiveRecord::AssociationRelation []>`.
While we are at solving problems, i've found another one, which I was already suspecting at the beginning and i've already tried to bypass it, but with no success.
Currently a set of required attributes is always set from all defined attributes, not just ones defined for current object. This is related to my categories definitions. I did manage to narrow down permited params attributes to only ones defined for object AssetCategory, but because required ones are included from all the attributes defined, it doesn't allow me to save object as validation fails.
I think this is because how validation is being built inside HasDynamicAttributes. It should be somehow narrowed down to only those that are defined for current dynamic_attributes.
BR!

OK, thanks for the feedback! I definitely will be working on these issues at the end of the week, but if you don't want to wait for me, you are welcome to join the development. As you've probably noticed, the code base is quite simple and almost all relevant code is inside HasDynamicAttributes module, so feel free to contribute

Yeah, I am banging my head currently how to combine dynamic attributes for persisted objects. Seems like an impossible task. as we can't just simply add to AssociationRelation. Seems like it is only possible with joins... I will see how it goes, but am really worried it simply can't be done this way.
Thx!

Hey @koss-lebedev,
First things first, Thanks so much for building this one. Just love it, the API looks very flexible and extensible.
I have couple of questions,

Can we use these dynamic attributes in ActiveRecord queries ex: User.where(dynamic_attr1: 'value')

hey @prasadpilla ,
thank you for kind words! To answer your questions:

At this time there isn't. I'm thinking that we could add where_dynamic method instead of messing with the default where method, but I'm still struggling with the implementation.

It should. If something doesn't work, you can create a new issue and include the code snippet that you're using, and I'll try to help you with it.

@koss-lebedev,
Thanks for the quick response.
#1 Yes, where_dynamic makes sense. I would like to contribute to this feature, let me know if there is a channel where i can reach you to discuss.
#2 yes sure, I'll try again to make sure I am doing everything right and create an issue if it doesn't work.


In survey/poll/quiz, remove (i) icon if unnecessary

If a question is required, doesn't have a standard help text (eg single line text), and no custom help text is provided - the (i) is still shown.

It shouldn't appear if there is no help text to be shown.

This issue has been resolved already.


Supported in laravel 5.1

Can this be used in laravel 5.1!

The package doesn't support Laravel 5.1, but you could fork it and create your own package. The code should work with older versions of Laravel.


Bower still at 0.4.3

Can you please bump the bower version to 0.5?

@vovafeldman Just updated the bower version and released v0.5.1
Thanks for your report! Closing the issue.

I've tried to run a package update and it didn't work, is there some delay till it propagates to the repo?

Yeah, there might be some delay. And it seems updated now. Please try again.
If you still unable to update, may be you should update the version in your bower.json to allow it to install the version newer than 0.4.x.
http://stackoverflow.com/questions/19030170/what-is-the-bower-version-syntax

Cool. Btw - thanks for adding the source directive, found it very useful!


Allow OR operation for the condition statement

I love this package. It is exactly what I needed.  Simple and Clear
I have maybe one suggestion. Currently, the condition statement is basically a AND operation, all conditions in the list need to be True. It would good also to be able to have an OR operation.
e.g. "condition" : ["balance_is_positive", "account_is_blocked  |  is_manager"]
e.g. "condition" :  "balance_is_positive & (is_manager  | account_is_blocked)"

clever, I like it! would you be interested in submitting a pull request?

I created a pull request for that.
The easiest way I found is to use pyparsing.py to parse the expression.
I based myself on this example

Thanks. I finally got this merged in. I added a short note to the docs here:
https://rsinger86.github.io/drf-access-policy/object_level_permissions/
Glad to refine/expand as needed.

Thanks. I finally got this merged in. I added a short note to the docs here:
https://rsinger86.github.io/drf-access-policy/object_level_permissions/
Glad to refine/expand as needed.


Deploy to current release?

Hello,
I don't want to create new release everytime, I want to override the current release then is there any task allow me to do that?

Sorry, that's not how Capistrano works, check out SSHKit.


Stream: separation of concerns

Problem
currently the stream does weird stuff

one key class for different key types
one sink for different tables and schemata

Goal
use separation of concerns (see: https://en.wikipedia.org/wiki/Separation_of_concerns)

see both images:
the first represents the current stream processing
the second is the goal
details in the meeting

1:

2:

Done. The moment @CSchott implemented the use of tokenizer from commons library instead of tokenizer's copy (#28) this could be tested again with real data by @martingrimmer .


Proposal: Python bindings or standalone version for repo2txt?

Hi there! 👋
I'm really interested in using repo2txt in a Python environment. I was wondering if you'd be open to either Python bindings for the existing JS functions in script.js, or perhaps a standalone Python version?
Here's a rough idea of how I envision using it:
import os
from repo2txt import repo2txt  # hypothetical import

repo_url = "https://github.com/abinthomasonline/repo2txt/"
github_token = os.getenv("GITHUB_ACCESS_TOKEN")

# Filters structured like .gitignore files
with open("filters.txt", "r") as f:
    filters = f.readlines()

combined_text = repo2txt(repo_url, github_token, filters)

# combined_text would look something like this:
"""
Directory Structure:

└── ./
    ├── index.html
    └── script.js

---
File: /index.html
---

<!DOCTYPE html>
<html lang="en">
<head>
# ... rest of the content
"""

# Then we could use combined_text for further processing

What do you think? Does this align with the project's vision? I'm happy to contribute if you're interested in this direction!

I'm all for python bindings, please go ahead.
Also checkout https://github.com/abinthomasonline/repopack-py, similar tool, but requires the code to be present locally. You can repurpose some output formatting code from it though.

Hi there! 👋
I wanted to follow up on my previous suggestion about Python bindings for repo2txt. After exploring this idea, I've encountered some challenges that I think are worth sharing.
The current implementation of repo2txt is deeply integrated with browser-specific APIs and the DOM, which makes creating Python bindings without modifying the original JavaScript quite challenging.
Here's what I've tried:

Using MiniRacer to run the script in Python:
This approach ran into issues with browser-specific objects like document not being available. Here's a snippet of the error:
py_mini_racer._types.JSEvalException: <anonymous>:1: ReferenceError: document is not defined
document.getElementById('repoForm').addEventListener('submit', async function (e) {
^

ReferenceError: document is not defined
    at <anonymous>:1:1

Creating mock browser objects:
While this could potentially work, it would require extensive mocking of browser APIs, which feels like it might be beyond the scope of simple bindings.

Using Pyppeteer:
This approach could work by running a headless Chromium instance, but it feels quite heavyweight for what should ideally be a lightweight library operation.

Given these challenges, I think this approach might not be the most practical, and it would be better to close the issue
Thank you for your openness to suggestions and for maintaining the project. It's been a great learning experience, and I appreciate the chance to contribute🙇♂


Improve readability of prepareValueDump method

Tests fail because of white spaces.

expected - actual

array (size=3) [
      -    [0] => object (size=4) {
      +    [0] =>  object (size=4) {
               'user' => string "barney" (length=6),
               'age' => int 36,
               'active' => boolean true,
      -        'getAge' => function () {},
      +        'getAge' =>  function () {},
           },

Is it right the two spaces between => and object?

It’s opinionated; I think switch is better


moved config for layout xml to edge theme module

Can you change the path of the layout file to the following (also need to update config.xml to reflect this):
app/design/frontend/edge/default/layout/edge/theme.xml
so in future we can also have:
app/design/frontend/edge/default/layout/edge/base.xml


RFC: SQS partial batch failure middleware

First things first: Congratulations for the amazing repo.
Key information

RFC PR: (leave this empty)
Related issue(s), if known:
Area: Utilities
Meet tenets: Yes

Summary
A lambda processing a batch of messages from SQS is a very common approach and it works smooth for most use cases. Now, for the sake of example, suppose we're processing a batch and one of the messages failed, lambda is going to redrive this batch to the queue again, including the successful ones ! Re-running successful messages is not acceptable for all use cases.
Motivation
A very common execution pattern is running a lambda connected in sqs, in most cases with a batch size not equal to one. In such cases, an error to one of the processed messages will cause the whole batch to return to the queue. For some use cases, it's impossible to rely on such behavior - non idempotent actions. A solution for this problem would improve the experience of using a lambda with SQS.
Proposal
I'm going to propose a very simple code that's not complete.
from aws_lambda_powertools.middleware_factory import lambda_handler_decorator

@lambda_handler_decorator
def sqs_partial_batch_failure(handler, event, context):
	sent_records = event['Records']
	sqs_client = boto3.client('sqs')

	response = handler(event, context)

	successful_messages = get_successful(response)
	sqs_client.delete_message_batch(successful_messages)  # deletes 3rd and 7th messages

# batchsize of 10, fails for 3rd and 7th message
@sqs_partial_batch_failure
def handler(event, context):
	for record in event['Records']:
		do_sth(record)

Drawbacks

Add boto3 as dependency;
It may be unrelated with the proposal of this package;
Adds a little performance overhead to track failed records and delete the successful ones.

Rationale and alternatives

What other designs have been considered? Why not them?
The lambda may be invoked with a single message (batch size one) but it just feels like ill-use of the full power of this integration. Running as much as possible message per lambda call is the best scenario.
Inspired by (middy)[https://github.com/middyjs/middy/tree/master/packages]

What is the impact of not doing this?
It may attract more users to use such a powerful option: batch processing with sqs.

Unresolved questions

Optional, stash area for topics that need further development e.g. TBD

Hi Guilherme! Thanks a lot for creating an issue! 😄
We're currently working through what tiny utilities should be included as part of the powertools. There's a fine balance between providing a good set of standard tools and preventing bloat.
Could you flesh this issue as an RFC (see this ticket template) in term of what the ideal developer experience would look like? If you already have similar implementations on GitHub, that'd also help a lot with knowing what would be the impact  for such a middleware. Up to you if you want to create a new ticket using the template or include the RFC in this one. 😄

Hi Guilherme! Thanks a lot for creating an issue! 😄
We're currently working through what tiny utilities should be included as part of the powertools. There's a fine balance between providing a good set of standard tools and preventing bloat.
Could you flesh this issue as an RFC (see this ticket template) in term of what the ideal developer experience would look like? If you already have similar implementations on GitHub, that'd also help a lot with knowing what would be the impact for such a middleware. Up to you if you want to create a new ticket using the template or include the RFC in this one. 😄

Thanks for you suggestion, Nicolas !

Thanks a lot, it's much clearer this way! 👍
Quick question on how the implementation would look like. If I understood correctly your proposal, the handler should return something that will tell the middleware that messages were failed/successful, then if there are any failed message, the middleware should throw an error (similar to how middy does it)?
E.g. would it look like this?
from aws_lambda_powertools.middleware_factory import lambda_handler_decorator

sqs_client = boto3.client("sqs")

def get_queue_url_from_arn(arn: str) -> str:
    _, account_id, name = arn.rsplit(":", 2)
    return sqs.get_queue_url(
        QueueName=name,
        QueueOwnerAWSAccountId=account_id
    )["QueueUrl"]

@lambda_handler_decorator
def sqs_partial_batch_failure(handler, event, context):
    response = handler(event, context)

    # This could be optional.
    # We only need the list of successful messages, but this could be used for logging.
    failed_messages = response.get("failed", [])

    successful_messages = response.get("success", [])

    # Process successful messages, if any.
    if successful_messages:
        queue_url = get_queue_url_from_arn(event["Records"][0]["eventSourceARN"])

        # Delete the successful messages
        sqs.delete_message_batch(
            QueueUrl=queue_url,
            Entries=[
                {
                    "Id": e["messageId"],
                    "ReceiptHandle": e["receiptHandle"]
                } for e in successful_messages
            ]
        )

    # Throw an exception for failed messages
    if failed_messages:
        throw Exception(f"Failed to process {len(failed_messages)} messages.")

    # Alternative if we don't capture failed messages:
    # if len(successful_messages) < len(event["Records"]):
    #     throw Exception("Failed to process {} messages.".format(len(event["Records"]) - len(successful_messages)))

Thanks a lot, it's much clearer this way! 👍
Quick question on how the implementation would look like. If I understood correctly your proposal, the handler should return something that will tell the middleware that messages were failed/successful, then if there are any failed message, the middleware should throw an error (similar to how middy does it)?
E.g. would it look like this?
from aws_lambda_powertools.middleware_factory import lambda_handler_decorator

sqs_client = boto3.client("sqs")

def get_queue_url_from_arn(arn: str) -> str:
    _, account_id, name = arn.rsplit(":", 2)
    return sqs.get_queue_url(
        QueueName=name,
        QueueOwnerAWSAccountId=account_id
    )["QueueUrl"]

@lambda_handler_decorator
def sqs_partial_batch_failure(handler, event, context):
    response = handler(event, context)

    # This could be optional.
    # We only need the list of successful messages, but this could be used for logging.
    failed_messages = response.get("failed", [])

    successful_messages = response.get("success", [])

    # Process successful messages, if any.
    if successful_messages:
        queue_url = get_queue_url_from_arn(event["Records"][0]["eventSourceARN"])

        # Delete the successful messages
        sqs.delete_message_batch(
            QueueUrl=queue_url,
            Entries=[
                {
                    "Id": e["messageId"],
                    "ReceiptHandle": e["receiptHandle"]
                } for e in successful_messages
            ]
        )

    # Throw an exception for failed messages
    if failed_messages:
        throw Exception(f"Failed to process {len(failed_messages)} messages.")

    # Alternative if we don't capture failed messages:
    # if len(successful_messages) < len(event["Records"]):
    #     throw Exception("Failed to process {} messages.".format(len(event["Records"]) - len(successful_messages)))

Exactly ! After removing successful messages, raise an error for failed ones. One technical detail of middy is that they enforce an API (allSettled), I'm not a huge fan of this approach but also, not quite sure if we'll be able to create some abstraction of "error tracking" each record, for both sync and async cases. Thoughts ?

We have built this our selves so I can share the how/why as input, sample code:
sqs = SQS(queue=os.getenv("QUEUE_URL"))

def handler(event: dict, context: LambdaContext) -> None:
    # Run the given callback method for each message
    sqs.process_messages(event["Records"], sqs_callback)

def sqs_callback(message: str, attributes: dict) -> bool:
    # Process your message here
    return True # False or an Exception would not delete the specific message

The SQS class lives in a lambda layer:
class SQS:
    def __init__(self, queue: str) -> None:
        self.log = logging.getLogger()
        self.client = boto3.client("sqs")
        self.queue = queue

    def process_messages(self, messages: List[dict], callback: Callable) -> None:
        """
        Call the callback with the body for each SQS message in the given event, the callback needs to return True if
        the message has been handled as expected. False or an exception may be raised in case of unexpected output.

        When the callback function returns True the message will be deleted from the SQS Queue.

        When the callback function returns False the message will not be deleted from the SQS Queue and fallback on the
        retry policy and dead-letter queue configuration.
        """
        self.log.info(f"Found {len(messages)} records.")

        failed_records = []

        for message in messages:
            try:
                processed = callback(message["body"], message.get("attributes"))
            except Exception as e:
                processed = False
                self.log.warning(str(e))

            if processed:
                self.log.info(f"Record {message['messageId']} has been processed.")
                self.__delete_message(message)
            else:
                self.log.warning(
                    f"Unable to process the message with the id: {message['messageId']}"
                )
                failed_records.append(message["messageId"])

        if failed_records:
            raise ValueError(
                "The following records failed to be processed:\n"
                + "\n".join(failed_records)
            )

    def __delete_message(self, record: dict):
        self.log.info(f"Delete message {record['messageId']} from the SQS Queue.")
        self.client.delete_message(
            QueueUrl=self.queue, ReceiptHandle=record["receiptHandle"]
        )

So here are some considerations:

We do the looping of the messages in a separate class so that the looping behaviour only needs to be tested by the tests of the class and you don't need to do that in your lambda test
We make sure that valid processed messages get deleted and if a failure occurs we raise an exception triggering a retry.
We pass along a QueueUrl because I read somewhere that the ARN to URL conversion would not be guaranteed but that would be a nice improvement to fetch the QueueURL from the event or context.

Hi @nmoutschen an @Nr18, very insightful opnions. I've been thinking over this problem and sth came to my mind: This problem "partial batch failure" is not a particular problem of SQS, we have some other services (kinesis and ddb) facing the same technical limitation. I know this is out of the scope of the current issue, but what if we extended a little bit by offering support to all these services ? At least to think about a interface for all of them.
Here's a prototype:
from typing import Callable, Coroutine, List, Dict
from contextlib import contextmanager,

import boto3

from aws_lambda_powertools.middleware_factory import lambda_handler_decorator

def get_queue_url() -> str:
    pass

def service_factory(service: str) -> str:
    if service == 'sqs':
        return sqs_partial_batch

def get_service_from_record(record: Dict):
    return record.get('eventSource')

class BatchProcessor:

    def __init__(self, records: List):
        self.records = records
        self.failed_messages = []

    def process(self, record_handler: Callable):
        for record in self.records:
            try:
                record_handler(record)
            except Exception:
                self.failed_messages.append(record)

    async def async_process(self, record_handler: Coroutine):
        pass

@contextmanager
def ddb_partial_batch(records: List[Dict]):
    pass

@contextmanager
def kinesis_partial_batch(records: List[Dict]):
    pass

@contextmanager
def sqs_partial_batch(records: List[Dict]):
    queue_url = get_queue_url()
    sqs_client = boto3.client('sqs')
    processor: BatchProcessor = BatchProcessor(records)

    try:
        yield processor
    finally:
        sqs_client.delete_message_batch(
            QueueUrl=queue_url, Entries=processor.failed_messages
        )

def process_record(record: Dict):
    if record.get('fail'):
        raise Exception

    return record

def handler(event, context):
    with sqs_partial_batch(event['Records']) as ctx:
        ctx.process(process_record)

It's also possible to create a middleware to work for all services:
@lambda_handler_decorator
def partial_batch(handler, event, context, record_handler: Callable = None):
    service = get_service_from_record(event['Records'][0])
    partial_batch_processor = service_factory(service)

    records: List[Dict] = event['Records']

    with partial_batch_processor(records) as processor:
        processor.process(record_handler)

@partial_batch(record_handler=process_record)
def handler(event, context):
    pass

We can provide both of them :). Hope to hear from you guys !
ps. The implementation is incomplete.

@gmcrocetti that was something I was thinking about as well. In a Lambda function, you want to focus on the business logic so having only this in your lambda does that:
from ........ import partial_batch

@partial_batch(record_handler=process_record)
def handler(event, context) -> None:
    pass

def process_record(record: dict) -> None:
    # Business logic
    pass

Just thinking outload here if you look at the powertools it would look like this (a lot of decoration going on):
@tracer.capture_lambda_handler
@logger.inject_lambda_context
@metrics.log_metrics(capture_cold_start_metric=True)
@partial_batch(record_handler=process_record)
def handler(event: dict, context: LambdaContext) -> None:
    pass

@tracer.capture_method
def process_record(record: dict) -> None:
    # Business logic
    pass

Haven’t read this in depth nor put much thought into it yet, but it sounds
like this would benefit from a BatchProcessor Provider so you could swap
them, add custom logic if necessary, and have it’s own config.
On the other hand, Kinesis and DDB async controls should remove poison
pills/ingest failed records into a DLQ. Stream processors in general should
take idempotency into account, though I see your point on wanting to avoid
another 3-step cycle of - Put something into a DLQ, alerting on DLQ depth,
re-drive messages from DLQ to Stream/Queue, by deleting successful messages
only instead.
As regards to the decorator piece, we created the Middleware factory to
also account for that — Here’s an example I did last week to combine
Logger, Tracer, and some custom logic too
@metrics.log_metrics(capture_cold_start_metric=True)
@process_booking_handler(logger=logger)
def lambda_handler(event, context):
...
https://github.com/aws-samples/aws-serverless-airline-booking/blob/develop/src/backend/booking/src/cancel-booking/cancel.py
On Fri, 31 Jul 2020 at 11:10, Joris Conijn<EMAIL_ADDRESS>wrote:

@gmcrocetti https://github.com/gmcrocetti that was something I was
thinking about as well. In a Lambda function, you want to focus on the
business logic so having only this in your lambda does that:
from ........ import partial_batch
@partial_batch(record_handler=process_record)def handler(event, context) -> None:
pass
def process_record(record: dict) -> None:
# Business logic
pass
Just thinking outload here if you look at the powertools it would look
like this (a lot of decoration going on):
@tracer.capture_lambda_handler@logger.inject_lambda_context@metrics.log_metrics(capture_cold_start_metric=True)@partial_batch(record_handler=process_record)def handler(event: dict, context: LambdaContext) -> None:
pass
@tracer.capture_methoddef process_record(record: dict) -> None:
# Business logic
pass
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/awslabs/aws-lambda-powertools-python/issues/92#issuecomment-667020669,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZPQBFSP2OTNT5YMRULF5LR6KC6VANCNFSM4PCN2HYA
.

Any news ? I would like to contribute, if possible :)

hey @gmcrocetti - I'm happy with this, though I can't work on the implementation atm. If you'd like to give it a go, feel free to create a PR after setting up your dev env.
As this will be a utility, you might be able to copy the structure Nicolas started in #96 so we can use .utilities namespace for non-core utilities.
Let me know if you need a hand on any of this, otherwise I can look at it after finishing the #97 and #95 :)
Thanks a lot for the help

Nearly there... \ o / Minor adjustments on docs, and we should be able to publish it in the next release (1.5.0)

@gmcrocetti lemme know what's easiest way to reach out to you - Feel free to DM me on Twitter. I'd like to help complete that PR so we can release 1.5.0 this week ;)

This has now available in 1.5.0 release


feat: Scheduled segment overrides

Thanks for submitting a PR! Please check the boxes below:

[x] I have added information to docs/ if required so people know about the feature!
[x] I have filled in the "Changes" section below?
[x] I have filled in the "How did you test this code" section below?
[x] I have used a Conventional Commit title for this Pull Request

Changes
Adds the ability to schedule segment overrides. This applies to both versioned and non-versioned environments

How did you test this code?
Schedule segment overrides, view scheduled changes

@kyle-ssg I'm a little confused by this one:
Firstly, I don't understand how the following can be true since scheduled updates rely on change requests under the hood, and we don't support change requests for segments in non-versioned environments.

This applies to both versioned and non-versioned environments

Secondly, when I tried to test it, the first thing that happened was that I was just redirected to the billing page directly which confused me. I think it's because scheduled flags aren't available for non-paid plans, but I'm unsure why we're not using the pattern we have elsewhere that shows a banner that it's only available in another plan.
Then, when I tested it in an organisation that is using the enterprise plan, using a non-versioned environment, it just appears to immediately apply the change, I don't see the scheduling modal pop up.

Firstly, I don't understand how the following can be true since scheduled updates rely on change requests under the hood, and we don't support change requests for segments in non-versioned environments.

Ah yep correct, for some reason I thought this worked for both.

Secondly, when I tried to test it, the first thing that happened was that I was just redirected to the billing page directly which confused me.
I've updated the UI to be as such, I don't think we'd want to show a banner here, a simple lock badge should be fine

Then, when I tested it in an organisation that is using the enterprise plan, using a non-versioned environment, it just appears to immediately apply the change, I don't see the scheduling modal pop up.

I believe this was due to being tested on a non-versioned project which as you said doesn't work.


Update README.org

Reword "Some key-bindings in org-journal overwrite org-mode key bindings" to improve clarity.

Thank you for your pull request! This has clarified one point for me: there are actually two conflicts here, not one.

some org-journal key bindings don't work from regular org-mode buffers
some org-mode key bindings don't work in org-journal buffers

The current README addresses 2, but not 1. Your revised README addresses 1, but not 2. I think we should mention both issues, actually.
Would you like to incorporate this into your pull request?

Just committed b3a82f4 to address both scenarios.

That's really cool, thank you very much!


Add a tests based on the example folders

As I mentionned to @nhoizey during WeLoveSpeed, I would like to help for anything related to the tooling (tests/refactoring/webpack/etc.).
So before doing some heavier refactoring, here are tests that would make it easy for me to see if I've broke something or not. The tests are pretty long since they run the two examples and check if the results have changed.
In order to check if travis is correctly configured, you'd need to enable it on this project. Hopefully, it should work as is since I've enabled it on my fork.
I'm not used to contributing in the open source world. So feel free to tell me if you want me to change anything.

@JulienPradet thanks a lot, welcome on board!
It is my first time configuring Travis, so I might have some questions… ;-)


Slide on arrows hover/mouse over

I did read the topic https://github.com/kenwheeler/slick/issues/569
however I do not understand where to put the code to be able on arrow hover, to slide the slider
$('.slick-slide').on('mouseover',function(){
$('.your-slider-class').slickNext();
});

Why is the topic closed? Does not work. You were asked, could you tell more about this?

This works for me:
$('.slick-next').on('mouseover',function(){
$(".slick-slider").slick('slickNext');
});

The best option I found is this one:
On the js file apply "arrows: true" and copy and paste the following css:
/slick arrows on hover/
.slick-arrow{
opacity: 0;
transition: all .25s ease-in-out;
-moz-transition: all .25s ease-in-out;
-webkit-transition: all .25s ease-in-out;
}
.slick-arrow:hover{
opacity: 1;
}
That works for me and I hope it works for you as well.
Cheers,
Fernando Fas

Guys hi, i found it mouseover change slider items :)
/*Manşet Horizontal Slider*/         $('#mansetSlider').slick({             slidesToShow: 1,             slidesToScroll: 1,             dots: true,             autoplay: true,             infinite: true,             autoplaySpeed: 4000,             appendDots: '#mansetSliderDotsContainer',             dotsClass: 'mansetSliderDots',             nextArrow: '#mansetSliderNext',             prevArrow: '#mansetSliderPrev',         });
`  const buttons = document.querySelectorAll(".mansetSliderDots > li > button");
    buttons.forEach((button, i) => button.addEventListener("mouseover", function() {
        console.log(i);
        $('#mansetSlider').slick('slickGoTo', i);

    }));`

Have o good day :)


Try to add a self-signed cert, but pod fail to start

Description:
Try add a self-signed cert for integerd with LDAP, but pod enter state "Init:Error"

values.yaml related

##
## Confluence specific configurations
## https://hub.docker.com/r/atlassian/confluence-server
## confluence/secrets/cas
# caCerts: {}
caCerts:
  secret: onu-ipa-ca-crt
  storepass: onuware
# caCertsEnv:
#   - name: VARIABLE

kubectl get pods -n onuware onuware-confluence-confluence-server-74c84fcd46-z8dt9                           ✔  10980  18:40:36  100% 🔋
NAME                                                    READY   STATUS       RESTARTS   AGE
onuware-confluence-confluence-server-74c84fcd46-z8dt9   0/1     Init:Error   6          7m14s

kubectl describe pods onuware-confluence-confluence-server-74c84fcd46-z8dt9 -n onuware                      ✔  10981  18:42:40  100% 🔋
Name:         onuware-confluence-confluence-server-74c84fcd46-z8dt9
Namespace:    onuware
Priority:     0
Node:         kiwi.onuware.loc/<IP_ADDRESS>
Start Time:   Tue, 07 Jul 2020 18:35:56 +0800
Labels:       app.kubernetes.io/instance=onuware-confluence
              app.kubernetes.io/name=confluence-server
              pod-template-hash=74c84fcd46
Annotations:  <none>
Status:       Pending
IP:           <IP_ADDRESS>
IPs:
  IP:           <IP_ADDRESS>
Controlled By:  ReplicaSet/onuware-confluence-confluence-server-74c84fcd46
Init Containers:
  ca-certs:
    Container ID:  docker://cff2c9734d488dfa89364f7a2747065aed53c3ae6f6cc48e72f78f518b2c985c
    Image:         adoptopenjdk/openjdk11:alpine
    Image ID:      docker-pullable://adoptopenjdk/openjdk11@sha256:c9cb8bd3f1ea242cee1706e575987aaf64bdd07e0f3e4e0d806768b79b6468aa
    Port:          <none>
    Host Port:     <none>
    Command:
      /bin/sh
      -c
    Args:
      cp -f \"${JAVA_HOME}/lib/security/cacerts\" /var/atlassian/application-data/confluence/cacerts; for f in /var/atlassian/application-data/confluence/secrets/cas/*; do keytool -importcert -file \"${f}\" -alias \"$(basename \"${f}\")\" -keystore /var/atlassian/application-data/confluence/cacerts -storepass "onuware" -trustcacerts -noprompt; done;
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Error
      Exit Code:    1
      Started:      Tue, 07 Jul 2020 18:42:24 +0800
      Finished:     Tue, 07 Jul 2020 18:42:26 +0800
    Ready:          False
    Restart Count:  6
    Environment:    <none>
    Mounts:
      /var/atlassian/application-data/confluence from onuware-confluence-confluence-server-home (rw)
      /var/atlassian/application-data/confluence/secrets/cas from confluence-cas (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-8qxgs (ro)
Containers:
  confluence-server:
    Container ID:
    Image:          atlassian/confluence-server:7.5.0
    Image ID:
    Port:           8090/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       PodInitializing
    Ready:          False
    Restart Count:  0
    Requests:
      cpu:     500m
      memory:  1Gi
    Environment Variables from:
      onuware-confluence-confluence-server-cm  ConfigMap  Optional: false
    Environment:                               <none>
    Mounts:
      /var/atlassian/application-data/confluence from onuware-confluence-confluence-server-home (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-8qxgs (ro)
Conditions:
  Type              Status
  Initialized       False
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  onuware-confluence-confluence-server-home:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  onuware-confluence-confluence-server-home
    ReadOnly:   false
  confluence-cas:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  onu-ipa-ca-crt
    Optional:    false
  ca-cert:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  ca-cert
    Optional:    false
  default-token-8qxgs:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-8qxgs
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason     Age                     From                       Message
  ----     ------     ----                    ----                       -------
  Normal   Scheduled  <unknown>               default-scheduler          Successfully assigned onuware/onuware-confluence-confluence-server-74c84fcd46-z8dt9 to kiwi.onuware.loc
  Normal   Pulled     5m47s (x5 over 7m39s)   kubelet, kiwi.onuware.loc  Container image "adoptopenjdk/openjdk11:alpine" already present on machine
  Normal   Created    5m45s (x5 over 7m38s)   kubelet, kiwi.onuware.loc  Created container ca-certs
  Normal   Started    5m43s (x5 over 7m37s)   kubelet, kiwi.onuware.loc  Started container ca-certs
  Warning  BackOff    2m39s (x23 over 7m30s)  kubelet, kiwi.onuware.loc  Back-off restarting failed container

kubectl get secrets -n onuware onu-ipa-ca-crt
onu-ipa-ca-crt   Opaque   1      7h6m

login to node, get docker info

docker logs k8s_ca-certs_onuware-confluence-confluence-server-74c84fcd46-z8dt9_onuware_91d58cc4-ea2f-402d-aaba-d9284ffa578e_6
cp: can't stat '"/opt/java/openjdk/lib/security/cacerts"': No such file or directory
keytool error: java.io.FileNotFoundException: "/var/atlassian/application-data/confluence/secrets/cas/ipa-ca.crt" (No such file or directory)

Where am I misconfigure the values.yaml? And why this path confluence/secrets/cas didn't mount?
Thanks.

Hi, thanks for contacting me. It seems that's a issue with the Chart. I changed few things.
Could you try to install the Chart using the version of the branch confluence-ssl-certs and let me know what's the result in your case?
Thanks.

Thanks a lot.
I'll try and let you know the result.
Thanks a lot.

btw: jira-software also had the same problems.

hi, Mox
Failed to start
 helm install -n onuware -f ./confluence-server/values.yaml onuware-confluence ./confluence-server               ✔  11080  14:17:42  100% 🔋
Error: Deployment.apps "onuware-confluence-confluence-server" is invalid: spec.template.spec.initContainers[0].image: Required value

in file confluence-server/templates/deployment.yaml
  26   │       initContainers:
  27   │         - name: ca-cert
  28   │         - name: ca-certs

must delete line 27 or line 28
Thanks.

still failed to start
[core@host-192-168-30-244 ~]$ sudo docker logs k8s_ca-certs_onuware-confluence-confluence-server-6b5847c559-sxwm9_onuware_0d9c2106-6612-40a8-bf15-0e99e4be8124_4
basename: missing operand
Try 'basename --help' for more information.
keytool error: java.io.FileNotFoundException: -alias (No such file or directory)

code snippet is here
cat confluence-server/templates/deployment.yaml |rg -i basename                                                 ✔  11112  14:41:32  100% 🔋
                keytool -importcert -file ${f} -alias $(basename ${f}) \

My best guess is the secret didn't mount to container.
Thanks.

Thanks for the feedback. Those two errors should be fixed now. Could you give another try? We might still have to do some trial and error here, though.

oops, still no luck
[core@host-192-168-30-244 ~]$ sudo docker logs k8s_ca-certs_onuware-confluence-confluence-server-86c765f944-f5mfn_onuware_daaf5b19-b56c-4f4c-9a51-4693d9c1a8e5_4
Illegal option:  ipa-ca.crt
keytool -importcert [OPTION]...
Imports a certificate or a certificate chain
Options:
 -noprompt               do not prompt
 -trustcacerts           trust certificates from cacerts
 -protected              password through protected mechanism
 -alias <alias>          alias name of the entry to process
 -file <file>            input file name
 -keypass <arg>          key password
 -keystore <keystore>    keystore name
 -cacerts                access the cacerts keystore
 -storepass <arg>        keystore password
 -storetype <type>       keystore type
 -providername <name>    provider name
 -addprovider <name>     add security provider by name (e.g. SunPKCS11)
   [-providerarg <arg>]    configure argument for -addprovider
 -providerclass <class>  add security provider by fully-qualified class name
   [-providerarg <arg>]    configure argument for -providerclass
 -providerpath <list>    provider classpath
 -v                      verbose output
Use "keytool -?, -h, or --help" for this help message

@moxbot
It start running now.
Could you also update jira for same problems?
Thanks.

Sure, I will update both charts.
Many thanks for helping me debugging this!


chore: do not run forge fmt because not everyone has forge installed

this was accidentally merged to master

Benchmark results
Metrics with a significant change:

note_trial_decrypting_time_in_ms (32): 102 (+132%)

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Values are compared against data from master at commit 4de25403 and shown if the difference exceeds 1%.
L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
8 txs
32 txs
128 txs

l1_rollup_calldata_size_in_bytes
45,636
180,516
720,036

l1_rollup_calldata_gas
222,600
869,964
3,464,148

l1_rollup_execution_gas
315,087
987,704
3,683,805

l2_block_processing_time_in_ms
1,160
4,374 (-3%)
17,354 (+1%)

note_successful_decrypting_time_in_ms
307 (+1%)
974 (-3%)
3,709 (+3%)

note_trial_decrypting_time_in_ms
21.5 (+55%)
:warning: 102 (+132%)
151 (+3%)

l2_block_building_time_in_ms
17,999
70,832
284,544

l2_block_rollup_simulation_time_in_ms
13,077
51,678
208,202

l2_block_public_tx_process_time_in_ms
4,871 (+1%)
19,074
76,078

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric
5 blocks
10 blocks

node_history_sync_time_in_ms
14,028 (+1%)
27,380 (+4%)

note_history_successful_decrypting_time_in_ms
2,317 (-7%)
4,754 (+3%)

note_history_trial_decrypting_time_in_ms
81.0 (-12%)
160 (-31%)

node_database_size_in_bytes
17,367,120
33,034,320

pxe_database_size_in_bytes
29,923
59,478

Circuits stats
Stats on running time and I/O sizes collected for every circuit run across all benchmarks.

Circuit
circuit_simulation_time_in_ms
circuit_input_size_in_bytes
circuit_output_size_in_bytes

private-kernel-init
310
44,512
26,225

private-kernel-ordering
198
44,545
16,625

base-rollup
1,403
129,002
881

root-rollup
82.5
4,088
677

private-kernel-inner
443
71,703
26,225

public-kernel-private-input
246
32,647
26,225

public-kernel-non-first-iteration
246
32,689
26,225

merge-rollup
7.62
2,608
881

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
2 leaves
8 leaves
16 leaves
32 leaves
128 leaves
64 leaves
512 leaves
1024 leaves
2048 leaves
8192 leaves

batch_insert_into_append_only_tree_16_depth_ms
10.3
11.3 (+6%)
12.7
17.0
22.8
64.4 (+1%)
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.9
17.5
23.0
31.6
47.0
143
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.596
0.630 (+6%)
0.540
0.528
0.478
0.444 (+1%)
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
N/A
N/A
N/A
75.0
48.2 (+1%)
240
461
903 (-7%)
3,573

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
N/A
N/A
N/A
159
96.0
543
1,055
2,079
8,223

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
0.464
0.495 (+1%)
0.437
0.431
0.429 (-7%)
0.429

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
N/A
N/A
N/A
103 (-1%)
56.6
349
689
1,369 (-3%)
5,440

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
N/A
N/A
N/A
197
104
691
1,363
2,707
10,771

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
0.493
0.496
0.476
0.474
0.474 (-4%)
0.473

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
N/A
56.6
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
N/A
94.1
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
N/A
0.578
N/A
N/A
N/A
N/A
N/A
N/A
N/A

Miscellaneous
Transaction sizes based on how many contracts are deployed in the tx.

Metric
0 deployed contracts
1 deployed contracts

tx_size_in_bytes
17,271
40,063

Transaction processing duration by data writes.

Metric
0 new commitments
1 new commitments

tx_pxe_processing_time_ms
557 (-1%)
1,320

Metric
0 public data writes
1 public data writes

tx_sequencer_processing_time_ms
0.517 (-7%)
590

forge should be installed with a root bootstrap?

Correct, but we don't know how many have it in $PATH (I don't have it added so it crashed with command not found)


Substring showing error after getting value

I'm getting this RangeError in substring. But everything is working
My code
print(path);
    var sString = path.substring(1); // celebrity/1
    var index = sString.toString().indexOf('/'); // 9
    var n = sString;
    var data = n.substring(0, index); // celebrity
    var id = sString.substring(index + 1);
    print(id);

It's printing the id and after printing the id it gives me the below error.
Error Outpu
2:ui_dart_state.cc(166)] Unhandled Exception: RangeError: Value not in range: 1
#0      _StringBase.substring (dart:core-patch/string_patch.dart:390:7)

@ziasultan2
Your question / issue is better suited for StackOverflow. Please ask this there to get help on your code.
You may also checkout this article to see how to properly use and implement subString() method, https://medium.com/flutter-community/exploring-string-methods-in-dart-324f747b8d15
Closing from here as this isn't an issue with framework, but with code implementation. If you disagree, write in comments and I'll reopen it.
Thanks.

It was issue of simulator. I restart the simulator and it works don't know why it was showing the error before restarting simulator


fix : minor fix on path

minor fixes

add black to environment
fix paths for jetveto
add file names with set
add PU files

@demuller seems I couldn't self-review this easy PR and merge 😂 , could you please take a look on this PR?

yes will do! seems I cannot add you either :D so self-review of PRs seems to be forbidden (which usually makes sense)


The final app size is enormous

This package is  Amazing and this is exactly what i was looking for however i endup on a deadwhen when my final app build came out 100mb+.
i know ffmpeg is large but not 100mb large , i just build the release mode app with bare minimum code and output apk size is 100mb+ which is crazy
also documentation is really confusing kindly add some working examples for each recording method that would be really great.

There is a whole working example.
Nonetheless if you need just part of the FFmpeg functions you can replace the FFmpeg paths with your need. Kindly refer to the flutter FFmpeg plugin to see the different import options and fork a custom version.
Please also consider compressing options, deferred loading or other methods to reduce your app. The render plugin itself is essentially just a extensive but lean wrapper for FFmpeg - there isn't much room for optimization on this plugins side...


PilotAssistant KSP 113

Tested various core functions in 1.1.3 - seems to work.  No obvious compatibility reports on forums.
No response from author despite #4052 and Crzyrndm/Pilot-Assistant/issues/25.

#rebuild

#rebuild

#rebuild

Looks good to me. Merging with thanks!


Implement Response Set show in the SPA [SDP-210]

Make sure you have checked off the following before you issue your Pull Request:

[x] Added unit tests for new functionality
[x] Passed all unit tests using rails test with 90%+ coverage
N/A Added cucumber tests for any new functionality
PhantomJS sadness Passed all cucumber tests using bundle exec cucumber
[x] Passed overcommit hooks, including running all code through Rubocop
N/A If any database changes were made, run rake generate_erd to update the README.md
N/A If any changes were made to config/routes.rb run rake jsroutes:generate

Some of the stuff, particularly with the middleware additions is a little beyond my understanding, but nothing else stands out as incomplete or incorrect (other than some missing component tests, but that's largely code debt incurred elsewhere).


blendUrl() stuck after finishing the job

When I run the blendUrl() it succesffuly generated the image, and I can see the image generated in the discord. but the function stuck and keeps returning the following :
2023-08-11 20:37:45 Info: waitMessage 1st request gets 0 messages, Will retry one per sec up to 3000 times
2023-08-11 20:37:46 Info: waitMessage 1th request gets 1 messages
2023-08-11 20:38:21 Info: waitMessage 30th request gets 1 messages
Here is my function and it doesn't even reach the console.log()
const msg = await client.blendUrl(
uploadedImageUrls
);
console.log("you find your result here: ", msg.attachments[0].url);
console.log("msg.attachments[0].id: ", msg.attachments[0].id);
console.log("you msg.id: ", msg.id);

Hi my midjourney subscribtion is over, so I can not denug that.


RC0.10.0

milestone https://github.com/material-components/material-components-web-react/milestone/6

Codecov Report

Merging #685 into master will decrease coverage by 0.02%.
The diff coverage is 97.05%.

@@            Coverage Diff             @@
##           master     #685      +/-   ##
==========================================
- Coverage   94.83%   94.81%   -0.03%
==========================================
  Files          67       68       +1
  Lines        2768     2852      +84
  Branches      414      431      +17
==========================================
+ Hits         2625     2704      +79
- Misses         50       51       +1
- Partials       93       97       +4

Impacted Files
Coverage Δ

packages/fab/index.tsx
92.3% <100%> (+0.3%)
:arrow_up:

packages/chips/ChipSet.tsx
98.79% <100%> (+0.14%)
:arrow_up:

packages/text-field/Input.tsx
96.72% <100%> (ø)
:arrow_up:

packages/tab-bar/index.tsx
85.71% <100%> (ø)
:arrow_up:

packages/chips/Chip.tsx
97.97% <100%> (+0.2%)
:arrow_up:

packages/ripple/index.tsx
85.47% <83.33%> (-2.36%)
:arrow_down:

packages/snackbar/index.tsx
96.82% <96.82%> (ø)

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 ca766a7...a79dc3a. Read the comment docs.

Codecov Report

Merging #685 into master will decrease coverage by 0.02%.
The diff coverage is 97.05%.

@@            Coverage Diff             @@
##           master     #685      +/-   ##
==========================================
- Coverage   94.83%   94.81%   -0.03%
==========================================
  Files          67       68       +1
  Lines        2768     2852      +84
  Branches      414      431      +17
==========================================
+ Hits         2625     2704      +79
- Misses         50       51       +1
- Partials       93       97       +4

Impacted Files
Coverage Δ

packages/fab/index.tsx
92.3% <100%> (+0.3%)
:arrow_up:

packages/chips/ChipSet.tsx
98.79% <100%> (+0.14%)
:arrow_up:

packages/text-field/Input.tsx
96.72% <100%> (ø)
:arrow_up:

packages/tab-bar/index.tsx
85.71% <100%> (ø)
:arrow_up:

packages/chips/Chip.tsx
97.97% <100%> (+0.2%)
:arrow_up:

packages/ripple/index.tsx
85.47% <83.33%> (-2.36%)
:arrow_down:

packages/snackbar/index.tsx
96.82% <96.82%> (ø)

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 ca766a7...a79dc3a. Read the comment docs.

Codecov Report

Merging #685 into master will decrease coverage by 0.02%.
The diff coverage is 97.05%.

@@            Coverage Diff             @@
##           master     #685      +/-   ##
==========================================
- Coverage   94.83%   94.81%   -0.03%
==========================================
  Files          67       68       +1
  Lines        2768     2852      +84
  Branches      414      431      +17
==========================================
+ Hits         2625     2704      +79
- Misses         50       51       +1
- Partials       93       97       +4

Impacted Files
Coverage Δ

packages/fab/index.tsx
92.3% <100%> (+0.3%)
:arrow_up:

packages/chips/ChipSet.tsx
98.79% <100%> (+0.14%)
:arrow_up:

packages/text-field/Input.tsx
96.72% <100%> (ø)
:arrow_up:

packages/tab-bar/index.tsx
85.71% <100%> (ø)
:arrow_up:

packages/chips/Chip.tsx
97.97% <100%> (+0.2%)
:arrow_up:

packages/ripple/index.tsx
85.47% <83.33%> (-2.36%)
:arrow_down:

packages/snackbar/index.tsx
96.82% <96.82%> (ø)

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 ca766a7...a79dc3a. Read the comment docs.

RC branch to merge into master. CLA has been signed in all former PRs.


Create a template to support Visual Studio 2022+

Microsoft changed the VSIX template implementation for 2022 in such a way that is incompatible with previous versions (2015-2019).
Create a new template that will work with 2022.
Since the only shared components are the payload and the wizard, see if it's possible to share those resources between two different projects.

VS 2022 is a 64-bit app, with no support for 32-bit extensions.
This article details the changes needed to update applications.
It seems that the project template qualifies as running code (it has a wizard attached), so that implies that we'll need to follow these steps.


Explicit, additional CPU Type support (S7-1200, S7-1500, etc...)

The existing CPU Types may work for other devices, but I don't know for sure. For example, using the S7300 type allows me to communicate with an S7-1200 just fine.
Other CPU types I would like to investigate:

S7-1200
S7-1500
ET200M
SIMOTION Controllers

This works for me for connecting to S7-1500 (fixed values instead of rack/slot).  It's the only change I had to make.
case CpuType.S71500:
// Eigener Tsap
bSend1[11] = 193;
bSend1[12] = 2;
bSend1[13] = 0x10;
bSend1[14] = 0x2;
// Fremder Tsap
bSend1[15] = 194;
bSend1[16] = 2;
bSend1[17] = 0x3;
bSend1[18] = 0x0;
break;

S7 1200 and S7 1500 are now supported.

You still need the Slot (and possibly the rack) for 1500.  I don't know specifics, but just yesterday I had to use slot 1 to connect (probably connected to a CP)
bSend1[18] = Slot;

Ok I need to investigate a bit on this. I remember too that for S7 1200 and 1500 you need slot 1, let me check some documentation then i'll get back with a fix.

Based on this page (http://settimino.sourceforge.net/comp_1200.html) and several posts around internet, it seems that S71200 and S7 1500 needs (rack = 0; slot = 0).
If you have the equipment, can you verify if that's true ?

On the test I did a couple of days ago:
If I connected to the CPU's IP address I had to use bSend1[18] = 0
If I connected to the CP's IP address I had to use bSend1[18] = 1
In TIA Portal, the CPU is displayed as slot 1 and the CP as slot 2.
This is for 1500.  I've tested with 1200.

With CP you mean Siemens CP 1543-1 ? External ethernet card ?

Added rack and slot on S7 1500.


Remove dependency on ofswitch plugin and support for hosted FreeSWITCH servers

Remove dependency on ofswitch plugin and add support for externally hosted FreeSWITCH servers like signalwire.com

Done. Now available in version 1.2.6

Dependency on websocket proxy in ofswitch plugin for openfire is now removed. SIP Phone can register with any SIP proxy configured in SIP plugin for openfire.


modsecurity Installation complete apache  startup failed

一、my environment

Centos6.10
apache:

mysql
二、my question

When I finished installing modsecurity, I failed to restart apache

Hello @KevinMahone
In ModSecurity, each SecRule (or chain) is identified by a unique 'id' that is specified within the actions section of the rule.  The error message is telling you that the id of the SecRule that appears on line 23 is duplicated somewhere else.  For example, if the rule on line 23 has an id of 200001, then another rule elsewhere also has the id 200001.

So how can I adjust if all ids are configured to the same value?

Should I set all the ids to be the same

httpd.txt
Hi,This is my modsecurity.conf file,Could you take a look at it for me What was the problem?

The file that you have included does not look like a modsecurity.conf file.
If you got ModSecurity2.9 by doing something like sudo wget https://www.modsecurity.org/tarball/2.9.0/modsecurity-2.9.0.tar.gz,
and after untaring did cp modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.conf, then your /etc/httpd/conf.d/modsecurity.conf file should start with:
# -- Rule engine initialization ----------------------------------------------

# Enable ModSecurity, attaching it to every transaction. Use detection
# only to start with, because that minimises the chances of post-installation
# disruption.
#
SecRuleEngine DetectionOnly

# -- Request body handling ---------------------------------------------------

# Allow ModSecurity to access request bodies. If you don't, ModSecurity
# won't be able to see any POST parameters, which opens a large security
# hole for attackers to exploit.
#
SecRequestBodyAccess On

# Enable XML request body parser.
# Initiate XML Processor in case of xml content-type
#
SecRule REQUEST_HEADERS:Content-Type "text/xml" \
     "id:'200000',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=XML"

# Enable JSON request body parser.
# Initiate JSON Processor in case of JSON content-type; change accordingly
# if your application does not use 'application/json'
#
SecRule REQUEST_HEADERS:Content-Type "application/json" \
     "id:'200001',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=JSON"
...

In this sample snippet it is correct that those two rules have different ids (one is 200000 and the other is 200001).


Challenge http://www.freecodecamp.com/challenges/waypoint-override-styles-with-important has an issue

Small grammar issue/s:
"Also create a "urgently-red" class that give an element the font-color of red, but use "
Should probably read something like:
"Also create an "urgently-red" class that gives an element the font-color of red, but use"
Also from a learning standpoint, the !important syntax, is the challenge to implement it via an inline


Cancel button functionality in custom bar

Hi. I will appreciate if you can help me out. Below is a screenshot of how I want to show the upload bar. How can I get the traditional Cancel functionality into my Cancel button?
Thanks.

Ho you can customise the progress , check the Featured tab in demo page
On Saturday, 31 October 2015, sanaalauddin<EMAIL_ADDRESS>wrote:

Hi. I will appreciate if you can help me out. Below is a screenshot of how
I want to show the upload bar. How can I get the traditional Cancel
functionality into my Cancel button?
Thanks.
[image: upload]
https://cloud.githubusercontent.com/assets/12517730/10861284/b35d0d6c-7f50-11e5-83c8-6309c03987bb.png
—
Reply to this email directly or view it on GitHub
https://github.com/hayageek/jquery-upload-file/issues/78.

Hi. Thanks for the reply. I want to append each upload to a table at the end of the page. But even if I add it as a row (tr) it is going to the div under my upload button. How can I fix that? Thanks.

Can you share your code
On Monday, 2 November 2015, sanaalauddin<EMAIL_ADDRESS>wrote:

Hi. Thanks for the reply. I want to append each upload to a table at the
end of the page. But even if I add it as a row (tr) it is going to the div
under my upload button. How can I fix that? Thanks.
—
Reply to this email directly or view it on GitHub
https://github.com/hayageek/jquery-upload-file/issues/78#issuecomment-152898313
.

Hi Ravi,
I have emailed you the view file. Kindly check. I highly appreciate your effort. Thanks.


Option for measurement system isnt working

Hi, thx for the awesome module.
The option in the module settings "Measurement system" doesnt work. It doesnt matter if the box ist checked or not, aura uses the systems setting.
To Reproduce
Steps to reproduce the behavior:

Go to module settings and uncheck "Measurement system" so it should allways use euclidean as far as i understand the setting.
Set the system settings to (for DnD5e) PHB: Equidistant (5/5/5)
It still uses the system settings and doesnt override them. (i tried all combinations to see if i understood the setting wrong, the checkboxs does nothing)

Expected behavior
It should now use the euclidean measurement aka a circle, but it still is a square.

Environment:

OS: Win10
Browser: chrome (forge more awesomeness)
Foundry Version 9
Module Version 0.4.13
All Modules Disabled: Yes

Additional context
I dont think it matters since i tried changing it, but the feature that has the effect as a passiv for the actor is set to sphere. It would be gr8 if that setting maybe changed stuff like that?

yeah, i have the same problem. I use the normal diagonal 5ft. movement rules. But also the Xanathars AoE Rules. Where atleast half a square has to be in the template to be considered.
And the default option here uses the movement measurement, which would be a square. But deactivating the option, still uses the same measurement.


Excluding directory from coverage

Hi there, I'm using ionic for our app and I can't seem to exclude the www/libs/ folder for the coverage. Its covering js files inside the "lib" folder. The directory structure of ionic is www/libs and www/js where "js" is the main src js files but needs the lib folder to run the app.
I only wanted to get coverage on the www/js folder, is it possible? I tried using env: coverage APP_DIR..: '../intrumented/www/js/' but its not working.
My current Gruntfile.js

copy: {
            'instrument': {
                files: [{
                        src: ['www/**/*', '!www/**/*.js'],
                        dest: 'instrumented/'
                    }]
            }
        },
        instrument: {
            files: 'www/**/*.js',
            options: {
                basePath: "instrumented"
            }
        },

Thanks in advance!

I have no idea on what the grunt tasks do. Please raise this issue with whoever has written the grunt task. istanbul gives you options to include and exclude directories.

Just adding the solution I found. Thanks
http://chawi3.com/2015/02/16/grunt-protractor-coverage-exclude-files-or-directory-angularjs/


webpacker - Unknown argument: host

The command in the docker compose uses webpack-dev-server which isn't in the bin directory
docker-compose.yml
webpacker:
...
command: ./bin/webpack-dev-server --host localhost
# changed to
command: webpack-dev-server --host localhost

This changed has resolved my previous problem.

While trying to get rails 5.1.4 with webpack hmr I arrived here. I use bundle exec ./bin/webpack-dev-server because otherwise I was getting a missing rake related error. But the ./bin/webpack-dev-server binstub does not support command line arguments.
If changing the host in the webpacker.yml is not desired[1], another option to pass --host is to use the WEBPACKER_DEV_SERVER_HOST= environment variable.

[1] someone might not want to change the webpacker.yml host to be friendly in non dockerized development environment, and use the environment variables to override things if using docker.

@webdevsimon @bcardiff Thanks both, so what is the combined solution to this issue.

Are we saying that this is the right command:
command: bundle exec ./bin/webpack-dev-server --host WEBPACKER_DEV_SERVER_HOST

And  a tweak to the dockerfile to contain a default WEBPACKER_DEV_SERVER_HOST

@madwire, no. ./bin/webpack-dev-server does not accept arguments.
The webpacker read the host from the webpacker.yml, or if provided, from the WEBPACKER_DEV_SERVER_HOST env var. The second with higher preference.
I use that and others variable when launching docker to override the localhosts of db and now webpacker.

@madwire It's a fresh project, so things make change, but here is the boilerplate I am using to work with docker. https://github.com/instedd/aida-ui

fixed with #4


Bootloader encrypt_flash_contents: add means to encrypt application image only (IDFGH-11439)

Is your feature request related to a problem?
When enabling flash encryption, bootloader will set relevant fuses and encrypt partitions on next boot. Partition encryption is very slow btw: it takes ~30s to encrypt a 1.5M partition. It becomes even more relevant when we first flash a small app for eol testing. It basically doubles our eol times (compared to the non-encrypted process).
Describe the solution you'd like.
App partition encryption is performed by encrypt_partition() in bootloader_support/src/flash_encryption/flash_encrypt.c. Here all the information is available to encrypt the image only (instead of the whole partition). An example solution is as follows:
static esp_err_t encrypt_partition(int index, const esp_partition_info_t *partition)
{
    esp_err_t err;
    bool should_encrypt = (partition->flags & PART_FLAG_ENCRYPTED);
    uint32_t size = partition->pos.size;

    if (partition->type == PART_TYPE_APP) {
        /* check if the partition holds a valid unencrypted app */
        esp_image_metadata_t metadata;
        err = esp_image_verify(ESP_IMAGE_VERIFY,
                               &partition->pos,
                               &metadata);
        if((should_encrypt = (err == ESP_OK))) {
            size = metadata.image_len;
        }
    } else if ((partition->type == PART_TYPE_DATA && partition->subtype == PART_SUBTYPE_DATA_OTA)
                || (partition->type == PART_TYPE_DATA && partition->subtype == PART_SUBTYPE_DATA_NVS_KEYS)) {
        /* check if we have ota data partition and the partition should be encrypted unconditionally */
        should_encrypt = true;
    }

    if (!should_encrypt) {
        return ESP_OK;
    } else {
        /* should_encrypt */
        ESP_LOGI(TAG, "Encrypting partition %d at offset 0x%x (length 0x%x)...", index, partition->pos.offset, size);

        err = esp_flash_encrypt_region(partition->pos.offset, size);
        ESP_LOGI(TAG, "Done encrypting");
        if (err != ESP_OK) {
            ESP_LOGE(TAG, "Failed to encrypt partition %d", index);
        }
        return err;
    }
}

The change may also be configurable via menuconfig.
Describe alternatives you've considered.
No response
Additional context.
No response

@boborjan2
Thanks for the suggestion, looks quite useful!
However, the actual image length may vary based on the secure boot enabled case. We will have to consider the padding, signature block into calculations. We will analyze this further and share the update on this tracker.

Feature implemented in https://github.com/espressif/esp-idf/commit/42943845e49a2e4f39a79a8a1f75a91f71e16fc0, thus closing this issue.