git – Ramifiqué desde una rama en lugar de hacerlo desde la maestra, ¿cómo puedo volver a basar todo menos algunos archivos con la maestra ahora?

Me ramifiqué desde una rama en lugar de hacerlo desde la maestra, ¿cómo puedo volver a basar todo menos algunos archivos con la maestra ahora? Por ejemplo en el siguiente arbol que representa los archivos de mi proyecto, solo quiero guardar las modificaciones de utils/utms.py

C:UsersantoiDocumentsProgrammingWorkdata-toolsetl>tree /F
Folder PATH listing for volume OS
Volume serial number is 68FE-40E4
C:.
│   main.py
│   __init__.py
│
├───mysql
│   │   connect.py
│   │   operations.py
│   │   __init__.py
│   │
│   └───__pycache__
│           connect.cpython-39.pyc
│           __init__.cpython-39.pyc
│
├───task
│       announcement_stats.py
│       anonymization.py
│       users_utm.py
│       __init__.py
│
├───utils
│   │   array.py
│   │   logging.py
│   │   string.py
│   │   utms.py
│   │   __init__.py
│   │
│   └───__pycache__
│           utms.cpython-39.pyc
│           __init__.cpython-39.pyc
│
└───__pycache__
        __init__.cpython-39.pyc

Aqui estan mi branches:

C:UsersantoiDocumentsProgrammingWorkdata-toolsetl>git branch
  change_subscription_events
  master
* source_attribution

Aqui estan mi commits

C:UsersantoiDocumentsProgrammingWorkdata-tools>git log
commit 3e7809f853fa0de6614baa9056d3aeda3296e03b (HEAD -> source_attribution, origin/source_attribution)
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 17:19:30 2021 +0200

    changed source and macro source attribution to user

commit 52b796763661809e92ce4d439682c7883996600d (change_subscription_events)
Merge: 670dd7b 48ea030
Author: revolucion <revolucionagnie@gmail.com>
HEAD -> source_attribution, origin/source_attribution)
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 17:19:30 2021 +0200

    changed source and macro source attribution to user

commit 52b796763661809e92ce4d439682c7883996600d (change_subscription_events)
Merge: 670dd7b 48ea030
Author: revolucion <revolucionagnie@gmail.com>


:...skipping...
commit 3e7809f853fa0de6614baa9056d3aeda3296e03b (HEAD -> source_attribution, origin/source_attribution)
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 17:19:30 2021 +0200

    changed source and macro source attribution to user

commit 52b796763661809e92ce4d439682c7883996600d (change_subscription_events)
Merge: 670dd7b 48ea030
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 15:29:12 2021 +0200

    Merge branch 'change_subscription_events' of https://github.com/azap/data-tools into change_subscription_events

commit 670dd7bc7c8c4a04702551f27ae6e622b69be7b7
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 14:16:09 2021 +0200
:...skipping...
commit 3e7809f853fa0de6614baa9056d3aeda3296e03b (HEAD -> source_attribution, origin/source_attribution)
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 17:19:30 2021 +0200

    changed source and macro source attribution to user

commit 52b796763661809e92ce4d439682c7883996600d (change_subscription_events)
Merge: 670dd7b 48ea030
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 15:29:12 2021 +0200

    Merge branch 'change_subscription_events' of https://github.com/azap/data-tools into change_subscription_events

commit 670dd7bc7c8c4a04702551f27ae6e622b69be7b7
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 14:16:09 2021 +0200

:...skipping...
HEAD -> source_attribution, origin/source_attribution)
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 17:19:30 2021 +0200

    changed source and macro source attribution to user

commit 52b796763661809e92ce4d439682c7883996600d (change_subscription_events)
Merge: 670dd7b 48ea030
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 15:29:12 2021 +0200

    Merge branch 'change_subscription_events' of https://github.com/azap/data-tools into change_subscription_events

commit 670dd7bc7c8c4a04702551f27ae6e622b69be7b7
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 14:16:09 2021 +0200

    changed subscription_events to subscriptions
:...skipping...
commit 3e7809f853fa0de6614baa9056d3aeda3296e03b (HEAD -> source_attribution, origin/source_attribution)
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 17:19:30 2021 +0200

    changed source and macro source attribution to user

commit 52b796763661809e92ce4d439682c7883996600d (change_subscription_events)
Merge: 670dd7b 48ea030
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 15:29:12 2021 +0200

    Merge branch 'change_subscription_events' of https://github.com/azap/data-tools into change_subscription_events

