Prometheus basic auth

For https://github.com/Jeffail/benthos/issues/577

Should be everything needed but let me know if I missed anything.
Not sure how to test this. I am assuming that all that is needed to to call pusher.BasicAuth (this mutates the pusher right, we don't need the new ref?)
Only thing I wasn't really sure about is if we need anything extra around the err handling or if this makes sense as-is.
Please squash commits.

Hey @razor-x, looks good! You should be fine with pusher.BasicAuth as pusher is a pointer type so it'll be mutated. I think the error handling (just printing logs) is fine for now, but ideally we'd create the pusher outside of the goroutine and try out an initial push just to test the connection, if you fancy adding that then go ahead, otherwise I think this is good. For testing we unfortunately don't really have any integration suite for metrics so the best we can do is try it out locally for now.

I thought about if the pusher needs to be created outside that scope. Even so maybe better to put that in its own PR. I don't have much Go experience so this is about as far as I can get without learning something new. Normally would be fine with that haha but since this particular section of the code is impossible for me to test I'm not sure it's the best spot for me to experiment.

Cool, I'm testing it with a local set up and it needs a bit of work but I can get this over the finish line.


Addition of a TODO-List

I want to add a TODO list which will be made by HTML, CSS and Javascript.

Assign me

You can but you need to explain the various aspects learnt according to your curriculum. Only website will not be accepted. You can refer the contributing guidelines for details

You can ask here if there is any issue


show shortcuts in front of Class and Function with codelens

Validations

[X] I believe this is a way to improve. I'll try to join the Continue Discord for questions
[X] I'm not able to find an open issue that requests the same enhancement

Problem
Sometimes selecting code or using Slash Command is a chore, hoping for a faster way to do it.
Solution
implement CodeLens to show shortcuts in front of Class and Function

@felix1982 Work is underway to make this happen!


Help with querys

Hi, my query returns NullException. Even if there is a client with that name.
The Busqueda variable is set to {LiteDB.LiteCollection .  d__17}
`var busqueda = db.getDB().GetCollection("Cliente").Find(Query.StartsWith("Nombres", nombre));
if (!busqueda.Equals(null))
{
var busquedaList = busqueda.ToList();
            foreach(Cliente cl in busquedaList)
            {
                Debug.WriteLine(cl.Nombres);
            }
        }`

how you busqueda can be null if Find method returns always an IEnumerable, so even if there is no records you will get an empty IEnumerable.
Try:  var myList = collection.Find(....).ToList() - it's always must return instance of List

The Client named "Pepe" does not exist and gives error.
Now in the next test the name you searched for was "Nicolas" and that name exists and still gives error.

Can you post a small snipplet to test this? It's seam a simple find, there is no reason to this. Did you call Dispose of database before call this?

No, I have not made Dispose.
The strange thing is that with an element that exists I pull null, but I can continue to add clients without problems and are saved.

Try add LiteDB source code as a project to get where this Null reference are occuring... I never saw this.

Sorry for the delay, I attached the files of my project:
https://github.com/nikoxd123/Prueba/blob/master/Clases.cs

Hi! With the objective of organizing our issues, we are closing old unsolved issues. Please check the latest version of LiteDB and open a new issue if your problem/question/suggestion still applies. Thanks!


Remove Play JSON dependency

Play JSON is nice, but the Couchbase driver provides its own JSON implementation which is more than sufficient.

b0f025957f3a5fa16a836c64f0fcdd5aa2cd5398


[KIP] - Kprove should have configurable include paths

[KIP] - Use foo instead of syntax for declaring productions
Motivation
This would be useful for better access to trusted claims.
Example K Code
I would like to be able to use project relative paths for including K files in proofs, e.g. the trusted directory mention below could live at root of the project, while the proof below could be in a random subfolder.
require "trusted/claim1.k"

module MY-PROOF
  imports CLAIM1

  claim ...
endmodule

Documentation
A user can specify an include path with -I, e.g.
$ kprove -I `git rev-parse --show-toplevel` my-proof.k

Potential Alternatives/Work-arounds
I guess users could use relative paths (which in some contexts is fairly hard to do, e.g. when generating trusted claims with bazel) or they could concatenate files instead of requiring them.
Testing Approach
I don't know much about the existing testing harness.

Currently the workaround for this is to include the -I you need in the preceding call to kompile, because those lookup directories do get saved in the generated compiled.bin and other various cache files.

Let's focus on supporting this for KProveX

@radumereuta I was browsing through the codebase today and saw that https://github.com/kframework/k/blob/master/kernel/src/main/java/org/kframework/utils/options/OuterParsingOptions.java contains classes that are meant for the outer parser of kompile, and kdep. This file contains mentions of -d, -I, --no-prelude, and --md-selector options. Looking at kprovex, I see that the -d option exists and this bug asks to support -I. I don't mean to blow this issue out of proportion but but should we consider implementing --no-prelude and --md-selector options as well?

You may want to look at #1330
Yes, there are some inconsistencies when it comes to option names, and fully fixing them will require some nonbackward compatible changes.
Maybe since kprovex is so new, we could enforce a change to -d since this is the option that caused conflicts.
@ehildenb @dwightguth thoughts?

Guice can inject the dependency for you if you just add it as an option to this constructor: https://github.com/kframework/k/blob/master/kernel/src/main/java/org/kframework/kprove/KProve.java#L47 (that's for kprove, you'll need to do the same for kprovex).


StandardScreen visual tweaks

Two small fixes:

Push down the close button when a notification is showing
Add padding to the bottom of the screen to maintain vertical centering if both a notification and back button are showing.

:eyeglasses: @keybase/react-hackers

:mag_right: The commits dd890adca164...5c2ee693317c introduced some visual changes on linux:

Changed: Update_Passphrase-Error_Wrong_Passphrase (before) (after)

Changed: Standard_Screen-Success_w_Custom_Notification_Element (before) (after)

Changed: Standard_Screen-Normal (before) (after)

Changed: Standard_Screen-Error_w_Back_Button (before) (after)

Changed: Standard_Screen-Error (before) (after)

Changed: Standard_Screen-Back_Button (before) (after)

Changed: New_Proof_Website-DNS_or_File (before) (after)

Changed: New_Proof_PGP_import-Import_PGP (before) (after) (diff)
Changed: New_Proof_PGP_generating-Generating_PGP (before) (after) (diff)
Changed: New_Proof_PGP_add-One_Error_Email (before) (after) (diff)
Changed: New_Proof_PGP_add-Normal (before) (after) (diff)
Changed: New_Proof_PGP_add-Empty (before) (after) (diff)
Changed: New_Proof_PGP-Import_or_Generate (before) (after) (diff)
Changed: Folders_Ignore_Confirmation-Normal_Public (before) (after) (diff)
Changed: Folders_Ignore_Confirmation-Normal_Private (before) (after) (diff)
Changed: Folders_Delete_Confirmation-Normal_Public (before) (after) (diff)
Changed: Folders_Delete_Confirmation-Normal_Private (before) (after) (diff)
Changed: Folders_Clear_History_Confirmation-Normal_Public (before) (after) (diff)
Changed: Folders_Clear_History_Confirmation-Normal_Private (before) (after) (diff)
Changed: Folders_Clear_History_Confirmation-Long_Name_Public (before) (after) (diff)
Changed: Device_Revoke-Normal (before) (after) (diff)
Changed: Device_Revoke-Current (before) (after) (diff)

:mag_right: The commits dd890adca164...33985efb9e33 introduced some visual changes on linux:

Changed: Update_Passphrase-Error_Wrong_Passphrase (before) (after)

Changed: Standard_Screen-Success_w_Custom_Notification_Element (before) (after)

Changed: Standard_Screen-Normal (before) (after)

Changed: Standard_Screen-Error_w_Back_Button (before) (after)

Changed: Standard_Screen-Error (before) (after)

Changed: Standard_Screen-Back_Button (before) (after)

Changed: New_Proof_Website-DNS_or_File (before) (after)

Changed: New_Proof_PGP_import-Import_PGP (before) (after) (diff)
Changed: New_Proof_PGP_generating-Generating_PGP (before) (after) (diff)
Changed: New_Proof_PGP_add-One_Error_Email (before) (after) (diff)
Changed: New_Proof_PGP_add-Normal (before) (after) (diff)
Changed: New_Proof_PGP_add-Empty (before) (after) (diff)
Changed: New_Proof_PGP-Import_or_Generate (before) (after) (diff)
Changed: Folders_Ignore_Confirmation-Normal_Public (before) (after) (diff)
Changed: Folders_Ignore_Confirmation-Normal_Private (before) (after) (diff)
Changed: Folders_Delete_Confirmation-Normal_Public (before) (after) (diff)
Changed: Folders_Delete_Confirmation-Normal_Private (before) (after) (diff)
Changed: Folders_Clear_History_Confirmation-Normal_Public (before) (after) (diff)
Changed: Folders_Clear_History_Confirmation-Normal_Private (before) (after) (diff)
Changed: Folders_Clear_History_Confirmation-Long_Name_Public (before) (after) (diff)
Changed: Device_Revoke-Normal (before) (after) (diff)
Changed: Device_Revoke-Current (before) (after) (diff)

:mag_right: The commits dd890adca164...d3070331d1c9 introduced some visual changes on linux:

Changed: Update_Passphrase-Error_Wrong_Passphrase (before) (after)

Changed: Standard_Screen-Success_w_Custom_Notification_Element (before) (after)

Changed: Standard_Screen-Normal (before) (after)

Changed: Standard_Screen-Error_w_Back_Button (before) (after)

Changed: Standard_Screen-Error (before) (after)

Changed: Standard_Screen-Back_Button (before) (after)

Changed: New_Proof_Website-DNS_or_File (before) (after)

Changed: New_Proof_PGP_import-Import_PGP (before) (after) (diff)
Changed: New_Proof_PGP_generating-Generating_PGP (before) (after) (diff)
Changed: New_Proof_PGP_add-One_Error_Email (before) (after) (diff)
Changed: New_Proof_PGP_add-Normal (before) (after) (diff)
Changed: New_Proof_PGP_add-Empty (before) (after) (diff)
Changed: New_Proof_PGP-Import_or_Generate (before) (after) (diff)
Changed: Device_Revoke-Normal (before) (after) (diff)
Changed: Device_Revoke-Current (before) (after) (diff)

@MarcoPolo visdiff exposed a few details I needed to fix around sizing the views. Could I please have a re-review? The first two commits are unchanged.


No option to send request body with GET-request

Some APIs require sending a request body with a GET-request, e.g. for searching or filtering. The ChromeRestClient does not seem to allow this.
Expected outcome
There should be some setting or workaround that allows me to send a request body with a HTTP(S) GET-request.
Actual outcome
Selecting the GET method removes the request body field from the UI and presumablyIy does not send any body that was prior in that field either if I hit send. I found no setting in the settings menu to change this behaviour. I tried to work around the issue by using a custom method named GET, but the app detected that I would be using the GET method and removed the request body field just like when I tick the GET radio button.
Versions
App: <IP_ADDRESS>-stable
Chrome: 52.0.2743.116
Platform: Linux (ChromeOS on Chromebook)
Steps to reproduce

Open the Request tab in the app.
Select GET as the HTTP method, or select other methods -> custom and enter GET as the method's name.
The request payload field now disappears.

Actually turns out the API action I need to use which I thought was a GET action is actually a PUT action, and that GET requests with a payload is not possible. My bad. Closing the issue.


Issue:

Issue you'd like to raise.
import uvicorn
import os

from typing import AsyncIterable, Awaitable
from dotenv import load_dotenv
from fastapi import FastAPI
from fastapi.responses import FileResponse, StreamingResponse
from langchain.callbacks import AsyncIteratorCallbackHandler
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage, ChatMessage
import asyncio

async def wait_done(fn, event):
    try:
        await fn
    except Exception as e:
        print('error', e)
        event.set()
    finally:
        event.set()

async def call_openai(question):
    callback = AsyncIteratorCallbackHandler()
    model = ChatOpenAI(
        openai_api_key= os.environ["OPENAI_API_KEY"],
        streaming=True,
        callbacks=[callback]
    )

    print('question', question)
    coroutine = wait_done(model.agenerate(messages=[[HumanMessage(content=question)]]), callback.done)
    task = asyncio.create_task(coroutine)
    print('task', task)
    print('coroutine', callback.aiter())

    async for token in callback.aiter():
        yield f"{token}"

    await task

app = FastAPI()

@app.get("/")
async def homepage():
    return FileResponse('static/index.html')

@app.post("/ask")
def ask(body: dict):
    print('body', body)
    # return call_openai(body['question'])
    return StreamingResponse(call_openai(body['question']), media_type="text/event-stream")

if __name__ == "__main__":
   uvicorn.run(host="<IP_ADDRESS>", port=8888, app=app)

run it:
(venv) (base) zhanglei@zhangleideMacBook-Pro chatbot % python server.py
INFO:     Started server process [46402]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://<IP_ADDRESS>:8888 (Press CTRL+C to quit)
INFO:     <IP_ADDRESS>:53273 - "GET / HTTP/1.1" 200 OK
body {'question': '你好'}
INFO:     <IP_ADDRESS>:53273 - "POST /ask HTTP/1.1" 200 OK
question 你好
question 你好
task <Task pending name='Task-6' coro=<wait_done() running at /Users/zhanglei/Desktop/github/chatbot/server.py:21>>
coroutine <async_generator object AsyncIteratorCallbackHandler.aiter at 0x117158e40>
Retrying langchain.chat_models.openai.acompletion_with_retry.._completion_with_retry in 4.0 seconds as it raised APIConnectionError: Error communicating with OpenAI.
Suggestion:
No response

openai.proxy = {
"http": "http://<IP_ADDRESS>:7890",
"https": "http://<IP_ADDRESS>:7890"
}
After I added the proxy, it worked

it work for me,ubuntu 22.04
pip install --upgrade certifi


Hyperlinks to blog posts need to be updated

Hyperlinks need to point to correct blog post. Many have old URL.

And move the "Click [here] to read the full blog post" to the end of the post after references. Sometimes they are randomly in the middle of the post.

This is the exact reason DOI was created 😛
Such a pain to have to keep up with sites moving URLs and such. Wish we had that luxury!


Cannot render a nested class Object

Hello,
I'm evaluating the javalite libraries, and would like to understand if using jte with its activeweb lib is a good idea (great job with jte btw).
I've hit what seems to be a bug in jte. Could you have a look at my repo here ?
https://github.com/benjamin-thomas/javalite-jte-demo/blob/0d1e6f77dd4675bcd7b83b9aeb19041389b453c9/src/main/java/app/controllers/Hello2Controller.java#L22
I've documented the failure in the README:
Failed to render hello2/hello.jte,
    type mismatch for parameter:
        Expected
            app.controllers.HelloController$HelloPage
        got
            app.controllers.HelloController$HelloPage

The dollar sign looks suspicious to me, but I'm not a java dev so hope I'm not doing something stupid.
I want to use an inner class because activeweb has a dev feature where the controller class gets recompiled on page refresh.
So it's a sensible place to put the page object, at least while iterating.
Thanks ;)

