seo: is there a way to separate language traffic data from secondary websites in different search console properties from top-level property?

I want to add a second language to my website.
Now the properties of my search console are as follows:

http://mywebsite.com

http://www.mywebsite.com

https://mywebsite.com

https://www.mywebsite.com

I am concerned if I add a second language like: https://mywebsite.com/en as a subdirectory, then your data is summarized with the top level property. I do not want this. (I think this will happen if I add another language in the subdirectory, if not I don't care.)

for example,

If I had 2000 visits for https://mywebsite.com,

and 1500 visits for a new language en / en,

I don't want to see 3500 visits at https://mywebsite.com.

I want to see the data for each language separately, but my main directory is not in English and I didn't use any language name for it.
At home I explained my concern enough.

The only way I found was to move all the language in your folder.

mywebsite.com/en

mywebsite.com/ar

mywebsite.com/ru

But this path is not suitable for me.

javascript: why does console log return full function instead of result?

I am new to coding and working on an assignment for the online class I am taking. I need to get the console.log file to return the concatenated string that I created with the function. This is what I have:

        var makeHslString = function(ih, is, il){
            var hslString = "hsl(" + ih + " " + is + "% " + il + "% )" ;
            return hslString;
     }

    var hslString = (makeHslString) ;

    console.log(hslString) ;

   }

I've been playing all day, so I apologize if there is any odd format / syntax, but it's as close as I've been to what I need so far. It almost works, but console.log returns the full function instead of just the HSL string. I can't understand what I'm doing wrong and it really bothers me because it's so close. The answer is probably something really simple, but I can't seem to figure it out. Thanks in advance!

Ramifications of deleting an owner in Google Search Console

Are there any ramifications to remove a owner inside the console account of a property search?

For example: would the property lose entries made by that owner?

If so, any guide on how to remove an owner without losing their contributions?

Thank you for any help the community can provide.

Best,

Miguel

Google search console: Googlebot continues to index old pages

Recently, I moved all the pages of subdomain.domain.com// to .subdomain.domain.com and submitted a new sitemap.xml in the Google search console interface.

From the server logs, I see that GoogleBot is still trying to index old pages located in subdomain.domain.com// and throws errors in the coverage report. How can I prevent Google from indexing those pages?

Will add

Disallow: /en/
Disallow: /it/
Disallow: /fr/
etc...

in the help of robots.txt?

console – Command line dictionary tool, using webscraping

This is my first suitable Go program, after completing Go by Example and https://tour.golang.org. I have Python experience.

This program extracts definitions from Wordnik, then prints them very well on the command line. It is made to quickly search for a word on the command line.

I hope someone can review this code and make suggestions about inefficiencies, but especially anywhere in the code that is not idiomatic, other than good Go code examples. To highlight a part, at the end of the code I use a portion of channels to track multiple workers. I would love to hear opinions on that approach.

package main

import (
    "errors"
    "fmt"
    "github.com/PuerkitoBio/goquery"
    "gopkg.in/gookit/color.v1"
    "net/http"
    "os"
    "sort"
    "strings"
    "text/tabwriter"
)

// definition is a struct for storing simple word definitions.
type definition struct {
    wordType string // noun, verb, interjection, intransitive verb, etc
    text     string // The actual definition itself
}

// ctxDefinition includes additional info about a definition.
type ctxDefinition struct {
    dict string // The dictionary the definition comes from
    rank uint8  // Where this definition is compared to the others
    def  definition
}

// byDictionary sorts ctxDefintions by rank and dictionary.
// Returns a map with dictionary names as keys, and definition slices as values
func byDictionary(cDs ()ctxDefinition) map(string)()definition {
    pre := make(map(string)()ctxDefinition) // Used for ranking, not returned
    // Add all the defintions to the map
    for _, cD := range cDs {
        pre(cD.dict) = append(pre(cD.dict), cD)
    }
    // Sort by rank
    for k := range pre {
        sort.Slice(pre(k), func(i, j int) bool {
            return pre(k)(i).rank < pre(k)(j).rank
        })
    }
    // Convert to hold definitions only, not context
    m := make(map(string)()definition)
    for dict, cDs := range pre {
        for _, cD := range cDs {
            m(dict) = append(m(dict), cD.def)
        }
    }
    return m
}

// render returns a formatted definition, optionally with color.
// This contains some opinionted color defaults, as opposed to renderOps
func (d *definition) render(c bool) string {
    if c {
        return color.New(color.OpItalic).Render(d.wordType) + "t" + d.text
    }
    return d.wordType + "t" + d.text
}

// renderOps returns a formatted color definition, according to the provided styles.
func (d *definition) renderOps(wordType, text color.Style) string {
    return wordType.Render(d.wordType) + "tt" + text.Render(d.text)
}

