Gear

TAURUS FIRST 24 KIT

<?php

global $post;

// Obtén el ID del post actual
$post_id = $post->ID;
// Obtén el contenido del post
$post_content = get_post_field( 'post_content', $post_id );

// Calcula el tiempo de lectura estimado en minutos y segundos
$word_count = str_word_count( strip_tags( $post_content ) );
$reading_time_minutes = floor( $word_count / 200 );
$reading_time_seconds = ceil(($word_count / 200 - $reading_time_minutes) * 60);

// Muestra el tiempo de lectura estimado en minutos y segundos
echo '<p class="read_time">Reading Time: ' . $reading_time_minutes . ':' . $reading_time_seconds . ' min</p>';

?>

I was browsing one of my favorite sites UNCRATE and came across the Taurus First 24 Kit.  I rarely find gun stuff on UNCRATE so it was cool to see…

View post

AIMPOINT CARBINE OPTIC: YOUR NEW “BUDGET” OPTION

<?php

global $post;

// Obtén el ID del post actual
$post_id = $post->ID;
// Obtén el contenido del post
$post_content = get_post_field( 'post_content', $post_id );

// Calcula el tiempo de lectura estimado en minutos y segundos
$word_count = str_word_count( strip_tags( $post_content ) );
$reading_time_minutes = floor( $word_count / 200 );
$reading_time_seconds = ceil(($word_count / 200 - $reading_time_minutes) * 60);

// Muestra el tiempo de lectura estimado en minutos y segundos
echo '<p class="read_time">Reading Time: ' . $reading_time_minutes . ':' . $reading_time_seconds . ' min</p>';

?>

When it comes to red dot optics, Aimpoint is at the top of the list. Unfortunately, when it comes to red dot prices, they’re right up there again. There’s no point…

View post

Lionheart Industries LH9 MK II Full Review

<?php

global $post;

// Obtén el ID del post actual
$post_id = $post->ID;
// Obtén el contenido del post
$post_content = get_post_field( 'post_content', $post_id );

// Calcula el tiempo de lectura estimado en minutos y segundos
$word_count = str_word_count( strip_tags( $post_content ) );
$reading_time_minutes = floor( $word_count / 200 );
$reading_time_seconds = ceil(($word_count / 200 - $reading_time_minutes) * 60);

// Muestra el tiempo de lectura estimado en minutos y segundos
echo '<p class="read_time">Reading Time: ' . $reading_time_minutes . ':' . $reading_time_seconds . ' min</p>';

?>

If you missed the review (preview)  video of this gun, here is the full review.

View post

The Gun Box: Finally, Gun Storage for the Urbanite.

<?php

global $post;

// Obtén el ID del post actual
$post_id = $post->ID;
// Obtén el contenido del post
$post_content = get_post_field( 'post_content', $post_id );

// Calcula el tiempo de lectura estimado en minutos y segundos
$word_count = str_word_count( strip_tags( $post_content ) );
$reading_time_minutes = floor( $word_count / 200 );
$reading_time_seconds = ceil(($word_count / 200 - $reading_time_minutes) * 60);

// Muestra el tiempo de lectura estimado en minutos y segundos
echo '<p class="read_time">Reading Time: ' . $reading_time_minutes . ':' . $reading_time_seconds . ' min</p>';

?>

I’ll be the first to say it, the GunVault Brand of gun vaults, have the the aesthetic appeal of Tyler Perry in a dress (Oh, wait). The GunVault screams gun! So,…

View post

Raven Concealment’s VanGaurd 2.

<?php

global $post;

// Obtén el ID del post actual
$post_id = $post->ID;
// Obtén el contenido del post
$post_content = get_post_field( 'post_content', $post_id );

// Calcula el tiempo de lectura estimado en minutos y segundos
$word_count = str_word_count( strip_tags( $post_content ) );
$reading_time_minutes = floor( $word_count / 200 );
$reading_time_seconds = ceil(($word_count / 200 - $reading_time_minutes) * 60);

// Muestra el tiempo de lectura estimado en minutos y segundos
echo '<p class="read_time">Reading Time: ' . $reading_time_minutes . ':' . $reading_time_seconds . ' min</p>';

