Recognize apostrophes as being part of a word.

Fix for #36. I tested this locally:

Hi thanks for the PR. I will take a look at the changes today. With regards to the way words are counted. I try to keep the method the same as the default word count plugin (aside from the optional changes, e.g. "Don't count comments". Could you please do me a favour and check if the default plugin treats compound words as 2 words? I wouldn't want to stray from the default.
I realise now that it may be an opinionated option. So maybe it would be best to implement it as an optional change to the word count method. Let me know what you think.

I understand you don't want to defy user expectations. Fwiw I have no idea why the default word count plugin counts don't as two words---can't think of a valid use case---but it makes the word count inaccurate/unusuable for most English prose.
I used it to edit a fiction submission down to a specified wordcount and then when I moved it into scrivener I discovered I undershot the wordcount target by 50 words.
It was reported as a bug a long time ago but hasn't gotten any attention: https://forum.obsidian.md/t/incorrect-word-count-from-apostrophes/14156
I submitted a fix here just because the devs didn't respond to the bug report for the main product.
A toggle option is no problem for me personally, just wanted to provide some more context for your decision.

Confirmed that the default word count plugin still treats compound words as 2 words in the new editor. :(

Confirmed that the default word count plugin still treats compound words as 2 words in the new editor. :(

Update: the devs responded to the bug report; Obsidian's default word counter is going to fix this.

Wow I have no idea how this slipped under my radar will test this ASAP and merge. Thank you and sorry.

I merged it thank you @turnage sorry it took me 11 months. As I have mentioned previously I did step away from the plugin but I am back now so yes. Thank you.


Spark unable to access https content in Kubernetes mode

I am currently able to deploy Spark application to a Kubernetes cluster and run samples from spark code base as well as my own JARS.
One of the difficulty I have is with accessing partfiles from a folder in blobstorage which contains ORC files. This works fine with HDInsight where spark is able to read contents of the ORC part files.
Here is an example of the command I am able to successfully execute on HDInsight Spark cluster

spark-submit \
--class com.nileshgule.movielens.MoviesOrcReader \
--master yarn \
--deploy-mode cluster \
--executor-memory 1g \
--name MoviesOrcReader \
--conf "spark.app.id=MoviesOrcReader" \
<EMAIL_ADDRESS>\
<EMAIL_ADDRESS>

I tried running the same program on Kubernetes cluster with AKS using the command

spark-submit \
--class com.nileshgule.movielens.MoviesOrcReader \
--name MoviesOrcReader \
--conf "spark.app.id=MoviesOrcReader" \
--master k8s://https://techtalksdns-7974de02.hcp.southeastasia.azmk8s.io:443 \
--deploy-mode cluster \
--executor-memory 2g \
--name MovieRatingAnalysis \
--conf "spark.app.id=MoviesOrcReader" \
--conf spark.executor.instances=2 \
--files https://hdsparkclusterstorage.blob.core.windows.net/hd-spark-cluster-2019/ml-lates/rating-orc/ \
--conf spark.kubernetes.container.image=nileshgule/spark:v1.0 \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
https://hdsparkclusterstorage.blob.core.windows.net/hd-spark-cluster-2019/learning-spark-1.0.jar \
https://hdsparkclusterstorage.blob.core.windows.net/hd-spark-cluster-2019/ml-lates/rating-orc/

This command fails with the error message which suggests that Spark cannot read from blob storage with https. Is there any way to read data from blob storage like ORC part files when executing Spark on Kubernetes using AKS?

[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 5eaa2684-cde6-e260-5725-d0eea894889f
Version Independent ID: ed048e95-a087-50f5-b2c7-0c3b6be2b70f
Content: Run an Apache Spark job with Azure Kubernetes Service (AKS)
Content Source: articles/aks/spark-job.md
Service: container-service
GitHub Login: @lenadroid
Microsoft Alias: alehall

@NileshGule Thanks for the Comment. We are actively investigating and will get back to you soon.

@lenadroid please add your comments

@NileshGule we would like to get you in touch with Support to get this sorted out.
If you don't have the ability to open a technical support ticket, please email me at<EMAIL_ADDRESS>and provide me with your Azure SubscriptionID and link to this issue. I can then enable your subscription for a free support request.
I will close this out and be on the lookout for that email if needed :)


[Bug]: Spanner ITs are failing in Py37 PostCommits

What happened?
Lots of SpannerIO tests started to fail once we upgraded google-cloud-recommendations-ai to 0.7.0.
Example:
https://ci-beam.apache.org/job/beam_PostCommit_Python37/5516/testReport/junit/apache_beam.io.gcp.experimental.spannerio_read_it_test/SpannerReadIntegrationTest/test_table_metrics_error_call/
Error Message
test setup failure
Stacktrace
cls = <class 'apache_beam.io.gcp.experimental.spannerio_read_it_test.SpannerReadIntegrationTest'>

    @classmethod
    def setUpClass(cls):
      _LOGGER.info(".... PyVersion ---> %s" % str(sys.version))
      _LOGGER.info(".... Setting up!")
      cls.test_pipeline = TestPipeline(is_integration_test=True)
      cls.args = cls.test_pipeline.get_full_options_as_args()
      cls.runner_name = type(cls.test_pipeline.runner).__name__
      cls.project = cls.test_pipeline.get_option('project')
      cls.instance = (
          cls.test_pipeline.get_option('instance') or _TEST_INSTANCE_ID)
      _ = cls._generate_table_name()
      spanner_client = cls._SPANNER_CLIENT = spanner.Client()
      _LOGGER.info("....
E   TypeError: Expected int, bytes, or behavior, got <class 'grpc_gcp_pb2.ApiConfig'>

Likely this is due to some changes to the transitive dependency chain.
Issue Priority
Priority: 1
Issue Component
Component: dependencies

Repro:
python -m pytest -rsx  -o log_cli=True -o log_level=Info apache_beam/io/gcp/experimental/spannerio_read_it_test.py::SpannerReadIntegrationTest::test_table_metrics_error_call  --test-pipeline-options='--runner=DirectRunner'

most likely an incompatibility between
google-api-core==2.8.2
google-cloud-spanner==1.19.3

cc: @BjornPrime

Bumping up google-cloud-spanner to >= shows errors, suggesting incompatibility b/w Spanner IO and new dependency
apache_beam/runners/common.py:1571: in apache_beam.runners.common._OutputHandler.handle_process_outputs
    for result in results:
apache_beam/io/gcp/experimental/spannerio.py:1185: in process
    mg_info = element.info
apache_beam/io/gcp/experimental/spannerio.py:914: in info
    bytes += m.byte_size
apache_beam/io/gcp/experimental/spannerio.py:901: in byte_size
    return self.mutation.ByteSize()

Note that the version google-cloud-spanner==1.19.1 requires google-api-core<2, see:
https://github.com/googleapis/python-spanner/blob/release-v1.19.1/setup.py#L32
The 1.19.3 release was released just recently (June 9): https://pypi.org/project/google-cloud-spanner/1.19.3/
Although I didn't find sources, I think it might be relaxing just that requirement, while not actually maintaining compatibility with the newer versions of google-api-core.

Confirmed that the E   TypeError: Expected int, bytes, or behavior, got <class 'grpc_gcp_pb2.ApiConfig'> error goes away after:
pip install "google-api-core<2" --no-deps

The error happens only with google-api-core==2.8.2 and not reproducible with google-api-core==2.8.1.
Bisection within google-api-core repo points to
5b5e77563229687c901d77b5fdecc18168b535e6 as first bad commit (which just changes the version, but no other changes...). Not sure how to interpret this.
cc: @parthea

per feedback from @parthea , it is better to exclude google-api-core==2.8.2 explicitly, and they guarantee to add support of grpcio-gcp to the next version of google-api-core.

This can be re-closed right?

right.


Add pop up for Alert yaml

Closes #2741

Adds a Mui Dialog component to the AlertsTable that displays an Alert's yaml when clicked. The pseudo scrollbar element styling added a lot of unnecessary scrollbars to the YamlView, so a couple changes were made in a class and one Mui override to get things looking good.
https://user-images.githubusercontent.com/65822698/190470818-8f79c348-f38f-4570-bca4-204cfb065136.mov

The modal is working for me as expected. If I don't see links under Event Sources now with the same YAMLs — is it normal?

Or do I now need some special YAMLs to test event sources links?

The matrix notifications provider never gets ready for some reason, I think it was ready and had links before.
Service/flux-system/notification-controller created
Maybe I need to upgrade smth.? Will try to reinstall Flux now.

@joshri if classnames feel more intuitive to you, keep them. Using classnames per se is not an issue even if they sometimes can cause issues with specificity (= lead to hard to debug bugs):
https://styled-components.com/docs/advanced#issues-with-specificity
I feel here it breaks one of the main principles of React — unidirectional data flow:
https://www.educative.io/answers/what-is-unidirectional-data-flow-in-react
The parent component somehow "knows" inner classes of child component and gets this class name, declared within the child component, and passes it back to the child component like a "magic string" (a hardcoded values for which it's not obvious how it was obtained (a developer reading the code will first start looking for this value in the parent component instead of the child component) and which is easy to misspell).
Maybe if keeping to use classnames we could at least add exported string constants in the child component for classnames, import them in the parent component, to show where the data (class name string) used comes from more explicitly.

Added a DialogYamlView styled component, and added pointer as a prop in Text. I think it's fair to say that styled components aren't meant to be used with class names like that and that's it's worth changing! As we come across it in other components we can change it.

That's fine with me. Tested it, works as expected. 🎉


hotKey bug

@pradeeban
Reproduce:

trigger clear hotkey

You will find an error like this and that key is not triggered

Reason :
Dur to this line https://github.com/ControlCore-Project/concore-editor/blob/main/src/component/Header.jsx#L20
Our keys are like this
Ctrl+G,Command+G,Ctrl+O,Command+O,Ctrl+Backspace,Command+Backspace,Ctrl+Z,Command+Z,Ctrl+Shift+Z,Command+Shift+Z,Ctrl+Y,Command+Y,Ctrl+E,Command+E,Delete,Delete,Backspace,Backspace,Del,Del,Clear,Clear,

But it should be
Ctrl+G,Command+G,Ctrl+O,Command+O,Ctrl+Backspace,Command+Backspace,Ctrl+Z,Command+Z,Ctrl+Shift+Z,Command+Shift+Z,Ctrl+Y,Command+Y,Ctrl+E,Command+E,Delete,Delete,Backspace,Backspace,Del,Del,Clear,Clear

So that's why it is not able to trigger clear, which is last key as seen above

Merged to main.


Apple Privacy Manifest

Hi team,
Is there a plan to include the PrivacyInfo.xcprivacy manifest as required by Apple?
ref: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files
Thanks,
Boyan

+1

https://developer.apple.com/support/third-party-SDK-requirements/

+1

+1

+1

Hello!
Does anyone know which API used in MBProgressHUD is problematic?

Hey @jdg , are there any updates on this?

I made a Swift version of the HUD.
https://github.com/liam-i/HUD
Thanks a lot to Jonathan George for building MBProgressHUD - all my ideas and many implementation details were provided by his library.
This HUD does not use any data or API from the privacy manifest. And it's not on this list either.
If you are interested, please browse and provide valuable feedback.

@liam-i Will your Swift implementation also work from Objective-C?

@liam-i Will your Swift implementation also work from Objective-C?

Cannot run directly on Objective-C. But bridging is possible, please refer to the HUD-Bridging-OC and OCPresentViewController.m files.

+1

+1

+1

+1

+1

+1

Instead of replying with +1, could everyone please just press the "thumbs up" emoji on the original post and subscribe to notifications in the sidebar? If you post a "+1", everyone who is already subscribed to this thread gets an unneccessary notification.

I made a Swift version of the HUD. https://github.com/liam-i/FlyHUD
Thanks a lot to Jonathan George for building MBProgressHUD - all my ideas and many implementation details were provided by his library.
This HUD does not use any data or API from the privacy manifest. And it's not on this list either.
If you are interested, please browse and provide valuable feedback.

Actually it is on the list - https://developer.apple.com/support/third-party-SDK-requirements, why I don't know. Just went trough the source and indeed it is not using any of the described APIs..

According to Apple's requirements, even if the APIs that needs to be explained are not used, it's need to include a manifest to declare that they're not using any of the affected APIs or tracking anything. However, they must include such a file regardless.

merged, thanks!

@jdg would there be a chance to add new version tag on this change? It's obviously possible to target specific revision but targeting tag/version seems way cleaner :)

Can someone open a PR with updated Swift package?
// swift-tools-version:5.9
import PackageDescription

let package = Package(
    name: "MBProgressHUD",
    products: [
        .library(name: "MBProgressHUD", targets: ["MBProgressHUD"])
    ],
    targets: [
        .target(
            name: "MBProgressHUD",
            dependencies: [],
            path: ".",
            exclude: ["Demo"],
            sources: ["MBProgressHUD.h", "MBProgressHUD.m"],
            resources: [.copy("PrivacyInfo.xcprivacy")],
            publicHeadersPath: "include"
        )
    ]
)

That should include the Privacy manifest when consuming the framework via SPM.
I don't have permissions to create a PR.
Thank you in advance.

I have opened #653 with the change as suggested by @manahilov - @jdg - could you have a look?


hotfix/testingCenter -> dev

This change is

Reviewed 49 of 49 files at r1.
Review status: all files reviewed at latest revision, 49 unresolved discussions.

byuSuite/Apps/TestingCenter/controller/TestingCenterCameraViewController.swift, line 16 at r1 (raw file):

    //MARK: Outlets

    @IBOutlet private weak var feed: UIImageView!

Let's call this feedImageView

byuSuite/Apps/TestingCenter/controller/TestingCenterCameraViewController.swift, line 17 at r1 (raw file):

    @IBOutlet private weak var feed: UIImageView!
    @IBOutlet private weak var message: UITextField!

Let's call this messageTextField

byuSuite/Apps/TestingCenter/controller/TestingCenterCameraViewController.swift, line 44 at r1 (raw file):

    private func loadImage() {
        CampusCameraClient2.loadImage(url: TESTING_CENTER_SREAM_URL) { (image, error) in

You might be able to remove the objective c one and rename now :)

byuSuite/Apps/TestingCenter/controller/TestingCenterCameraViewController.swift, line 45 at r1 (raw file):

    private func loadImage() {
        CampusCameraClient2.loadImage(url: TESTING_CENTER_SREAM_URL) { (image, error) in
            if let image = image {

If we use all of this code in the other feature as well, maybe we can combine some of it? What do you think?

byuSuite/Apps/TestingCenter/controller/TestingCenterCameraViewController.swift, line 55 at r1 (raw file):

                self.feed.image = image

                //Set image fram to be the width of the page, find the correct height based on the proportions of the image, and then stick it under the navbar (+ 20 so that it takes into account the top status bar)

typo

byuSuite/Apps/TestingCenter/controller/TestingCenterHoursViewController.swift, line 10 at r1 (raw file):

private let dayNameFormatter = DateFormatter.defaultDateFormat("EEEE")
private let fullFormatter = DateFormatter.defaultDateFormat("MMM dd yyyy")

Let's call this titleFormatter

byuSuite/Apps/TestingCenter/controller/TestingCenterHoursViewController.swift, line 12 at r1 (raw file):

private let fullFormatter = DateFormatter.defaultDateFormat("MMM dd yyyy")
private let rowFormatter = DateFormatter.defaultDateFormat("h:mm a")
private let rowTitles = ["Doors Open", "Doors Close", "Tests Collected"]

I think we can just inline these now that we have tableData

byuSuite/Apps/TestingCenter/controller/TestingCenterHoursViewController.swift, line 44 at r1 (raw file):

                self.hours = hours
                self.loadTableData()
                self.tableView.reloadData()

Can we move this into loadTableData()? It feels like it should be in there

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 18 at r1 (raw file):

    //MARK: Private Properties

    private var semesterButton: SemesterButton2!

Should this one be a !? It looks like it might not get loaded until the data load is completed....

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 20 at r1 (raw file):

    private var semesterButton: SemesterButton2!
    private var selectedYearTerm: YearTerm2?
    private var refreshControl: UIRefreshControl!

This should be optional

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 25 at r1 (raw file):

        super.viewDidLoad()

        refreshControl = UIRefreshControl()

We should put this into an extension or something... This is the exact same code as YTime

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 41 at r1 (raw file):

        }

        setSemesterButton()

This didn't use to be here... Why did you add it? Was this the bug you mentioned to me?

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 49 at r1 (raw file):

        if segue.identifier == "testDetails",
            let vc = segue.destination as? TestingCenterScoreViewController,
            let indexPath = tableView.indexPathForSelectedRow, let testAndSchedule: TestingCenterStudentTestAndSchedule = tableData?.object(forIndexPath: indexPath) {

Don't use the selected row... That can get changed by the OS. Just pass the cell is as the sender and get the indexPath from tableView.indexPath(forCell cell:)

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 60 at r1 (raw file):

        //If the number of rows is ever 0, display the viewEmpty stuff
        let rows = tableData?.rows(inSection: section).count ?? 0
        viewEmpty.isHidden = rows != 0

Is it possible to do this in the TableDataViewController?

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 66 at r1 (raw file):

    //MARK: SemesterButtonDelegate Methods

    func selectedYearTerm(yearTerm: YearTerm2) {

What features are holding us back from getting rid of YearTerm2?

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 68 at r1 (raw file):

    func selectedYearTerm(yearTerm: YearTerm2) {
        selectedYearTerm = yearTerm
        loadScores(yearTerm: yearTerm.code ?? "")

Why do you have to default this to ""? It looks like the method takes an optional...

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 71 at r1 (raw file):

    }

    func createButtonSucceeded(button: SemesterButton2) {}

Comment above these saying why you aren't implementing them

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 90 at r1 (raw file):

                    //Find the year term object with the value of the currentYearTerm and load the scores for it
                    self.selectedYearTerm = content.yearTerms.first(where: { (value) -> Bool in
                        return value.code == content.currentYearTerm

inline notation

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 107 at r1 (raw file):

    }

    func refresh() {

This should be in a section called "MARK: Listeners"

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 117 at r1 (raw file):

    private func getTimeElapsedSince(date: Date?) -> String {
        //If the date is null, they haven't processed the test yet (or they're still in the testing center)
        if let date = date {

This is a good place for a guard let

byuSuite/Apps/TestingCenter/controller/TestingCenterScoreViewController.swift, line 40 at r1 (raw file):

        //If they haven't completed the test yet, don't load up the data
        if testAndSchedule.studentTest?.exitDate == nil {
            lblEmpty.text = "This test has not yet been processed. Please allow 5 minutes for tests to be checked in."

Instead, could we just use a footer and made it hidden or not hidden here?

byuSuite/Apps/TestingCenter/controller/TestingCenterScoreViewController.swift, line 61 at r1 (raw file):

        if testAndSchedule.scoreDisplayLevelText == "" {
            //This math will round their percent to the nearest 10th place
            return "\(round((testAndSchedule.studentTest?.percent ?? 1) * 1000) / 10)%"

Have you tested this to make sure values are rounding properly? If not, put it in a playground and test around with a bunch of different values

byuSuite/Apps/TestingCenter/controller/TestingCenterScoreViewController.swift, line 71 at r1 (raw file):

        if let exitDate = testAndSchedule.studentTest?.exitDate, let entryDate = testAndSchedule.studentTest?.entryDate {
            let elapsedTimeInterval = exitDate.timeIntervalSince(entryDate)
            return "\(lround(floor(elapsedTimeInterval/3600)))h \(lround(floor(elapsedTimeInterval / 60)) % 60)m"

add spaces around the first "/"

byuSuite/Apps/TestingCenter/controller/TestingCenterScoreViewController.swift, line 73 at r1 (raw file):

            return "\(lround(floor(elapsedTimeInterval/3600)))h \(lround(floor(elapsedTimeInterval / 60)) % 60)m"
        } else {
            return nil

Another good time for a guard let

byuSuite/Apps/TestingCenter/model/TestingCenterClient.swift, line 17 at r1 (raw file):

        //If they don't pass in a year term, return the default response without the year term suffix
        if let yearTerm = yearTerm {
            url = super.url(base: TESTS_BASE_URL, queryParams: ["yearTerm": yearTerm])

You should be able to do this inline with ternary rather than an if/else... What is the default for queryParams?

byuSuite/Apps/TestingCenter/model/TestingCenterClient.swift, line 22 at r1 (raw file):

        }

        let request = ByuRequest2 (url: url)

remove extra space

byuSuite/Apps/TestingCenter/model/TestingCenterUtils.swift, line 13 at r1 (raw file):

class TestingCenterUtils: NSObject {
    static func getIntValue(of day: String) -> Int {

Is this used externally as well? Or just by the bottom function?

byuSuite/Apps/TestingCenter/model/TestingCenterUtils.swift, line 18 at r1 (raw file):

        let indexOfDay = daysOfWeek.index(of: day)

        return ((indexOfDay ?? 0) - (indexOfToday ?? 0) + 7) % 7

Comment

byuSuite/Apps/TestingCenter/model/TestingCenterUtils.swift, line 22 at r1 (raw file):

    static func getNextDate(with dayName: String?) -> Date? {
        if let dayName = dayName {

guard let

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHourChange.swift, line 9 at r1 (raw file):

//

private let formatter = DateFormatter.defaultDateFormat("yyyy-MM-dd hh:mm:ss")

Let's call them DATE_FORMAT and TIME_FORMAT

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHourChange.swift, line 12 at r1 (raw file):

private let formatter2 = DateFormatter.defaultDateFormat("HH:mm:ss")

class TestingCenterHourChange: NSObject {

Can you remove all the NSObjects if there's no obj-c references?

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHours.swift, line 15 at r1 (raw file):

    init(dict: [String: Any]) {
        if let hours = dict["centerHours"] as? [[String: Any]] {
            for tempDayDict in hours {

Use map

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHours.swift, line 20 at r1 (raw file):

        }
        if let changes = dict["centerHourChange"] as? [[String: Any]] {
            for tempCenterHourChange in changes {

Use map

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHours.swift, line 24 at r1 (raw file):

            }
        }
        centerHours.sort()

Inline.

byuSuite/Apps/TestingCenter/model/Scores/TestingCenterStudentSchedule.swift, line 11 at r1 (raw file):

private let formatter = DateFormatter.defaultDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")

class TestingCenterStudentSchedule: NSObject {

Are you missing a lot from here? Or was that on purpose? If so, remove the formatter

byuSuite/Apps/TestingCenter/model/Scores/TestingCenterStudentTestsContent.swift, line 16 at r1 (raw file):

    init(dict: [String: Any]) {
        if let tests = dict["studentTests"] as? [[String: Any]] {
            for tempDict in tests {

map

byuSuite/Apps/TestingCenter/model/Scores/TestingCenterStudentTestsContent.swift, line 22 at r1 (raw file):

        if let yearTermDescs = dict["yearTermsWithDescriptions"] as? [[String: Any]] {
            for tempDict in yearTermDescs {

map

byuSuite/Apps/TestingCenter/model/Scores/TestingCenterStudentTestsContent.swift, line 28 at r1 (raw file):

        currentYearTerm = dict["currentYearTerm"] as? String
        studentTests.sort()

inline

byuSuite/Classes/Reusable/Clients/ControlDates/YearTerm2.swift, line 20 at r1 (raw file):

        dateType = dict["date_type"] as? String

        let dateFormatter = DateFormatter.defaultDateFormat("yyyyMMdd HH:mm:ss")

private let this one

byuSuite/Classes/Reusable/Clients/ControlDates/YearTerm2.swift, line 36 at r1 (raw file):

    private static func title(from yearTerm: String?) -> String? {
        if let yearTerm = yearTerm {
            let index = yearTerm.index(yearTerm.startIndex, offsetBy: 4)

You tested both of these?

byuSuite/Classes/Reusable/Clients/ControlDates/YearTerm2.swift, line 49 at r1 (raw file):

                case 5, 6:
                    return "Fall \(year)"
                default:

This shouldn't be needed. Do they require it in Swift?

byuSuite/Classes/Reusable/Clients/Registration/RegistrationClient2.swift, line 14 at r1 (raw file):

    static func getRegistrationYearTerms(callback: @escaping ([YearTerm2]?, ByuError?) -> Void) {
        let request = ByuRequest2(url: super.url(base: "\(BASE_URL)/"))

Comment about how this is broken without the slash

byuSuite/Classes/Reusable/Clients/Registration/RegistrationClient2.swift, line 18 at r1 (raw file):

            if response.succeeded,
                let dataDict = response.getDataJson() as? [String: Any],
                //TODO: Test the keypath

Do this

byuSuite/Classes/Reusable/Clients/Registration/RegistrationClient2.swift, line 28 at r1 (raw file):

    }

    //TODO: Implement remaining methods as found in RegistrationClient (objc) once required (and necessary objects [RegTeachingArea] have been written in swift as well)

What features will use those?

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 13 at r1 (raw file):

protocol SemesterButtonDelegate {
    func selectedYearTerm(yearTerm: YearTerm2)

Is there a reason for the space here?

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 40 at r1 (raw file):

                self.yearTerms = yearTerms
                //Use the first item in the list as the default year term
                self.selectedYearTerm = yearTerms[0]

Did we test whether or not this will call the didSet?

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 52 at r1 (raw file):

        self.yearTerms = yearTerms
        self.selectedYearTerm = selectedYearTerm

Is there a reason why you use self. on all of these except for title?

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 71 at r1 (raw file):

    //MARK: Custom Methods

//    func setSelectedYearTerm(selectedYearTerm: YearTerm2) {

Do we still need this?

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 80 at r1 (raw file):

        for yearTerm in self.yearTerms {
            actions.append(UIAlertAction(title: yearTerm.title, style: .default, handler: { (action) in

underscore actoin

Comments from Reviewable

Review status: 43 of 54 files reviewed at latest revision, 49 unresolved discussions.

byuSuite/Apps/TestingCenter/controller/TestingCenterCameraViewController.swift, line 16 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Let's call this feedImageView

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterCameraViewController.swift, line 17 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Let's call this messageTextField

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterCameraViewController.swift, line 44 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
You might be able to remove the objective c one and rename now :)

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterCameraViewController.swift, line 55 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
typo

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterHoursViewController.swift, line 10 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Let's call this titleFormatter

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterHoursViewController.swift, line 12 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
I think we can just inline these now that we have tableData

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterHoursViewController.swift, line 44 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Can we move this into loadTableData()? It feels like it should be in there

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 18 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Should this one be a !? It looks like it might not get loaded until the data load is completed....

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 20 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
This should be optional

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 41 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
This didn't use to be here... Why did you add it? Was this the bug you mentioned to me?

The issue I mentioned right at the beginning where the semester button was removed on the camera and hours views but never put back. This takes care of that.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 49 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Don't use the selected row... That can get changed by the OS. Just pass the cell is as the sender and get the indexPath from tableView.indexPath(forCell cell:)

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 66 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
What features are holding us back from getting rid of YearTerm2?

ClassRollsClient, ControlDatesClient, InstructorSchedule, MyFinalsSchedule, RegistrationClient, StudentScheduleClient, UniversityClassSchedule.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 68 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Why do you have to default this to ""? It looks like the method takes an optional...

Sorry. I changed it to take an optional after writing this line.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 71 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Comment above these saying why you aren't implementing them

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 90 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
inline notation

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 107 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
This should be in a section called "MARK: Listeners"

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 117 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
This is a good place for a guard let

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoreViewController.swift, line 61 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Have you tested this to make sure values are rounding properly? If not, put it in a playground and test around with a bunch of different values

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoreViewController.swift, line 71 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
add spaces around the first "/"

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoreViewController.swift, line 73 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Another good time for a guard let

Done.

byuSuite/Apps/TestingCenter/model/TestingCenterClient.swift, line 17 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
You should be able to do this inline with ternary rather than an if/else... What is the default for queryParams?

Done.

byuSuite/Apps/TestingCenter/model/TestingCenterClient.swift, line 22 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
remove extra space

Done.

byuSuite/Apps/TestingCenter/model/TestingCenterUtils.swift, line 13 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Is this used externally as well? Or just by the bottom function?

Externally

byuSuite/Apps/TestingCenter/model/TestingCenterUtils.swift, line 18 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Comment

Done.

byuSuite/Apps/TestingCenter/model/TestingCenterUtils.swift, line 22 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
guard let

Done.

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHourChange.swift, line 9 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Let's call them DATE_FORMAT and TIME_FORMAT

Done.

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHourChange.swift, line 12 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Can you remove all the NSObjects if there's no obj-c references?

What would I use instead?

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHours.swift, line 15 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Use map

Done.

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHours.swift, line 20 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Use map

Done.

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHours.swift, line 24 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Inline.

How?

byuSuite/Apps/TestingCenter/model/Scores/TestingCenterStudentSchedule.swift, line 11 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Are you missing a lot from here? Or was that on purpose? If so, remove the formatter

Yes. I removed all variables in each class that aren't used. There were at least a dozen other variables on this one in particular that were unused.

byuSuite/Apps/TestingCenter/model/Scores/TestingCenterStudentTestsContent.swift, line 16 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
map

Done.

byuSuite/Apps/TestingCenter/model/Scores/TestingCenterStudentTestsContent.swift, line 22 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
map

Done.

byuSuite/Apps/TestingCenter/model/Scores/TestingCenterStudentTestsContent.swift, line 28 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
inline

How?

byuSuite/Classes/Reusable/Clients/ControlDates/YearTerm2.swift, line 20 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
private let this one

Done.

byuSuite/Classes/Reusable/Clients/ControlDates/YearTerm2.swift, line 36 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
You tested both of these?

Yes

byuSuite/Classes/Reusable/Clients/ControlDates/YearTerm2.swift, line 49 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
This shouldn't be needed. Do they require it in Swift?

Yes.

byuSuite/Classes/Reusable/Clients/Registration/RegistrationClient2.swift, line 18 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Do this

Done.

byuSuite/Classes/Reusable/Clients/Registration/RegistrationClient2.swift, line 28 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
What features will use those?

RegTeachingArea is used in UniversityClassSchedule

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 13 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Is there a reason for the space here?

This was the division between the required and optional in objc.

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 40 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Did we test whether or not this will call the didSet?

Yes and it works as desired.

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 52 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Is there a reason why you use self. on all of these except for title?

Because the names as being passed in are the same as the saved variables. W/o self. it confused the compiler.

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 71 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Do we still need this?

Done.

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 80 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
underscore actoin

What do you mean?

Comments from Reviewable

Review status: 33 of 54 files reviewed at latest revision, 49 unresolved discussions.

byuSuite/Apps/TestingCenter/controller/TestingCenterCameraViewController.swift, line 45 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
If we use all of this code in the other feature as well, maybe we can combine some of it? What do you think?

We probably could. As an extension?

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 25 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
We should put this into an extension or something... This is the exact same code as YTime

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 60 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Is it possible to do this in the TableDataViewController?

Let's look at this together once you get a minute.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoreViewController.swift, line 40 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Instead, could we just use a footer and made it hidden or not hidden here?

Done.

byuSuite/Classes/Reusable/Clients/Registration/RegistrationClient2.swift, line 14 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Comment about how this is broken without the slash

Done.

Comments from Reviewable

Reviewed 8 of 9 files at r2, 14 of 14 files at r3.
Review status: all files reviewed at latest revision, 12 unresolved discussions.

byuSuite/Apps/TestingCenter/controller/TestingCenterCameraViewController.swift, line 45 at r1 (raw file):
Previously, ecbrady wrote…
We probably could. As an extension?

Hmmm... Or just a function on the client... You think about the ways you could do it, and run them past me

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 60 at r1 (raw file):
Previously, ecbrady wrote…
Let's look at this together once you get a minute.

Deal. Let me know when you're looking at this one again (probably at the end of the pull request)

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 26 at r3 (raw file):

        refreshControl = UIRefreshControl.defaultRefreshControl(title: "Refreshing...", target: self, action: #selector(refresh))
        if let refreshControlView = refreshControl {

Why do you have to if/let this? It shouldn't be optional...
Oh. Just save it locally as a non-optional, then set it at the end of the method (tmp variable)

byuSuite/Apps/TestingCenter/controller/TestingCenterScoreViewController.swift, line 40 at r1 (raw file):
Previously, ecbrady wrote…
Done.

Does the storyboard default it to hidden or not hidden?

byuSuite/Apps/TestingCenter/model/TestingCenterClient.swift, line 17 at r1 (raw file):
Previously, ecbrady wrote…
Done.

Even simpler:
url: super.url(base: TESTS_BASE_URL, queryParams: yearTerm == nil ? nil : ["yearTerm": yearTerm])...

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHourChange.swift, line 12 at r1 (raw file):
Previously, ecbrady wrote…
What would I use instead?

Nothing... At least I don't think you need to extend anything...

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHours.swift, line 24 at r1 (raw file):
Previously, ecbrady wrote…
How?

centerHours = hours.map {...}.sorted()

byuSuite/Apps/TestingCenter/model/Scores/TestingCenterStudentTestsContent.swift, line 28 at r1 (raw file):
Previously, ecbrady wrote…
How?

See above

byuSuite/Classes/Reusable/Extensions.swift, line 719 at r3 (raw file):

}

extension UIRefreshControl {

I was thinking we'd put this into an extension on UITableView, and then it will automatically add itself to the tableView as well. Thoughts? Also, add this to Y-Time and any other places we use the refresh controller

byuSuite/Classes/Reusable/Clients/Registration/RegistrationClient2.swift, line 28 at r1 (raw file):
Previously, ecbrady wrote…
RegTeachingArea is used in UniversityClassSchedule

And that's it? If so, move this feature to the top of your swift to-do list

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 52 at r1 (raw file):
Previously, ecbrady wrote…
Because the names as being passed in are the same as the saved variables. W/o self. it confused the compiler.

Cool. Just move it down one line so all the self setters are together

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 80 at r1 (raw file):
Previously, ecbrady wrote…
What do you mean?

You don't need the action variable, so make it an _

Comments from Reviewable

Reviewed 1 of 1 files at r4.
Review status: all files reviewed at latest revision, 12 unresolved discussions.

Comments from Reviewable

Review status: 44 of 54 files reviewed at latest revision, 12 unresolved discussions.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoreViewController.swift, line 40 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Does the storyboard default it to hidden or not hidden?

Hidden.

byuSuite/Apps/TestingCenter/model/TestingCenterClient.swift, line 17 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Even simpler:
url: super.url(base: TESTS_BASE_URL, queryParams: yearTerm == nil ? nil : ["yearTerm": yearTerm])...

Done.

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHourChange.swift, line 12 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Nothing... At least I don't think you need to extend anything...

Done.

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHours.swift, line 24 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
centerHours = hours.map {...}.sorted()

That requires parameters. (by...)

byuSuite/Classes/Reusable/Clients/Registration/RegistrationClient2.swift, line 28 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
And that's it? If so, move this feature to the top of your swift to-do list

Done.

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 52 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Cool. Just move it down one line so all the self setters are together

What do you mean?

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 80 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
You don't need the action variable, so make it an _

Done.

Comments from Reviewable

Reviewed 10 of 10 files at r5.
Review status: all files reviewed at latest revision, 7 unresolved discussions.

byuSuite/Apps/TestingCenter/controller/TestingCenterCameraViewController.swift, line 45 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Hmmm... Or just a function on the client... You think about the ways you could do it, and run them past me

Done?

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHours.swift, line 24 at r1 (raw file):
Previously, ecbrady (Erik Brady) wrote…
That requires parameters. (by...)

What!? It shouldn't if the class is comparable! Show this to me...

byuSuite/Apps/TestingCenter/model/Scores/TestingCenterStudentTestsContent.swift, line 28 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
See above

See above

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 52 at r1 (raw file):
Previously, ecbrady (Erik Brady) wrote…
What do you mean?

Just put all your self. = initializers together, and have title = either before or after

Comments from Reviewable

Review status: 52 of 54 files reviewed at latest revision, 6 unresolved discussions.

byuSuite/Apps/TestingCenter/model/Hours/TestingCenterHours.swift, line 24 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
What!? It shouldn't if the class is comparable! Show this to me...

Done.

byuSuite/Classes/Reusable/UI/SemesterButton2.swift, line 52 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Just put all your self. = initializers together, and have title = either before or after

Done.

Comments from Reviewable

Reviewed 2 of 2 files at r6.
Review status: all files reviewed at latest revision, 4 unresolved discussions.

Comments from Reviewable

Review status: all files reviewed at latest revision, 5 unresolved discussions.

byuSuite/Apps/TestingCenter/controller/TestingCenterCameraViewController.swift, line 45 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Done?

Done.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 26 at r3 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Why do you have to if/let this? It shouldn't be optional...
Oh. Just save it locally as a non-optional, then set it at the end of the method (tmp variable)

Done.

byuSuite/Apps/TestingCenter/model/Scores/TestingCenterStudentTestsContent.swift, line 28 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
See above

Done.

byuSuite/Classes/Reusable/Extensions.swift, line 719 at r3 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
I was thinking we'd put this into an extension on UITableView, and then it will automatically add itself to the tableView as well. Thoughts? Also, add this to Y-Time and any other places we use the refresh controller

Done.

Comments from Reviewable

Reviewed 1 of 9 files at r2, 8 of 8 files at r7.
Review status: all files reviewed at latest revision, 1 unresolved discussion.

Comments from Reviewable

Review status: 53 of 57 files reviewed at latest revision, 1 unresolved discussion, all commit checks successful.

byuSuite/Apps/TestingCenter/controller/TestingCenterScoresViewController.swift, line 60 at r1 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Deal. Let me know when you're looking at this one again (probably at the end of the pull request)

Done.

Comments from Reviewable

Reviewed 4 of 4 files at r8.
Review status: all files reviewed at latest revision, 1 unresolved discussion.

byuSuite/Classes/Reusable/UI/ByuTableDataViewController.swift, line 70 at r8 (raw file):

    }

    func addEmptyFooter(to tableView: UITableView) {

Do this in all other features and test

Comments from Reviewable

Review status: 56 of 73 files reviewed at latest revision, 1 unresolved discussion.

byuSuite/Classes/Reusable/UI/ByuTableDataViewController.swift, line 70 at r8 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Do this in all other features and test

Done.

Comments from Reviewable

Reviewed 17 of 17 files at r9.
Review status: all files reviewed at latest revision, 1 unresolved discussion.

byuSuite/Classes/Reusable/UI/ByuTableDataViewController.swift, line 70 at r8 (raw file):
Previously, ecbrady (Erik Brady) wrote…
Done.

Check to see if any of those features would benefit from overriding the emptyLabelText method

Comments from Reviewable

Review status: all files reviewed at latest revision, 1 unresolved discussion.

byuSuite/Classes/Reusable/UI/ByuTableDataViewController.swift, line 70 at r8 (raw file):
Previously, romrell4 (Eric Romrell) wrote…
Check to see if any of those features would benefit from overriding the emptyLabelText method

I don't think any of them would, given their current functionality.

Comments from Reviewable


fix: recalculate rowHeight() when isVirualized

When rendering rows with isVirualized, if rowHeight is a func, the
virtualized list was not recalculating the rowHeight.
Per the react-virtualized docs
here, List.recomputeRowHeights()
needs to be called.
This only fixes the dynamic rowHeight issue after dragging a node is
finished.  An additional List.recomputeRowHeights() will need to be
called to fix the ‘preview’ while dragging a row (see issue below for
more details).
This partially fixes Issue 264.

Pull Request Test Coverage Report for Build 182

1 of 2 (50.0%) changed or added relevant lines in 1 file are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.04%) to 76.187%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/react-sortable-tree.js
1
2
50.0%

Files with Coverage Reduction
New Missed Lines
%

src/react-sortable-tree.js
1
76.15%

Totals

Change from base Build 175:
-0.04%

Covered Lines:
588

Relevant Lines:
759

💛  - Coveralls

@wuweiweiwu On it 👍
Any input on fixing the last part (problem is detailed toward the end of the conversation on Issue 264 would be appreciated 🍻

@jcalebj you mean the rowHeight updating while dragging?
In that case I would checkout https://github.com/fritz-c/react-sortable-tree/blob/master/src/react-sortable-tree.js#L347

Not sure why this was closed, this issue still exists. If isVirtualized and rowHeight is a function, the node heights do not change value, even after dropped.


Create cloud free Sentinel 2 image mosaics

Hi Dimitar @misev, as a part of our UC data collection and pre-processing process we need to prepare cloud free Sentinel 2 image mosaics. I would like to know what you could propose as best solution from Rasdaman perspective and possibilities available. In fact we need 4 Sentinel2 bands (R,G,B,NIR) which are in 10m resolution for the years 2014, 2018 and 2022 and in 4 different seasonal time steps for each year (roughly Feb, Apr, Jun, Sep). It makes in total 48 image layers for the area roughly 110 x 90 km in the central Netherlands. The main steps in the workflow are:

Data collection
Cloud and cloud shadow masking based on S2 Quality assessment layer
Clod free image parts mosaicking
Would we need to make WCPS request or what would be the best way to get data needed?
Thanks.
Marian

@vittekm this morning I understood that you'd like the NDVI from these cloud corrected layers either as a WCPS request or a UDF. Now reading just the base data cloud-corrected. Also missing everything we discussed on this being a slightly different task from calculating NDVI across EU as

much smaller spatial scope (thus more likely to find non-obscured images)
shorter temporal coverage, not for a year, just for a month

:?

Hi @KathiSchleidt, calculating NDVI or any other vegetation index is the last and relatively easy step and for sure could be just added at the end of workflow.
Area of interest is relatively small image mosaics around dates in year I indicated should be sufficient.
Marian

@vittekm could you provide the aoi lat/lon coordinates?

X [136000,223870]
Y [428495,535555]
@misev  it’s in EPSG: 28992

Sentinel-2 is in UTM zones, UTM 31/32 I guess for the Netherlands. It will need to be reprojected to EPSG: 28992?

Also, the first data available is from August 2015 or so, there's no Sentinel-2 data for 2014.

If there are not S2 images in 2014, I would say it we could use some with lower resolution like Landsat or even lower. Would that be an option with Rasdaman?

@vittekm we don't have Landsat 8/9 in rasdaman, it would be necessary to first download and prepare this data from https://earthexplorer.usgs.gov/
It's not clear to me what dates of source data can be used to make the 2014 feb time step for example? Is it scenes in that particular month?

@misev The goal is to have scenes as close as possible to 15th of the given month (e.g. 15th of February) which are cloud free and covering whole bbox. So if one image has not sufficient coverage due to clouds, remaining parts should be filled with available images further in time to create cloud free seasonal mosaic.
I see that Landsat mosaics we will need then create separately.

@vittekm I think typically there is also some computation involved when filling in missing band values due to clouds, so that the end result is a somewhat harmonised dataset. Can we be specific on that (as part of pre-processing metadata)?

@vittekm I think it is best if you prepare the data as you know best how it should be selected and processed. I can provide you login on the fairicube VM to upload it there.

@robknapen The computation involves cloud masking and creating mosaic. At cloud masking are image pixels of original image replaced by "no data" values at location identified by quality layer as "cloud". Quality layer is normally available with other bands at download. At mosaicking the list of cloud masked images is provided in specific order. At top is the image closest to target date, Images further in list are used to fill "no data" pixels of images higher to create cloud free mosaic.

@misev We try to find if there is a way to get image data directly at Rasdaman since they are available and not needed to be ingested and do simple pre-processing before to have analysis ready data to use in models. In case that there are not any pre established processing workflows for cloud masking and mosaicking we could create them maybe. Otherwise way is to download data locally from Sentinel provider, do pre-processing and ingest analysis ready data.

The base Landsat 8 is not available in rasdaman, we have only Sentinel 2 L2A datacubes. The scenes of interest first need to be downloaded (by you) and imported in rasdaman (by me). The cloud masking can be done afterwards with WCPS queries.

@KathiSchleidt can you elaborate on what you mean by "bypasses FAIRiCUBE"? As I explained in my previous comment, the data just needs to be imported as-is in rasdaman, no processing is really necessary.

@misev the original plan of FAIRiCUBE was that basic EO data is available via the Hub, further processing takes place there.
I'm concerned as many UC partners prefer to bypass processing on FAIRiCUBE infrastructure, its easier to do locally with known tools. However, if this is the common approach, no need for FAIRiCUBE, folks can download their data from Copernicus and get on with things, the way they've worked to date

That's still the plan, but we don't have the basic EO data in this case (Landsat) so it needs to be downloaded into FAIRiCUBE first. I see no problem with doing that on the EOX platform, and then importing it in rasdaman so that integrated queries can be done with all the other data UC2 that is already available.

I see that Landsat data has to be downloaded and prepared first locally because it's not available at Rasdaman, For the rest 2/3 of data which is Sentinel we have 2 options:

Collect all available images within the bounding box at Rasdaman within given year (if possible, apply max cloud coverage filter) and do cloud masking and mosaicking with WCPS queries
Collect all available images with access to Sentinel hub at EOX hub and use there known python tools for cloud masking and mosaicking
I'm fine with either of two options, just trying to find more straight forward solution.

@KathiSchleidt We talked shortly about this with Manuel and Maria on last meeting. There is an example notebook at GitHub showing how to access Sentinel hub. We also checked if there is any example code which can do directly cloud masking and creating mosaic within the Copernicus/Sentinel user community but it seems that we have to come just with our own.

Landsat 8 is 30m resolution btw, it will need to be upscaled to 10m I suppose to match the Sentinel-2 data?

@vittekm I processed Sentinel-2 for 2018 and 2022 and will make this datacube available on rasdaman. The processing is as follows - let me know if it seems good:

collect the relevant Sentinel-2 bands for the months you indicated for 2018 and 2022, intersecting the central Netherlands bbox (including the SCL classification band and CLDPRB cloud probability band)
remove scenes with more than 50% cloud cover based on the CLOUDY_PIXEL_PERCENTAGE from the scene metadata
create a cloud / shadow and invalid pixels mask, which marks any pixels with CLDPRB > 20% and SCL values different from 2, 4, 5, 6, 7, 11 (these are documented in the Sentinel-2 product guide)
the SCL mask contains a lot of bogus small patches of a few pixels: these are removed with an erosion step with a 5x5 kernel
the remaining cloudy patches are dilated by 5 pixels to avoid halos or other artifacts as much as possible
the mask is applied to the bands
the masked bands are reprojected to EPSG: 28992 and clipped to the bbox
the multiple scenes per day are mosaiced into one file per day
for a whole month, the daily files are stacked by taking the median pixel value. I tried first your suggestion for starting from 15th of the month and filling in the masked gaps, but this produces a lot of artifacts. The median or mean method seems to be standard for producing cloud-free mosaics from what I read.

Hi Dimitar @misev. The processing workflow looks fine to me. It could be though that there will not be cloud free pixels in a period of one month around the target date in our study area in high cloudy conditions in Netherlands. Then I suppose that this period could be extended. Using median value as you explained sounds good to me. Thanks a lot for this support. Marian

@vittekm you can go to https://fairicube.rasdaman.com/rasdaman/ows, login with your github user, then go to ProcessCoverages tab. Here you can enter and execute WCPS queries. Here are two examples:

NDVI map for 2018-06 (you can adapt the date or other details of the formula):

for $c in (S2_L2A_Netherlands_CloudFree)
return encode(
    ((float)(($c.nir - $c.red) / ($c.nir + $c.red)))[time("2018-06")]
    , "image/tiff"
)
2. A mask of "high vegetation" where NDVI values > 0.7 are true (white), and the rest is false (black):

for $c in (S2_L2A_Netherlands_CloudFree)
return encode(
((($c.nir - $c.red) / ($c.nir + $c.red)) > 0.7)[time("2018-06")]
, "image/tiff"
)

Hi Dimitar @misev , I think that here is a problem with my login as a github user. I got a message "No matching user found in Rasdaman please contact admin". Could you give me an access or how I can proceed?

I see a user mvittek, you should have credentials for it. I also enabled access for your github account now in any case.

@misev In case that we would like to apply the same workflow for Landsat data at Rasdaman for year 2014 we would need to download data first from https://earthexplorer.usgs.gov/ and then upload, right? What would be in that case the best solution?

Yes, just make the data available for download and I'll update the code for it as the classification bands are different for Landsat 8 I think.

Hi Dimitar @misev, could you give an access to https://fairicube.rasdaman.com/rasdaman/ows for my colleague Gijs Hekkert? His GitHub account is hekke006 and he is member of FAIRiCUBE. Thanks.

Done


Please invite me to the GitHub Community Organisation

Hello,
I would like to join the Github Community Organisation.
I am Android Developer.
Kind regards

Invitation sent for the GitHub Organisation. Welcome to the community 🎉
Don't forget after accepting to make it public so it appears on your GitHub profile for everyone else to see, you can do this by finding your name in the GitHub organisation list and change the dropdown to public https://github.com/orgs/EddieJaoudeCommunity/people
Tips for practising:
Customise your GitHub profile, here is a live stream on it https://www.youtube.com/watch?v=cT6GXCuS0Zo
Practice repo, instructions on how to add your name to the README in the README https://github.com/EddieJaoudeCommunity/hacktoberfest-practice
Remember contributing to open source is not just about code, its about collaboration, communication and adding value
I hope that helps


V 0.10.3

V 0.10.3
Patch

2d7d2bc Change alert title from h5 tag to p + strong tag
9035579 change pagination border to be more consistent with text and background colour

Remember to run the npm run version command from the project root so all the package versions are updated to the new version.

@ethanWallace it's updated!


⚠ Bofrost.be has degraded performance

In 7fce03a, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 2697 ms

Resolved: Bofrost.be performance has improved in f933e27.


[VQC-CHALLENGE] [The HaQers] [October 22, 2022]

Team members
Alfaxad#2840
E-PC#6747
flamethrower#5529
giorgosgiapis#0428
Luis Felipe Morales Bultron#0562
moustafa_zada#5306
Submission summary
Our first submission for the HAQS 2022 VQC Challenge.
Additional comments

Congrats! Your model achieved 90% accuracy on the judging data set, and currently ranks 1st on the leaderboard.


Fix Android env var collection

RD uses set/getprop to emulate env vars configured from the host, and it uses Process::LaunchProcess to do this that in turn uses fork/execve to launch getprop.  execve doesn't take the shell lookup patterns to find getprop so it ultimately uses FileIO::FindFileInPath(..) to prepend the appropriate path - but this isn't implemented in the Android version.  This resulted in the capture options using default values.
This fix is just an almost-copy of the default POSIX implementation.  I also added slightly more error output to the execve failure logging too.

Is the only issue here that we're using execve instead of execvpe so android isn't searching PATH for us? If that's the problem it seems more reasonable to use execvpe rather than trying to manually replicate that behaviour ourselves.

In principle yes, but I was very wary of making a such a low-level change across all POSIX platforms - some of which I'm unable to test on.  There's nothing wrong with the general POSIX code now, the issue I saw was because a small part of it wasn't implemented for Android, so it just fixed that bit.

Not searching PATH was definitely never a deliberate behaviour so I'd rather do that - it's how the windows implementation of LaunchProcess behaves and it's how the code expects it to work as we wouldn't deliberately have that difference between platforms. I'm surprised this isn't broken elsewhere since e.g. running adb or android commands on linux goes through this path and it does not pass absolute paths to executables.
The change as-is in theory is fine but in practice makes me really worried about doing anything non-trivial and low level like this on Android because you never know when it might break on a random device.
FWIW the only supported POSIX platforms are linux and Android. Mac exists but is not supported so if it's broken that's not a problem, GGP was recently deleted.

I'm surprised this isn't broken elsewhere since e.g. running adb or android commands on linux goes through this path and it does not pass absolute paths to executables.

It looks like the full path for ADB and others is calculated, see android_tools.cpp.

FWIW the only supported POSIX platforms are linux and Android.

Fair enough, I see separate BSD code sections which I'm set up for, but if it's not officially supported.

Actually yeh I guess adb isn't a great example because we first try and search through the labyrinthine mess of SDKs and alternatives to find it because it's not generally expected to be available in PATH. If the SDK is found we do try and execute it through PATH but that won't be hit as often (and so maybe doesn't work?).
Either way searching PATH via execvpe should be a no-op when passing an absolute path, and will only affect cases that don't work with execve. I'm not really sure the point of execve except perhaps as a bullet-proofing security thing where you want to avoid overriding via PATH but that makes more sense as an opt-out rather than opt-in. There is certainly the argument that there might be android systems where execvpe doesn't work of course, but that's just the reality of android where everything can and will break somewhere.

So it turns out execvpe is a GNU thing and Mac doesn't support it.


Restore menubar

Codecov Report

Merging #79 into ui will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##                 ui      #79   +/-   ##
=========================================
  Coverage     43.99%   43.99%
  Complexity      459      459
=========================================
  Files           122      122
  Lines          2366     2366
  Branches        302      302
=========================================
  Hits           1041     1041
  Misses         1242     1242
  Partials         83       83

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 3a91aec...7bfb4d1. Read the comment docs.


New-PowerBIReport issues when creating reports containing ":"

When creating reports with the name containing ":" will create a malformed report name from the chars after the ":".
For Example:
(Local) "TEST 123 : TEST" -eq " TEST" (PowerBI)
Integration Test:
Describe "Testing New-Report" {
    Context "Testing Reports Containing `":`" {
         # Arrange
         $reportName = "Test Report : Name"
         # Act
         $results = New-PowerBIReport -WorkspaceId "GUID"`
                                                    -Path $.ExportPath `
                                                    -Name $reportName `
                                                    -ConflictAction Abort
        # Assert
        it "The created Name should be the same" {
              $results.Name | Should equal $reportName
        }
    }

}

This also applies to the following characters: : . \ / "


Implement check command

Fixes #11. This PR implements a check command that will exit successfully if all files are formatted and otherwise will print out the paths of all not-formatted files and exit with a failed status.
On success:
λ ./bin/index.js check "src/**/*.purs"
All files are formatted.

On formatting failure:
λ ./bin/index.js check "src/**/*.purs"
Some files are not formatted:

/Users/trh/trh/oss-other/purescript-tidy/src/PureScript/CST/Tidy/Precedence.purs

On formatting failure and errors (any error will fail the formatting check, too):
λ ./bin/index.js check "src/**/*.purs"
Some files have errors:

/Users/trh/trh/oss-other/purescript-tidy/src/PureScript/CST/Tidy/Precedence.purs:
  Unexpected identifier nsertOperator

Some files are not formatted:

/Users/trh/trh/oss-other/purescript-tidy/src/PureScript/CST/Tidy/Precedence.purs
/Users/trh/trh/oss-other/purescript-tidy/src/PureScript/CST/Tidy/Hang.purs

@natefaubion The run for 10dd788 demonstrates the check command failing in CI because of a non-formatted file, as seen in the build failure here: https://github.com/natefaubion/purescript-tidy/runs/3275353275
I've reverted it and this should be good to go 👍

Do you want to add a blurb in the README?

Done!

Awesome!


Switch New Relic library to official vendor sdk

Closes  #3949
Summary
Updates the New Relic integration to use https://github.com/newrelic/go-agent instead of the outdated https://github.com/yvasiyarov/newrelic_platform_go.
Testing
Add the following registry config and validate in the New Relic UI that transactions and go runtime metrics appear.
reporting:
  newrelic:
    licensekey: [license key]
    name: [app name]

Notes:

There is potential for instrumenting more than just the base transaction, such as s3 and redis calls.
The reporting.newrelic.verbose configuration option has been removed. Logging is provided via logrus and respects the global log level.

Codecov Report
Patch coverage: 33.33% and project coverage change: +0.06 :tada:

Comparison is base (bac7f02) 55.88% compared to head (1654e4e) 55.94%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3963      +/-   ##
==========================================
+ Coverage   55.88%   55.94%   +0.06%
==========================================
  Files         108      110       +2
  Lines       10949    11064     +115
==========================================
+ Hits         6119     6190      +71
- Misses       4145     4183      +38
- Partials      685      691       +6

Impacted Files
Coverage Δ

configuration/configuration.go
65.10% <ø> (ø)

registry/registry.go
47.21% <ø> (+0.76%)
:arrow_up:

registry/handlers/app.go
46.38% <33.33%> (-0.63%)
:arrow_down:

... and 10 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

This needs a rebase @bmanuel

Closing NewRelic has been removed in https://github.com/distribution/distribution/pull/4001


Replace 'Cannot connect' with a more descriptive error message

'Cannot connect' is an error from the telnet-client package. This should be detected and replaced with something more descriptive

Closing out feature requests to keep this tracker to bugs-only. This does not mean that this feature is a "won't-add". Further discussion is being moved to the Discord.


Gradient Accumulation

System Info
Reposting here for lineage

https://github.com/huggingface/transformers/issues/29042

Who can help?
No response
Information

[ ] The official example scripts
[ ] My own modified scripts

Tasks

[ ] An officially supported task in the examples folder (such as GLUE/SQuAD, ...)
[ ] My own task or dataset (give details below)

Reproduction (minimal, reproducible, runnable)
see other ticket
Expected behavior
see other ticket

This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread. Thank you!


Fix build files

Fix build files.

After this change "react-datetime" stops working on my production environment. Every browser that I've tested freezes when I tried to enter a page containing date picker. No console log/warn/err in browser, no build errors, reverting to 2.9.0 immediately fixes those issues.


samples: net: mbedtls: Fix server compilation

Fixes #596
Signed-off-by: Jukka Rissanen<EMAIL_ADDRESS>

Not sure if we are quite ready to start putting github issue # in commits

We have already PR #XXX references in commit logs so I see no harm here to have links also to the issues as they are in the same "address" space as PRs. So I am leaving the "Fixes ..." here for now but that can be removed if really needed.

Not sure if we are quite ready to start putting github issue # in commits

Then you should not have opened the issue on github ;-)


Accessibility issue with new tokens

Please verify the version of auro-lockup you have installed
@latest
Please describe the bug
When upgrading to @aurodesignsystem/design-tokens v4.7 and running a build of the component, you will get the following build error.
test/auro-lockup.test.js:

 🚧 Browser logs:
      Lit is in dev mode. Not recommended for production! See https://lit.dev/msg/dev-mode for more information.

 ❌ auro-lockup > auro-lockup is accessible
      Error: Accessibility Violations
      ---
      Rule: color-contrast
      Impact: serious
      Elements must meet minimum color contrast ratio thresholds (https://dequeuniversity.com/rules/axe/4.8/color-contrast?application=axeAPI)

      Issue target: span[slot="subtitle"]
      Context: Powered by Partner Name
      Fix any of the following:
        Element has insufficient color contrast of 2.24 (foreground color: #adadad, background color: #ffffff, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1
      ---
        at processResults (node_modules/chai-a11y-axe/src/accessible.js:87:15)
        at node_modules/chai-a11y-axe/src/accessible.js:123:7
        at async n.<anonymous> (test/auro-lockup.test.js:14:5)

Chrome: |██████████████████████████████| 1/1 test files | 3 passed, 1 failed

With the updated tokens, the currently used token of --ds-color-brand-gray-400 with the value of #adadad has a 2.24:1 color ratio which failed the accessibility requirement.
The previous value was #767676 had a ratio of 4.54:1
Reproducing the error
This issue cannot be reproduced on the Auro docsite
Expected behavior
The design of the element should be void of color accessibility issues. be
What browsers are you seeing the problem on?
No response
Additional context
It is undetermined whether to update the token or the token assigned to the text in this element. What is also unknown is the impact across all the properties currently using the --ds-color-brand-gray-400 token.
A search revealed that this value is being used within the Seats UI.
https://github.com/Alaska-ECommerce/seats-ui-components/blob/40b855519bbadfbde8c6bf970d72bf39ecb52a5e/src/Tab/tab.styles.ts#L5
Exit criteria
This issue can be closed once it is able to build with the updated design tokens successfully.

Please replace gray-400 with gray-600 for the lock up component. This is the closest current color to the old gray-400.

@leeejune having tested this, I would recommend using the var(--ds-color-base-gray-700) token. The Gray 600 has a hex of 7E7E7E that fails for small type.

Setting issues as BLOCKED until the color choice question can be resolved.

@leeejune having tested this, I would recommend using the var(--ds-color-base-gray-700) token. The Gray 600 has a hex of 7E7E7E that fails for small type.
This should work. Thanks for catching that.


Error running newly created app (v2)

Short description of the problem:
Error creating new app. (--v2)
What behavior are you expecting?
It should "compile" and run the app....
Steps to reproduce:

ionic start app --v2
cd app/
ionic platform add android
ionic run android

Running 'run:before' npm script before run

> ionic-hello-world@ build /home/unknown/git/app
> ionic-app-scripts build

[21:29:52]  ionic-app-scripts 0.0.36
[21:29:52]  build prod started ...
[21:29:52]  clean started ...
[21:29:52]  clean finished in 3 ms
[21:29:52]  copy started ...
[21:29:52]  ngc started ...
[21:29:52]  copy finished in 28 ms
[21:29:53]  lint started ...
[21:29:54]  lint finished in 1.23 s
[21:29:54]  can't resolve module @angular/core/src/di/opaque_token from /home/unknown/git/app/.tmp/index.ts
[21:29:54]  TypeError: undefined is not a function
[21:29:54]  ngc failed
[21:29:54]  ionic-app-script task: "build"
[21:29:54]  Error: Error

npm ERR! Linux 3.19.0-32-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "build" "--color"
npm ERR! node v0.12.7
npm ERR! npm  v2.11.3
npm ERR! code ELIFECYCLE
npm ERR! ionic-hello-world@ build: `ionic-app-scripts build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the ionic-hello-world@ build script 'ionic-app-scripts build'.
npm ERR! This is most likely a problem with the ionic-hello-world package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     ionic-app-scripts build
npm ERR! You can get their info via:
npm ERR!     npm owner ls ionic-hello-world
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/unknown/git/app/npm-debug.log
Caught exception:
 undefined

Mind letting us know? https://github.com/driftyco/ionic-cli/issues

Post the output of ionic info below please
Your system information:

Cordova CLI: 6.3.1
Gulp version:  CLI version 3.9.0
Gulp local:   Local version 3.9.0
Ionic Framework Version: 2.0.0-rc.1
Ionic CLI Version: 2.1.1
Ionic App Lib Version: 2.1.1
Ionic App Scripts Version: 0.0.36
OS: Distributor ID:     LinuxMint Description:  Linux Mint 17.3 Rosa
Node Version: v0.12.7

ionic serve works fine...

I am having the same issue.

ionic start cutePuppyPics --v2

cd cutePuppyPics

ionic serve <--- this works!

ionic g page myPage <---- error!

ionic build <---- error!

Ionic Info:

@MasterProgrammer200 you should have posted your erro in text so it could be indexed.....
Since you are using Windows this confirms it's not platform specific...

This issue was moved to driftyco/ionic-app-scripts#253


Refactor ZiplineLoader to have pluggable caching and embedded fs

After incorporating interface ideas from @JakeWharton, it seemed like the difference between ZiplineLoader, ZiplineModuleLoader, and ZiplineDownloader were minimal enough to make the separation of abstractions not useful anymore so I folded them back in which seems to have been the right thing to do. Open to feedback, especially on which constructor signatures to keep.

@JakeWharton @swankjesse mind doing another pass since a lot changed since the last review?

There's a single way that we want to order things. There's no reason deployments of zipline need to load from HTTP or have a persistent cache. Even if they want to load from the network and have a cache we're assuming they want to use OkHttp to access individual files and store on the filesystem with SQLDelight.
An opinionated API will look great in our internal multiplatform codebase with this generic mechanism as an implementation detail.

Works for me.

Sounds good, I'll simplify and leave only the generic APIs and move the guardrails helper constructor method into our internal multiplatform codebase.


err: can not find opencl

./megpeak -d opencl
err: can not find opencl
err: failed to load opencl func: clGetPlatformIDs
opencl error -32: CL_INVALID_PLATFORM (clGetPlatformIDs(0, nullptr, &nr_platforms) at /home/kuylv/Downloads/MegPeak-main/src/opencl/common.cpp:OpenCLEnv:438)
aarch64 Phytium
NVIDIA GeForce RTX 2060
515.65.01
clinfo
Platform Name                                   NVIDIA CUDA
Number of devices                                 1
Device Name                                     NVIDIA GeForce RTX 2060
Device Vendor                                   NVIDIA Corporation
Device Vendor ID                                0x10de
Device Version                                  OpenCL 3.0 CUDA
Device UUID                                     e38925ec-2f68-5836-3031-5170d70c9401
Driver UUID                                     e38925ec-2f68-5836-3031-5170d70c9401
Valid Device LUID                               No
Device LUID                                     0000-000000000000
Device Node Mask                                0
Device Numeric Version                          0xc00000 (3.0.0)
Driver Version                                  515.65.01
Device OpenCL C Version                         OpenCL C 1.2
Device OpenCL C all versions                    OpenCL C                                                         0x400000 (1.0.0)
OpenCL C                                                         0x401000 (1.1.0)
OpenCL C                                                         0x402000 (1.2.0)
OpenCL C                                                         0xc00000 (3.0.0)
Device OpenCL C features      __opencl_c_fp64                                                  0xc00000 (3.0.0)
__opencl_c_images                                                0xc00000 (3.0.0)
__opencl_c_int64                                                 0xc00000 (3.0.0)
__opencl_c_3d_image_writes                                       0xc00000 (3.0.0)
Latest comfornace test passed                   v2021-02-01-00
Device Type                                     GPU
Device Topology (NV)                            PCI-E, 0000:05:00.0
Device Profile                                  FULL_PROFILE
Device Available                                Yes
Compiler Available                              Yes
Linker Available                                Yes
Max compute units                               30
Max clock frequency                             1680MHz
Compute Capability (NV)                         7.5
Device Partition                                (core)
Max number of sub-devices                     1
Supported partition types                     None
Supported affinity domains                    (n/a)
Max work item dimensions                        3
Max work item sizes                             1024x1024x64
Max work group size                             1024
Preferred work group size multiple (device)     32

The OpenCL stub can't find the driver of OpenCL, please check the dynamic OpenCL driver library in these Path :https://github.com/MegEngine/MegPeak/blob/aa50c20e1379bbb2a3c674789e4d91ffed1cfea9/opencl-stub/src/libopencl.cpp#L48


Build tenant migrations path more reliably

I noticed an issue when trying to migrate data from the public schema
into the private tenant schemas when using a released version of the
phoenix app (built by exrm with mix release). The simple relative path
approach to finding the tenant migrations doesn't work within the
context of an exrm release. I looked into how Ecto deals with this
problem, and noticed it uses the Application.app_dir function to build
the path to the migrations, passing in the :otp_app that was
configured with the Repo module.
See
http://blog.plataformatec.com.br/2016/04/running-migration-in-an-exrm-release/
for more info about running deployment/release tasks exrm releases.
With this commit, tenant migrations are found, even within the context
of an exrm release command. i.e. if you have a Release.Tasks module
with a migrate_tenants function that calls Apartmentex.new_tenant,
then this command will now successfully find the tenant migrations
within the released app:
rel/my_app/bin/my_app command Elixir.Release.Tasks migrate_tenants

Running this command without the call to app_dir results in no
migrations being run for the tenant.
See related code from Ecto that builds the migration path:
https://github.com/elixir-ecto/ecto/blob/97d75cef7f665f268a371ef56ea444483b819a5a/lib/mix/ecto.ex#L148-L150

@Dania02525 It's probably easiest to review the 2 commits separately, since https://github.com/Dania02525/apartmentex/pull/13/commits/20dc3248bfdd18518329fcafbfc06d57082fc8fe is just a refactor, whereas https://github.com/Dania02525/apartmentex/pull/13/commits/4015e2dcd70dfcc4bc233a605d7c0cd719d0836d includes the bug fix

cool, I've used something like this:  Path.join("#{:code.priv_dir(:myapp)}", "static/templates/receipt_template.html") to get the right path to files when using static files in exrm releases.


Implement a consumer that set key references to null to clear allocated memory which allocated by hashmaps

Done with #37


ft(testing integration): Test With jest and supertest

TESTING INTEGRATION WITH JEST AND SUPERTEST

Description

These new changes cover all the testing of main functionalities of this blog system
How Has This Been Tested
This system has been tested with the jest and supertest packages.

Types of changes

[ ] Docs change / refactoring / dependency upgrade
[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

Screenshots

Nice testing,
let us merge it now


install pyqt for python 3.8

Will make the coverage less confusing as python 3.7 and 3.8 should hit all the same tests

@astafan8 Unfortunatly it does not work (some problem with XVFB needs investigation)

@astafan8 this now works with installing libxkbcommon-x11 which seems to now has become a dependency for qt after 5.13
I also bumped the linux version on travis and made the docs build with python 3.8. Can you have a look again?


Export data to csv

Relates to Jam's issue: Download CSV File
Mini-spike using react-csv library to generate a CSV file.

Spike work no longer required.


New UI

Just upgraded to latest 4.1.4 from a old 3.5 version
The new UI for editing entries is odd in that it seems to truncate the entries e.g. 'target' into a dropdown box with single letters on each line.
Is this intentional? Or just because I am running chrome? Internet explorer shows a different view but is completely blank.

view with Internet Explorer 11

The first post is correct in the editor. The way the framework works is it tries to adjust the fields dynamically to the width. You can grab the lower left corners of the fields and expand them.
For the second post, there is a character in the field that the ui is having an issue with as it tries to convert the data to a json message.

I was also wondering the same thing as I am finding it very awkward to work with.
You might be interested to know I have been working on some frontend improvements, notably making the tables responsive and reducing the use of tables to make things a little more flexible.
It is still very much a work in progress, with a couple of weeks between these two examples. Using a different method for each.

@digiltd Those are some nice designs....

@Frenchgrey11 This has nothing to do with this post. Please post a new issue on why it is not working

I did already and that was issue nr 457 with not solved issue.

@bwssytems I have been working on the UI but I have to ask something for the sake of my sanity.
So far my workflow consists of me making a change in the src/main/resources/public to a frontend file, then having to run mvn package and then java -jar ha-bridge-4.2.1.jar in order to see the result.
Usually I would be using gulp and browsersync to automate everything so having to package the jar each time is not much fun.
I have tried making a fake folder of files with static html devices and running that in little server. That worked fine, though then I went to try it on the build there was loads that didn't work. So I need ideally to find a way to be running the jar using like data, but having access to the the front end public folder  so I can drag that into Sublime and get things moving.
Is there something very simple I am missing, maybe a way to not Jar the file up, just run it from the ide? Or perhaps a way to jar up the java stuff (I am not touching that) but have it pull in the front end from a different location?
I have maven installed and use it to build the occasional thing but am clueless to the rest of it. I also have eclipse if that helps. I am fine with Node, Python, PHP, HTML, Sass and all that jazz but can never get my head around Java.

@digiltd I use Eclipse to develop it, os I just run it within the IDE. But I do have to stop the process before I update anything in the resources folder as it won't take other wise, but I don't have to repackage. Unfortunately, it is the way spark java accesses that folder.

I still can't work out how to run it from the IDE, I'm seeing Error: Could not find or load main class src.main.java.com.bwssystems.HABridge.HABridge.
In the meantime....
You know how it is, you go in to change one thing and find yourself spotting other bits that could do with some additional thinking. It is certainly not a criticism or a complaint as your time is better spent working your magic on the actual software than the UI 😇 .  I happy to contribute but I don't want to go too far without some feedback because design is a conversation (or at least it should be)
scrolling
The strange horizontal scrolling where it all started, it is very awkward when trying to add or edit a custom device. Especially awkward when the Target item and HTTP body fields are super small 😉

WIth added frustration when my browser would jump back to the previous page when trying to scroll left as my trackpad thought I was trying to do a swipe gesture 😒
The gifs i posted in Feb are using responsive tables as a potential solution. I think they work well and do the job, when stacked they are much easier to use. So what would be the point of making them rows again when the rows are still hard to use. Maybe the stacked version should be the main version.
I was also looking at ways of sorting the devices which made me think of Isotope which I have used many times before. I had a play, and this is where I am now.
Just in case anyone looking at it is not familiar with the design "process". It should be seen at as rough sketch, something used to quickly prototype ideas. Not "this is what I want it to look like".
FIlter by type

Responsive layout

Grid to rows

Sort rows by type

That could also be responsive

(though a bit wonky at the moment)
You can have play with it in a browser here:
http://s.codepen.io/digisam/debug/8165ee1e2cc935d38fc86441a5c522f7
But as I mentioned earlier, there are more questions, like...
Do we need to have a column that says "Active: False" or can we change the appearance of the deactivated cards to communicate the same thing?

The same might be true for "no state: false", but I am not sure what it actually means and there is a bit of double negative overload when combined with: No State (Do not update state for device) 😕
I did have the test buttons hidden from view and you had to click a button for them to slide up into the card. Which whilst pretty, it was annoying having to deal with an extra click and the idea is to make things easier not to change things for the sake of changing them 😄

@digiltd THose are very nice designs. I assume you are UI/UX guy from the way you look at these layouts. So, my only concern is getting into a library that may be "flash in the pan". Also, the "keep it simple and stupid" principle needs to be considered as the UI is just a way to get the system configured. After that, it is not the focal point. We do need to fix the editing page is that is everyone's issue. I am not a bug UI/UX person  and my background is in server side and communications, as you can tell.
As far as the Eclispe IDE, make sure that the project is setup with the execution environment for JRE 1.8 and that it us tagged a java project. The "Run As"-> "Java Application" from the right click should then pull up the selection list if it is done at the project list, or run the class if you selected the HABridge class. Otherwise, there is some configuration that is missing for your project in the IDE.

You assume correct 🏆

So, my only concern is getting into a library that may be "flash in the pan"

I agree, and Isotope is definitely not a flavour of the week. It is the original "Filter & sort magical layout" package and has been for the past 7 years. Lightweight and actively maintained.
DId you try the codepen link? I have added a second link that demonstrates both the filter and sort functions of Isotope.
I also agree with you about KISS, but I disagree that:  "the UI is just a way to get the system configured" But I'm not going to try to convince you otherwise 😁
For me a UI is very important, whilst visual things like colour and type do play a part, it is only a tiny part as design should always be about solving problems rather than "making it pretty" :man_artist:
But I won't waffle on. There are reasons behind the decisions made and now when looking for a device (the codepens use my actual devices) I can do so with one or two clicks/keys.
Do try the codepen links and feedback is welcome from anyone who wants to give it. Imaginations will have to used a little bit when playing and try to not look too closely at the details.
It is different which some might be jarring to some, and that is why I included a "row" option.
Note that all the filtering, sorting and dynamic layout is handled by one 35kb javascript file .

And of course, my comments reflect my UI capabilities...lol. I was just putting my view out there. The UI design you have is very cool and would make it 100 times better than I already have. I did look at the codepen and played with it. So, do you want to integrate these into the ha-bridge? I'll give you a branch to fork form.

Cool, glad you approve, I think there a little way to go yet before integrating. Baby steps. The way I have been fiddling so far is with what I thought was a regular fork and snapping off a dev branch that I use as if it was my own repo. Where possible I try to rebase any new changes that come through. Is that any different from what you're suggesting?
I think it would be easier and less intrusive to you if I manage my own fork and then when I have something for you to try in a build you can clone it or just take the resources folder. Then pr back to your upstream when happy. Sound ok?

I am suggesting something very similar. I would request you do the work on a fork of the branch (UIUpdates) that I created. It still is in your repo, but when you do a pull request it goes to this branch instead of master.

Sure, happy to follow your lead

@digiltd So, it doesn't matter which branch you work on in your fork. It's just the pull request should go to the UIUpdate branch on my end. Go ahead and have fun...

cool, hopefully you are not waiting for anything from me just yet. But just to update you, I haven't faded away I am still working on this but am in the middle of moving house at the moment so my time is limited :)

This isn't getting any traction so I will let this go.