// pprintCtxDefs pretty prints multiple context definitions, optionally with color.
func pprintCtxDefs(cDs ()ctxDefinition, c bool) {
    m := byDictionary(cDs)
    w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
    //esc := string(tabwriter.Escape)
    for dict, defs := range m {
        if c {
            // Bracket dict name with escape characters so it's not part of the tabbing
            fmt.Fprintln(w, color.New(color.BgGray).Render(dict))
            // Print first definition differently
            fmt.Fprintf(w, "%sn", defs(0).renderOps(color.New(color.OpItalic, color.OpBold), color.New(color.Cyan)))
            for _, def := range defs(1:) {
                fmt.Fprintf(w, "%sn", def.render(true))
            }
        } else {
            fmt.Fprintf(w, dict+"n")
            for _, def := range defs {
                fmt.Fprintf(w, "%sn", def.render(false))
            }
        }
        fmt.Fprintln(w)
    }
    w.Flush()
}

// wordnikLookup returns a slice of ctxDefinitions for the provided word.
// Looks up words using wordnik.com
func wordnikLookup(w string, client *http.Client) (()ctxDefinition, error) {
    req, err := http.NewRequest("GET", "https://www.wordnik.com/words/"+w, nil)
    if err != nil {
        panic(err)
    }
    req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36")
    resp, err := client.Do(req)
    if err != nil {
        return nil, errors.New("couldn't connect to wordnik")
    }
    defer resp.Body.Close()
    if resp.StatusCode != 200 {
        return nil, errors.New("200 not returned, likely a non-word like '../test' was passed")
    }
    doc, err := goquery.NewDocumentFromReader(resp.Body)
    if err != nil {
        return nil, errors.New("malformed HTML from wordnik")
    }
    ret := make(()ctxDefinition, 0)
    s := doc.Find(".word-module.module-definitions#define .guts.active").First()
    dicts := s.Find("h3")
    lists := s.Find("ul")
    // Go through each list of defs., then each def., and add them
    lists.Each(func(i int, list *goquery.Selection) {
        list.Find("li").Each(func(j int, def *goquery.Selection) {
            // wordType
            wT := def.Find("abbr").First().Text() + " " + def.Find("i").First().Text()
            wT = strings.TrimSpace(wT)
            // dictionary
            d := dicts.Get(i).FirstChild.Data(5:)             // strip the "from " prefix
            d = strings.ToUpper(string(d(0))) + string(d(1:)) // Capitalize first letter
            if string(d(len(d)-1)) == "." {                   // Remove ending period
                d = string(d(:len(d)-1))
            }
            // definition text - remove the wordType at the beginning of the definition
            t := strings.TrimSpace(def.Text()(len(wT):))
            t = strings.ToUpper(string(t(0))) + string(t(1:)) // Capitalize first letter
            ret = append(ret, ctxDefinition{
                dict: d,
                rank: uint8(j),
                def: definition{
                    wordType: wT,
                    text:     t,
                },
            })
        })
    })
    return ret, nil

}

func main() {
    if len(os.Args) <= 1 {
        fmt.Println("Provide a word to lookup.")
        return
    }
    // TODO: Support multiple words concurrently
    client := &http.Client{}
    words := os.Args(1:)
    // Lookup each word concurrently and store results
    results := make(()chan ()ctxDefinition, 0)
    for i, word := range words {
        results = append(results, make(chan ()ctxDefinition))
        go func(ind int, w string) {
            defs, err := wordnikLookup(w, client)
            if err != nil {
                panic(err)
            }
            results(ind) <- defs
        }(i, word)
    }

    // Print the answer of each word
    for i, result := range results {
        // TODO: Write to buffer, then flush after result comes in
        color.New(color.BgRed, color.White).Println(words(i))
        pprintCtxDefs(<-result, true)
    }
}

This code is licensed under version 3. of the GPL. It will be uploaded to Github. Anyone who wants to reuse or modify this code must comply with that license.

Google Search Console domain property is not in the list of properties that I can add to Google Analytics

I am trying to connect a domain property to a google analytics domain. But when the property I added is not in the property list where I can choose.

All other properties are. The big difference is that the newly added property is a domain property. All the rest are regular properties. Is there a new way to connect the properties of this domain to google analytics?

seo: Google Search Console displays two different "Last Crawl" dates for the same URL. Which one is correct?

For the same URL (x):

Coverage> Indexed, not submitted on sitemap> Examples> URL x> Last crawl sample "March 29, 2020"

Inspect URL> URL x> Coverage> Last crawl sample "April 4, 2020 2:47:23 AM"

Which one is correct? That is, when was the last time googlebot crawled that URL?

Google Play Console doesn't publish my Android app even after waiting two days, why is it taking so long?

I developed a simple book app in the Android studio and launched it using Google Play Console.

I have waited two days for my Android app to be published, but the status is still "Pending Publication".

What I want to know is, please tell me how long it usually takes for an Android app to be published.

What have I done :

Contacted at Google Play Developer Support

What they answered:

Hi faran

Thank you for contacting Google Play Developer Support.

I understand that you are concerned about the time it takes for your application to process for publication on Google Play. Due to tight working hours at the moment, we are currently experiencing longer review times than usual. While the situation is currently evolving, app review times may fluctuate and may take 7 days or more.

We recommend that you adjust your planning to take this into account and avoid resending it. We understand the inconvenience this may cause and we appreciate your patience and understanding.