@benjamin-thomas this looks like a class loading error.
jte uses the current thread's context class loader, when no class loader is specified.
Can you try to check what classloader javalite uses? If you temporarily print this in your controller, just before invoking the template engine?
System.out.println(Thread.currentThread().getContextClassLoader());
System.out.println(getClass().getClassLoader());

There's a factory method in TemplateEngine that accepts a class loader as argument. My guess would be that you need to pass the correct one from javalite there, to fix this issue.
Also, I just noted that you create a new TemplateEngine instance in your JTE#render method. I would recommend to create the engine only once at startup (maybe as a singleton bean). Otherwise the performance gonna be pretty bad :-)

Thanks that was exactly it!
Using the dev hot reload feature meant a could see a different getClass().getClassLoader() object on every request indeed.
So passing it along to the factory method did the trick, sorry this wasn't related to jte at all.

Also, I just noted that you create a new TemplateEngine instance in your JTE#render method. I would recommend to create the engine only once at startup (maybe as a singleton bean). Otherwise the performance gonna be pretty bad :-)

Thanks for the heads up ;)


--gen no such file or directory h

When Running: sudo docker-compose run --rm  mrtarget --gen --data-config https://storage.googleapis.com/open-targets-data-releases/19.04/input/mrtarget.data.19.04.5.yml
I receive the following issue:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/usr/local/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/src/app/mrtarget/CommandLine.py", line 225, in
sys.exit(main())
File "/usr/src/app/mrtarget/CommandLine.py", line 98, in main
process.merge_all(args.dry_run)
File "mrtarget/modules/GeneData.py", line 293, in merge_all
self.data_config, self.es_config)
File "/usr/src/app/mrtarget/plugins/gene/chembl.py", line 23, in merge_data
chembl_handler.download_molecules_linked_to_target()
File "mrtarget/common/chembl_lookup.py", line 68, in download_molecules_linked_to_target
with URLZSource(uri).open() as f_obj:
File "/usr/local/lib/python2.7/contextlib.py", line 17, in enter
return self.gen.next()
File "/usr/local/lib/python2.7/site-packages/opentargets_urlzsource/init.py", line 89, in open
with self._open_local(file_to_open, mode) as fd:
File "/usr/local/lib/python2.7/contextlib.py", line 17, in enter
return self.gen.next()
File "/usr/local/lib/python2.7/site-packages/opentargets_urlzsource/init.py", line 73, in _open_local
with open_f(filename) as fd:
IOError: [Errno 2] No such file or directory: 'h'
This occurs even with or without the other required indices. Any thoughts would be helpful.

This is a consequence of trying to run the master code against the previous data release - in 19.04.5 chembl molecules were a single file but in master it accepts a list of files. Please ensure all versions of components match i.e. use the 19.04.5 tag for the 19.04.5 data and you should avoid this and other issues.
Depending on what you are trying to do, you may not need to run the pipeline at all. If you want to access the associations & evidence, these can be downloaded for processing at https://www.targetvalidation.org/downloads/data If you want to host a local copy of OpenTargets Platform, see https://docs.targetvalidation.org/faq/spin-your-own-instance

Brilliant! Just trying to build the data pipeline so that we can import our own data. But before we use that data I would like to have all the indices available and working. Do you think you could provide an example of the command that would include tags?


Difficulties pre-training with filter bank features

Hi,
First of all thank you for a very clean code base for your work.
I am trying to pre-train a mode with filter-bank  features for librispeech using the provided config upstream_fbankBase.yaml.
The only change I have made is setting
train_set:  ['train-clean-100', 'train-clean-360', 'train-other-500']

However, my loss seems to be stuck around 0.98. I was wondering if you could tell me the expected loss on filterbank features.
The pre-trained model also seems to doing bad on montreal-phone classification tasks.
Note that, I was able to pretrain using mel-160 features for same dataset and downstream task.
Thank you for your help on this.
Best Regards,
Apoorv

A few more details:
--  I had extracted features using Kaldi and set them up using the instructions provided.
--  I changed gelu to torch.nn.functional.gelu
--  using torch.nn.LayerNorm as TransformerLayerNorm
Since, I could get the mel-160 features to work with the above changes, I don't think this should be the reason why filterbank features are not working.
--Apoorv

Hi,
The value of loss depends on the feature, hence loss computed from fbank is different then loss computed from mel-160.
The reason why you did bad on the Montreal-phone set is the following:
The fbank features are pre-processed with a stride of 10 (a.k.a a fbank vector for every 10 ms, a default of Kaldi), which does not match the phone alignment labels of the Montreal-phone set.
On the other hand, the mel-160 feature matches the duration of the Montreal-phone set, that's why you obtained reasonable results when pretrain using mel-160 features.
You should either evaluate with the cpc phone task (suggested approach), or change the parameters in preprocess_alignment.py to generate a phone label for every 10 ms (a more complicated approach).
I hope this helps!

Hi,
Thank you for the clarification. After changing to cpc-phone set,  I get the mentioned classification accuracy.
I will close the issue.
Thanks,
Apoorv


Testing Environment Setup

Testing Environment Setup
For testing the bash script , we require a docker container (ubuntu)
Pre-requisites
The contributor should have really good knowledge of  docker and bash
What it should do
It should execute the menu.sh script and check if its working properly.
Block Time
Max Block Time is : 7 hours
Bounty Points
Bounty Points for this issue is : 60 points

Lock this to me I will work on it

@NandanHemanth done boss

This issue is still open @NandanHemanth

You have to make a Dockerfile


Correct typographical error

Certificates was misspelled
There is no Redmine issue as the guidelines state that is not necessary for minor typographical corrections.
This change is ready to go. I did make the change on a test environment and ensured it does not break.

I fixed it manually, thanks!


Change unsupported snapshot warnings to INFO

Since there is no real action the user can do, these can safely be
informative that the underlying filesystem does not support a snapshot
plugin at boot.
Signed-off-by: Michael Crosby<EMAIL_ADDRESS>

Codecov Report

Merging #2745 into master will decrease coverage by <.01%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master    #2745      +/-   ##
==========================================
- Coverage   43.74%   43.73%   -0.01%
==========================================
  Files         100      100
  Lines       10728    10730       +2
==========================================
  Hits         4693     4693