commit 670dd7bc7c8c4a04702551f27ae6e622b69be7b7
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 14:16:09 2021 +0200

    changed subscription_events to subscriptions

:...skipping...
commit 3e7809f853fa0de6614baa9056d3aeda3296e03b (HEAD -> source_attribution, origin/source_attribution)
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 17:19:30 2021 +0200

    changed source and macro source attribution to user

commit 52b796763661809e92ce4d439682c7883996600d (change_subscription_events)
Merge: 670dd7b 48ea030
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 15:29:12 2021 +0200

    Merge branch 'change_subscription_events' of https://github.com/azap/data-tools into change_subscription_events

commit 670dd7bc7c8c4a04702551f27ae6e622b69be7b7
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 14:16:09 2021 +0200

    changed subscription_events to subscriptions

commit 48ea030c07fef0fa9cb9608ec29b26245fe84993 (origin/change_subscription_events)
Author: revolucion <revolucionagnie@gmail.com>
:...skipping...
commit 3e7809f853fa0de6614baa9056d3aeda3296e03b (HEAD -> source_attribution, origin/source_attribution)
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 17:19:30 2021 +0200

    changed source and macro source attribution to user

commit 52b796763661809e92ce4d439682c7883996600d (change_subscription_events)
Merge: 670dd7b 48ea030
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 15:29:12 2021 +0200

    Merge branch 'change_subscription_events' of https://github.com/azap/data-tools into change_subscription_events

commit 670dd7bc7c8c4a04702551f27ae6e622b69be7b7
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 14:16:09 2021 +0200

    changed subscription_events to subscriptions

commit 48ea030c07fef0fa9cb9608ec29b26245fe84993 (origin/change_subscription_events)
Author: revolucion <revolucionagnie@gmail.com>
Date:   Mon Jul 26 14:16:09 2021 +0200

    changed subscriptions to subscriptions events

commit 0ebc82738bbf588d173ed30e82fefd99a3d36507
Author: revolucion <revolucionagnie@gmail.com>
Date:   Thu Jul 8 16:41:45 2021 +0200

    changed ref to table subscription_events to subscriptions

c# – ¿Cómo puedo hacer un update de todo el bloque de una Entidad con mayoria valores null a la BD con EF?

Mi código actual es tal que así:

public async Task UpdateVehiculo(VehiculosEntity vehiculoAGuardar)
        {
            

            using (var transaction = _dbContext.Database.BeginTransaction())
            {
               
                    _dbContext.Update<VehiculoEntity>(vehiculoAGuardar);
                    _dbContext.SaveChanges();
                    transaction.Commit();
               
            }
}

Pero me da error al tratar de guardar los nulls, y no puedo guardar los fields 1 a 1 (con el attach) porque son muchos y además no se cuales ha modificado.

¿Hay alguna manera de actualizar todo el bloque con los nulls incluidos? o ¿Hay otra forma de hacerlo que sea equivalente y que no estoy viendo?

Muchas gracias

slack – How I can use workflow actions to add todo?

Through workflow actions, we can send a message to any user and the workflow actions can be triggered with any reactions.

I want to create a workflow like the following.

  1. User reacts to a message. With a specific time emoji ⏰
  2. Workflow should be triggered and should add a to-do task for him.

When I tried adding the prefix “/todo”, the workflow just printed the message as it. Is there a way to actually add a task in todo?

homebrew – Cannot find todo and apts in the $HOME directory for `calcurse` open source calendar application

I just installed calcurse, an calendar open source solution (which looks great!). I installed version calcurse version 4.7.1 via homebrew

This might not be a bug but I unfortunately can’t find the answer elswhere: I cannot find where the todo and apts are located. In $HOME/.config/calcurse I could find

conf   hooks/ keys

but neither todo nor apts

The other location where brew installed things is in /usr/local/Cellar/calcurse/4.7.1. But there I could not find the file neither

Those files probably exist somewhere because, I imported several time appointments from a .ics file and I have (several) duplicates of those appointments. I searched for similar problems but didn’t find any

How can I locate those files (todo and apts)?

Many thanks in advance!

python – API binance P2P solo accedo a una parte (solo el BUY) y no a todo (BUY y SELL)

Estoy intentando acceder a los datos de esta pagina de Binance. Es el P2P: https://p2p.binance.com/en/trade/buy/USDT.

Para la compra (BUY) estoy usando esto en python3:

import requests

