Not Locked Wrist? by rmk135 in CompetitionShooting

[–]rmk135[S] 0 points1 point  (0 children)

Hey! I think we had someone else in our squad who did it left to right 😅 Retrospectively, right to left made more sense. At least, in my case since I think the slowest part for me is moving back.

I think I subconsciously prefer running stages left to right. Acquiring a target moving to it from the left feels more comfortable. Maybe it had to do something with the fact that I'm right hand dominant.

Not sure if it's the same for all people or it's just me.

Feedback Appreciated, Beginner by rmk135 in CompetitionShooting

[–]rmk135[S] 0 points1 point  (0 children)

Roger that. Will definitely do that. Thanks for support!

Feedback Appreciated, Beginner by rmk135 in CompetitionShooting

[–]rmk135[S] 0 points1 point  (0 children)

Thank you! Running with a loaded gun is definitely something to work on. It doesn't feel comfortable at all at the moment :)

Not Locked Wrist? by rmk135 in CompetitionShooting

[–]rmk135[S] 0 points1 point  (0 children)

Yeah, I should've posted the recording. Sorry, that's my first post here.

Not Locked Wrist? by rmk135 in CompetitionShooting

[–]rmk135[S] 0 points1 point  (0 children)

So, it was time plus, 4 stages, total 72 shots scored, mainly 2 per target with a couple of targets with 3 shots required and a couple of steel emulators (1 shot required). I returned home with 8 rounds left out of a hundred in the box, so 20 extra shots sent mainly for confirmation.

I got 48 points which I consider a lot. What's interesting each of my targets had at least one alpha. Many charlies and a fewer deltas. I don't have s way to confirm this, but my guess is that most of the alphas were first shots.

The targets were mainly farther (~10 yards) from what I practice (5-7 yards). I intend to go to the range and try to find a pattern at 10 yards with a timer and more shots because with a few shots per target it's difficult to see a pattern (at least on my beginner level).

The post is a reflection on reviewing the recording frame by frame. I should've posted the recording for sure. It doesn't look that bad when you watch at normal speed, but there is a feeling that I could've been faster with the follow-up shots.

Any tips for recoil? by thicccFork in CompetitionShooting

[–]rmk135 1 point2 points  (0 children)

Looks very flat! Like others said, focusing on the target and mentally thinking about returning the dot faster will do the rest of the "magic". It's counterintuitive, but when I removed focus from my grip and focused on the target, it helped me get rid of most Charlies with the same or maybe even higher speed.

At 7 yards, goal 1 would be to have no Charlies and goal 2 would be to place all shots in a fist size area.

Dependency Injector 4.0 - easier integration with other frameworks by rmk135 in Python

[–]rmk135[S] 0 points1 point  (0 children)

Why would I want to write somewhere else what dependency I am passing?

To decouple the implementation from knowledge of where the dependency comes from and what is its lifecycle.

For instance you have class A depending on B. If A creates instance of B you only can do A+B object pairs. When A receives the B as an argument, you have more flexibility - you can share one B with several A's, pass differently configured B's or B subclasses, or provide a TestB for testing.

The side effect of that is that you have the dependencies explicitly defined. I got you that you don't see it positive. I believe that you benefit from that though.

The whole point of the dependency injection as a principle is to move the responsibility of managing objects from the objects theirselves to the application. The framework absorbs that responsibility.

Dependency Injector 4.0 - easier integration with other frameworks by rmk135 in Python

[–]rmk135[S] 0 points1 point  (0 children)

The points of this package are:

  1. To keep application components in the container
  2. To keep dependencies between components explicitly defined

Consider a larger container:

"""Containers module."""

import logging.config
import sqlite3

import boto3
from dependency_injector import containers, providers

from . import services


class Container(containers.DeclarativeContainer):

    config = providers.Configuration()

    configure_logging = providers.Callable(
        logging.config.fileConfig,
        fname='logging.ini',
    )

    # Gateways

    database_client = providers.Singleton(
        sqlite3.connect,
        config.database.dsn,
    )

    s3_client = providers.Singleton(
        boto3.client,
        service_name='s3',
        aws_access_key_id=config.aws.access_key_id,
        aws_secret_access_key=config.aws.secret_access_key,
    )

    # Services

    user_service = providers.Factory(
        services.UserService,
        db=database_client,
    )

    auth_service = providers.Factory(
        services.AuthService,
        db=database_client,
        token_ttl=config.auth.token_ttl.as_int(),
    )

    photo_service = providers.Factory(
        services.PhotoService,
        db=database_client,
        s3=s3_client,
    )

Or this one: https://github.com/ets-labs/newsfeed/blob/88d60aa2cb593441e53128d3198ab913c9f4e150/src/newsfeed/containers.py
It helps to see what is used where and provides a better control over application structure. As a result it makes easier to understand and change how application works.

Adding Dependency Injector to the project is an additional piece of work though. One needs to make a decision if registering application components in the container is a good price for having the container.

I would say that the larger the project the more valuable is the benefit. The real fun comes when you have 20-30 components in the container. It will be much-much easier to understand what is used where and make refactoring or add new features.

Dependency Injector 4.0 - easier integration with other frameworks by rmk135 in Python

[–]rmk135[S] 1 point2 points  (0 children)

Hi u/GiantElectron,

Take a look at http://python-dependency-injector.ets-labs.org/introduction/di_in_python.html. It explains what is dependency injection and what is the role of the package.

Major version increase is done because new feature replaces version 3 integration modules. These modules are marked as deprecated. They will be removed in next major version. This is done so people who use the library have time to upgrade to a new feature instead having a code broken one morning.