- Misses       5305     5307       +2
  Partials      730      730

Flag
Coverage Δ

#linux
47.41% <0%> (-0.01%)
:arrow_down:

#windows
40.89% <0%> (-0.01%)
:arrow_down:

Impacted Files
Coverage Δ

services/server/server.go
1.65% <0%> (-0.02%)
:arrow_down:

snapshots/btrfs/btrfs.go
57.39% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update c444666...16aaf6c. Read the comment docs.

LGTM
1.1 backport as well?


Make GraphQL easier to call from a Plug

These changes are general improvements but make it much
cleaner to call from another library, and also more Elixir-y.
/cc @hassox @freshtonic

Looks good. 👍


Add missing insignificant quote

Thanks for spotting it. Should run doctests as part of CI I guess.


Adds the affine cipher exercise

Needless to say, not finished yet! Just wanted to claim the exercise.

All right, this PR is ready for review! I'm going to go ahead and do another problem.

Fixed the style issues! Thanks for the heads up on the make style-check
command.
On Mon, Oct 15, 2018 at 3:38 AM Pete McFarlane<EMAIL_ADDRESS>wrote:

@petemcfarlane requested changes on this pull request.
Hey @camilopayan https://github.com/camilopayan do you mind fixing the code
style issue https://travis-ci.org/exercism/php/jobs/440582713? To run
these locally you can run make style-check if it's easier.
Also, I don't think you need to add the default empty affine-cipher.php
file either, this is normally left to the user and is causing a warning in
the CI. Thanks though!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/exercism/php/pull/217#pullrequestreview-164579990,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAGXLdD0OskABqMZwru0IlMv6P5kh-Ksks5ulDtWgaJpZM4XF3Ry
.

Think I've worked out why the build is failing.

The exercise 'affine-cipher' is being unlocked by a non-core exercise. Non-core exercises can only be unlocked by core exercises.

So in the config you say it's unlocked by "grains" but "grains" is not a core exercise. Could you change this to a core exercise instead? Thanks 🙂

All right, set it to null, which matches the rest, looks like.


Error [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]SSL Provider: [error:140A90A1:SSL routines:SSL_CTX_new:library has no ciphers]

