Dúvida nas condições do Google Data Studio em caso com "IF" Posted: 15 Sep 2021 08:21 AM PDT Estou precisando criar uma condição para uma meta do Google Analytics no Google Data Studio onde nessa condição deve-se contabilizar as conversões de Meta apenas se o "caminho da página anterior" for igual de uma página específica. A condição que tentei e não funcionou foi: CASE IF((Caminho da página anterior = "formas-de-pagamento"), "TRUE") ELSE "FALSE" END Agradeço a ajuda pessoal. |
TypeError: getaddrinfo() argument 1 must be string or None in Paramiko Posted: 15 Sep 2021 08:21 AM PDT I am trying to make a simple SSH client, but i get this error when I try to connect: from paramiko import SSHClient from ipaddress import ip_address from stdiomask import getpass ssh = SSHClient() try: server = ip_address(input("Enter IP of server: ")) except ValueError: print("This isn't an IP address...") except: print("Enter something...") else: username = input("Enter the username: ") password = getpass("Enter the password: ") ssh.connect(server, port=22, username=username, password=password) ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(input(username + "@" + server + ": ")) I have no idea why this isn't working. Thank you |
python shift function does not work as expected Posted: 15 Sep 2021 08:21 AM PDT I have a data frame for the page events with the following structure: - sessionId - unique session id
- event_date - date and time where the event occurred
- pageTitle - event name (page to which users navigated)
In order to see, how users navigate in app and build a Sankey chart for it, I would like to create a new column "next event" which would be recording the next event for the session using the shift function, but the code below returns NAN values or mixing everything and display wrong next event (I see it from event_date). df['event_date'] = pd.to_datetime(df['event_date'], unit='s') df.sort_values(['sessionId', 'pageTitle', 'event_date'], ascending=[True, False, True], inplace=True) grouped = df.groupby('sessionId') def get_next_event(x): return x['pageTitle'].shift(-1) df["next_event"] = grouped.apply( lambda x: get_next_event(x)).reset_index(0, drop=True) display(df.query('sessionId =="1"').sort_values('event_date')) display(df.query('sessionId =="2"').sort_values('event_date')) results example sessionId | event_date | pageTitle | next_event | 1 | 2021-05-26 19:23:45.820 | Search | Search | 1 | 2021-05-26 19:23:50.074 | Statement | Statement | 1 | 2021-05-26 19:30:06.086 | Search | Search | 1 | 2021-05-26 19:30:09.995 | Statement | Statement | 1 | 2021-05-26 19:47:24.058 | Statement | Statement | 1 | 2021-05-26 19:57:31.661 | Aging Report | NAN | 1 | 2021-05-26 19:57:40.672 | Search | Aging Report | 1 | 2021-05-26 19:57:44.160 | Statement | Search | 2nd sessionId | event_date | pageTitle | next_event | 2 | 2021-07-20 15:43:35.941 | Aging Report | NaN | 2 | 2021-07-20 15:44:52.739 | Search | Search | 2 | 2021-07-20 15:44:56.173 | Statement | Statement | 2 | 2021-07-20 16:23:02.761 | Statement | Statement | Please help to understand what I am doing wrong |
Overriding mediaquery css rules in Bootstrap Posted: 15 Sep 2021 08:21 AM PDT Here is the sample code that I have which shows #data in md-12 or sm-6 based on the browser's width. in Some conditions (like the special mode of preview that I want to implement and will be triggered by JS) I want to override the #data rules to renders only the col-md-12 even on small screens. Please note that I don't want to remove any classes from DOM, and looking for a solution to use .parent to override its child rendering rules. <div class="parent"> <div class="row"> <div id="data" class="col-md-12 col-sm-6">data</div> </div> </div> |
Why the VisualStudio Registers Window show RBP, RSP registers even when I build for x86? Posted: 15 Sep 2021 08:21 AM PDT I'm using the Registers Window of VS to inspect the values of the ESP and EBP registers, and everything works as expected when my project targets .NET Framework 4.6.1 as in this image. But when I target DotNet5 the Registers Window shows me the RSP and RBP registers instead. Why the Registers Window show RBP, RSP registers when I build for x86 ? |
R - Summarising factor level count per column Posted: 15 Sep 2021 08:21 AM PDT I have a dataframe that contains a number columns which are all coded as factor variables. Each column is based on Questions with only two choices: 1=yes and 2=no, or missing. Each row would be a participant. Here a simplified version: Q_1 Q_2 Q_3 1 1 1 2 1 1 1 2 NA 2 1 2 Ideally, I would like to create an overview dataframe with each question as row and the counts of how often a variable each factor occurred. That would also allow me to use dplyrs mutate function ands calculate the percentages etc. I would like a frame with the count data: Yes No NA Q_1 2 2 0 Q_2 3 1 0 Q_3 2 1 1 I initially though of simply using group_by and the count function, however there is no real grouping variable, because the factor levels (which happen to be the same for all columns) would be my grouping variable. |
ngx-translate - Change displayed value in language select dropdown Posted: 15 Sep 2021 08:21 AM PDT This seems like a relatively simple thing to do but I cannot seem to find any examples (Stackblitz, blogs, ngx-translate docs, etc.) of anyone doing it and cannot work it out myself. I want to change the displayed value of my dropdown from "en", "es", "fr" to "English", "Espanol", "Francais". Changing the value in addLangs() seems to change the value in the dropdown but of course it cannot find en.json, etc. component.html <select class="form-control" selLang (change)="translateLanguageTo(selLang.value)"> <option *ngFor="let language of translate.getLangs()" [value]="language" [selected]="language === translate.currentLang"> {{ language }} </option> </select> app.component.ts this.translate.addLangs(['en', 'es', 'fr']); |
Porblem with two pointers at the same memory location Posted: 15 Sep 2021 08:21 AM PDT Why when I delete one of the pointers that point to one memory location I can change value in another one without error? And why after delete adress of pointer change? I read in the internet that adress shouldn't change afrer delete it depends on compiler? #include <iostream> using namespace std; int main() { int* ptr = new int(7); int* _ptr = ptr; delete ptr; cout<<*_ptr; //in this moment cout<<*_ptr; give garbage insdead of error . WHY?! *_ptr = 10; cout << *_ptr; system("pause"); return 0; } |
I want to put a circle inside a circle but the issue is my first layer circle is cropped from the top and left Posted: 15 Sep 2021 08:21 AM PDT #pcircle { left: 50%; position:absolute; } #icircle { left: 50%; position:absolute; } <!DOCTYPE html> <html lang="en"> <p style="position: absolute; bottom: 20px; left: 700px;z-index: 2;"> <a name="anchor"></a> <svg id="pcircle" width="850" height="850" viewBox="0 0 850 850" fill="none" xmlns="http://www.w3.org/2000/svg"> <circle cx="350" cy="350" r="425" fill="#552626"/> </svg> <svg id="icircle" width="700" height="700" viewBox="0 0 700 700" fill="none" xmlns="http://www.w3.org/2000/svg"> <circle cx="350" cy="350" r="350" fill="#CD5353" fill-opacity="0.78"/> </svg> </p> </html> |
Get the largest values from an array using reduce Posted: 15 Sep 2021 08:21 AM PDT Basically what I'm trying to do is map this array and identify which objects satisfy a certain condition. The condition is: Get an object that has the highest value of a+b and if you have two objects with the same value of a+b, get the one that has the highest value of c. What is the best way to do this? Maybe reduce? const data = [ { id: 1, a: 12, b: 75, c: 11, }, { id: 2, a: 65, b: 14, c: 32, }, { id: 3, a: 32, b: 23, c: 45, }, { id: 4, a: 22, b: 1, c: 3, }, ]; |
jquery JsTree: copy text with mouse Posted: 15 Sep 2021 08:21 AM PDT By default, the user can only click and open the tree to see the content. Is there even a way to allow users to select and copy the text content with mouse? maybe with CSS? (in this example, the texts to copy are "Simple root node", "Root node 2" ecc... in JSON 'data' object) $(document).ready(function() { $('#tree').jstree({ 'core': { 'data': [ { "id" : "ajson1", "parent" : "#", "text" : "Simple root node" }, { "id" : "ajson2", "parent" : "#", "text" : "Root node 2" }, { "id" : "ajson3", "parent" : "ajson2", "text" : "Child 1" }, { "id" : "ajson4", "parent" : "ajson2", "text" : "Child 2" }, ] } }); }); <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.min.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"></script> <div id="tree"></div> |
Can't use GoogleMap in Flutter Posted: 15 Sep 2021 08:21 AM PDT I'm trying to use the GoogleMaps API in flutter, but I can't get it to work. The map widget appears, as in the picture, but it only shows a beige screen. How do I fix it? Infos on my code follows(The row where I use the map. The android manifest and the gradle.build. I hope someone can help me, I really need to get this working. (I can't add images for some reason, so the actual image is in this link: Image of the android screen! buildscript { ext.kotlin_version = '1.3.50' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:4.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() jcenter() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" project.evaluationDependsOn(':app') } task clean(type: Delete) { delete rootProject.buildDir } <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mp_sociedade"> <application android:label="mp_sociedade" android:icon="@mipmap/ic_launcher"> <activity android:name=".MainActivity" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> <!-- Specifies an Android theme to apply to this Activity as soon as the Android process has started. This theme is visible to the user while the Flutter UI initializes. After that, this theme continues to determine the Window background behind the Flutter UI. --> <meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" /> <!-- Displays an Android View that continues showing the launch screen Drawable until Flutter paints its first frame, then this splash screen fades out. A splash screen is useful to avoid any visual gap between the end of Android's launch screen and the painting of Flutter's first frame. --> <meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/launch_background" /> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name="com.apptreesoftware.mapview.MapActivity"/> <!-- Don't delete the meta-data below. This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> <meta-data android:name="flutterEmbedding" android:value="2" /> <meta-data android:name="com.google.android.geo.API_KEY" android:value="AIzaSyBflbfIbQyranQcrWOwpdxYBltelGiY1dA"/> </application> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/> </manifest> Row( children: [ SizedBox( width: 250, height: 280, child: GoogleMap( myLocationEnabled: false, myLocationButtonEnabled: false, zoomControlsEnabled: false, initialCameraPosition: CameraPosition( target: LatLng( 37.773972, -122.431297), zoom: 11.5)), ) ], |
Populate json data from API to table view Posted: 15 Sep 2021 08:21 AM PDT I get data with func let url = URL(string: "Blablabla") var request = URLRequest(url: url!) request.httpMethod = "GET" request.addValue("application/json", forHTTPHeaderField: "Content-Type") let session = URLSession.shared session.dataTask(with: request) { (data, response, error) in if let response = response { print(response) } guard let data = data else { return } do { let json = try JSONDecoder().decode(Homepage.self, from: data) ModelHomepage.shared.blog = json.homepage.blogPost ModelHomepage.shared.discount = json.homepage.discounts ModelHomepage.shared.services = json.homepage.services print(json) } catch { print(error) } }.resume() } and I also have struct struct ModelHomepage { static var shared = ModelHomepage() var blog: [BlogPost]? var discount: [Discount]? var services: [Service]? } It works fine if i execute this function, for example, when a button is pressed. But when I want to execute this function in ViewDidLoad it doesn't work. (Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value) I am just studying and maybe for someone this is a very simple question, but I ask for help without sarcasm. Thank u |
How to trigger mouseover on a different element for a mouseover on an element? Posted: 15 Sep 2021 08:21 AM PDT I have added a mouseover event on the button. In that event, I am calling the mouseover event on the anchor. However, that anchor mouseover is not properly triggered. I am not able to see the URL preview at the bottom left corner, like I could see if I hover the over the anchor element. How could I properly trigger mouseover on an anchor? $(document).ready(function() { $("button.pdfbutton").mouseover(function(e) { $("#anchorelem").show(); $("#anchorelem").mouseover(); }); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <button class="pdfbutton">PDF</button> <a href="https://google.com" id="anchorelem" style="display: none;">Some text</a> |
How does OAuth 2.0 Server know which secret should use to parse jwt token during client authentication? (client_secret_jwt) Posted: 15 Sep 2021 08:21 AM PDT My task is to add support of client authentication using JWT in my Identity Provider (a.k.a client_secret_jwt) (https://datatracker.ietf.org/doc/html/rfc7523#section-2.2). I've stumbled upon jwt parsing. I see client authentication flow (client_secret_jwt) like this: A client passes registration in IDP and get client_id and client_secret. Then it tries to authenticate its user and sends a request to "oauth2/token" endpoint with payload that contains two key-value pairs: client_assertion_type (it is a const) and client_assertion. client_assertion is a jwt token that contains information about the client. The client uses client_secret to generate the jwt token. So the client sends the request, the idp server must handle that one, it retrieves jwt token from the request and now it must parse using secret, but which client_secret it should use? At this moment it does not know anything about the client (cause the request doen't contain the client_id), so it could not go to its database and get a specific secret for this client? Could you give some information about the next questions: - The spec really doesn't contain info about the issue, does it?
- Does it mean I should solve this issue on my own if Oauth spec says nothing about it?
- If I have to solve this issue on my own, what do you think about the solution that is to iterate over all clients secrets of idp looking for the suitable secret?
Thank you in advance. |
C#, React, Getting data from a JSON file Posted: 15 Sep 2021 08:21 AM PDT I'm pretty new to C# development and I'm trying to get data from a JSON file to show on a React page for a portfolio site. I was trying to follow this tutorial for the C# portion,I plan on completely redoing the React & CSS portion to fit how I want it to look (already changed the react class component to a functional one), but when going to the /api/aboutMe URL, it was blank. I can't seem to figure out how to make the fetch request to work with the Controller, I've looked it up and found different ways of writing the controller which would negate the need for a JSON file, but I was wondering if there was advise to make it work with the JSON file. Any help/advise would be appreciated. I have a Controller: using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using PortfolioSite.Models; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace PortfolioSite.Controllers { [ApiController] [Route("api/aboutMe")] public class AboutController { [HttpGet] public AboutMe GetAboutInfo() { string jsonText = System.IO.File.ReadAllText("./Data/AboutMe.json"); return JsonConvert.DeserializeObject<AboutMe>(jsonText); } } } A Model: using System; namespace PortfolioSite.Models { public class AboutMe { public String Name { get; set; } public String Title { get; set; } public String Location { get; set; } public String Description { get; set; } } } The react component: import React, { Component, useState, useEffect } from 'react'; import { Row, Col, Card, CardImg, CardText, CardBody, CardTitle, CardSubtitle, Button } from 'reactstrap'; const AboutMe = () => { const [hasError, setErrors] = useState(false); const [name, setName] = useState(""); const [title, setTitle] = useState(""); const [location, setLocation] = useState(""); const [description, setDescription] = useState(""); const fetchData =()=> { fetch("api/aboutMe") .then((res) => res.json()) .then(res => setTitle(res.title)) .then(res => setName(res.name)) .then(res => setLocation(res.location)) .then(res => setDescription(res.description)) .catch(err => setErrors(err)); } useEffect(() => { fetchData(); },[]); return ( <div style={{ padding: "15px" }}> <Row> <Col md={2}> <img style={{ height: "100px" }} src='' /> </Col> <Col md={3} className="center-mobile-text"> <div > <h5>Name : {name}</h5> <p> Location: {location}</p> <p> Title : {title} </p> </div> <a style={{ color: "#007bb5" }} target="_blank" href=""> <span className="fa-stack fa-lg"> <i className="fas fa-circle fa-stack-2x"></i> <i className="fab fa-linkedin-in fa-stack-1x fa-inverse"></i> </span> </a> <a style={{ color: "black" }} target="_blank" href=""> <span className="fa-stack fa-lg"> <i className="fas fa-circle fa-stack-2x"></i> <i className="fab fa-github fa-stack-1x fa-inverse"></i> </span> </a> <a style={{ color: "red" }} target="_blank" href=""> <span className="fa-stack fa-lg"> <i className="fas fa-circle fa-stack-2x"></i> <i className="fas fa-envelope fa-stack-1x fa-inverse"></i> </span> </a> </Col> <Col md={7}> <p className="textStyle">{description}</p> </Col> </Row> </div> ); } export default AboutMe; And a JSON file in a Data Folder: { "Name": "Test data", "Title": "Test data job", "Location": "Test data location", "Description": "" } |
IF statement to ArrayFormula? Posted: 15 Sep 2021 08:20 AM PDT I have a formula in D3 that look like this: =IF(B3="","",B3-B2) How do I fill the whole column D (from D3) with that formula using ArrayFormula? |
How to assign different actions for same UIButton? Posted: 15 Sep 2021 08:20 AM PDT while click on the button for the first time, the title of the button will get changed from "Add to Cart" to "Go to Cart". And from the next click the button will navigate to the next screen (cart page) [just like flipkart]. here is my piece of code: @IBAction func addToCartbtnTapped(_ sender: Any) { if let info = detailInfo { let cartData = CartStruct(cartItems: info, cartQuantity: 1) self.saveCart(data: cartData) showAlert() (sender as AnyObject).setTitle("Go to Cart", for: .normal) let cart = self.storyboard?.instantiateViewController(withIdentifier: "CartViewController") as? CartViewController self.navigationController?.pushViewController(cart!, animated: true) } } I'm able to change the title of the button. But whenever I click on the button for nth number of time also, the product is getting added to the cart, screen is not navigating. How to solve this issue? |
Laravel Livewire, adding Input field (type=text) when chosing Other Posted: 15 Sep 2021 08:21 AM PDT Laravel Livewire project. Created a dynamic form with conditional fields. Need to add input field type=text when choosing the business type after choosing the business kind ( online/ physical). I've asked on many forums, people gave several instrustrions but Im finding it kinda difficult since Im not quite experienced when it comes to php. namespace App\Http\Livewire; use App\Models\Classes; use App\Models\Section; use Livewire\Component; class Conditional extends Component { public $parents = []; public $children = []; public function mount() { $this->parents = [ ['id' => -1, 'title' => 'Select type'], ['id' => 1, 'title' => 'Physical Store'], ['id' => 2, 'title' => 'Online Shop'], ]; } public function onSelectFirst($option) { switch($option) { case '-1': { $this->children = []; break; } case '1': { $this->children = [ ['id' => -1, 'title' => 'Please select'], ['id' => 1, 'title' => 'Restaurant'], ['id' => 2, 'title' => 'Fast Food'], ['id' => 3, 'title' => 'Cafe'], ['id' => 4, 'title' => 'Bar'], ['id' => 5, 'title' => 'Night club'], ['id' => 6, 'title' => 'Other'], // here ]; break; } case '2': { $this->children = [ ['id' => -1, 'title' => 'Please select'], ['id' => 7, 'title' => 'Clothes'], ['id' => 8, 'title' => 'Food Delivery'], ['id' => 9, 'title' => 'Other'], // here ]; break; } } } public function render() { return view('livewire.conditional'); } } <x-jet-label for="business_kind" value="{{ ('Type')}}" /> <select name="business_kind" id="business_kind" wire:click="onSelectFirst($event.target.value)" wire:change="onSelectFirst($event.target.value)"> @foreach($parents as $option) <option value="{{ $option['id'] }}">{{ $option['title'] }}</option> @endforeach </select> <x-jet-label for="business_type" value="{{ ('Business type')}}"/> <select id="business_type" name="business_type" wire:loading.attr="disabled"'> @foreach($children as $option) <option value="{{ $option['id'] }}">{{ $option['title'] }}</option> @endforeach </select> </div> |
Wpf menuitem visibility called just first time Posted: 15 Sep 2021 08:21 AM PDT Im my wpf project, I have a Telerik RadContextMenu where every item can be enable/disable and visible/hidden. In mvvm I manage easily the enable/disable status, but, when I bound the visibility proeprty of menuitems to a viewmodel property, I saw that the property is getted only the first time I open the menu, but when I open the menu next time, some condition can be changed and some item should be hidden. I can bind the visibility to enable status, but is not the behavior that I want achieve. Also I can use a styleselector to open a different contextmenu depending on some condition, but it seems an overengeneered solution... Thank you in advance Luigi Update: I resolved using codebehind. private void RadContextMenu_Opening(object sender, Telerik.Windows.RadRoutedEventArgs e) { if (sender is RadContextMenu menu) { foreach (var mi in menu.Items) { if (mi is RadMenuItem rmi) { var binding = BindingOperations.GetBindingExpression(rmi, VisibilityProperty); if (binding != null) { rmi.Visibility = (bool)ViewModel.Plot.GetType().GetProperty(binding.ResolvedSourcePropertyName) .GetMethod.Invoke(ViewModel.Plot, null) ? Visibility.Visible : Visibility.Collapsed; } } } } } In xaml, if I don't use TwoWay mode for the binding, after first call to RadContextMenu_Opening, BindingOperations.GetBindingExpression returns always null. I suspect that this is due to the same cause, but, also with TwoWay mode without codebehind still doesn't work t:RadContextMenu x:Key="{x:Static r:ResourcesKeys.PlotContextMenu}" Opening="RadContextMenu_Opening" Placement="MousePoint"> <t:RadMenuItem Header="{DynamicResource ResourceKey={x:Static r:ResourcesKeys.MISetAxisScale}}" Command="{Binding Plot.SetAxisScaleCommand}" Visibility="{Binding Plot.EnableMIAxisScale, Mode=TwoWay , Converter={StaticResource BoolToVis}}"/> <t:RadMenuItem Header="{DynamicResource ResourceKey={x:Static r:ResourcesKeys.MIEnableAxisScale}}" IsCheckable="True" IsChecked="{Binding Plot.EnableAxisScale, Mode=TwoWay}" Visibility="{Binding Plot.EnableMIAxisScale, Mode=TwoWay , Converter={StaticResource BoolToVis}}"/> <t:RadMenuItem IsSeparator="True" Visibility="{Binding Plot.EnableMIAxisScale, Converter={StaticResource BoolToVis}}"/> <t:RadMenuItem Header="{DynamicResource ResourceKey={x:Static r:ResourcesKeys.MIExtractSorgente}}" Command="{Binding ComandiSorgenti.ExtractSorgenteCommand}" Visibility="{Binding Plot.EnableMIExtractSorgente, Mode=TwoWay , Converter={StaticResource BoolToVis}}"/> <t:RadMenuItem Header="{DynamicResource ResourceKey={x:Static r:ResourcesKeys.MISorgenteTraCursori}}" Command="{Binding ComandiSorgenti.SorgenteTraCursoriCommand}" Visibility="{Binding Plot.EnableMISorgenteTraCursori, Mode=TwoWay , Converter={StaticResource BoolToVis}}"/> <t:RadMenuItem Header="{DynamicResource ResourceKey={x:Static r:ResourcesKeys.MIRestringiSorgente}}" Command="{Binding ComandiSorgenti.RestringiSorgenteCommand}" Visibility="{Binding Plot.EnableMIRestringiSorgente, Mode=TwoWay , Converter={StaticResource BoolToVis}}"/> <t:RadMenuItem IsSeparator="True"/> <t:RadMenuItem Header="{DynamicResource ResourceKey={x:Static r:ResourcesKeys.MIScottPlotInternalMenu}}" Command="{Binding Plot.ScottPlotInternalMenuCommand}"/> </t:RadContextMenu> |
How to come up with this f(n Posted: 15 Sep 2021 08:20 AM PDT So my friend gave me the f(n), but I don't understand how he got there. Would like some info on how. We are essentially learning how to write algorithms with big O notation. The problem is just counting work assignments within the code and nested loops are each N intervals. I just don't understand where the division comes from in this case. public static String[] sum4(int N) { //DO NOT COUNT IN opCount long opCount = 0; String fn = "f(N) = 5N+5(N(N-1)/2)+4"; String On = "O(N) = n^2"; //BEGIN opCounts long sum = 0; opCount++;// assignment of sum opCount++;//assignment of i opCount++;//comparison of I < N for(int i = 0; i < N; i++) { opCount++;//assignment of j opCount++;//comparison of j < i for(int j = 0; j < i; j++)//5N { sum++; opCount+=2;// sum addition and assignment opCount+=2;// J++ addition and assignment opCount++;// Comparison of J < I and the multiplier } opCount++;// I < N comparison opCount+=2;// I++ } opCount++;//return return new String[] {fn, On, opCount+""}; } |
Discord bot does not start Posted: 15 Sep 2021 08:21 AM PDT I'm creating my first discord bot while following their guide. When launching the bot with: node index.js . This returns: "ReferenceError: FinalizationRegistry is not defined". Has anyone else encountered this problem while following their guide. Here's the code from the guide. index.js const { Client, Intents } = require('discord.js'); const { token } = require('./config.json'); const client = new Client({ intents: [Intents.FLAGS.GUILDS] }); client.once('ready', () => { console.log('Ready!'); }); client.login(token); config.json { "token": "my token is here" } |
Parameterised decorator returning an error Posted: 15 Sep 2021 08:21 AM PDT I'm writing a decorator to check a certain attribute of a user. I will use this decorator over POST of GET methods of some class based APIs. The attribute is stored in the request.session["user_status']. def decorator_func(func): def wrapper_func(class_reference, request): status = request.session["user_status"] if status != "string1" and status != "string2": return Response({'a': 1, 'b': 2, 'c': 3}) return func(class_reference, request) return wrapper_func Whenever the if condition is not satisfied and the func is accessed, it works as expected. But when the condition is satisfied and the Response() is returned, I'm getting following error: TypeError at "api path on which the decorator is applied" Object of type "custom user model of this project" is not JSON serializable Traceback message: Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.7/site-packages/django/utils/deprecation.py", line 119, in __call__ response = self.process_response(request, response) File "/usr/local/lib/python3.7/site-packages/django/contrib/sessions/middleware.py", line 61, in process_response request.session.save() File "/usr/local/lib/python3.7/site-packages/django/contrib/sessions/backends/db.py", line 81, in save return self.create() File "/usr/local/lib/python3.7/site-packages/django/contrib/sessions/backends/db.py", line 55, in create self.save(must_create=True) File "/usr/local/lib/python3.7/site-packages/django/contrib/sessions/backends/db.py", line 83, in save obj = self.create_model_instance(data) File "/usr/local/lib/python3.7/site-packages/django/contrib/sessions/backends/db.py", line 70, in create_model_instance session_data=self.encode(data), File "/usr/local/lib/python3.7/site-packages/django/contrib/sessions/backends/base.py", line 116, in encode compress=True, File "/usr/local/lib/python3.7/site-packages/django/core/signing.py", line 110, in dumps return TimestampSigner(key, salt=salt).sign_object(obj, serializer=serializer, compress=compress) File "/usr/local/lib/python3.7/site-packages/django/core/signing.py", line 172, in sign_object data = serializer().dumps(obj) File "/usr/local/lib/python3.7/site-packages/django/core/signing.py", line 87, in dumps return json.dumps(obj, separators=(',', ':')).encode('latin-1') File "/usr/local/lib/python3.7/json/__init__.py", line 238, in dumps **kw).encode(obj) File "/usr/local/lib/python3.7/json/encoder.py", line 199, in encode chunks = self.iterencode(o, _one_shot=True) File "/usr/local/lib/python3.7/json/encoder.py", line 257, in iterencode return _iterencode(o, 0) File "/usr/local/lib/python3.7/json/encoder.py", line 179, in default raise TypeError(f'Object of type {o.__class__.__name__} ' Exception Type: TypeError at /api/v2/app/new_api Exception Value: Object of type UserAuthModel is not JSON serializable Even if I just call func() once but return the Response(), even then it works fine and Response() is returned. That means the following code works perfectly fine and the Response() is returned. def decorator_func(func): def wrapper_func(class_reference, request): # status = request.session["user_status"] # if status != value1 or status != value2: result = func(class_reference, request) return Response({'a': 1, 'b': 2, 'c': 3}) return wrapper_func The decorator is used like this: class newAPI(APIView): @decorator_func get(): That means I have to call the func(), which is a get() or post() method of an API class to return something, otherwise that particular error occurs. I'm guessing due to not writing the decorator in the correct way I'm getting some error and when it is trying to return the error, it's also trying to return the current user object which is not JSON serializable. The user object is also stored in request.session["user"]. What am I doing wrong in this parameterized decorator function? |
How to fix CORS headerdisallowedbypreflightresponse error? [closed] Posted: 15 Sep 2021 08:21 AM PDT I am using React for the UI and Spring Boot for the server. For a particular API call, I am appending a custom header(non-HTTPS) through the Axios call from the UI to the server but end up issuing an OPTIONS pre-flight with a 200 response and then cors error Headerdisallowedbypreflightresponse on the actual call. API Call from UI: const header = {'X-Cf-App-Instance': '0'} axios.get(http://localhost:8080/getMessage, {headers: header, withCredentials: true, crossDomain: true}) Request Header in Pre-Flight: Access-Control-Request-Headers: x-cf-app-instance Response Header in Pre-Flight: Access-Control-Allow-Headers: Content-Type Response: Cross origin resource sharing error: HeaderDisallowedByPreflightResponse NOTE: Pre-Flight response code is 200. Call goes from port 3000 to 8080 What are the available options to fix such issues? Information on the usage of Header from the cloud-foundry https://docs.cloudfoundry.org/concepts/http-routing.html |
What's a good way to store a small, fixed size, hierarchical set of static data? Posted: 15 Sep 2021 08:21 AM PDT I'm looking for a way to store a small multidimensional set of data which is known at compile time and never changes. The purpose of this structure is to act as a global constant that is stored within a single namespace, but otherwise globally accessible without instantiating an object. If we only need one level of data, there's a bunch of ways to do this. You could use an enum or a class or struct with static/constant variables: class MidiEventTypes{ public: static const char NOTE_OFF = 8; static const char NOTE_ON = 9; static const char KEY_AFTERTOUCH = 10; static const char CONTROL_CHANGE = 11; static const char PROGRAM_CHANGE = 12; static const char CHANNEL_AFTERTOUCH = 13; static const char PITCH_WHEEL_CHANGE = 14; }; We can easily compare a numeric variable anywhere in the program by using this class with it's members: char nTestValue = 8; if(nTestValue == MidiEventTypes::NOTE_OFF){} // do something... But what if we want to store more than just a name and value pair? What if we also want to store some extra data with each constant? In our example above, let's say we also want to store the number of bytes that must be read for each event type. Here's some pseudo code usage: char nTestValue = 8; if(nTestValue == MidiEventTypes::NOTE_OFF){ std::cout << "We now need to read " << MidiEventTypes::NOTE_OFF::NUM_BYTES << " more bytes...." << std::endl; } We should also be able to do something like this: char nTestValue = 8; // Get the number of read bytes required for a MIDI event with a type equal to the value of nTestValue. char nBytesNeeded = MidiEventTypes::[nTestValue]::NUM_BYTES; Or alternatively: char nTestValue = 8; char nBytesNeeded = MidiEventTypes::GetRequiredBytesByEventType(nTestValue); and: char nBytesNeeded = MidiEventTypes::GetRequiredBytesByEventType(NOTE_OFF); This question isn't about how to make instantiated classes do this. I can do that already. The question is about how to store and access "extra" constant (unchanging) data that is related/attached to a constant. (This structure isn't required at runtime!) Or how to create a multi-dimensional constant. It seems like this could be done with a static class, but I've tried several variations of the code below, and each time the compiler found something different to complain about: static class MidiEventTypes{ public: static const char NOTE_OFF = 8; static const char NOTE_ON = 9; static const char KEY_AFTERTOUCH = 10; // Contains Key Data static const char CONTROL_CHANGE = 11; // Also: Channel Mode Messages, when special controller ID is used. static const char PROGRAM_CHANGE = 12; static const char CHANNEL_AFTERTOUCH = 13; static const char PITCH_WHEEL_CHANGE = 14; // Store the number of bytes required to be read for each event type. static std::unordered_map<char, char> BytesRequired = { {MidiEventTypes::NOTE_OFF,2}, {MidiEventTypes::NOTE_ON,2}, {MidiEventTypes::KEY_AFTERTOUCH,2}, {MidiEventTypes::CONTROL_CHANGE,2}, {MidiEventTypes::PROGRAM_CHANGE,1}, {MidiEventTypes::CHANNEL_AFTERTOUCH,1}, {MidiEventTypes::PITCH_WHEEL_CHANGE,2}, }; static char GetBytesRequired(char Type){ return MidiEventTypes::BytesRequired.at(Type); } }; This specific example doesn't work because it won't let me create a static unordered_map . If I don't make the unordered_map static , then it compiles but GetBytesRequired() can't find the map. If I make GetBytesRequired() non-static, it can find the map, but then I can't call it without an instance of MidiEventTypes and I don't want instances of it. Again, this question isn't about how to fix the compile errors, the question is about what is the appropriate structure and design pattern for storing static/constant data that is more than a key/value pair. These are the goals: Data and size is known at compile time and never changes. Access a small set of data with a human readable key to each set. The key should map to a specific, non-linear integer. Each data set contains the same member data set. ie. Each MidiEventType has a NumBytes property. Sub-items can be accessed with a named key or function. With the key, (or a variable representing the key's value), we should be able to read extra data associated with the constant item that the key points to, using another named key for the extra data. We should not need to instantiate a class to read this data, as nothing changes, and there should not be more than one copy of the data set. In fact, other than an include directive, nothing should be required to access the data, because it should behave like a constant. We don't need this object at runtime. The goal is to make the code more organized and easier to read by storing groups of data with a named label structure, rather than using (ambiguous) integer literals everywhere. It's a constant that you can drill down into... like JSON. Ideally, casting should not be required to use the value of the constant. We should avoid redundant lists that repeat data and can get out of sync. For example, once we define that NOTE_ON = 9 , The literal 9 should not appear anywhere else. The label NOTE_ON should be used instead, so that the value can be changed in only one place. This is a generic question, MIDI is just being used as an example. Constants should be able to have more than one property. What's the best way to store a small, fixed size, hierarchical (multidimensional) set of static data which is known at compile time, with the same use case as a constant? |
PDF to XML conversion using PDFX http://pdfx.cs.man.ac.uk/ Posted: 15 Sep 2021 08:21 AM PDT I'm aware that PDFX is a rule-based system designed to reconstruct the logical structure of scholarly articles in PDF form, regardless of their formatting style. The system's output is an XML document that describes the input article's logical structure in terms of title, sections, tables, references, etc. I've been trying to convert some PDF files into XML using PDFX on python but http://pdfx.cs.man.ac.uk/ is not responding. The code I use for the conversion is: response = requests.post('http://pdfx.cs.man.ac.uk/', headers=headers, data=data) Is it still available? Is there any other option to convert the documents reconstructing the structure of scholarly articles? Thanks in advance! |
R sf & dplyr: summarise fails despite compatible types across groups Posted: 15 Sep 2021 08:21 AM PDT As of dplyr (0.8.3) and sf (0.8.0), the following was possible (see https://stackoverflow.com/a/49354480/9164265): library(dplyr) library(sf) nc <- st_read(system.file("shape/nc.shp", package="sf")) nc %>% group_by(SID74) %>% summarise(geometry = st_union(geometry)) %>% ungroup() This would have had the effect of combining each geometry with the same SID74 into their own MULTIPOLYGON s. However, this now (dplyr 1.0.0) gives the following error: Error: Problem with `summarise()` input `geometry`. x Input `geometry` must return compatible vectors across groups ℹ Input `geometry` is `st_union(geometry)`. ℹ Result type for group 1 (SID74 = 0): <sfc_MULTIPOLYGON>. ℹ Result type for group 2 (SID74 = 1): <sfc_MULTIPOLYGON>. Run `rlang::last_error()` to see where the error occurred. Does anyone know why dplyr is throwing this error, despite the types evidently being of the same <sfc_MULTIPOLYGON> class? Thanks for any help! |
How to use and condition in logstash if statement Posted: 15 Sep 2021 08:21 AM PDT I need to use and in logstash filter I'm doing something like this if "domain" in [message] and "[100]" in [message] { drop { } } but its not working getting configuration error I also tried doing if "domain" and "[100]" in [message] { drop { } } but its not dropping any logs what am I doing wrong? |
How can I add source PDF content to destination PDF using iText 7 without losing the header and footer? Posted: 15 Sep 2021 08:21 AM PDT I am using iText 7. I have two PDF files. The source PDF has some content. The destination PDF has header and footer. I have a requirement to add the content from source PDF to destination PDF in the middle of the page without overlapping header and footer of the destination PDF. Can anyone please help me with the code ? Below is my code and attached document is the screenshot of the source PDF which needs to be embedded in the final.pdf import java.io.File; import java.io.FileOutputStream; import java.net.MalformedURLException; import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; import java.util.UUID; import com.itextpdf.io.font.FontProgram; import com.itextpdf.io.font.FontProgramFactory; import com.itextpdf.io.font.PdfEncodings; import com.itextpdf.io.image.ImageDataFactory; import com.itextpdf.kernel.events.Event; import com.itextpdf.kernel.events.IEventHandler; import com.itextpdf.kernel.events.PdfDocumentEvent; import com.itextpdf.kernel.font.PdfFont; import com.itextpdf.kernel.font.PdfFontFactory; import com.itextpdf.kernel.geom.PageSize; import com.itextpdf.kernel.geom.Rectangle; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfPage; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.pdf.xobject.PdfFormXObject; import com.itextpdf.layout.Canvas; import com.itextpdf.layout.Document; import com.itextpdf.layout.Style; import com.itextpdf.layout.borders.Border; import com.itextpdf.layout.borders.SolidBorder; import com.itextpdf.layout.element.Cell; import com.itextpdf.layout.element.Image; import com.itextpdf.layout.element.Paragraph; import com.itextpdf.layout.element.Table; import com.itextpdf.layout.element.Text; import com.itextpdf.layout.font.FontProvider; import com.itextpdf.layout.property.HorizontalAlignment; import com.itextpdf.layout.property.TextAlignment; import com.itextpdf.layout.property.UnitValue; import com.itextpdf.layout.property.VerticalAlignment; public class TestPdf { public static void main(String[] args) { String uuid = UUID.randomUUID().toString(); try{ @SuppressWarnings("resource") PdfWriter writer = new PdfWriter(new FileOutputStream(new File(Paths.get("Output").toAbsolutePath()+"/final.pdf"))).setSmartMode(true); PdfDocument pdfDoc = new PdfDocument(writer); pdfDoc.setDefaultPageSize(PageSize.A4.rotate()); String fonts[] = {Paths.get("fonts").toAbsolutePath() + "/TREBUC.TTF", Paths.get("fonts").toAbsolutePath() + "/TREBUCBD.TTF", Paths.get("fonts").toAbsolutePath() + "/TREBUCBI.TTF",Paths.get("fonts").toAbsolutePath() + "/TREBUCIT.TTF"}; FontProvider fontProvider = new FontProvider(); Map<String, PdfFont> pdfFontMap = new HashMap(); for (String font : fonts) { FontProgram fontProgram = FontProgramFactory.createFont(font); if(font.endsWith("TREBUC.TTF")) { pdfFontMap.put("NORMAL", PdfFontFactory.createFont(fontProgram, PdfEncodings.WINANSI, true)); } else if(font.endsWith("TREBUCBD.TTF")) { pdfFontMap.put("BOLD", PdfFontFactory.createFont(fontProgram, PdfEncodings.WINANSI, true)); } else if(font.endsWith("TREBUCBI.TTF")) { pdfFontMap.put("BOLD_ITALIC", PdfFontFactory.createFont(fontProgram, PdfEncodings.WINANSI, true)); } else if(font.endsWith("TREBUCIT.TTF")) { pdfFontMap.put("ITALIC", PdfFontFactory.createFont(fontProgram, PdfEncodings.WINANSI, true)); } fontProvider.addFont(fontProgram); } TestPdf testPdf = new TestPdf(); NormalPageHeader headerHandler = testPdf.new NormalPageHeader(Paths.get("images").toAbsolutePath() + "\\logo.png", pdfFontMap); pdfDoc.addEventHandler(PdfDocumentEvent.START_PAGE, headerHandler); PageEndEvent pageEndEvent = testPdf.new PageEndEvent(Paths.get("images").toAbsolutePath() + "\\FooterLineExternal.png" ,pdfFontMap); pdfDoc.addEventHandler(PdfDocumentEvent.END_PAGE, pageEndEvent); Document doc = new Document(pdfDoc); doc.getPageEffectiveArea(PageSize.A4.rotate()); Table imageTable = new Table(1); imageTable.setBorder(Border.NO_BORDER); imageTable.setWidth(UnitValue.createPercentValue(100)); Cell cell = new Cell(); Paragraph paragraph = new Paragraph("Title"); paragraph.setVerticalAlignment(VerticalAlignment.TOP); cell.add(paragraph); cell.setBorder(Border.NO_BORDER); cell.setPaddingTop(50); imageTable.addCell(cell); doc.add(imageTable); doc.close(); System.out.println("Converted to PDF Succesfully >>> convertedSvg_"+uuid+".pdf"); }catch(Exception e){ e.printStackTrace(); System.out.println("Error Occured while converting to PDF = " + e.getMessage()); } } class NormalPageHeader implements IEventHandler { String header; Map<String, PdfFont> font; public NormalPageHeader(String header, Map<String, PdfFont> font) { this.header = header; this.font = font; } @Override public void handleEvent(Event event) { //Retrieve document and PdfDocumentEvent docEvent = (PdfDocumentEvent) event; PdfDocument pdf = docEvent.getDocument(); PdfPage page = docEvent.getPage(); Rectangle pageSize = page.getPageSize(); PdfCanvas pdfCanvas = new PdfCanvas( page.getLastContentStream(), page.getResources(), pdf); Canvas canvas = new Canvas(pdfCanvas, pdf, pageSize); canvas.setFontSize(10f); Table table = new Table(3); table.setBorder(Border.NO_BORDER); table.setWidth(UnitValue.createPercentValue(100)); Cell leftCell = new Cell(); leftCell.setFont(font.get("NORMAL")); leftCell.setPaddingTop(15); leftCell.setPaddingLeft(20); leftCell.setBorder(Border.NO_BORDER); leftCell.setBorderBottom(new SolidBorder(0.5f)); leftCell.setWidth(UnitValue.createPercentValue(33.3f)); Text userLabel = new Text("Username: "); userLabel.setBold(); Paragraph paragraph = new Paragraph(userLabel); Cell middleCell = new Cell(); middleCell.setFont(font.get("NORMAL")); middleCell.setPaddingTop(15); middleCell.setBorder(Border.NO_BORDER); middleCell.setBorderBottom(new SolidBorder(0.5f)); middleCell.setWidth(UnitValue.createPercentValue(33.3f)); paragraph = new Paragraph("Main Header"); paragraph.setTextAlignment(TextAlignment.CENTER); paragraph.setBold(); paragraph.setFontSize(12); middleCell.add(paragraph); String programString = "Sample header"; paragraph = new Paragraph(programString); paragraph.setTextAlignment(TextAlignment.CENTER); paragraph.setBold(); paragraph.setFontSize(10); middleCell.add(paragraph); table.addCell(middleCell); Cell rightCell = new Cell(); rightCell.setFont(font.get("NORMAL")); rightCell.setPaddingTop(20); rightCell.setWidth(UnitValue.createPercentValue(33.3f)); rightCell.setHorizontalAlignment(HorizontalAlignment.RIGHT); rightCell.setBorder(Border.NO_BORDER); rightCell.setBorderBottom(new SolidBorder(0.5f)); rightCell.setPaddingRight(20); //Write text at position Image img; try { img = new Image(ImageDataFactory.create(header)); img.setHorizontalAlignment(HorizontalAlignment.RIGHT); Style style = new Style(); style.setWidth(91); style.setHeight(25); img.addStyle(style); rightCell.add(img); table.addCell(rightCell); table.setMarginLeft(15); table.setMarginRight(15); canvas.add(table); } catch (MalformedURLException e) { e.printStackTrace(); } } } class PageEndEvent implements IEventHandler { protected PdfFormXObject placeholder; protected float side = 20; protected float x = 300; protected float y = 10; protected float space = 4.5f; private String bar; protected float descent = 3; Map<String, PdfFont> font; public PageEndEvent(String bar, Map<String, PdfFont> font) { this.bar = bar; this.font = font; placeholder =new PdfFormXObject(new Rectangle(0, 0, side, side)); } @Override public void handleEvent(Event event) { Table table = new Table(3); table.setBorder(Border.NO_BORDER); table.setWidth(UnitValue.createPercentValue(100)); Cell confCell = new Cell(); confCell.setFont(font.get("NORMAL")); confCell.setPaddingTop(15); confCell.setPaddingLeft(20); confCell.setBorder(Border.NO_BORDER); confCell.setBorderBottom(new SolidBorder(0.5f)); confCell.setWidth(UnitValue.createPercentValue(100)); PdfDocumentEvent docEvent = (PdfDocumentEvent) event; PdfDocument pdf = docEvent.getDocument(); PdfPage page = docEvent.getPage(); Rectangle pageSize = page.getPageSize(); PdfCanvas pdfCanvas = new PdfCanvas( page.getLastContentStream(), page.getResources(), pdf); Canvas canvas = new Canvas(pdfCanvas, pdf, pageSize); Image img; try { img = new Image(ImageDataFactory.create(bar)); img.setHorizontalAlignment(HorizontalAlignment.LEFT); Style style = new Style(); style.setWidth(UnitValue.createPercentValue(100)); style.setHeight(50); img.addStyle(style); Paragraph p = new Paragraph().add("Test: Confidential"); p.setFont(font.get("NORMAL")); p.setFontSize(8); p.setFontColor(com.itextpdf.kernel.colors.ColorConstants.GRAY); canvas.showTextAligned(p, x, y, TextAlignment.CENTER); pdfCanvas.addXObject(placeholder, x + space, y - descent); pdfCanvas.release(); } catch (MalformedURLException e) { e.printStackTrace(); } } public void writeTotal(PdfDocument pdf) { Canvas canvas = new Canvas(placeholder, pdf); canvas.showTextAligned(String.valueOf(pdf.getNumberOfPages()), 0, descent, TextAlignment.LEFT); } } } |
AtTask (Workfront) External Page: Send parameter to external server Posted: 15 Sep 2021 08:21 AM PDT I need to display some external data related to a task inside Workfront. I can create a dashboard that displays a static "External Page" from a private local server. I need to pass a parameter in that URL that includes some information about the current task, so I can get a response from a local ERP database that is relevant to that task (a field in my ERP system is used to relate quotes/orders/invoices to Workfront tasks). For example, I would have to define a URL that would look something like http://my.intranet/report?ref=$$REFNUM ... And the $$REFNUM token would be replaced with the reference number for the task where the dashboard is located. My server would see a request that looks like http://my.intranet/report?ref=12345, and return information related to the task with reference number 12345. I have proposals from two consultants that suggest that this is possible, but I can find no documentation that explains how to pass dynamic information out in an External Page URL. Any suggestions? UPDATE: With some additional hacking, I've discovered that I can get a Session ID returned using the following syntax: some.url/query?session={!$$SESSION} and I can get User ID using this syntax: some.url/query?userid={!$$USER.ID} I have not yet been successful getting task related detail. {!$$TASK.ID} returns null, whether called from the dashboard creation page, or from a tab embedded on a Task layout. Are there any other secret wildcard variables and how to use them? |
No comments:
Post a Comment