Unity Rendering Pass Before Refraction not showing

In the documentation it states:

Before Refraction: Draws the GameObject before the refraction pass. This means that HDRP includes this Material when it processes refraction. To expose this option, select Transparent from the Surface Type drop-down.

I have selected the Transparent option for surface type but the Before refraction rendering pass is not in the drop down list for rendering pass. How can I get it to be there? Are there some other option that might be disabling it?

NGINX UDP Proxy Pass to HTTP

I built a NGINX reverse proxy where I listen for UDP traffic on port 53 and pass it on to an HTTP endpoint with modified headers. Once the headers are modified, I send the packet to the target.


http {  
include       /etc/nginx/mime.types;    
default_type  application/octet-stream;

log_format  main  '$remote_addr:$server_port - $remote_user ($time_local) "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';      

access_log  /var/log/nginx/access.log  main;
error_log /var/log/nginx/error.log debug;    

proxy_pass_request_headers on;    

sendfile        on;
#tcp_nopush     on;

keepalive_timeout  120;  
#gzip  on;     

server {
    listen 8080;       
        ngx.req.set_header("Host", "some_host")
        ngx.req.set_header("Content-Type", "application/atom+xml;type=entry;charset=utf-8") 
        ngx.req.set_header("Authorization", "some_token")
    location = / {                        
        proxy_pass https://the_real_target;                                                     


    stream {
    upstream some_name {

    server {
        listen      80;      
        proxy_pass  some_name;         

    server {
        listen 53 udp;
        proxy_responses 0; 
        proxy_pass some_name;


user  nginx;
load_module modules/ndk_http_module.so;
load_module modules/ngx_http_lua_module.so;
load_module modules/ngx_http_headers_more_filter_module.so;

include conf.d/stream.conf;
include conf.d/http.conf;

worker_processes  auto;

error_log  /var/log/nginx/error.log debug;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;

It works when I use Postman and send requests to port 80. However, when use PacketSender to send request over UDP it is not redirecting to the HTTP server and closes the connection.

I developed a program to test if I can redirect a UDP packet to a TCP endpoint. This works but I am looking for a way to accomplish this only with NGINX. Any ideas?

Witlink Storm Pass The Soft Cap Target During The On-going Pre-sale!

Reduced Size Image

In a fast-paced business environment like ours, the need for businesses to be technologically inclined cannot be overemphasized. Artificial intelligence and machine learning play an important role in the way enterprises relate with their customers and how they deliver customer support.

The concept of AI dates back to the 1950s. During the time, only large research institutions and big brands were able to afford artificial intelligence to drive their business operations. Nowadays, AI can be applied in almost all shades of life; be it e-commerce, smartphones, smart homes, or streaming services.

WitLink is a force to reckon with when it comes to providing a marketplace for AI enthusiasts to thrive. The brand offers an ecosystem where AI lovers and practitioners can make a living offering AI and ML-related services.

On-going presale!

WitLink continues to present opportunities and that through the on-going Presale. With the Soft-Cap achieved, now it eyes the hard-cap!

You can buy WAI token through BTC, ETH, BCH, and USDT. The price of 1 WAI token is 0.15 USD. And it’s the last chance to buy Witlink AI Tokens at $0.15!


In the first phase tokens will be sold with a bonus of 1% in the purchase and referral bonus of 3%. The second phase a bonus of 0.5% in the purchase and referral bonus of 2%. The third and last phase with a bonus of 0.25% in the purchase and referral bonus of 1%.

Minimum token purchase of $1000 applies to receive bonus in the purchase.

What Is WitLink?

WitLink is a blockchain-powered marketplace where professionals, AI trainers, students, and any AI enthusiasts can offer their services to enterprises. The mission of WitLink is to develop a decentralized marketplace where artificial intelligence and machine learning experts can freely offer their services and make money in return. WitLink leverages open-source and decentralized networks to achieve this lofty idea.

WitLink’s protocol will help technology companies and enterprises in general to tap into the global talent pool of AI and ML experts. As such, they will freely access AI solutions that are tailored to solve their business challenges. WitLink ecosystem consists of WitLink Marketplace, WitLink ready, WitLink Computing, and WitLink Learn.

WitLink has a token with the symbol “WAI.” This token is the native currency that users can use to buy goods and services on the WitLink protocol. POS token holders will be rewarded with the WAI token for their activities on the WitLink platform. Plus, the token can be used to pay platform fees and other goods and services.

Benefits Of Participating In WitLink’s Decentralized Marketplace

So many AI professionals prefer WitLink over other similar AI projects, and the reason is not far-fetched. Some of the reasons include:

● Enterprises will have direct access to AI professionals from across the world; thus, saving costs that would have been expended to hire data analysts and AI researchers.
● Students will have access to well-crafted AI-related courses, workshops, and webinars organised by industry experts.
● Technology firms would save the cost of hiring and keeping in-house maintenance teams.
● AI and ML experts will have access to real projects where they can make money. Plus, all projects on the WitLink ecosystem would be executed using smart contracts.
● Businesses would no longer install expensive AI infrastructure.

Further information at: www.witlink.ai or read through their Whitepaper for more information about the project.

content type – How to pass the item ID to the ContentType.EditFormUrl inside our SharePoint online site

I have the following CSOM to change the “EditFormUrl” & “NewFormUrl” for a list’s content type:-

static void Main(string() args)
             //customer sites
             string siteUrl = "https://***.sharepoint.com/sites/Intranet/";
             string clientId = "***";
             string clientSecret = "***";
             using (ClientContext context = new OfficeDevPnP.Core.AuthenticationManager().GetAppOnlyAuthenticatedContext(siteUrl, clientId, clientSecret))
                     var omsWeb = context.Site.RootWeb;
                     //query for the alert period
                     List customerliveorderlist = omsWeb.GetList(omsWeb.ServerRelativeUrl + "/lists/userfeedbacksystem/");
                     foreach (var ct in customerliveorderlist.ContentTypes)
                         ct.EditFormUrl = "https://***.sharepoint.com/sites/Intranet/Lists/UserFeedbackSystem/EditForm.aspx";
                         ct.NewFormUrl = "https://***.sharepoint.com/sites/Intranet/Lists/UserFeedbackSystem/NewForm.aspx";

currently the New form is working well, while the edit form is not working as I need to pass the ID of the item to the ct.EditFormUrl ? so can anyone advice on this?

Pass value into a view using block input

Not answering directly, because I don’t know if you could do this with a configurable Views block without custom code.

A different approach only using UI would be on entity level, creating a block type containing two fields, the taxonomy drop-down and an EVA field passing the other field’s value via a token. The site admin has then to use the Custom Block Library to create a custom block for this block type.

Add the EVA field to the block type with this module: https://www.drupal.org/project/eva

identical Services in Angular – multiple instances? or pass parameters in each call?

I’m building a component in Angular that controls & monitors a relay via a REST API. There are several identical relays, each with their own name and IP address.

I’m an Angular noob, and don’t quite understand the “providedIn: ‘root’ vs ‘any'” paradigm and how services are “injected”. Should I be creating a single service (shared by all instances of the component), and passing in the API endpoint each time I want to make a call to a specified API? Or should I be creating a separate instance of the service for each relay?

If the answer is the former, would it be different if the service(s) needed to keep a persistent TCP connection to each relay, instead of the stateless HTTP connections?

An am I barking up the wrong tree by looking at the “providedIn: ‘any'” business? I’ve been trying to figure out how to pass parameters (e.g. the API endpoint) into the constructor of the Service, and it seems to be surprisingly uncommon information. What am I missing?

input languages – How to pass xkb options to ibus (and use them with m17n engines)?

I am using ibus for input in different languages (mostly I use English and Russian, but also sometimes also Esperanto, Ukrainian, Greek, German, French etc). For English I use the xkb:us::eng engine which is essentially the basic xkb table for English. However I can’t find any way as to how to use xkb options inside ibus. When the xkb engine is one, setxkbmap -query gives the following output:

rules:      evdev
model:      pc105
layout:     us
options:    compose:menu,grp:caps_toggle

But I’d prefer to have other set of options. For one, I don’t need grp:caps_toggle at all, as I disabled and remapped the capslock key in ~/.Xmodmap Plus I’d like to have typographical symbols, lv3 switch by Alt_R and other handy things from setxkbmap. Before ibus I used uim with the us keyboard and I had the following in my startup file:

setxkbmap "us" -option "compose:menu,lv3:ralt_switch,grp_led:scroll,misc:typo,terminate:ctrl_alt_bksp"

uim used its engines on top of xkb, so all those options worked in both in direct mode and in any engine, at least ones from m17n. Ibus, on the other hand, uses xkb as one of its engines, so calling setxkbmap seems to break everything. How do I pass options to xkb engines inside ibus? Is it even possible?

Additional question: how do I use the same xkb options for m17n engines? In ibus GUI there is a preferences tab for m17n engines, but it only has a “Use US keyboard layout” checkmark without any way to specify which exactly xkb layout is to be used and with which options. I use m17n:ru:kbd engine (rather than xkb one) for Russian, but I’d like to have all the handy options from xkb when I use it. Same for all the other languages/engines I occasionally use.

Pass this test asap

public void test_03b() { Bank b = new Bank(); b.addClient("Heeyeon", -23.5); assertEquals("Error: Non-Positive Initial Balance", b.getStatus()); b.addClient("Heeyeon", 0); assertEquals("Error: Non-Positive Initial Balance", b.getStatus()); b.addClient("Heeyeon", 213.4); String expectedStatus = "Accounts: {Heeyeon: $213.40}"; assertEquals(expectedStatus, b.getStatus()); /* * Recall: A client’s statement summarizes * their current status followed by their history list of transactions. / String() expectedHeeyeonStmt1 = {"Heeyeon: $213.40"}; / The added account Heeyeon has no transactions yet. / assertArrayEquals(expectedHeeyeonStmt1, b.getStatement("Heeyeon")); / Names of clients are case-sensitive. / b.addClient("Heeyeon", 134.56); assertEquals("Error: Client Heeyeon already exists", b.getStatus()); assertArrayEquals(expectedHeeyeonStmt1, b.getStatement("Heeyeon")); / after an error, account statement stays unchanged / / deposit amount should be positive / b.deposit("Heeyeon", -238.29); assertEquals("Error: Non-Positive Amount", b.getStatus()); assertArrayEquals(expectedHeeyeonStmt1, b.getStatement("Heeyeon")); / after an error, account statement stays unchanged / b.deposit("Heeyeon", 0); assertEquals("Error: Non-Positive Amount", b.getStatus()); assertArrayEquals(expectedHeeyeonStmt1, b.getStatement("Heeyeon")); / after an error, account statement stays unchanged / b.addClient("Jiyoon", 239.4); b.addClient("Sunhye", 332.6); b.addClient("Jihye", 428.8); / at this point, the bank is not full yet / b.addClient("Jihye", 81.72); / here Jihye is a duplicate name, and the max capacity has not reached / assertEquals("Error: Client Jihye already exists", b.getStatus()); String() expectedJihyeStmt1 = {"Jihye: $428.80"}; assertArrayEquals(expectedJihyeStmt1, b.getStatement("Jihye")); / after an error, account statement stays unchanged / / Add clients to gradually reach the maximum capacity of the bank. / b.addClient("Suyeon", 590.10); b.addClient("Yuna", 640.12); expectedStatus = "Accounts: {Heeyeon: $213.40, Jiyoon: $239.40, Sunhye: $332.60, Jihye: $428.80, Suyeon: $590.10, Yuna: $640.12}"; assertEquals(expectedStatus, b.getStatus()); b.getStatement("Alan"); assertEquals("Error: From-Account Alan does not exist", b.getStatus()); / Too bad, the bank is full. / b.addClient("Jackie", 768.29); / here Jackie is a non-existing name / expectedStatus = "Error: Maximum Number of Accounts Reached"; / new account not added / assertEquals(expectedStatus, b.getStatus()); / status of bank after the unsuccessful addition of a new account / assertNull(b.getStatement("Jackie")); expectedStatus = "Error: From-Account Jackie does not exist"; assertEquals(expectedStatus, b.getStatus()); / status of bank after the unsuccessful print of a client’s statement / b.addClient("Suyeon", 181.72); / here Suyeon is a duplicated name, but the max capacity error takes priority (see error tables in PDF instructions) / assertEquals("Error: Maximum Number of Accounts Reached", b.getStatus()); String() expectedSuyeonStmt1 = {"Suyeon: $590.10"}; / the error does not change suyeon’s status / assertArrayEquals(expectedSuyeonStmt1, b.getStatement("Suyeon")); / after an error, account statement stays unchanged / b.addClient("Sunhye", 0); / here Sunhye is a duplicated name, and the balance is non-positive, but the max capacity error takes priority (see error tables in PDF instructions) / assertEquals("Error: Maximum Number of Accounts Reached", b.getStatus()); String() expectedSunhyeStmt1 = {"Sunhye: $332.60"}; / the error does not change sunhye’s status / assertArrayEquals(expectedSunhyeStmt1, b.getStatement("Sunhye")); / after an error, account statement stays unchanged */ }