headers = {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "en-GB,en-US;q=0.9,en;q=0.8",
    "Cache-Control": "no-cache",
    "Connection": "keep-alive",
    "Content-Length": "123",
    "content-type": "application/json",
    "Host": "p2p.binance.com",
    "Origin": "https://p2p.binance.com",
    "Pragma": "no-cache",
    "TE": "Trailers",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0"
}

data = {
  "asset": "USDT",
  "fiat": "ARS",
  "merchantCheck": False,
  "page": 1,
  "payTypes": (),
  "publisherType": None,
  "rows": 50,
  "tradeType": "BUY"
}


r = requests.post('https://p2p.binance.com/bapi/c2c/v2/friendly/c2c/adv/search', headers=headers, json=data)
print(r.text)

Pero después cuando quiero acceder a esta parte de la pagina: https://p2p.binance.com/en/trade/sell/USDT (al SELL), no puedo hacerlo. Porque al cambiarle en el data lo siguiente: "tradeType": "SELL", me sigue trayendo los mismos valores del BUY. Nunca me trae los datos del SELL.

Y no estoy encontrando porqué todavía.

javascript – To-do app front-end in Vue 3

I have put together a To-do Application with the Slim framework on the back-end (API) and a Vue 3 front-end.

In the main App.vue file I have:

<template>
  <div id="app">
    <Header 
    title="My todo list" 
    :unsolvedTodos = unsolvedTodos
    />

    <List 
      :todos="todos"
      :dataIsLoaded=dataIsLoaded
      @delete-todo="deleteTodo" 
      @toggle-todo="toggleTodo" />

    <Footer
      :isValidInput=isValidInput
      newTitle = ""
      placeholder= "+ Add new todo"
      validationMsg = "Please add at least 3 characters"
      @add-todo="addTodo"
      />

  </div>
</template>

<script>
import axios from 'axios'
import '@fortawesome/fontawesome-free/js/all.js';
import Header from './components/Header.vue'
import List from './components/List.vue'
import Footer from './components/Footer.vue'

export default {
  name: 'App',
  components: {
    Header,
    List,
    Footer
  },

  data() {
    return {
      apiUrl: "http://todo.com/api",
      dataIsLoaded: false,
      isValidInput: true,
      todos: (),
      unsolvedTodos: (),
    }
  },

  methods: {
    showTodos: function(){
      axios.get(`${this.apiUrl}/todos`)
      .then((response) => {
        this.todos = response.data;
      })
     .then(this.getUnsolvedTodos)
     .then(this.dataIsLoaded = true);
    },

    getUnsolvedTodos: function(){
      this.unsolvedTodos = this.todos.filter(todo => {
        return todo.completed == 0;
      });
    },

    toggleTodo: function(todo) {
      let newStatus = todo.completed == "0" ? 1 : 0;
      axios.put(`${this.apiUrl}/todo/update/${todo.id}`, {
        title: todo.title,
        completed: newStatus
      })
    },

    deleteTodo: function(id) {
      axios.delete(`${this.apiUrl}/todo/delete/${id}`)
    },

    addTodo: function(newTitle){
     const newToDo = {
        title: newTitle,
        completed: 0
      }
     
      if(newTitle.length > 2){
        this.isValidInput = true;
        axios.post(`${this.apiUrl}/todo/add`, newToDo);
      } else {
        this.isValidInput = false;
      }
    }
  },

  created() {
    this.showTodos();
  },

  watch: {
    todos() {
      this.showTodos();
    }
  }
}
</script>

In Header.vue:

<template>
  <header>
    <span class="title">{{title}}</span>
    <span class="count" :class="{zero: unsolvedTodos.length === 0}">{{unsolvedTodos.length}}</span>
  </header>
</template>

<script>
export default {
  props: {
    title: String,
    unsolvedTodos: Array
  },
}
</script>

In Footer.vue:

<template>
  <footer>
    <form @submit.prevent="addTodo()">
      <input type="text" :placeholder="placeholder" v-model="newTitle">
      <span class="error" v-if="!isValidInput">{{validationMsg}}</span>
    </form>
  </footer>
</template>

<script>
export default {
  name: 'Footer',

  props: {
    placeholder: String,
    validationMsg: String,
    isValidInput: Boolean
  },

  data () {
    return {
     newTitle: '',
    }
  },

  methods: {
    addTodo() {
      this.$emit('add-todo', this.newTitle)
      this.newTitle = ''
    }
  }
}
</script>

The to-do list (List.vue):