?>

If you wear skinny Jeans (There’s a huge difference between skinny jeans and straight leg. lol) and carry a gun, you should take a look at the VanGaurd 2 from…

View post

Mission First Tactical Introduces the Battlelink™ Minimalist Stock

<?php

global $post;

// Obtén el ID del post actual
$post_id = $post->ID;
// Obtén el contenido del post
$post_content = get_post_field( 'post_content', $post_id );

// Calcula el tiempo de lectura estimado en minutos y segundos
$word_count = str_word_count( strip_tags( $post_content ) );
$reading_time_minutes = floor( $word_count / 200 );
$reading_time_seconds = ceil(($word_count / 200 - $reading_time_minutes) * 60);

// Muestra el tiempo de lectura estimado en minutos y segundos
echo '<p class="read_time">Reading Time: ' . $reading_time_minutes . ':' . $reading_time_seconds . ' min</p>';

?>

This stock looks tactical as hell. I haven’t determined if that’s a good or bad thing for me. I tend to be a minimalist when it comes to aesthetics, but…

View post
<script>
  /*Source: https://github.com/Krzysztof-Antosik/Two-direction-Sticky-Sidebar*/
  
  // Verificar el ancho de pantalla al cargar y redimensionar
  function checkScreenWidth() {
    if (window.innerWidth <= 767) {
      // Si la pantalla es menor o igual a 676px, no ejecutar el código
      return;
    }

    const stickyElement = document.querySelector('.fb-sidebar__aside');
    const startPosition = stickyElement.getBoundingClientRect().top;

    let endScroll = window.innerHeight - stickyElement.offsetHeight - 500;
    let currPos = window.scrollY;
    let screenHeight = window.innerHeight;
    let stickyElementHeight = stickyElement.offsetHeight;
    let topGap = 40;
    let bottomGap = 40;

    setTimeout(() => {
      if (stickyElement.hasAttribute('data-top-gap')) {
        const dataTopGap = stickyElement.getAttribute('data-top-gap');
        topGap = dataTopGap === 'auto' ? startPosition : parseInt(dataTopGap);
      }

      if (stickyElement.hasAttribute('data-bottom-gap')) {
        bottomGap = parseInt(stickyElement.getAttribute('data-bottom-gap'));
      }
    }, 100);

    stickyElement.style.position = 'sticky';
    stickyElement.style.top = `${topGap}px`;
    stickyElement.style.height = 'fit-content';

    function positionStickySidebar() {
      endScroll = window.innerHeight - stickyElement.offsetHeight - bottomGap;
      const stickyElementTop = parseInt(stickyElement.style.top.replace('px', ''));

      if (stickyElementHeight + topGap + bottomGap > screenHeight) {
        if (window.scrollY < currPos) {
          if (stickyElementTop < topGap) {
            stickyElement.style.top = `${stickyElementTop + currPos - window.scrollY}px`;
          } else if (stickyElementTop >= topGap && stickyElementTop !== topGap) {
            stickyElement.style.top = `${topGap}px`;
          }
        } else {
          if (stickyElementTop > endScroll) {
            stickyElement.style.top = `${stickyElementTop + currPos - window.scrollY}px`;
          } else if (stickyElementTop < endScroll && stickyElementTop !== endScroll) {
            stickyElement.style.top = `${endScroll}px`;
          }
        }
      } else {
        stickyElement.style.top = `${topGap}px`;
      }
      currPos = window.scrollY;
    }

    function stickyElementToMe() {
      stickyElement.style.top = `${topGap}px`;
    }

    function updateSticky() {
      screenHeight = window.innerHeight;
      stickyElementHeight = stickyElement.offsetHeight;
      positionStickySidebar();
    }

    setTimeout(() => {
      window.addEventListener('resize', () => {
        currPos = window.scrollY;
        updateSticky();
      });

      document.addEventListener('scroll', updateSticky, {
        capture: true,
        passive: true
      });
    }, 1000);
  }

  // Verificar el ancho de pantalla al cargar y redimensionar
  window.addEventListener('load', checkScreenWidth);
  window.addEventListener('resize', checkScreenWidth);
</script>