GOOGLE ADS

mercredi 4 mai 2022

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique ?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais essentiellement je voudrais faire ceci:

var flatten = function() {
var flattened = arguments.reduce(function(acc, elem) { return acc.concat(elem) }, []);
return flattened;
};
var arr = [[1,2,3], 4, 5, [6, 7]];
console.log(flatten(arr)) // => [1,2,3,4,5,6,7]

J'obtiens l'erreur suivante :

TypeError: arguments.reduce is not a function

Je comprends que l'erreur ci-dessus est due au fait que les arguments ne ressemblent qu'à un tableau, il n'a donc pas toutes les capacités d'un vrai tableau. Il y a donc ce qui suit, mais je me demande s'il y a quelque chose d'encore plus propre:

var flatten = function() {
var flattened = [].reduce.call(arguments, function(acc, elem) { return acc.concat(elem) });
return flattened;
};

Un bon moyen de réécrire.flatten en utilisant.reduce()?

REMARQUE: je sais qu'il existe de nombreuses autres façons d'aplatir des tableaux en javascript, mais ce que je me demandais ici, c'est comment le faire avec des arguments spécifiques.


Solution du problème

Convertissez argumentsd'abord l'objet en tableau :

var flatten = function() {
var args = Array.prototype.slice.call(arguments);
var flattened = args.reduce(function(acc, elem) { return acc.concat(elem) }, []);
return flattened;
};

Ou utilisez directement les méthodes de tableau sur l' argumentsobjet :

var flatten = function() {
var flattened = Array.prototype.reduce.call(arguments, function(acc, elem) { return acc.concat(elem) }, []);
return flattened;
};

Dans ES6, vous pouvez utiliser Array.from()pour convertir n'importe quel objet itérable ou de type tableau en un tableau réel :

var flatten = function() {
var args = Array.from(arguments);
var flattened = args.reduce(function(acc, elem) { return acc.concat(elem) }, []);
return flattened;
};

Mise à jour en 2021 à l'aide des fonctionnalités de langage moderne :

function flatten(...args) {
return args.flat();
}

Et, vous pouvez passer une profondeur à .flat(n)(la valeur par défaut est 1) si vous souhaitez aplatir à un niveau plus profond qu'un seul niveau vers le bas.

Bien que, puisque nous avons maintenant ces fonctionnalités plus modernes intégrées dans le langage, vous pouvez probablement les utiliser plus directement plutôt que de les transmettre à une fonction pour y travailler, mais nous devrions voir des cas d'utilisation particuliers pour faire des suggestions pour inline façons de résoudre votre problème plutôt que d'utiliser cette fonction.

Pour votre information, il existe de nombreuses façons d'aplatir un tableau :

Fusionner/aplatir un tableau de tableaux

Comment aplatir un tableau imbriqué en javascript?

Aplatir les tableaux multidimensionnels en JavaScript

Méthode Array.prototype.flat()

Certificats publics vs privés dans Azure

Je parcourais les documents Azure pour App Service et j'ai trouvé les termes certificat public et certificat privé. J'ai du mal à comprendre ce que signifient ces termes.

J'ai lu quelque part que les certificats publics sont destinés à être utilisés sur Internet et que les certificats privés sont destinés à sécuriser la communication du réseau interne.

Mais

L'extrait ci-dessous de la documentation Azure ajoute encore à la confusion :

Les certificats publics ne sont pas utilisés pour sécuriser les domaines personnalisés, mais vous pouvez les charger dans votre code si vous en avez besoin pour accéder à des ressources distantes.

