Tablas con filtros en Angular - swimlane/ngx-datatable'

http://swimlane.github.io/ngx-datatable/


Instalación
npm i @swimlane/ngx-datatable --save --legacy-peer-deps

Agregar en tsconfig.json (dentro de compilerOptions)
"strictPropertyInitialization": false

Esto es para evitar un error de tipos que da, busqué en google y parece que lo resuelven así, no me gusta demasiado, pero por ahora déjalo de este modo.

En app.module.ts
import { NgxDatatableModule } from '@swimlane/ngx-datatable'; 

imports: [
    ...
    ...
    NgxDatatableModule
  ] 

En el .html
<input
        type="text"
        style="padding: 8px; margin: 15px auto; width: 30%;"
        placeholder="Filtrar..."
        (keyup)="updateFilter($event)"
      />
<div>
  <ngx-datatable #table [rows]="rows" [columns]="columns"> </ngx-datatable>
</div>

En el .ts
import { Component, ViewChild } from '@angular/core';
import { DatatableComponent } from '@swimlane/ngx-datatable'; 

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {
  @ViewChild(DatatableComponent) table: DatatableComponent; 

  rows = [
    { name: 'Austin', gender: 'Male', company: 'Swimlane' },
    { name: 'Dany', gender: 'Male', company: 'KFC' },
    { name: 'Molly', gender: 'Female', company: 'Burger King' }
  ]; 

  temp = this.rows; 

  columns = [{ prop: 'name' }, { name: 'Gender' }, { name: 'Company' }]; 
  updateFilter(event: any) {

  const val = event.target.value.toLowerCase();
 

  const temp = this.temp.filter(function (d) {
      return d.name.toLowerCase().indexOf(val) !== -1 || !val ||
                d.gender.toLowerCase().indexOf(val) !== -1 ||
                d.company.toLowerCase().indexOf(val) !== -1;
    });   

    this.rows = temp;   
    this.table.offset = 0;   //ir a 1er página luego de hacer cualquier cambio
  
}

Dapper ORM - ejemplo basico

using System;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using Dapper;
using Newtonsoft.Json;

namespace ConsoleApp5
{
    class Program
    {
        static void Main()
        {
            using (IDbConnection db = new SqlConnection("Server=anvsqldesa;Database=sigb_anv;Trusted_Connection=true;"))
            {
                db.Open();

                var scalar = db.Query<string>("SELECT GETDATE()").SingleOrDefault();
                Console.WriteLine(scalar);

                var results = db.Query<myobject>(@"SELECT TOP 1 * FROM CIF$CLI").ToList();

                var xx = JsonConvert.SerializeObject(results);               

                Console.WriteLine(xx);

                foreach (var x in results)
                {
                    Console.WriteLine(x.numcli + " " + x.nomabr);
                }


                Console.ReadLine();
            }
        }

        class myobject
        {
            public int numcli { get; set; }
            public string nomabr { get; set; }
        }
    }
}

Controlar motor DC variando velocidad con L298 driver

fuente: https://electronilab.co/tutoriales/tutorial-de-uso-driver-dual-l298n-para-motores-dc-y-paso-a-paso-con-arduino/


Control de un motor DC variando su velocidad

Si queremos controlar la velocidad del motor, tenemos que hacer uso de PWM. Este PWM será aplicado a los pines de activación de cada salida o pines ENA y ENB respectivamente, por tanto los jumper de selección no serán usados.

Esquema de conexión

L298N_1_mot_PWM

Código en Arduino

El programa controla la velocidad de un motor DC aplicando PWM al pin ENB del módulo L298N.

/*
Ejemplo de control de motor DC usando modulo L298
http://electronilab.co/tienda/driver-dual-para-motores-full-bridge-l298n/
Creado 16/05/14
por Andres Cruz
ELECTRONILAB.CO
*/
int IN3 = 5; // Input3 conectada al pin 5
int IN4 = 4; // Input4 conectada al pin 4
int ENB = 3; // ENB conectada al pin 3 de Arduino
void setup()
{
pinMode (ENB, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
}
void loop()
{
//Preparamos la salida para que el motor gire en un sentido
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
// Aplicamos PWM al pin ENB, haciendo girar el motor, cada 2 seg aumenta la velocidad
analogWrite(ENB,55);
delay(2000);
analogWrite(ENB,105);
delay(2000);
analogWrite(ENB,255);
delay(2000);
// Apagamos el motor y esperamos 5 seg
analogWrite(ENB,0);
delay(5000);
}

Control_pwm_L298_Electronilab.ino hosted with ❤ by GitHub 

Si no se despliega imagen de assets

 Agregar src/assets en angular.json


"assets": [
              {
                "glob": "_redirects",
                "input": "src",
                "output": "/"
              },
              {
                "glob": "**/*.svg",
                "input": "node_modules/ionicons/dist/ionicons/svg",
                "output": "./svg"
              },
              "src/manifest.webmanifest",
              "src/manifest.webmanifest",
              "src/assets"
            ],

Controlar volumen en retropie con dos botones conectados a raspberry

https://www.reddit.com/r/RetroPie/comments/axw2js/how_to_control_volume_in_retropie_with_buttons/?utm_medium=android_app&utm_source=share


1. Hacer backup de la tarjeta sd antes de empezar!!

2. Unir un cable de cada boton y conectarlo a GPIO14

3. Los otros cables conectarlos a GPIO 11 y 13

4. En el emulador, presionar F4 para ir a cmd

5. Instalar GPIOnext:

    cd ~

    git clone https://github.com/mholgatem/GPIOnext.git

       bash GPIOnext/install.sh

       Elegir "make a new command"

       Escribir Volume UP

       Dejar presionado el boton correspondiente a volume up

       /usr/bin/amixer -q -c 0 sset PCM 4dB+ unmet no cap

Cuando pregunta para agregar otro comando, responder N

Crear otro comando para Volume DOWN y escribir esto:


/usr/bin/amixer -q -c 0 sset PCM 4dB- unmet no cap

6. Salir del menu

7. Escribir        

    gpionext start     sudo reboot






Page not found 404 en Netlify

 https://stackoverflow.com/questions/51887581/angular-routing-not-working-on-netlify-on-page-refresh


Create a file _redirects in your src folder, add the following to it:

/*  /index.html 200

in your angular.json file add the following to projects / architect / build / options / assets

{
  "glob": "_redirects",
  "input": "src",
  "output": "/"
}

Firmar y ejecutar en android device una app

borrar www

ionic cordova run android --device --l

keytool -genkey -v -keystore my-release-key.keystore -alias proyecto1 -keyalg RSA -keysize 2048 -validity 10000

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore platforms\android\app\build\outputs\apk\release\app-release-unsigned.apk proyecto1

native-run.cmd android --app platforms\android\app\build\outputs\apk\release\app-release-unsigned.apk


No sale el audio en headphone con REAPER ASIO4ALL

 https://www.native-instruments.com/forum/threads/asio-headphones-audio-problem-and-fix.313650/


---------------------------------------------------------------------------------------

Si no se escucha el monitoreo de teclado MIDI:

En Route / Allow new Send / Add sends to all tracks

----------------------------------------------------------------------------------------


En reaper, Ctrl+P

Device

ASIO Configuration

Click en la rueda de Setup

Ampliar el dispositivo de audio (signo de +)

y habilitar todos los dispositivos

Luego en Reaper, en Output Range, elegir 2nd Input with SS1 (o probar hasta que salga por el headphone)

No se puede hacer press pull en fusion 360

 Si en el sketch palette se desmarcan las opciones, luego no permite hacer el press/pull!!!!!

Se deben dejar marcadas!



Enviar mensaje a telegram desde NodeMCU

 // ¡¡¡¡¡¡USAR CON LIBRERIA ARDUINOJSON VERSION 5.13.5!!!!!

//En IDE ir a Programa->Incluir librería->Gestionar librerias->Arduinojson->seleccionar version


#include "CTBot.h"

CTBot myBot;

String ssid = "xxxxxxx";   

String pass = "yyyyyyy";

                                  //Poner tu Telegram BOT TOKEN

String token = "aaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";  

const int alarma = D1;

long id=123456789;  //chat_id

void setup() {

Serial.begin(115200);

myBot.wifiConnect(ssid, pass);

myBot.setTelegramToken(token);

  pinMode(2,OUTPUT);

  digitalWrite(2, HIGH); //LED apagado

  pinMode(alarma, INPUT_PULLUP);  

// ¿Todo va bien?

   if (myBot.testConnection())

     Serial.println("\nConexion OK");

   else

    Serial.println("\nConexion fallida");

}


void loop() {

  TBMessage msg;

  myBot.getNewMessage(msg);


  myBot.sendMessage(msg.sender.id, "LED apagado"); 


  while(true) {

    delay(50);

    yield();

  }

}

NodeMCU evitar reseteo constante

 En el loop, agregar delay y yield:


void loop() {

   ...

   ...

   delay(50);

   yield();

}

No se puede establecer dimension en fusion 360

 

https://knowledge.autodesk.com/support/fusion-360/troubleshooting/caas/sfdcarticles/sfdcarticles/Cannot-select-dimension-when-editing-the-sketch-in-Fusion-360.html


Ir a Select / Selection Filters / deshabilitar Dimensions