If you have any other questions regarding the use of the Play Console, please let me know and I will be happy to assist you.

Regards, Dave Google Play Developer Support

Did you know that we offer chat support in English? You can chat with us Monday through Friday from 12 a.m. at 12 a.m., Greenwich Mean Time (GMT).

Any help will be appreciated. Thank you

How can I write an array to a .txt file in Java the same way it appears in the console?

I made a code that generates an N x N square matrix with random numbers. Fine until now. I made a method of being able to write this array to a .txt file, only the array just comes out with random values, even if I convert the entire structure of the int array to String.

Here is the main one:

    import java.util.Scanner;
    import java.util.Random;
    import java.io.IOException;

    public static void main(String() args) throws IOException
    {

         Scanner in = new Scanner(System.in);

         System.out.print("De o valor para dimensão de uma matriz quadrada: ");

         int N = in.nextInt();

         int ()() matrix1 = new int(N)(N);
         //double ()() matriz2 = new double(N)(N);

         Random rand = new Random(); 

         rand.setSeed(System.currentTimeMillis()); 
         for (int i = 0 ; i < N ; i++) 
         {     
            for (int j = 0 ; j < N ; j++) 
            {
                Integer r = rand.nextInt()% 1000; 
                matrix1(i)(j) = Math.abs(r);
            }

         }
         System.out.println("A matriz quadrada gerada de tamanho " + N + " foi:");

         printMatrix graph = new printMatrix();

         graph.printGraph(matrix1, N);
         graph.matrixToFile(matrix1);

    }

So I made a class with two methods (unnecessary, but not to lose the habit of object orientation). Follow:

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;

public class printMatrix
{
    public void printGraph(int()() array, int n)
    {
        for (int i = 0; i < n; i++)
        {  
            System.out.print("(");   
            for (int j = 0; j < n; j++)
            {
                System.out.print(array(i)(j) + " ");
            }
            System.out.println(")");
        }
        System.out.print("n");   
    }


    public void matrixToFile(int()() array) throws IOException
    {
        FileWriter arqMatrix = new FileWriter("Matriz 1.txt");
        PrintWriter gravarArq = new PrintWriter(arqMatrix);

        gravarArq.println(Arrays.toString(array));



        arqMatrix.close();
        System.out.println("Foi gerado um arquivo 'Matriz 1.txt' no mesmo local do projeto.n");
    }
}

So far, so good. The problem is when I do this function "gravarArq.println(Arrays.toString(array));"This is where the" bad "comes in. It has random characters, like bytes, like: ((I @ 28d93b30, (I @ 1b6d3586, (I @ 4554617c) (if you put 3, it always generates this depending on how the "N".

If you put a System.out.println(Arrays.toString(array)); generate these random values ​​on the console itself, or put a + "teste" at the end of gravarArq.println(Arrays.toString(array)); get gravarArq.println(Arrays.toString(array) + "teste"); there will be a "test" at the end of the file, this is how I realized it is not writing in bin / bytes ... I would like a solution!

Also, I'd also like to know how to skip the lines and format exactly what it looks like on the console.

Thank you

Memory problem when sending a large number of emails from the console command

I have a console command that checks orders and sends emails to customers.

protected function execute(InputInterface $input, OutputInterface $output){
    $orders = $this->getOrders();
    foreach ($orders as $order) {
        $data = ... //prepare some data
        $this->sendMail($order->getCustomerEmail(), $data);
    }
}

private function sendMail($email, $data){
    $postObject = new MagentoFrameworkDataObject();
    $postObject->setData($data);

    if ($this->options("test-email")) {
        $email = $this->options("test-email");
    }

    $maskedEmail = substr($email, 0, 1).'***'.substr($email, strpos($email, "@"));
    $this->output->writeln("tSending mail to: {$maskedEmail}");

    // send mail to recipients
    $this->inlineTranslation->suspend();
    $storeScope = MagentoStoreModelScopeInterface::SCOPE_STORE;
    $transport = $this->transportBuilder
        ->setTemplateIdentifier(
            $this->scopeConfig->getValue(self::EMAIL_TEMPLATE, $storeScope)
        )
        ->setTemplateOptions(
            (
                'area' => MagentoFrameworkAppArea::AREA_FRONTEND,
                'store' => $this->storeManager->getStore()->getId(),
            )
        )
        ->setTemplateVars(('data' => $postObject))
        ->setFrom(
            $this->scopeConfig->getValue(self::EMAIL_SENDER, $storeScope)
        )
        ->addTo($email)
        ->getTransport();

    $transport->sendMessage();
    $this->inlineTranslation->resume();
}

This works fine, but I tried it with ~ 5000 orders and in ~ 2700 email it gives me this error:

PHP Fatal error: Allowed memory size of xxxxxxx bytes exhausted (tried to allocate 344064 bytes) in /app/xxxxxx/vendor/magento/framework/View/TemplateEngine/Php.php on line 66
{..rendered email html content..}
Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.

I assume that processed html remains in memory.
I tried this unset($transport) but still memory usage increases.

What could be the problem?

Thanks in advance.