<template>
  <transition-group name="list" tag="ul" class="todo-list" v-if=dataIsLoaded>
      <TodoItem v-for="(todo, index) in todos"
        :key="todo.id" 
        :class="{done: Boolean(Number(todo.completed)), current: index == 0}" 
        :todo="todo" 
        @delete-todo="$emit('delete-todo', todo.id)"
        @toggle-todo="$emit('toggle-todo', todo)"
        />
    </transition-group>
    <div class="loader" v-else></div>   
</template>

<script>
import TodoItem from "./TodoItem.vue";

export default {
  name: 'List',

  components: {
    TodoItem,
  },

  props: {
    dataIsLoaded: Boolean,
    todos: Array
  },

  emits: (
    'delete-todo',
    'toggle-todo'
  )
}
</script>

The single to-do item (TodoItem.vue):

<template>
  <li>
    <input type="checkbox" :checked="Boolean(Number(todo.completed))" @change="$emit('toggle-todo', todo)" />
    <span class="title">{{todo.title}}</span>
    <button @click="$emit('delete-todo', todo.id)">
      <i class="fas fa-trash-alt"></i>
    </button>
 </li>
</template>

<script>
export default {
  name: 'TodoItem',

  props: {
    todo: Object
  }
}
</script>

Questions / concerns:

  1. Is the application well-structured?
  2. Could the code be significantly “shortend”?

css – como configurar um componente drawer para que ela empurre todo o conteúdo do site para o lado e ainda não seja afetada pelo scroll?

insira o código aqui

a ideia era empurrar todos os outros conteúdo da outra Box para a direita quando o drawer estivesse, porem ele fosse imune ao scroll do mouse deixando o conteúdo dela sempre visivel

  <Box>
    <Sidebar onClose={(data) => {
      setOpen(data);
    }} open={open} />
  </Box>

  <Box>
    <Navbar onOpen={(data) => {
      setOpen(data);
    }} />

    <Perfil />
    <AboutMe />
    <DevSkills />
    <Services />
    <Experience />
    <Qualificacoes />
    <Footer />
  </Box>

</Box>

inserir a descrição da imagem aqui

javascript – Vue.js todo app

javascript – Vue.js todo app – Code Review Stack Exchange

c# – Todo application implementation

I am new to c# and decided to write a classic todo app. The implementation of my application now is like this: there is a Task class that describes the task. The List class acts simultaneously as a storage and has methods for creating, deleting, and displaying tasks. How good is this approach, how can you do better (if possible)? I would like a full code review.

There is Program.cs:

using System;

namespace ToDo
{
    class Program
    {
        static void Main(string() args)
        {
            List list = new List();
            list.AddTask("Task №1");
            list.AddTask("Task №2");
            list.AddTask("Task №3");
            list.AddTask("Task №4");
            list.AddTask("Task №5");
            list.WriteTasks();
            list.RemoveTask(2);
            list.WriteTasks();
        }
    }
}

List.cs:

using System;
using System.Collections.Generic;
using System.Text;

namespace ToDo
{
    class List
    {
        private List<Task> tasks = new List<Task>();
        public void AddTask(string body)
        {
            tasks.Add(new Task() { Body = body });
        }
        public void WriteTasks()
        {
            for (int i = 0; i < tasks.Count; i++)
            {
                Console.WriteLine($"({i+1}): {tasks(i).Body}");
            }

            Console.ReadKey();
        }
        public void RemoveTask(int number)
        {
            for (int i = 0; i < tasks.Count; i++)
            {
                if (number == i + 1)
                {
                    tasks.RemoveAt(i);
                }
            }
        }
    }
}

Task.cs:

using System;
using System.Collections.Generic;
using System.Text;

namespace ToDo
{
    class Task
    {
        public string Body { get; set; }
    }
}

DreamProxies - Cheapest USA Elite Private Proxies 100 Cheapest USA Private Proxies Buy 200 Cheap USA Private Proxies 400 Best Private Proxies Cheap 1000 USA Private Proxies 2000 USA Private Proxies 5000 Cheap USA Private Proxies ExtraProxies.com - Buy Cheap Private Proxies Buy 50 Private Proxies Buy 100 Private Proxies Buy 200 Private Proxies Buy 500 Private Proxies Buy 1000 Private Proxies Buy 2000 Private Proxies ProxiesLive.com Proxies-free.com New Proxy Lists Every Day Proxies123.com Proxyti.com Buy Quality Private Proxies