Driver version or file name
4.3.0
SQL Server version
Microsoft SQL Server 2014 - 12.0.2000.8 (X64)
Feb 20 2014 20:04:26
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3  (Build 9600: )
Client operating system
openSUSE Tumbleweed (last update 04/02/2018)
PHP version
7.1.14
Microsoft ODBC Driver version
ODBC Driver 13 for SQL Server
Table schema
doesn't matter
Problem description
Please share more details with us.
while connecting from php code:
"voltag", "UID"=>"***", "PWD"=>"***");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.";
}else{
     echo "Connection could not be established.";
     die( print_r( sqlsrv_errors(), true));
}
?>
I'm getting error:
Connection could not be established.Array
(
[0] => Array
(
[0] => 08001
[SQLSTATE] => 08001
[1] => -1
[code] => -1
[2] => [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]SSL Provider: [error:140A90A1:SSL routines:SSL_CTX_new:library has no ciphers]
[message] => [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]SSL Provider: [error:140A90A1:SSL routines:SSL_CTX_new:library has no ciphers]
)
[1] => Array
    (
        [0] => 08001
        [SQLSTATE] => 08001
        [1] => -1
        [code] => -1
        [2] => [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Client unable to establish connection
        [message] => [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Client unable to establish connection
    )

)
But when I'm using tsql or sqlcmd everything is fine:
webV:/etc/unixODBC # tsql -H 10...19 -p 1433 -U ***
Password:
locale is "LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C"
locale charset is "UTF-8"
using default charset "UTF-8"
1> use voltag;
2> select * from v_side;
3> go
S_SIDE
0
(1 row affected)
1> quit
webV:/etc/unixODBC # /opt/mssql-tools/bin/sqlcmd -S 10...19 -U **
Password:
1> use voltag;
2> select * from v_side;
3> go
Контекст базы данных изменен на "voltag".
S_SIDE
 0

(1 rows affected)
1>

Another question: I'm just tryed to install ODBC Driver 17 binaries from this repository
#zypper remove mssql-tools msodbcsql
#rpm -i msodbcsql-<IP_ADDRESS>-1.x86_64.rpm
#mssql-tools-<IP_ADDRESS>-1.x86_64.rpm
after that i've reinstalled sqlsrv php extension by:
#pecl uninstall sqlsrv
#pecl install sqlsrv
now sqlcmd/tsql still works fine, but php script gets the following error:
Connection could not be established.Array
(
[0] => Array
(
[0] => 01000
[SQLSTATE] => 01000
[1] => 0
[code] => 0
[2] => [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 13 for SQL Server' : file not found
[message] => [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 13 for SQL Server' : file not found
)
)
P.S.
strings sqlsrv.so | grep -i "odbc driver"
This extension requires the Microsoft ODBC Driver 11 or 13 for SQL Server. Access the following URL to download the ODBC Driver 11 or 13 for SQL Server for %1!s!: http://go.microsoft.com/fwlink/?LinkId=163712
Driver={ODBC Driver 13 for SQL Server};
Driver={ODBC Driver 11 for SQL Server};
[Microsoft][ODBC Driver 13 for SQL Server]Connection is busy with results for another command
[Microsoft][ODBC Driver 11 for SQL Server]Connection is busy with results for another command

php 5.6 / mssql extension works fine on the same server :-/

@vadamlyuk The reason you are getting Can't open lib 'ODBC Driver 13 for SQL Server' : file not found is because version 4.3.0 of the drivers do not support ODBC driver 17. Please try pecl install sqlsrv-5.2.0RC1 to get the latest version, which supports ODBC driver 17.
I do not know why you are getting the other error: SSL Provider: [error:140A90A1:SSL routines:SSL_CTX_new:library has no ciphers] but it suggests to me that you need to install or upgrade some kind of SSL library - perhaps php-openssl?

Good I have PHP full updated to 7.2.1 and I am getting the same SSL error. But trying to update openssl-1_0_0 makes me uninstall all mssql. Maybe that?

I  have the same problem, same OS (openSUSE Tumbleweed (last update 26/02/2018) ) and same ODBC driver version.
Finally, I disable the openssl extension "resolved" this error.

I have disabled this extension but the issue is persistent.

@neoacevedo what OpenSSL version are you using? With PHP >= 7.1 it requires OepbSSL >= 1.0.1
This reference page might be helpful. Also, what did you mean trying to update openssl made you uninstall all mssql?
Besides, please clarify

I have disabled this extension but the issue is persistent.

... what extension did you disable and/or what issue persists?

@neoacevedo @vadamlyuk @TomCzHen
I suspect this is more a PHP / OpenSSL issue, see the following issues that are somewhat related:
https://bugs.php.net/bug.php?id=35160
https://stackoverflow.com/questions/40365295/openssl-1-0-2-and-error-ssl-ctx-newlibrary-has-no-ciphers?rq=1
https://stackoverflow.com/questions/10163968/openssl-unable-to-create-ssl-ctx-using-ssl-ctx-new

@yitam I agree, because I did a dist-upgrade so I have the most recent SSL library with PHP 7.2.1

Thanks @neoacevedo. Is it possible that you test it in a clean environment without using OpenSSL?

Hi @yitam I could try, but it actually wouldn't have any meaning if I'm requiring OpenSSL by dependencies and needing to use the SQL Server Driver.

Yes if possible, please do so, @neoacevedo, because it helps narrow down the causes of the problem you're encountering.

I use docker resolved my problem.
https://gist.github.com/TomCzHen/f9eeabef2e5d2998044403731e7ce7fd

Hi all,
on SuSE Leap 15 we have exactly the same problem with both 13 and 17 drivers.
We narrowed it down to conflict with openssl PHP extension. When openssl extension is disabled sqlsqrv_connect works like a charm. But when openssl extension is enabled, sqlsqr_connect fails with the error mesage  above, i.e.
08001:-1:[Microsoft][ODBC Driver 13 for SQL Server]SSL Provider: [error:140A90A1:SSL routines:SSL_CTX_new:library has no ciphers]

or
08001:-1:[Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:140A90A1:SSL routines:SSL_CTX_new:library has no ciphers]

Any help would be very appreciated as we need both openssl and sqlsrv extensions.
Thanks

For reference I attach things relevant to environment in which PHP runs. If more is needed, please let me know.
This is a list of installed openssl-related packages
libopenssl1_0_0-1.0.2n-lp150.1.25.x86_64
libopenssl1_0_0-32bit-1.0.2n-lp150.1.25.x86_64
libopenssl1_1-1.1.0h-lp150.2.1.x86_64
libopenssl1_1-32bit-1.1.0h-lp150.2.1.x86_64
openssl-1.1.0h-lp150.1.1.noarch
openssl-1_1-1.1.0h-lp150.2.1.x86_64
php7-openssl-7.2.5-lp<IP_ADDRESS>.x86_64

And current php configuration (only openss/sqlsrv items from php -i):
Registered PHP Streams => php, file, glob, data, http, ftp, https, ftps, sqlsrv, compress.zlib
openssl
Openssl default config => /etc/ssl/openssl.cnf
openssl.cafile => no value => no value
openssl.capath => no value => no value
sqlsrv
sqlsrv support => enabled
sqlsrv.ClientBufferMaxKBSize => 10240 => 10240
sqlsrv.LogSeverity => 0 => 0
sqlsrv.LogSubsystems => 0 => 0
sqlsrv.WarningsReturnAsErrors => On => On

@ph777 I notice that you have two versions of the openssl library installed, and I wonder if your PHP install somehow depends on both of them, which may cause conflicts. First, did you install PHP from package or from source? Second, what is the output of
repodata -q --installed --whatrequires libopenssl1_0_0
repodata -q --installed --whatrequires libopenssl1_1

? These commands will tell you which packages depend on each version of libopenssl. Look for php packages in the output, in particular if different php packages/extensions depend on different openssl versions.

I also had this problem on openSUSE 15  which uses openssl 1.1.0 but i have fixed it.
With the help of the freenode #suse irc channel  i was able to build all of PHP for openssl 1.0.2
For open suse  it is available here  https://build.opensuse.org/package/show/home:padamsn:openssl1.0.2:Apache:Modules/php7_openssl1.0.2_msodbcsql17_SLES12_compat
I am using this on our openSUSE 15 servers now with our mssql server.
You would need to add the repo or use the 1 click install.
for 1 click install  go to https://software.opensuse.org/package/php7  and look under your OS for community repository's,  then look for the one by me that says openssl1.0.2.
You will need to disable mod_ssl in apache, or all of apache also needs to be rebuilt the same way.
My only changes are in the php7.spec file,  and similar changes will get an apache build with openssl 1.0.2
At least this gets us by until microsoft makes a build for SLE_15 / openSUSE 15
I hope this helps others.

Closing this issue due to inactivity, @vadamlyuk
Please feel free to reopen if you have other questions.

i got this error when i upgrade my debian 8.8 to 9.9 and PHP 5.6 to 7.0
PHP Warning:  odbc_connect(): SQL error: [unixODBC][Microsoft][SQL Server Native Client 11.0]SSL Provider: [error:140A90A1:SSL routines:SSL_CTX_new:library has no ciphers], SQL state 08001 in SQLConnect

@b0tin This is a known issue which is fixed in an upcoming release. Please stay tuned.

@b0tin This is a known issue which is fixed in an upcoming release. Please stay tuned.

Hi David, I am c++ developer and try to integrate our linux application with latest MSSQL ODBC driver (Linux) so it can talk with MSSQL2017 linux distribution. I saw this problem recently, when use SLES12 SP2 with unixODBC 2.3.7 + MSSQL OBDC driver 17.3.
see my link https://social.msdn.microsoft.com/Forums/en-US/8ea4cee9-eb40-4366-9835-f3b519834518/mssql2017-linux-suse-odbc-driver-fail-to-connect-with-weird-ssl-error?forum=sqldataaccess
my question is you said the fix in an uncoming release. will the fix be in the libmsodbcsql.so ? or some other library. second question is how I can bypass this situation (any temporary solution) now for example change the sys config ...

@b0tin This is a known issue which is fixed in an upcoming release. Please stay tuned.

Thanks!, my problem is relatead to libsqlncli-11.0.so.1790.0 library

@oldhawkcn The fix will be in the next release of the ODBC driver, i.e., libmsodbcsql.so. As a temporary workaround, you could try installing version 1.0 of the openSSL library.


Steamship( Ship AI Faster)

Steamship GitHub
The fastest way to add language AI to your project.
Official Website
Doc

Doc

by web : 我想学习中文，有什么好的途径吗

上课：参加学校、大学、语言学校等提供的中文课程；
自学：购买中文教材进行自学，比如《新实用汉语课本》、《汉语口语301句》等；
语言交换：通过交换学习与说中文的人互相交流和学习；
APP和在线课程：使用Duolingo、HelloChinese、ChineseSkill等APP或在线课程学习；
沉浸式学习：尽量投入到使用汉语的环境中，比如去中国学习和生活，与会讲中文的人长期交流等；
了解中华文化：多了解中国的历史、文化、风俗等，方便更好地学习汉语；
多练习：进行写作。

JavaFX Scene Builder User Guide
This guide introduces you to the JavaFX Scene Builder user interface (UI). JavaFX Scene Builder (Scene Builder) is a design tool for the JavaFX platform. You drag and drop UI components to a Content panel, and the FXML code for the layout that you are creating is automatically generated in the background. FXML is an XML-based declarative markup language for defining the user interface in a JavaFX application. To learn more about FXML, read Getting Started with FXML.
This document assumes that you have already installed the Scene Builder product on your system and have also downloaded the samples bundle file that is provided at the same download site. See the JavaFX Scene Builder Installation Guide for more detailed information.
The following topics describe the different JavaFX Scene Builder features. You can also access the topics by expanding the table of contents on the right side of the HTML version or on the left side for PDF version of this document.
1. Starting Up Scene Builder
This chapter describes how to start JavaFX Scene Builder and how to open an existing FXML file, such as the IssueTrackingLite sample provided with the downloadable Scene Builder samples.
You start a standalone version of JavaFX Scene Builder by using one of the following methods:
On the Windows platform, do one of the following steps:
Double-click the JavaFX Scene Builder 1.1 desktop icon.
Select Start, then All Program, then JavaFX Scene Builder, and finally, JavaFX Scene Builder 1.1.
On the Mac OS X platform, double-click the JavaFX Scene Builder 1.1 shortcut in the Applications folder.
The initial window that you see is the main window, as shown in Figure 1-1. It displays an untitled FXML file that contains the root AnchorPane element.
An element is a principal visual object that you can add to the Content panel and manipulate when editing an application's UI layout in JavaFX Scene Builder. An element can be dragged onto the Content panel from the Library panel of predefined UI elements. You can group elements by selecting multiple elements in the Content panel or the Hierarchy panel, and selecting Arrange and then the Wrap In command from the Menu bar to select the specific JavaFX container that you want to use.
Figure 1-1 Startup Window (Click image to enlarge.)
Image of startup window for Scene Builder
Description of "Figure 1-1 Startup Window"
From within Scene Builder, you can also open an existing FXML document from the Menu bar using one of the following steps:
From the File menu, select Open.
From the File menu, select Open Recent and select the file from the list of recently opened FXML files.
For illustration purposes, use the IssueTrackingLite.fxml sample file that is included with the JavaFX Scene Builder samples bundle.
Go to where you extracted the javafx_scenebuilder_samples-1_1.zip file.
Expand the IssueTrackingLite, src, and issuetrackinglite folders.
Open the IssueTrackingLite.fxml file.
The file is opened in Scene Builder, if you have Scene Builder properly installed.
You can also use Scene Builder with one of the Java IDEs, such as NetBeans IDE, Eclipse, or IntelliJ IDEA, to create a new FXML file or open an existing one. Use the information in Using JavaFX Scene Builder with Java IDEs to learn more.
2. Getting to Know the Main Window
his chapter discusses the different major parts of the main window that appears after Scene Builder is started up.
After you open the FXML file to work with, it's contents are displayed in the Content panel of the main window, similar to what is shown in Figure 2-1. Click the image to see a larger version.
Figure 2-1 Main Window of JavaFX Scene Builder (Click image to enlarge.)
Description of Figure 2-1 follows
Description of "Figure 2-1 Main Window of JavaFX Scene Builder"
By default, the main window of JavaFX Scene Builder includes the following sections, which are labeled in Figure 2-1.
Menu Bar: Provides access to the menu of commands available in JavaFX Scene Builder.
Selection and Message Bar: Displays the path to a selected element. It also displays any error or status messages.
Content Panel: The scene container for the UI elements that make up your FXML layout. By default, a new FXML file that is opened in JavaFX Scene Builder includes a root (top) AnchorPane container.
Library Panel: Lists the available JavaFX UI elements or controls that you can use to build your FXML layout. You select the UI elements from this panel and add them to the Content panel or the Hierarchy panel.
Hierarchy Panel: Displays a tree view representation of the FXML layout that you are building in the Content panel. Elements that are not visible in the Content panel can be placed into focus by selecting it in the Hierarchy panel.
Inspector Panel: Contains the Properties, Layout, and Code sections. The Properties and Layout sections help you manage the properties of the selected UI element in the Content panel or in the Hierarchy panel. The Code section enables you to manage the controller source information and event handling actions to use for the selected UI element. The Inspector panel also contains a Search text field that enables you to isolate specific properties that you want to modify.
The following panel is also displayed in the main window when you select View from the Main menu and then Show CSS Analyzer.
CSS Analyzer Panel: Allows you to explore all the CSS properties available for a JavaFX component on your FXML layout and helps you to build the CSS rules
The next chapters describe the parts listed above in more detail.
3. Using the Menu Bar
This chapter describes the commands that are available from the Scene Builder main Menu bar.
The Menu bar displays the menus of commands that you can perform with an FXML layout file. The following sections describe the list of subcommands available when you select a command from the Menu bar. Table 3-1 describes the subcommands for the File command.
Note:
The shortcut key shown in the tables below are for Windows platform. Replace the Ctrl key with the Cmd key to use the equivalent shortcut key for the Mac OS X platform.
Table 3-1 List of File Subcommands
Command (Shortcut Key)	Description
New (Ctrl+N)
Create a new FXML file and opens it in a separate Scene Builder window.
New with Root Container
From a list of containers, choose the top level container to use when creating a new FXML layout. You can use an Anchor Pane, Border Pane, or a Stack Pane as the root container.
New from Template
Create a new FXML layout using one of the available templates: Alert Dialog, Basic Application, Complex Application, Alert Dialog - CSS, Alert Dialog - Localized, Basic Application - CSS, Basic Application - Localized, Complex Application - CSS, and Complex Application - Localized layouts.
Open (Ctrl+O)
From an Open FXML dialog box, choose the existing FXML file to open.
Open Recent
Choose the file to open from a list of recently opened FXML files.
Preferences (Ctrl+,)
Set the preferred values to use for certain properties in the tool. You can change the default values for the Content panel's width and height, the image to use for the tool's background image, the colors to use for the alignment guides and target rings, whether to automatically generate the Id for a newly added element, the default display mode to use for the Hierarchy panel, and the order in which the CSS Analyzer columns are displayed.
Close (Ctrl+W)
Close the current window. If you have any unsaved changes, you are prompted to save the file first before the window is closed. All other active windows remain open until they are closed or you exit the tool.
Save (Ctrl+S)
Save the changes made since the last Save action was performed. If it is a new FXML document, you are prompted to provide the new file name. If it is an existing FXML file, the current file name is retained.
Save As (Ctrl+Shift+S)
Save the current FXML file you are working on, with the option to save the changes to a different file.
Reveal in Explorer (Windows), Reveal in Linux,
Reveal in Finder (Mac OS X)
Open a native file browser, which displays the folder containing the current FXML file.
Revert to Saved
Undo changes made since the last Save action was performed.
Import
Import an existing image, FXML, or media file.
You should import an image, media or FXML file into Scene Builder from inside your project sources directory. If the file you are importing is located somewhere other than your project sources directory, you need to move or copy the file. Scene Builder does not copy the imported file for you. It makes a link to the imported file using a path relative to the location of the FXML file currently being worked on. Consequently, if the relative location of the imported file is different at runtime, then your FXML file may not load properly. You need to ensure all imported files are packaged properly by your IDE and that their relative location at runtime and edit time are the same.
The simplest way to achieve this is to only import files which are already located under your project sources directory and to instruct your IDE to include these files in the packaging, which is usually done by default.
Exit
Exit the tool. All opened Scene Builder windows are closed. You are prompted to save any unsaved changes.
Selecting the Edit command menu displays the subcommands that enable you to choose the Undo or Redo command on the last action that you made in the current FXML layout. In addition, you can choose the Cut, Copy, Paste, Paste Into, Duplicate, and Delete commands that you can apply to the selected elements in the Content or Hierarchy panel. The Cut, Copy, and Paste commands use the native editor and clipboard, unless a text field element is selected. This means that when you copy or cut an element and paste it on a text editor, what is actually copied and pasted is the FXML code that defines a Group element that wraps the selected element and all its children elements. If the focus is on a text field element then the select, copy, and paste commands are performed from and to the text field element. With the Paste Into command, you need to first select where you want to paste an item into before selecting the Paste Into command.
Choosing the Select All command selects all of the elements in your FXML layout, while the Select None command deselects any selected elements. The Select Parent command selects the parent container of the selected element.
The Trim Document to Selection command deletes all of the elements up to the selected row in the Hierarchy panel. When you choose the Trim Document to Selection command and the selected element is for a container element, that selected container element becomes the new root node container of your FXML document.
Choosing the Use “fx:root” Construct command allows you to use the fx:root element, which creates a reference to a previously defined root element. To learn more about the fx:root element, refer to the JavaFX API document. The UnlockCustom sample, which is included in the JavaFX Scene Builder samples bundle, illustrates the use of the fx:root element.
Table 3-2 describes the subcommands available when you select the View command from the Menu bar.
Table 3-2 List of View Subcommands
Command (Shortcut key)	Description
Content (Ctrl+0)
Place focus on the Content panel.
Properties (Ctrl+1)
Open the Properties section of the Inspector panel and place the current focus on it.
Layout (Ctrl+2)
Open the Layout section of the Inspector panel and place focus on it.
Code (Ctrl+3)
Open the Code section of the Inspector panel and place focus on it.
Hide/Show Library (Ctrl+4)
Hide or show the Library panel on the left side of the current window. If the Hierarchy panel is still visible, it automatically adjusts to occupy the entire left side of the window. If the Hierarchy panel is not visible, the Content panel adjusts to occupy the rest of the window's left side.
Hide/Show Hierarchy (Ctrl+5)
Hide or show the Hierarchy panel. If the Library panel is still visible, it is automatically adjusted to occupy the entire left side of the window. If the Library panel is not visible, the Content panel is automatically adjusted to occupy the rest of the window's left side.
Show/Hide CSS Analyzer
(Ctrl+6)
Show or hide the CSS Analyzer panel. The panel appears at the bottom of the window.
Hide/Show Left Panel (Ctrl+7)
Hide or show the panels on the left side of the window. If both the Library and Hierarchy panels were visible when the Hide Left Panel command was selected, then both panels are displayed with the Show Left command. If only the Hierarchy panel was active when the Hide Left Panel command was executed, the Show Left Panel command redisplays the Hierarchy panel.
Hide/Show Right Panel (Ctrl+8)
Hide or show the Inspector Panel on the right side of the window.
Show/Hide Outlines (Ctrl+E)
Show or hide the outline of each element in your entire layout, as shown in Figure 3-1. The outline shows the LayoutBounds property of each element.
Show/Hide Sample Data
Show or hide demonstration data for those elements, such as a tree view, that have some sample data associated with them. The sample data is not saved in your FXML layout file.
Disable/Enable Alignment Guides
Disable or enable the alignment guidelines that help you align the elements with one another.
Show Sample Controller Skeleton
Open a window that displays sample skeleton code that you can use to create a controller class for the FXML layout you are building
Figure 3-1 Show Outlines
Description of Figure 3-1 follows
Description of "Figure 3-1 Show Outlines"
Choosing the Insert command from the Menu bar enables you to choose UI elements, such as containers, controls, menu content, shapes, charts, custom components, and miscellaneous elements, that you can add to the current FXML layout. These are the same UI elements available from the Library panel. If none of the existing UI elements in the layout is selected, the insertion point for the new element is the center of the Content panel. If one of the elements is selected before choosing the Insert command, the new element being added is placed slightly off to the side, but over the selected element. The Insert submenu displays only the valid UI controls that can be inserted to the selected element or container.
The subcommands displayed when you select Modify from the Menu bar are described in Table 3-3.
Table 3-3 List of Modify Subcommands
Command (Shortcut Key)	Description
Fit to Parent (Ctrl+K)
Resize a selected element to fill the area that its parent container occupies. The element is also anchored to each of the sides of the parent. This feature is only available when the parent container is an AnchorPane element.
Use Computed Sizes
Reset the selected element's layout property values to the default values. The USE_COMPUTED_SIZE value is used for the Min Width, Min Height, Pref Width, Pref Height, Max Width, or Max Height layout properties. (See the API documentation for JavaFX Region for more information.)
Grid Pane
Display all the subcommands available for working with the selected Grid Pane component in your layout. You can delete, move, add, or resize rows or columns in the selected Grid Pane.
Add Effect
Apply effects, such as a drop shadow or a reflection, to the selected element or group of elements in the layout.
Add Popup Control
Add a Context Menu or a Tooltip element to the selected element in your layout. Note that the added pop-up control is only selectable in the Hierarchy panel.
Edit Included File
Edit any imported or included FXML file that is referenced by an fx:include statement defined for the selected element. When you edit an included FXML file, a new JavaFX Scene Builder window is opened. Changes you save in the included FXML file are reflected in the FXML layout file from which you opened the included FXML file.
Reveal Included File in Explorer
Open a native file browser to show the folder that contains the included file.
Use the Arrange menu, which is shown in Figure 3-2, to bring the selected element to the front, send it back, or move it forward or backward. Selecting the Wrap In subcommand places the selected elements into one of the available containers, such as an Anchor Pane, HBox, or a Grid Pane container. The Unwrap command removes the container for the selected elements, but leaves the UI elements it contains untouched.
Figure 3-2 Menu Bar with Arrange Menu Opened
Image of Layout menu opened in the Main menu toolbar
Description of "Figure 3-2 Menu Bar with Arrange Menu Opened"
The subcommands displayed when you choose the Preview command from the Menu Bar are described in Table 3-4.
Table 3-4 List of Preview Subcommands
Command (Shortcut Key)	Description
Show Preview in Window/Hide Preview in Window (Ctrl+P)
Display or hide the window that lets you preview the user interface design rendered by your current FXML code when it is deployed.
Refresh Preview in Window (Ctrl+R)
Refresh the layout that is displayed in the Preview window. This is useful when you make changes to your current layout.
Choose Background Color
Display a color chooser dialog box in which you define the background color to use for your layout.
Scene Style Sheets
Open a submenu that displays commands that enable you to add a new style sheet that you can apply to your current layout, remove a style sheet from the list of style sheets being used, or open an existing style sheet in a separate editor window specified for the style sheet file type. The layout is immediately updated.
Internationalization
Enables you to set, remove, or reveal a resource file in the native file browser.
Resolve Unknown Types
This option is activated when the FXML document that is loaded in Scene Builder contains custom element types that were created by the user or element types that could not be loaded by the FXML loader. Choosing this command displays the same dialog box that appeared when the element type was first loaded. Use the dialog box to modify the classpath information. See Custom and Unknown Element Types for more information.
Selecting the Window menu gives you a list of FXML file names that are currently opened in JavaFX Scene Builder windows. When you select one of the file names in the list, the name is marked with a check mark, and its corresponding Scene Builder window becomes active.
Selecting Help and then Scene Builder Help opens your default web browser and displays the web site that contains the available JavaFX Scene Builder documentation. Select the About Scene Builder command to open a window that displays the release information for the JavaFX Scene Builder you are using.

Using the Selection and Message Bar

This chapter describes the Selection and Message bar that is located just above the Content panel of the Scene Builder main window.
The Selection and Message bar is shown in Figure 4-1 and Figure 4-3. As the name indicates, it serves two purposes:
It displays the containment path of the selected UI element. It enables you to easily go to and place focus on a specific element by clicking that element's name in the containment path. When you hover the cursor over an element's name, it is underlined, as shown in Figure 4-1.
Figure 4-1 Selection Bar
Selection Bar with cursor hovering over anchorPane2
Description of "Figure 4-1 Selection Bar"
You can also select an element from the list that is displayed when you click the Path Selection button to the left of the containment path, as shown in Figure 4-2.
Figure 4-2 Path Selection Button
Image of Path Selection Button expanded
Description of "Figure 4-2 Path Selection Button"
The same area that is used to display the containment path is also used to display feedback and error messages, as shown in Figure 4-3. After a message is displayed for a couple of seconds, the warning icon remains on the right end of the Message bar. Click the warning icon, circled in Figure 4-3, to view the list of messages. The number next to the icon indicates the number of messages that are displayed. You can clear one or all of the messages in the list view.
Figure 4-3 Message Bar
Image of Message Bar
Description of "Figure 4-3 Message Bar"

Working with the Content Panel
This chapter describes the Content panel of the JavaFX Scene Builder.

The Content panel is the rectangular area that occupies the center of the JavaFX Scene Builder window. It is your design canvas, and it contains a view of what you are designing. By default, when you create a new FXML file, the Content panel contains an AnchorPane element as the root container. This container element will contain the elements of the layout that you build.
The Content panel enables you to directly manipulate the graphical elements used in your FXML layout. One of the ways to add a UI element to the Content panel is to drag the chosen UI control from the Library panel and place them in a chosen location on the Content panel. As you drag an object onto the Content panel, the golden stroke lines appears around the drop target area, as shown in Figure 5-1. An info tip is also displayed at the bottom right corner to identify the drop target area. Guidelines help you align the component being dropped in relation to other UI elements that are already present in your FXML layout:
Figure 5-1 Dropping a Component onto the Content Panel (Click image to enlarge.)
Element dragged from the Library panel to Content panel.
Description of "Figure 5-1 Dropping a Component onto the Content Panel (Click image to enlarge.)"
The selected elements have special handles that enable you to scale or resize the elements. You move the selected element by using your keyboard's arrow keys or by using the mouse to drag it to a different location. Right-clicking anywhere in the Content panel displays a contextual menu of commands that can be used on the currently selected element, as shown in Figure 5-2.
Figure 5-2 Contextual Menu in Content Panel
Description of Figure 5-2 follows
Description of "Figure 5-2 Contextual Menu in Content Panel"
Double-clicking on a UI element in the Content panel places that element in an inline editing mode. If a UI element with a Text property is selected, pressing Return also places the element in an inline editing mode.

Using the Hierarchy Panel
This chapter describes the Hierarchy panel of JavaFX Scene Builder.

The Hierarchy panel, shown in Figure 6-1, is located on the lower left side of the tool's window. You can hide the Hierarchy panel by selecting View from the Main menu and then selecting Hide Hierarchy, or Hide Left Side Panel to hide it along with the Library panel. It shows all the UI elements that compose your FXML layout. You can use the Hierarchy panel to focus on one specific UI element, whether it is a parent node or a leaf node.
Figure 6-1 Hierarchy Panel
Image with Layers Panel opened
Description of "Figure 6-1 Hierarchy Panel"
After the element is isolated, you can focus your work on that particular element and its properties by using the Content panel or the Inspector panel. The path from the root of the FXML layout to a particular UI element is displayed in the Selection bar when a UI element is isolated in the Hierarchy panel. The selected UI object is highlighted in the Hierarchy panel and in the Content panel.
You can add a new UI element to your FXML layout by dragging it from the Library panel to the desired location in the Hierarchy panel. This is especially helpful when adding a Popup control, such as a Tooltip or ContextMenu. For example, to add a Tooltip to a Button element, drag the Tooltip control from the Library panel to the target Button element in the Hierarchy panel. The Tooltip becomes a child of that Button element. You can rearrange the order of the UI elements in your layout by dragging them in and out of containers within the Hierarchy panel.
The Hierarchy panel is also useful for adding graphic element to a UI element that has the graphic property, per its API. For example, you can add a graphic element to a Button element, but not to a GridPane element. Use the following steps to add a Circle graphic element to a Button element using the Hierarchy panel:
From the Library panel, drag a Circle element to the target Button layer in the Hierarchy panel.
Without releasing the mouse cursor, hover over the Button layer for a second and you will notice a new sub-layer is created for the Circle.
Release your mouse cursor and the Circle appears in the Content panel, with its default radius of size 100.
In the Layout section of the Inspector panel, reduce the circle's radius size to 6 so that it fits more appropriately in the Button.
You can only have one graphic added to an element at any one time. To add a new graphic, you must first delete the existing one.
Right-clicking an element in the Content panel or a specific element layer in the Hierarchy panel displays a contextual menu of commands that you can use for the selected element, as shown in Figure 6-2.
Figure 6-2 Hierarchy Panel with Drop-down List of Commands
Description of Figure 6-2 follows
Description of "Figure 6-2 Hierarchy Panel with Drop-down List of Commands"
When you click the drop-down menu, which is circled on the top right corner in Figure 6-1, you can choose to display the fx:id or the Node Id for each of the elements listed in the panel. The default display mode is Show Info, which displays any related information for the element, or the text value if the element has a text property. When you select Show Node Id, each component level displays the same node names used in the Selection bar. The Show fx:id command displays the value of each element's fx:id property, which is used by the application controller class that handles the logic for the UI. If one of these latter two Show commands is chosen, click on the right side of the row for the element type to activate the inline editor so you can edit the Node Id or fx:id values for the UI element.

Designing UI with the Library Panel

This chapter describes Scene Builder's Library panel and the JavaFX UI controls that are accessible from it. Included in the chapter is information about some of the container elements available in the Library panel. Also discussed is how to handle custom and unknown UI types.
The Library panel, shown in Figure 7-1, is located on the left side of the Main window. You can hide the Library panel by selecting View from the Main menu and then selecting Hide Library or Hide Left Side Panel to hide it along with the Hierarchy panel. The Library panel includes the list of Containers, Controls, Popup Controls, Menu Content, Shapes, and Charts elements that are available in JavaFX Scene Builder. These UI elements are the same UI elements that are delivered with the JavaFX platform.
As mentioned earlier, when you open a new FXML layout in Scene Builder, it contains an AnchorPane as the default root container. You can use other root containers as well. You can add onto that root container as many containers or UI elements as needed for your FXML layout.
To add one of the UI elements from the Library panel, you select an item from the list on the panel and drag it onto the Content panel. You can also press the Enter key or double-click a selected item in the Library panel to add it to the Content panel. Either of these actions is equivalent to choosing the Insert command from the Menu bar, or choosing Modify and then Add command if the highlighted element in the Library is a Popup Control.
Use the Search field, located at the top right corner of the panel, to filter the list of elements available in the Library. For example, typing button in the Search field displays all the button type elements.
Figure 7-1 Library Panel
Image of Library tab opened
Description of "Figure 7-1 Library Panel"
The following sections discuss some of the container elements that are available in the Library panel and how to maximize their usage in the JavaFX Scene Builder tool. Also described are custom and unknown types. To learn more about all the other UI elements offered with the JavaFX SDK platform, see the JavaFX API documentation.
Grid Pane Container
The Grid Pane container enables you to create a flexible layout of UI elements that are organized in rows and columns. Use the Grid Pane in your layout by selecting Grid Pane from the Container section of the Library panel and dragging it to the Content panel. You can then add other UI elements within the Grid Pane container, and elements are automatically arranged based on the padding, gap, and other properties.
You can also add a Grid Pane container element so that it contains the UI elements that you have already added to your layout. Use the following steps:
Choose Edit and then Select All from the Main menu to select all of the elements in your layout.
Add the Grid Pane container by selecting Arrange from the Main menu, Wrap in, and then Grid Pane from the list of containers.
When an empty grid pane is not selected in the Content panel, it is not visible. To make its borders visible, click the corresponding layer in the Hierarchy panel for that Grid Pane. To work with a specific grid pane, click directly within its perimeter, but not on any of the elements that it contains. When selected, a Grid Pane is surrounded by a light blue colored border tabs and each corresponding index number is displayed, as shown in Figure 7-2. You select either a single column or row by clicking within the selection border tab. The tabs of a selected column or row acquires a yellow background, as shown by column 1 in Figure 7-2.
Figure 7-2 Grid Pane in Selected Mode
Description of Figure 7-2 follows
Description of "Figure 7-2 Grid Pane in Selected Mode"
To see the submenu of actions that you can take on a grid pane, do one of the following:
Right-click anywhere in the Content panel, choose Grid Pane from the contextual menu.
From the Main menu, choose Modify and then Grid Pane.
You can move a row up or down, and move a column left or right. You can also delete or add a row or column, and increase or decrease the span for a row or column.
The Layout section of the Inspector panel also enables you to modify the currently selected Grid Pane. The properties related to the selected row or column are displayed and can be managed in the GridPane Row or GridPane Column section.
You can move an element from one grid cell to another existing grid cell. In the Content panel, select the element that you want to relocate, and with the mouse button pressed, drag the element to the target grid cell, as shown in Figure 7-3. Notice that the target grid cell changes to have a gray background as soon as you hover your cursor over it. When you release the mouse button, the element is moved to the target grid cell location in the Grid Pane.
Figure 7-3 Moving an Element to Another Grid Cell
Description of Figure 7-3 follows
Description of "Figure 7-3 Moving an Element to Another Grid Cell"
To move an element to a new row or column that has not been created, select the element in the Content panel and drag it to the divider line that is between the rows or columns where you want the new row or column to be inserted. As you hover the mouse over the cell divider, the cell divider line becomes thicker and gray. When you release the cursor, the new row or column is created, and the element is dropped in the target grid cell. Figure 7-4 shows a Button element being dragged to a new grid cell on the second row of a new column that is about to be inserted.
Figure 7-4 Moving an Element to a New Row or Column
Description of Figure 7-4 follows
Description of "Figure 7-4 Moving an Element to a New Row or Column"
Border Pane Container
The Border Pane container enables you to layout UI elements in the top, right, left, bottom, and center positions of the container. Use the Border Pane in your layout by selecting the BorderPane element from the Container section of the Library panel and dragging it to the Content panel. Figure 7-5 shows the Hierarchy panel after the BorderPane element is added.
Figure 7-5 Hierarchy Panel After BorderPane Container Is Added
Description of Figure 7-5 follows
Description of "Figure 7-5 Hierarchy Panel After BorderPane Container Is Added"
You can add a UI element to the Border Pane container by dragging it from the Library panel onto the specific position in the Border Pane. You can also drag an element from the Library panel to the Hierarchy panel, as shown in Figure 7-6. Notice that when the element is dragged over a target layer in the Hierarchy panel, the layer's corresponding position in the Border Pane changes to a darker shade in color, as shown on the right side of Figure 7-6.
Figure 7-6 Add Menu Bar Element to the BorderPane
Description of Figure 7-6 follows
Description of "Figure 7-6 Add Menu Bar Element to the BorderPane"
You can move an element from one position to another. In the Content panel, select the element that you want to relocate and with the mouse button pressed, drag the element to the target position, as shown in Figure 7-7. Notice that the background color of the target position gets darker as soon as you hover your cursor over it. When you release the mouse button, the element is moved to the target position location in the Border Pane.
Figure 7-7 Moving an Element to Another Position
Description of Figure 7-7 follows
Description of "Figure 7-7 Moving an Element to Another Position"
Tab Pane Container
The Tab Pane is one of the container elements available in the Library panel. By default, the Tab Pane comes with two Tab elements, which contain an Anchor Pane element each, as shown in Figure 7-8.
Figure 7-8 Tab Pane Element Added in the Hierarchy Panel and Content Panel
Description of Figure 7-8 follows
Description of "Figure 7-8 Tab Pane Element Added in the Hierarchy Panel and Content Panel"
You can change a Tab element's default title by double-clicking the title and directly editing its Text property in the Content panel. To add another Tab element to a Tab Pane container, drag and drop a Tab element from the Library panel to the Tab Pane in the Content panel. The new Tab element is added to the right of any existing Tab elements. Use the Hierarchy panel to change the order of the Tab elements within the Tab Pane. Drag and drop the Tab element's row to the target location within the Tab Pane container in the Hierarchy panel.
To add UI elements to a Tab element's Anchor Pane, click the title of the target Tab element to select it. Drag and drop the UI element that you want to add from the Library panel to the Tab element, as shown in Figure 7-9.
Figure 7-9 Add UI Elements from Library Panel to the Tab Element in Content Panel
Description of Figure 7-9 follows
Description of "Figure 7-9 Add UI Elements from Library Panel to the Tab Element in Content Panel"
Depending on the length of each Tab element's title and the number of Tab elements in your Tab Pane container, there comes a point when some Tabs become hidden. When this occurs, a drop-down menu is automatically added to the Tab Pane container's menu bar, as shown in Figure 7-10. This drop-down menu enables the tab of choice to be selected. This menu is not active in the Content panel, but is functional when you view the layout in the Preview window. If the Tab Pane container is resized so that all the Tab elements are fully visible, the drop-down menu is automatically removed from the Tab Pane's menu bar.
Figure 7-10 Tab Pane with Multiple Tab Elements and a Drop-Down Menu
Description of Figure 7-10 follows
Description of "Figure 7-10 Tab Pane with Multiple Tab Elements and a Drop-Down Menu"
Menu Controls
The Controls section of the Library panel contains three menu-related control elements: MenuBar, Menu Button, and Split Menu Button. When you drag and drop a MenuBar from the Library panel onto the Content panel, it comes populated with Menu elements that are labeled File, Edit, and Help. By default, each of these Menu elements contains one Menu Item element, as shown in Figure 7-11.
Figure 7-11 Menu Bar and Its Contents Displayed in the Hierarchy Panel
Description of Figure 7-11 follows
Description of "Figure 7-11 Menu Bar and Its Contents Displayed in the Hierarchy Panel"
Because the Menu and Menu Item elements do not have graphical representations that are visible in the Content panel, you use the Hierarchy panel to select and manage these elements. You can change the order of how the Menu elements are displayed in the Menu bar by selecting the Menu element in the Hierarchy panel and dragging it to a new location within the Menu where you want it to appear. You can directly modify the text property of the Menu or Menu Item element by selecting it and clicking on the text area, which puts you into edit mode. You can also use the Properties section of the Inspector panel to modify the Text field.
You can add other menu-related items, such as another Menu Item or a Separator Menu Item, by dragging the element from the Library panel to the desired Menu location in the Hierarchy panel. To create a second-level menu, drop a Menu element within an already existing Menu element in the Hierarchy panel.
Use the Preview menu to see your Menu bar in action. From the Preview window, you can click a Menu item and any of its submenus. If your current platform supports it, you can choose the Use System Menu Bar property from the Properties section of the Inspector panel to make the Preview window display the menu bar as it would appear on your native system.
Custom and Unknown Element Types
A custom type element is any UI element type that is not part of the JRE 7 (Java with JavaFX) libraries of UI elements. It is a Java class that has been created by the user or by a third party. A custom element type is an "Unknown Type" until it is resolved. Choose the Preview command from the Menu bar and then the Resolve Unknown Types command to define the classpath to use for the custom element type.
You can also load an FMXL file that already contains your own custom UI controls, unless those UI controls require specific builder or builder factories. When you initially load your FXML file that contains element types that Scene Builder does not recognize, a dialog box appears enabling you to enter the classpath for the custom UI types.
In some cases, JavaFX Scene Builder is able to load a file that contains unknown element types even if you choose to not provide their classpaths. The unknown type will not be displayed in either the Control panel or the Hierarchy panel, but their FXML elements will be preserved.
If you provide a class path for your custom element types, Scene Builder should be able to render them in the Content panel and the Hierarchy panel. The properties that are specific to the custom element type will appear in the Miscellaneous category of the Properties section of the Inspector panel. Since JavaFX Scene Builder does not know about your custom types, it might not be able to display their subnodes in the Hierarchy panel. You can also copy and paste a custom type to create another element of the same custom type.
Using Your Own Custom Type
If you want to add your own custom UI controls in your FXML layout, use the following suggested steps:
Create a skeleton FXML file by choosing the File and then New commands from the Menu bar in JavaFX Scene Builder.
At the place where you would like to insert your own custom UI control, insert an instance of its closest JavaFX super class as a place holder.
Choose Save from the Menu bar and close the FXML file.
Using NetBeans IDE, Eclipse IDE, or your favorite text editor, open the FXML file that you just created. Replace the name of the place holder JavaFX element with the name of your own custom class, and also add the appropriate  clause at the beginning of the FXML file.
In JavaFX Scene Builder, choose File and then Open Recent from the Menu bar to open your file again. In the dialog box, enter the class path name to your custom element type and save the change to continue loading the file.

Defining Properties in the Inspector Panel
This chapter describes the JavaFX Scene Builder tool's Inspector panel, including its Properties, Layout, and Code sections.

Internationalizing Your FXML Layout

This chapter discusses the internationalization support that is provided with JavaFX Scene Builder.
The JavaFX Scene Builder tool enables you to adapt your FXML layout to various languages and regions through the use of resource bundle files. When you add a new element to the Content panel, the element's visible property values are set to default values. For example, a button element has a default Text property value of Button. This default value can be changed with an internationalized string by hovering your mouse cursor over the right of the Text property text field, clicking the round cog icon that appears, and then selecting Replace with Internationalized String, as shown in Figure 9-1. Notice that the default value is then replaced by %key.unspecified, which you need to replace with the appropriate resource key name that is defined in your resource file. The percent sign (%) prefix is a visible indicator that the Text property value following it is a resource key name. You can still use the percent sign as a first character for the Text property value. If you have not selected the Replace with Internationalized String setting, then in the FXML file, the percent sign will appear as %. This indicates that the rest of the property value has no link with internationalization and that it is not a key name.
Figure 9-1 Internationalizing a Button Element

Description of "Figure 9-1 Internationalizing a Button Element"
The HelloI18N sample can help show the internationalization support. The sample is included with the JavaFX Scene Builder samples bundle. Its Main class shows how to load the resource bundle. The sample includes the Bundle.properties and Bundle_fr_FR.properties files. When you open the <javafx-scenebuilder-samples-1_0-beta-install-dir>/HelloI18N/src/helloi18n/HelloI18N.fxml file, the FXML file is opened in its own instance of the JavaFX Scene Builder window and you see a button that is labeled HelloI18N. Figure 9-2 shows that the button element's Text property value was set to use the button.text resource key, which is defined in the Bundle.properties file as having the value of HelloI18N. The percent sign in front of the Text property's text field is a visible indicator that the value in the text field is a resource name. If you replace the value assigned to button.text in the Bundles.properties file and save the change, the new value is immediately reflected in the button displayed on the Content panel. You can define additional resource keys in your resource bundle files and use them in the FXML layout you are building.
Select the Preview from the Main menu, then Internationalization command, and then Set Resource. In the Choose Internationalization Resource File dialog box, choose the Bundle_fr_FR.properties file to see how the HelloI18N sample application appears when using the French resource file. Notice that the text displayed on the button is now Bonjour. Changes you make and save to the resource file are reflected in the FXML layout you are working on in the JavaFX Scene Builder tool.
Figure 9-2 Using Resource Key Value to Internationalize the Text Property Value
Description of Figure 9-2 follows
Description of "Figure 9-2 Using Resource Key Value to Internationalize the Text Property Value"

Skinning with CSS and the CSS Analyzer

Next Step

Now that you are familiar with the JavaFX Scene Builder user interface, use Getting Started with JavaFX Scene Builder to create a simple issue-tracking application.


Improve UX experience for log visibility option

Hey, I just made a Pull Request!
Not very experienced users with Backstage find it confusing to watch at long running template (Next Scaffolder version) execution when logs are not shown immediately. When to teach them that you have to click on 3 dots and turn on logs, then it becomes fine to wait for a long execution.
Therefore would be nice to improve the UX experience for the user.

:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[x] Tests for new functionality and regression tests for bug fixes
[x] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

@acierto gonna want a changeset here though too :0

Indeed, now it duplicates all options.
Unless you foresee that the number of actions might grow here.
But even with that maybe some other location would be better.
As users miss this option with 3 dots.
Should I proceed with the removal of context menu then?

My opinion is to leave the context menu in place for now and revisit in a future PR. This saves those who are already used to that and often UIs have more then one way to do certain functions like for example there are a few ways to copy and paste. But if it goes I won't be too upset about it 😉
I do think these should all be user configurable and allow Adopters to set an initial default, that's for someone to do in a future PR though 🚀

@awanlin yeah that's fair. We're avoiding shipping a lot of the other props as stable that can configure the entire page to your liking in https://github.com/backstage/backstage/pull/20221 just so that we can ship the RJSF stuff first, and ensure it's not breaking.

@benjdlambert from a UX point of view I would also agree too remove the context menu.

The button bar should be sufficient enough for the user to make a decision and it's more prominent in the screen
(hard to miss, easy to spot)
The three dots are quite hard to identify for the user and the options in the context menu are the same except for hiding the button bar, which doesn't make much sense?

Conclusion: the context menu at first was a good starting point, but now the user experience can be improved and the context menu simply is not needed anymore.

@lolsem I think that's fair, not sure what removal of that context menu means at the minute though. So would rather tackle that in a followup PR as not to clutter this too much.


Question about Browser Usage

When I setup the overrides, and turn on, the game doesn't work properly, like in screenshots.

I'm moving this to discussions, since this is not an issue but a question.


Proper links to the docs

These links should point to the documents shipped with the exact release.  And etcd from the master could possibly behave differently than one from some particular release/tag.
Signed-off-by: Peter Lemenkov<EMAIL_ADDRESS>

This might break our links on the website, but we can figure that out later on since this gives you a better experience on GitHub.

@yichengq just a friendly reminder :smile:

@lemenkov Sorry for being late.
lgtm. could you rebase based on our recent doc changes?

@yichengq rebased on top of the master branch!

lgtm. Thanks for the work!


fix the os-header image can not be built error

the script/build-images only build images which directory name
start with [1-9]*.
so rename 02-headers to 10-headers.
Signed-off-by: Wang Long<EMAIL_ADDRESS>

https://github.com/rancher/os/issues/1053


[Request for External] report 7 "Trial Balance/Previous Year"

Dear ALAppExtensions team,
On behalf of 4PS I would like to request to make variable 'GLFilter' protected on report 7 "Trial Balance/Previous Year".
protected var
    GLFilter: Text;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Use a different sort presenter for statistics finder

Trello: https://trello.com/c/IjADqrbb/591
Test the change: https://finder-frontend-pr-1069.herokuapp.com/search/research-and-statistics.
What does this do?
This PR enables something quite simple: it makes it possible exclude some sort options on the stats finder depending on some conditions.
Those conditions are:

we remove 'Updated at' options from the sort select input when Statistics (upcoming) is selected
we remove 'Release date' options from the sort select input when Statistics (published) is selected

This logic is needed for these reasons:

we need feature parity with the Whitehall finder this one is replacing
we need to show only one date sort field to the user, and that field should be relevant to the documents the user is viewing.

Why so much code for a simple change?
A lot of this is just moving things around in the refactor, and there are a fair few tests for the new behaviour.
The refactor should help us make changes like this (special sort behaviour) more easily in the future. For example, if we want to refresh the sort options on the fly in the future (say, if we wanted a supergroup facet with different sort options for each supergroup), it'll be a bit easier.
How should I review this?
Reviewing it by commit will be easiest.
In the first commit I move the sort presenter logic from FinderPresenter to separate classes SortPresenter and SortOptionPresenter.
In the second commit I update the sort options in the DOM with Ajax calls.
In the final commit I add a new statistics sort presenter, and implement the special logic for the stats finder.

This is great work, will make the finders much more versatile moving forwards 🥇


About Fig. 6.

What a AWESOME work!
BTW, Fig 6 is really brilliant!

Code maybe is best. : )
Looking for your reply!

Hi, thanks for your interest! We give a detailed explanation of this figure in Appendix A3. The code to draw this paper is attached as follows. The detected results of each branch and attention strength are saved beforehand.
visualize_attn.txt


Fix the RBAC issue for kafka eventing source

Fixes #1274
Proposed Changes
Release Note

/lgtm

/cherry-pick release-1.7


Cds 35643

Harness Developer Pull Request
Thanks for helping us make the Developer Hub better. The PR will be looked at
by the maintainers.
What Type of PR is This?

[x] Issue
[ ] Feature
[ ] Maintenance/Chore

If tied to an Issue, list the Issue(s) here:

https://harness.atlassian.net/browse/CDS-35643

House Keeping
Some items to keep track of. Screen shots of changes are optional but would help the maintainers review quicker.

[ ] Tested Locally
[ ] Optional Screen Shoot.

Preview environment: https://ci.pr.harness.io/pr-313


Moved instances into task-specific modules, implemented sorting by padding

This PR looks bigger than it really is.  It's just moving the instances around, organizing them by task (which required changing a bunch of imports all over the code), renaming get_lengths in IndexedInstance to get_padding_lengths (which required minor fixes in a bunch of lines in the code), some documentation improvements, and adding one small method to IndexedDataset.

Ok, finally got the merged with other recent PRs, and tests passing.  @DeNeutoy, is this good to merge?


[Machine Learning] Machine Learning using EvalMl Library

Proposal Submission
Proposed title of article
[Machine Learning] Machine Learning using EvalMl Library
Proposed article introduction
EvalML is an open-source AutoML library written in python that automates a large part of the machine learning process and we can easily evaluate which machine learning pipeline works better for the given set of data. It builds and optimizes ML pipelines using specific objective functions.
EvalML can be used to create end-to-end supervised machine learning solutions which are more efficient. EvalMl is used to determine the best-optimized machine learning algorithm in building the model.
By using the best algorithm, the model will have also the best performance and be able to make accurate predictions. This library also automates the processes of Feature Engineering, Feature Selection, Model Creation, And Tuning. This saves time and simplifies the machine learning development process. Some of the key functionalities of EvalMl are:

Automation, Data Checks, End-to-end processing, Model Understanding, and Domain-specific modeling.

Key takeaways

What is EvalMl.
Key functionalities of using EvalMl in model building.
Installing EvalMl.
Using AutoML to select the best algorithm.
Getting The Best Pipeline to produce an optimized model.

Article quality
This article is unique because it explores EvalMl in detail. We will first explore the key functions and methods that EvalMl uses to automate the machine learning process. After this, we will use these functions and methods to build a custom model. We will then use EvalMl to select the best algorithm and get the best pipeline. This will provide a more accurate model, this tutorial will be beginner-friendly and the reader can easily follow the guided steps.
References
Please list links to any published content/research that you intend to use to support/guide this article.
Conclusion
Finally, remove the Pre-Submission advice section and all our blockquoted notes as you fill in the form before you submit.
We look forwarding to reviewing your topic suggestion.
Templates to use as guides

How To Guide Template
Software Review Template
Tutorial Template

Thank you for submitting your topic @kelvinkimani501.
However, after some careful consideration, it struck us that this topic may be a bit over-saturated throughout other blog sites and official documentation.
We typically refrain from publishing content that is covered widely on the net or other blogs. As we're more interested in original, practitioner-focused content that takes a deeper dive into programming-centric concepts.
Please feel free to suggest an alternative topic.


Rename HuggingFace Drivers for Consistency

Renames hugging_face to huggingface in file names. This is consistent with HuggingFace's own huggingface_hub naming style.

Should we rename the HuggingFace Tokenizer (griptape.tokenizers.hugging_face_tokenizer) and env vars (HUGGING_FACE_API_TOKEN) as well?

HUGGING_FACE_API_TOKEN comes from the integration tests secrets wiring in .github/wokflows/integration-tests.yml. I can't find any other references to it though, so it might be picked up automatically, in which case our hands are tied.

Ah double good catch! I forgot about hidden files.


Linux: libcap not found error

Building from source with the latest updates on Linux (Ubuntu 16.04) produces this error on configuration step:
checking for LIBEVENT... yes
checking for ZLIB... yes
checking for LIBSECCOMP... yes
checking for LIBCAP... no
configure: error: libcap not found

Despite that checking says libcap is not required, it complains to lack of this package. Anyway it was solved by libcap-dev package installation. Not sure, but probably libncap-dev package should be replaced by this one on documentation page.

export LIBCAP_LIBS=/usr/local/lib
export LIBCAP_CFLAGS=/usr/local/include
allowed configure to complete for me under 14.04

@Jerthade thanks for posting that here =]


It works

The script works, this is a major moral issue – if the user uses AdBlock to block unwanted content from running on their system, it is not morally acceptable to force them to accept content (like it’s being done here)
This is a moral and philosophical issue, not a technical one.

:rowboat:

Why assume that you would use this to block users using an AdBlocker? You could also use it to inform people that your website is losing income because of AdBlockers.
90% of the people installing AdBlockers do it because some website drown you with ads. If you use this script to inform people that your losing income to keep the site online allot of them will accept a exception in the block list.
So, nothing morally wrong with this script.

:+1:

:+1:

By the way, here is a solution to the issue:
// ==UserScript==
// @name        fuck-fuckadblock
// @namespace   de.kuschku.ffab
// @version     1
// @grant       none
// ==/UserScript==

var eventCallback = function () {
  if (window.fuckAdBlock) window.fuckAdBlock._options.baitClass = "kjdftriuhdiuhiuohiuehue";
}

if(window.addEventListener !== undefined) {
  window.addEventListener('load', eventCallback, false);
} else {
  window.attachEvent('onload', eventCallback);
}

I wrote this solution because several websites started not showing any content at all anymore if one disabled the ads.


updated conform

Weirdly these lat/lons are in Naperville, IL. Data url is right, but that's what the server returns.


Moving the orchestration steps into the new stack creation flow

@bbihari or @mhmxs pls review

Jenkins build finished, all tests passed.
Refer to this link for build results: http://ci.sequenceiq.com/job/cloudbreak-pull-request/2496/

Jenkins build finished, all tests passed.
Refer to this link for build results: http://ci.sequenceiq.com/job/cloudbreak-pull-request/2502/

Jenkins build finished, all tests passed.
Refer to this link for build results: http://ci.sequenceiq.com/job/cloudbreak-pull-request/2507/


Add API validation for server pool counts

Added checks for non-zero server pool size and non-zero min/max counts for server pools according to #214
Docs to follow in subsequent PR

Can we fix the headers? I think you just need to run make update-headers and send another commit - then this should be good to merge.

Updated to address comments.
I was unable to get the make update-headers target to work for me due to sed complaining about an invalid command code, but I inserted the header manually, ran the check-headers script, and that passed

Gorgeous! Let's merge and we need to open an issue regarding the header bug you experienced. Do you have the error message?

Yep, thank god for having way too many iterm tabs still open
$ make update-headers
sed: 1: "./cutil/initapi/validat ...": invalid command code .

#228 created in reference to the header update script bug mentioned above


gmail.get.visible_emails() returning wrong result in "Primary" tab

Calling gmail.get.visible_emails() when in the primary tab returns 350 items and ignores the pagination set so moving from page to page always returns the same result. On top of that, the 350 items are a mixture of contents from the other tab ('social' etc), 70 items from primary, 70 from social etc. The other tabs and pages are working fine.
Thanks

I updated to the latest updates because the changelog says the visible_emails was fixed. Tried it but it still the same plus it  generates an exception when you are in a different page.

Thanks for registering an issue. Could you provide more details about the errors you are encountering? Basically a stack-trace or something, which makes it a bit easier to narrow down the error?
@avzabr: I think you were the last one to meddle around these parts? Any ideas on what's going on here?

Without more data it's hard dig deeper into this one. With that said...

Tried it but it still the same, plus it generates an exception when you are in a different page.

I did just find a parsing error which has been introduced recently. I'm guessing this could be related to that error?
Can you update to latest and see if that fixes the exceptions for you?

This PR attempts to solve this issue: https://github.com/KartikTalwar/gmail.js/pull/344

@josteink @Fatal-Errol
Unfortunately i don't know the cause here as well.
Internally for my project i am using the updated version of api.helper.get.visible_emails_pre function. It works well for me for all tabs, pagination, corporate and default accounts. But i don't want to submit a pull request to the original gmail.js repo until this change is verified completely ( I closed the https://github.com/KartikTalwar/gmail.js/pull/344 until its tested).
Changes are available for review at this pull request (my fork of gmail.js):
https://github.com/avzabr/gmail.js/pull/2/files
@Fatal-Errol
You can try to checkout the version of gmail.js from my fork:
https://github.com/avzabr/gmail.js/tree/Issue320
Please let us know if this solves the issue for you.

Working on a feature-branch for this issue, I've encountered and error in api.helper.get.visible_email_pre too.
From what I can tell, the error is caused by the server-response being a HTML-formatted error-message, meaning we're probably not generating a good XHR-request in the first place.
Based  on that I'll see if I can find out what goes wrong and where.

Upon further testing, this only happens when I'm on the wrong page. Should we catch this error and suggest a resolution?

@josteink What do you mean by a wrong page?

If I were looking at a specific email-thread and calling get.visible_emails() it would fail. This function evidently seems designed to work when you're looking at list of emails (like a page in your inbox). And that's absolutely fair enough. That's OK.
But if/when things fail (and it might be due to API misuse), we might want to make it more explicit what scenarios are supported. Agreed?

Yep, sounds correct. But it looks like the fix is for a different issue, not related to this thread: incorrect results set at primary tab returned from gmail.get.visible_emails() ?

I tried opening a "primary" inbox and from what I could tell I was getting the correct results there, with no exceptions.
I must admit on this test-account I don't have enough email (and even less priority email ) to generate multiple-pages though...

Since I haven't heard anything new on this issue, I'm closing it.
Please re-open it if you still have an issue you need resolved.


Provide access to lifecycle hooks of a child component (e.g. if 3rd party component)

What problem does this feature solve?
When data is changed in the parent but the template is actually rendered in a child, the updated hook of the parent will not trigger.
That means if the child component is a closed/external component (3rd party) there is no way to know when the DOM has been updated.
This is problematic when we rely on the render result to execute logic (generate custom print previews e.g.), as nextTick can be quite unpredictable and Vue's internal batching will prevent checking render results in a chain of updates.
The general advice now seems to watch for data changes, but as changed Data != DOM Update this does not help.
In vue2 I believe there was an @hook:EVENT  that could be listened to from the parent.
https://vuedose.tips/listen-to-lifecycle-hooks-on-third-party-vue-js-components
What does the proposed API look like?
<ChildComponent @hook:updated="doOnUpdated()" />
Would be great if we could register and access the child's hooks in the setup function of the parent (through a ref?), after the child has been mounted.

You can already do this. These hooks was renamed to onVnodeXXX
<Comp @vnodeUpdated="doSomething"  />

h(Comp, {
 onVnodeUpdated: doSomething,
 onVnodeMounted: doSomething,
 // etc..
})

Works!
Now, I really wish I had not spent that time hacking around the issue 😅
Thanks a lot!