Donc ma question est:

  • Que signifie certificat privé et public dans azur?

  • Que signifient certificat privé et public au sens normal?

  • Pourquoi ne puis-je pas utiliser de certificats publics pour sécuriser des domaines personnalisés dans Azure App Service?


  • Solution du problème

    Les certificats privés sont utilisés pour chiffrer, souvent la connexion. Donc, si vous avez besoin de https sur www.votredomaine.com, vous utilisez un certificat privé.

    Public est utilisé si vous devez vous connecter à un service qui utilise un certificat qui n'est pas inclus dans les certificats de confiance MS. Vous devrez peut-être appeler un domaine interne qui utilise des certificats auto-signés ou, pour une raison quelconque, n'utilisez pas de certificats couramment approuvés.

    L'intégration de Facebook avec ios échoue avec un message d'erreur sur le simulateur

    Après l'intégration avec Facebook lorsque j'appuie sur Continuer avec le bouton FaceBook sur le simulateur, cette fenêtre s'affiche sur le simulateur. app, et je ne reçois aucune donnée utilisateur avec.cette

    Voici les étapes que j'ai faites

  • Installation du pod : pod 'FBSDKLoginKit'

  • Ajout de l'ID de bundle dans le guide de démarrage rapide de developer.facebook

  • L'option Activer le signe unique est sélectionnée sur NON

  • Ajout du code suivant tel qu'il se trouve dans info.plist
    info.plist

  • Ajout du code suivant dans AppDelegate

    Selon le document Facebook, nous devons importer FacebookCore dans AppDelegate lorsque nous l'importons, nous recevons un avertissement Aucun module de ce type 'FacebookCore'

    import FBSDKCoreKit
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    ApplicationDelegate.shared.application(
    application,
    didFinishLaunchingWithOptions: launchOptions
    )
    return true
    }
    func application(
    _ app: UIApplication,
    open url: URL,
    options: [UIApplication.OpenURLOptionsKey: Any] = [:]
    ) -> Bool {
    ApplicationDelegate.shared.application(
    app,
    open: url,
    sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
    annotation: options[UIApplication.OpenURLOptionsKey.annotation]
    )
    }

    Ajout du code suivant dans SceneDelegate

    Selon le document Facebook, nous devons importer FacebookCore dans SceneDelegate lorsque nous l'importons, nous recevons un avertissement Aucun module de ce type 'FacebookCore'

    import FBSDKCoreKit 

    func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url else {
    return
    }
    ApplicationDelegate.shared.application(
    UIApplication.shared,
    open: url,
    sourceApplication: nil,
    annotation: [UIApplication.OpenURLOptionsKey.annotation]
    )
    }

    Ajout du code suivant dans ViewController

    Selon le document Facebook, nous devons importer FacebookLogin dans ViewController lorsque nous l'importons, nous recevons un avertissement Aucun module de ce type 'FacebookLogin'

    import FBSDKLoginKit

    class ViewController: UIViewController, LoginButtonDelegate
    override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    if let token = AccessToken.current,
    !token.isExpired {
    let token = token.tokenString
    let request = FBSDKLoginKit.GraphRequest(graphPath: "me", parameters: ["fields": "email,name"], tokenString: token, version: nil, httpMethod:.get)
    request.start { connecton, result, error in
    print("\(result)")
    }
    } else{
    let loginButton = FBLoginButton()
    loginButton.center = view.center
    loginButton.delegate = self
    loginButton.permissions = ["public_profile", "email"]
    view.addSubview(loginButton)
    }
    }

    func loginButton(_ loginButton: FBLoginButton, didCompleteWith result: LoginManagerLoginResult?, error: Error?) {
    let token = result?.token?.tokenString
    let request = FBSDKLoginKit.GraphRequest(graphPath: "me", parameters: ["fields": "email,name"], tokenString: token, version: nil, httpMethod:.get)
    request.start { connecton, result, error in
    print("\(result)")
    }
    }

    J'ai essayé l'étape 2 à partir de cela, mais j'obtiens cette erreur lors de la configuration de l'environnement de développement.


    Solution du problème

    Je pense que vous vous êtes trompé d'étape de connexion à Facebook.

    étape 1 :- installez les pods ci-dessous

    pod 'FacebookCore'
    pod 'FacebookLogin'
    pod 'FacebookShare'

    étape 2:- ajoutez les informations d'identification facebook nécessaires (facebook App Id) et CFBundleURLTypesdans info.plistle fichier

    entrez la description de l'image ici

    entrez la description de l'image ici

    étape 3:- importez FacebookCoreet FacebookLogindans votre UIViewControlleroù vous voulez la fonction de connexion Facebook.

    appelez cette méthode pour vous connecter avec facebook.

    func setupFacebookLogin(){
    let loginManager = LoginManager()
    loginManager.logOut()
    loginManager.logIn(permissions: ["public_profile", "email"], from: self, handler: { result, error in
    if error!= nil {
    print("ERROR: Trying to get login results")
    } else if result?.isCancelled!= nil {
    print("The token is \(result?.token?.tokenString?? "")")
    if result?.token?.tokenString!= nil {
    print("Logged in")
    let graphRequest: GraphRequest = GraphRequest(graphPath: "me", parameters: ["fields": "id, first_name, middle_name, last_name, name, picture, email, gender, birthday"])
    graphRequest.start { _, result, error in
    if error!= nil {
    let data: [String: AnyObject] = result as! [String: AnyObject]
    print("Facebook user data - ",data)
    }
    } else {
    print("Cancelled")
    }
    }
    })
    }

    La documentation indique d'utiliser un paramètre de confiance, mais elle génère une erreur

    Modifier pour inclure l'extrait de code.

    Je développe une application avec pyautogui. Je veux faire correspondre une région sur le bureau et cliquer dessus. En appelant la fonction locateOnscreen, je passe le nom du fichier contenant l'image à faire correspondre, ainsi qu'un paramètre de confiance, qui génère une erreur.

    import pyautogui as pag
    button_login = pag.locateOnScreen("button_login.png", confidence=0.7)
    File ".\test.py", line 23, in <module>
    button_login = pag.locateOnScreen("button_login.png", confidence=0.7)
    ...
    TypeError: _locateAll_python() got an unexpected keyword argument 'confidence'

    La version installée est 0.9.47. Les docs font référence à la version 1.0.0. Je ne trouve cette version nulle part, y compris pypi et github.


    Solution du problème

    Cela se produit parce que la fonction locateOnScreenpeut atteindre deux fonctions différentes ( code source ) :


    • _locateAll_opencvsi cv2 / OpenCV est installé


    • _locateAll_pythonsi cv2 / OpenCV est introuvable ou si vous utilisez python3 avec une version de cv2 inférieure à 3



    Et _locateAll_pythonne gère pas le confidenceparamètre.

    Vous pouvez donc essayer d'installer/mettre à jour OpenCV si vous avez besoin de cette fonctionnalité: https://pypi.org/project/opencv-python/

    pip install opencv-python

    Ou si vous avez python 2 & 3 sur votre système :

    pip3 install opencv-python

    Utiliser la date comme variable dans la condition where C# [fermé]

    Fermé. Cette question a besoin de détails ou de clarté. Il n'accepte pas de réponses actuellement.


    Solution du problème

    C# peut faire votre rendez-vous :

    using var cmd = new SqlCommand("select price from employee WHERE date_dep = @d", cnx);
    cmd.Parameters.Add(new SqlParameter("@d", SqlDbType.DateTime2) { Scale = 3, Value = new DateTime(year_somme,1,1) };
    Reader = cmd.ExecuteReader();
    table_raw.Load(Reader);

    Ajustez le type, l'échelle, etc. pour correspondre à votre base de données. Faites votre SqlConnection en un usingtrop

    Redirection d'intégration Webflow | (Utilisation de la pile de membres)

    J'ai une application de tableau de bord dans Webflow et j'utilise Memberstack pour les utilisateurs et les autorisations.

    Maintenant, le problème que j'ai est le suivant : je crée un nouvel utilisateur Memberstack avec Zapier, puis je me connecte à Webflow avec le nouvel utilisateur créé et cela ouvre la page du tableau de bord. Le problème est que je souhaite, si un utilisateur se connecte pour la première fois, le rediriger vers une autre page appelée "Onboarding".

    Mon approche consistait à le résoudre dans Memberstack, mais cela ne semble pas fonctionner lorsque je crée l'utilisateur avec Zapier. Ensuite, j'ai essayé de trouver une solution dans Webflow, pour créer une redirection si une variable dans l'élément CMS n'est pas définie (par exemple "onboarding" = false).

    Quelqu'un peut-il m'aider à faire ce travail?


    Solution du problème

    Laissez-moi savoir si cela fonctionne! J'ai adapté du code que j'avais qui ajoutera également la première fois que le membre se connecte à ses métadonnées Memberstack.

    Essayez d'ajouter ce code avant la balise </ body > à l'échelle du site :

    <script>
    MemberStack.onReady.then(async function(member) {
    // if member is logged in
    if(member.loggedIn){
    var first_logged_in_timestamp = member["first-logged-in-timestamp"];
    if(first_logged_in_timestamp === undefined || first_logged_in_timestamp == null || first_logged_in_timestamp.length < 1)
    { // set first-logged-in-timestamp
    var first_logged_in_timestamp = timestamp;
    member.updateProfile({
    "first-logged-in-timestamp": timestamp,
    }, false)
    }
    window.location.href='https://RedirectHereIfFirstLogIn.com';
    }
    else{
    window.location.href='https://RedirectHereIfNotLoggedIn.com';
    }
    }
    </script>

    les données ne parviennent pas de la manière appropriée que je veux dans la jointure interne multiple postgresql

    im essayant de faire une jointure interne sur deux tables. 1. utilisateurs, 2. manèges. dans la table des utilisateurs, il existe deux types d'utilisateurs (0 pour l'utilisateur, 1 pour le conducteur). et dans la table de trajet, je stocke user_id et provide_id qui proviennent de la table des utilisateurs. alors maintenant, le problème est que je ne peux pas obtenir d'informations sur les deux utilisateurs simultanément.

    SELECT name,mobile, email, name as driverName
    FROM users
    INNER JOIN rides
    ON users._id = rides.user_id
    INNER JOIN rides as ride
    ON users._id = ride.provider_id;

    cela me renvoie une table nulle.










    NomNuméroe-mailnom du conducteur

    Solution du problème

    Je serais peut-être enclin à exprimer votre requête en utilisant la logique existante :

    SELECT u.name, u.mobile, u.email
    FROM users u
    WHERE EXISTS (SELECT 1 FROM rides r WHERE u._id = r.user_id) AND
    EXISTS (SELECT 1 FROM rides r WHERE u._id = r.provider_id);

    Cela renverra tous les utilisateurs pour lesquels il existe à la fois un trajet d'utilisateur et de fournisseur.

    Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique&nbsp;?

    Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...