text:
CoderDojo 西成を非表示にしたい

1). coderdojo.jp のトップページからは非表示としつつも、開催したという事実が消えるわけではないので、 2). 統計データとしては残しておきたい。一方、 3). 統計情報の最新の Dojo 数では、カウントしないようにしたい。
1.〜3. のやりたいことを満たそうとすると、結構修正するところは多そう...? 🤔💭
関連 Issue: https://github.com/coderdojo-japan/coderdojo.jp/issues/310
参考: CoderDojo 西成について

CoderDojo Nishinari Osakaにご参加いただいたみなさま
お世話になります。CoderDojo Nishinari Osaka　浦方と申します。
いつもご参加くださり、また応援をいただき、ありがとうございます。
CoderDojo Nishinari Osakaについてご報告をいたします。2016年８月よりスタートして、これまで月１回のペースで開催してきましたが、３月より活動を一旦休止することなりました。そして、名称を改め今後は「山王プログラミング教室」として、2018年５月より月１回ペースでの開催を予定しております。
CoderDojoとしての活動ではなく「山王プログラミング教室」としての活動となります。実施内容については、これまで通りです。
次回の開催日程については、改めてお知らせをいたします。よろしくおねがいします。

cf. https://www.facebook.com/coderdojo.nishinari.osaka/posts/588833824812579

CoderDojo Nishinari Osakaにご参加いただいたみなさま
お世話になります。浦方です。
CoderDojo Nishinari Osakaを改め「山王プログラミング教室」として再スタートすることになりました。

cf. https://www.facebook.com/coderdojo.nishinari.osaka/photos/a.283716175324347.1073741828.281889288840369/607396646289630/

🤔.oO(データを削除する方法、まだそんなに確立していなかった印象がある。今回を機にフローを確立させたい)

@naopontan 以前アナグラさんにお願いした次の Issue/PR の進め方を参考にして進めてみていただければ! 😸
アナグラさんに最初にお願いした Issue と、そのPR

Issue: https://github.com/coderdojo-japan/coderdojo.jp/issues/259
PR: https://github.com/coderdojo-japan/coderdojo.jp/pull/261

おっ、雰囲気わかって参考になりますー 😸
只今、情報収集と環境構築中... 💦

チェックリスト
私なりにチェックリスト考えてみました。

[x] Ruby/Rails の環境構築

postgresql

[x] rake テストの実行 & rails server で動作確認
[ ] 構造の理解
[ ] 要件の理解

トップページは非表示
統計データとしては残す
統計データの最新のDojo数はカウントしない

[ ] 問題解決の方法を提案
[ ] 実装

進捗報告
今はモデル構造が大体わかったところです。
まだ解析途中ですが、、、

EventHistory と DojoEventService がまだモヤッとしてる
db/dojos.yml  → Dojoモデルの関係は一方通行なのかな？
「統計データ」とは？
DojoEventService モデルと db/dojo_event_service.yml の関係もモヤッと中
spec 読んだり... (RSpec 勉強中 💦 )

(明日中には構造を理解して、実装を考えることができたらいいなー)

仕様について教えてください。

1). coderdojo.jp のトップページからは非表示としつつも、開催したという事実が消えるわけではないので、 2). 統計データとしては残しておきたい。一方、 3). 統計情報の最新の Dojo 数では、カウントしないようにしきたい。

と3) については統計情報画面での数値はどう変化しますか？(以下の理解であってますか？)

「83 / 140 dojos」の部分は変化しない (残しておきたいのでそのまま)
「最新データ」のところの [道場数/開催回数/参加者数] は西成(非表示対象)を集計対象としない
「全国の道場」のところは近畿地方の 31 が 30になる（西成は近畿地区だから）

以下に統計情報の画面キャプチャを貼り付けます。
↓

質問ありがとうございます! 😸 それぞれにお答えしますね ;)

「83 / 140 dojos」の部分は変化しない (残しておきたいのでそのまま)

統計情報の最新の Dojo 数ではカウントしないようにしたいので、削除後の統計情報としては 82 / 139 かなぁと考えています。

「最新データ」のところの [道場数/開催回数/参加者数] は西成(非表示対象)を集計対象としない

僕の書き方がよくなかったですね >< 💦 削除後は道場数を -1 にしつつも、開催したという事実が消えるわけではないので、開催回数と参加者数はDBにある統計データをそのまま使えば良いかなと考えています🤔
一方、誤って別名称のイベントが統計対象とならないよう、統計スクリプトの対象からは外しておくと良さそうですね ;)

「全国の道場」のところは近畿地方の 31 が 30になる（西成は近畿地区だから）

はい! ここの部分は認識の通りです 😸  ✅ ✨
他にも何か気になる点があればお気軽にご連絡ください! 👍 ✨

👀

@nalabjp よろしくお願いします!  👂

(できればその Dojo の存続期間は過去の道場数に反映させたいけど、これは結構難しそうかも...? 😓 )

ジャストアイデアですが、  Dojo has_many Suspensions みたいなモデルにして、Suspension の期間中は  (期限の指定がない場合は実質ずっと) 非表示にするという案が、ふと浮かびました 🤔💭ジャストアイデアですが、とりあえず共有しますね >< 💦

私がお話を聞いて真っ先に思いついたのは 論理削除でした。
昔、論理削除の gem を使ってすんなりと使えた記憶があったので。
ただ、 @nalabjp さんの
https://github.com/coderdojo-japan/coderdojo.jp/issues/310#issuecomment-376120728
を見ると「ふむふむ。なるほど、私の考えは安易なのかも」と思いました。 📝
論理削除以外で Dojo モデルに state的なのを持たせないとなると @yasulab さんアイデアに近いものになるのかなーと。（恐縮ですが私も同じ考えがモヤッと浮かんではいました）
色々と考えましたが、 論理削除 / Suspentinos で状態管理 以外のアイデアが思いつかないです... 😟
あと、コードリーディングについては lib 配下の statistics まわりがまだ完全には把握しきれていない状況です 💦

@yasulab 表示/非表示の制御をする権限はどうなりますか？
想像するに PR をもらって、管理者がそれを許可/拒否するイメージでしょうか？
画面のI/Fをもっていないようなので yaml ファイルでやり取りしている認識です

Dojo モデルと dojos.yaml
DojoEventService モデルと dojo_event_services.yaml

suspentions.yaml が追加されるイメージ!? 🤔

現在は yaml の I/F がありますが、それ以外でもベターな方法があればそちらを採用したいとは考えています 😸 どうやると良さそうですかね? 🤔💭

稀に道場のチャンピオンが PR を送ってくる。って感じなんですかね？ 🤔💭

@naopontan PR だったりメールだったりメッセージだったりですねぇ 📨 メールやメッセージの問い合わせが割合としては多いですが、コミュニティ拡大に伴って対応コストも増加してしまうので、(可能なら) 少しずつ PR に寄せていきたいなと考えています。PR なら内容を確認してマージボタンを押すだけなので ✅💨
メンターが送った PR かチャンピオンが送った PR なのかは今のところ気にしてはいないですね ;)

Suspention モデルの方向で設計を進めていいでしょうか？

現状では Suspension モデル以外にも、僕が https://github.com/coderdojo-japan/coderdojo.jp/issues/310#issuecomment-376125789 でコメントした次の設計も良さそうかなと考えていますが、いかがでしょうか?

例えば CoderDojo Zen API とのスムーズなデータ連携ができるようになったら、 Zen 上で非アクティブに変更したら coderdojo.jp からも非表示になる みたいな実装にも繋がって色々と便利にしていける可能性が広がりそうです 💭

わせが割合としては多いですが、コミュニティ拡大に伴って対応コストも増加してしまうので、(可能なら) 少しずつ PR に寄せていきたいなと考えています。PR なら内容を確認してマージボタンを押すだけなので ✅💨

如何に 「PR に寄せていくか？」 の課題を考えて、「最終判定はPR対応で」 の方が理想っぽいですね 😸

現状では Suspension モデル以外にも、僕が #310 (comment) でコメントした次の実装方針も良さそうかなと考えていますが、いかがでしょうか?

CoderDojo Zen はアクティブ/非アクティブのステータスを持っているのですね。
良さそうですが、 CoderDojo Zen をよく分かっていなく、その場合はもっと工数がかかりそう＆私のスキルでは少々不安です 😓
他にも CoderDojo Zen と連携したい機能がたくさんあるなら Issue 立ててもいいと思います

「最終判定はPR対応で」 の方が理想っぽいですね 😸

いえ、PR 対応より CoderDojo Zen 対応の方が理想的かなと考えています。Zen はすべての Dojo が必ず持っているアカウントで、かつ、主に Foundation 側で活動が Dojo のステータスを定期的にチェックしているので、

Zen で非アクティブになると coderdojo.jp でも非表示になる
Zen で　アクティブになると coderdojo.jp でも　表示される

といった方が、Dojo 運営者からすれば Zen アカウントの状態だけを管理すれば良いため、 Zen のステータスを管理して、かつ、yaml を変更する という運営者側の手間が減りかなと思いました🤔💭僕としても Zen の状況を見てソフトウェアが自動で管理してくれるのであれば、PR の確認＆マージすら不要になるので嬉しいかなと感じています ;)

CoderDojo Zen をよく分かっていなく、その場合はもっと工数がかかりそう＆私のスキルでは少々不安です 😓

これは個人のスキルの課題ですよね 😅 CoderDojo コミュニティ全体にとってよいカタチを目指していきましょう! 🔧💨 例えば「Aに掛かる工数があれば、Aを諦めて、BとCの2つを実装することができ、そちらの方が CoderDojo コミュニティにとってより良い方向につながる」といった提案であれば、もちろんその提案の方が良いと思います 👍✨
今回はリスクをとっていける安全な状況での開発なので (失敗したからといって契約不履行などが発生する状況ではないので)、 @naopontan さんのスキルを弊社の標準的なスキルセットに合わせていく意味でも、 @naopontan さんの現在のコンフォートゾーンに留まらない方が良いかなと思いました 😌
どんどんチャレンジしてきましょう! 💪 ✨

CoderDojo Zenまわりの調査をして、もう少しボリューム感を把握してから方向性を決めましょうかね？

はい! 良いと思います 👍✨ アウトプットの形は必ずしもコードだけではないと思うので、 その試行錯誤の過程さえ可視化されていれば 、メンテナンスや引き継ぎなどの観点から見てもむしろコード量が少ない方が良い場合は多いかなと考えています ;)
cf. より正しいアプローチ、３行のコード - Qiita:Team

その試行錯誤の過程さえ可視化されていれば

具体的には、例えば今回のような見積もりを行う際も、「何をどのように調べていくか」を書き出しながら進めていていくと、周りの人たちもサポートしやすいかなと思います 👀✨
cf. 直近のイベント情報を集計するtaskの追加 #297

了解しました。コードに限らずアウトプットも出していきます 💪

zen.coderdojo.com とその API の調査

zen.coderdojo.com って何だ？ → 本家っぽい
zen.coderdojo.com にアクセス API に関するリンクが無いか一通り見てみる
見当たらないので zen coderdojo api でググってみる。 https://zen.coderdojo.com/documentation#/api を発見
アカウントがあると情報量が増えそうなのでアカウント作ってみる ← 今ここ

簡単なサンプルと sandbox 的な場所があれば実際に動かしてみたほうが理解早そうだけど、あるかなー？ って感じで調査中

私が Issue 立ててもいいのかな？立てちゃいますね 📝

CoderDojo Nishinari Osakaについてご報告をいたします。2016年８月よりスタートして、これまで月１回のペースで開催してきましたが、３月より活動を一旦休止することなりました。そして、名称を改め今後は「山王プログラミング教室」として、2018年５月より月１回ペースでの開催を予定しております。

一旦休止 とありますが、このケースはどちらかというと 廃止 扱いですよね?
#310 のケースは再開の見込みがあるので休止でいいと思います。
休止と廃止は違いますね。確か zen 上でも deleted がありました。
西成に関しては zen 上ではどういう扱いになるんだろ... 🤔

@yasulab
お願いがあります。 @yasulab が持っている zen の道場でテスト用のを教えてもらえますか？
そして、その道場に「チャンピオンとして参加」していいですか？
道場の編集画面が見れるか試したいです。
（道場の登録者とチャンピオンは権限が別物かもしれませんが...）

招待や参加ができるのは verified された Dojo のみなので、Pending 中の Dojo には仕様上招待したり参加することはできないですね >< 💦
Verified されている CoderDojo Okinawa はもともと僕が立ち上げた Dojo を引き継いでいる関係で、僕もチャンピオン権限を持っていますが、現チャンピオンは比嘉さんなので、もし Okinawa の権限を使う場合は比嘉さんに一度問い合わせておくと良さそうです🤔💭

ありがとうございます。
比嘉さんに問い合わせてみますね。あと、やっぱりテスト用の道場があったほうがやりやすいので CoderDojo Global Slack 等で「テスト用の道場を作ってもよいか？」を質問してみますね。
今後も考えると、あったほうがやりやすいので。

ですね! よろしくお願いします 😸

宜野湾の山口さんにお願いして「チャンピオンとして参加」させてもらいました。
https://zen.coderdojo.com/dojos/jp/ri4-ben3-chong1-sheng2-xian4-yi2-ye3-wan1-shi4/ginowan-okinawa-okigin-s-p-o
そうすると無事、道場の編集権限がもらえて画面が見えるようになりました 🎉

（本番データで、しかも本当の管理者ではないので勝手にいじることはしませんが、やっぱりあると助かる。Thanks 山口さん)

おぉ! すごい! 🎉✨
今回の開発はオープンに行なっているので、こちらの Issue で開発・議論を進めていることを山口さんにお伝えしても良いかもしれないですね 😸

山口さんには伝え済みです。感謝です  😄  このURLも教えてますー 🔗
後から追加されたチャンピオンでも同権限が付与されるっぽい事がわかったのは収穫でした。

さすがです!! 👍🆒✨

Fixed by https://github.com/coderdojo-japan/coderdojo.jp/commit/b8a6027d8d1da801bdc49afbdcf664ee3a217245

authors: nalabjp naopontan yasulab


text:
updated instructors and host

Added instructor names in alphabetical order of family name
Added host name

Should we actually make "Coordinators" for h4 level? Or put them together with "Host"??

I will merge this, but we can modify later if necessary :)

source: gharchive/pull-request

license_type: permissive

license_source: github-api


text:
Inexplicable characters

I used gulp-file-include simply with browserSync in my project.
The code is like that:
gulp.task('fileinclude', function() {   gulp.src('./html/*.html')     .pipe(plugins.fileInclude({       prefix: '@@',       basepath: './html/'     }))     .pipe(gulp.dest('./'))     .pipe(browserSync.stream()); });
It works! but generated a strange characters,  .
And it caused a blank line.

Having the same issue. It is this character being inserted and causing the issue. I've worked around it by piping into gulp-replace after my file include to strip these (and a few other related) chars with a bit of regex.
gulp.src("whatever")
      .pipe(fileInclude({prefix: "@@", basepath: '@file'}))
      .pipe(replace(/[\u200B-\u200D\uFEFF]/g, ""))
      .pipe(gulp.dest("wherever));

Nothing particularly special going on in my source HTML files, I'm only using @@include, although some are nested (e.g. an included file includes a file that includes a file).

i got the reason! it caused by the file encoding. remove the file BOM will fixed it.

I just ran across the same problem after upgrading from 1.0. I found a Visual Studio 2017 extension to remove BOM characters for me, but this should be filed as a bug, as I can think of no use case for someone wanting extra BOM headers to be included.

A fix to this was merged a couple of years ago: https://github.com/coderhaoxin/gulp-file-include/pull/16
But apparently it has regressed in this commit: https://github.com/coderhaoxin/gulp-file-include/commit/069dd6cf8d575737f6f7d026c31fd763fcf03446

source: gharchive/issue

authors: MSMcBain acutus richardtallent yuuk

repo: coderhaoxin/gulp-file-include

license: MIT


text:
modifying maximum value of yScale doesn't work

Hi!
First of all thank you for such a great package! Seems like you're pretty busy.. but using plain d3 scaling of y axis doesn't work :[
The graph I get is this:

and my code for the line graph is this:
        <LineChart
          data={uwd}
          width={1600}
          height={500}
          margin={{top: 10, bottom: 50, left: 50, right: 20}}
          yAxis={{outerTickSize: 0.1, label: ""}}
          yScale={d3.scale.linear().domain([0, 1]).range([0, 1])}
        />

My data uwd is usually between 0 and 1, but I want my y axis to always be between 0 and 1 no matter the range of the data. I tried everything related to linear scaling and they all return the same collapsed graph.. Any ideas??

The range function will take the pixel values for height range. So if your graph is 300 pixel high -
d3.scale.linear().domain([0, 1]).range([300, 0])

@mukeshsoni thanks for helping out!
@dltmd6262 thank you! did that fix your problem?

wow sorry guys for such a late reply that actually worked! Thank you so much :]

Great it worked out!

authors: codesuki dltmd6262 mukeshsoni


text:
Logging in after logout does not ask for authentication

When a user logs-out, then tries to log back in, there is no authentication form.
Expected Behavior

An authentication form should be presented.
Current Behavior

The website allows the user to log straight back in without authentication.
Possible Solution

Logging out should destroy all login tokens and cookies. And an authentication form should be presented.
Steps to Reproduce (for bugs)

Log into codetriage.com (github, 2FA)
Click "Sign Out" button
It appears the user is logged out.
Click "Log In" button
The user is logged straight back in without entering any authentication details.

This appears to happen even after the user has closed the browser, then re-opened it.
Context

I believe this is a  security/privacy issue. Logging out should destroy all tokens and cookies.
Your Environment

Version used: current
Browser Name and version: Opera 70.0.3728, Firefox 80.0.1, Microsoft Edge 85.0.564
Operating System and version (desktop or mobile): Windows 10 (64bit) Desktop
Link to your project:

This is the Oauth flow. That's github's decision to show you a "do you want to grant permission" or not. You've already granted permission so they return quickly. This is how all github Oauth flows work.

repo: codetriage/CodeTriage


text:
Allow creating image files as part of scrolled db seed

Allow specifying download urls for images and rewrite file references
from names to perma ids.
REDMINE-17301

Coverage increased (+0.0001%) to 99.02% when pulling bfe4faf65b7e754373e0d0689859538291d29520 on tf:scrolled-image-files-db-seeds into ef8039e542c07b606930292037d366c1e1c05fba on codevise:master.

authors: coveralls tf

repo: codevise/pageflow

license: mit

license_source: bigquery


text:
Add reset to defaults button to options

Fixes #403

This change is

Reviewed 9 of 9 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

include/util/settings/hexedit.h, line 27 at r1 (raw file):

int columnsNumber();
void setColumnsNumber(int number);
bool getDefaultResizeColumnsToWindowWidth();

Could you please separate same settings into groups with blank lines?

include/util/settings/theme.h, line 32 at r1 (raw file):

void setCurrentTheme(const QString& theme);
QStringList availableThemes();
const QString& getDefaultTheme();

ditto (grouping)

src/ui/dialogs/optionsdialog.cc, line 75 at r1 (raw file):

void OptionsDialog::resetToDefaults() {
  Qt::CheckState checkState = Qt::Unchecked;

checkState -> check_state

src/ui/dialogs/optionsdialog.cc, line 75 at r1 (raw file):

void OptionsDialog::resetToDefaults() {
  Qt::CheckState checkState = Qt::Unchecked;

Use a more meaningful name (check state of what? this function does stuff on many different things)

src/ui/dialogs/optionsdialog.cc, line 77 at r1 (raw file):

  Qt::CheckState checkState = Qt::Unchecked;

  if (util::settings::hexedit::getDefaultResizeColumnsToWindowWidth()) {

Use ?: for this.

src/ui/dialogs/optionsdialog.cc, line 83 at r1 (raw file):

  ui->colorsBox->setCurrentText(util::settings::theme::getDefaultTheme());

  ui->hexColumnsAutoCheckBox->setCheckState(checkState);

Why this is interleaved with unrelated colorsBox->setCurrentText?

src/util/settings/theme.cc, line 28 at r1 (raw file):

namespace theme {

static const QString darkThemeStr = "dark";

darkThemeStr -> g_dark_theme_str

src/util/settings/theme.cc, line 28 at r1 (raw file):

namespace theme {

static const QString darkThemeStr = "dark";

Don't use non-POD globals.

src/util/settings/visualization.cc, line 29 at r1 (raw file):

static const QColor defaultColorBegin_ = QColor(255, 127, 0);
static const QColor defaultColorEnd_ = QColor(0, 127, 255);

Don't use non-POD globals. Also, it should be initialized and named this way: g_default_color_end{255, 127, 0}.

Comments from Reviewable

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

src/ui/dialogs/optionsdialog.cc, line 75 at r1 (raw file):

resposive
Typo

Also, responsive seems quite confusing to me, maybe auto_columns_checked would be better?

Comments from Reviewable

Reviewed 1 of 1 files at r3.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable

Review status: :shipit: all files reviewed at latest revision, all discussions resolved, all commit checks successful.

a discussion (no related file):
One more thing I've missed: Why the reset button is highlighted by default? It's also a default action for Enter when this dialog opens. IMO this doesn't make much sense.

Comments from Reviewable

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

src/ui/dialogs/optionsdialog.cc, line 61 at r4 (raw file):

  setTabOrder(ui->resetToDefaultsButton, apply_button);

  ui->resetToDefaultsButton->setAutoDefault(true);

Didn't you set this property to false in the .ui file?

Comments from Reviewable

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

Comments from Reviewable

authors: boryspoplawski mkow

repo: codilime/veles


text:
Write a C program to add two matrices

Description
Write a C program to add two matrices
Matrix addition is the process of adding two matrices by adding the corresponding elements of the two matrices. Two matrices must have an equal number of rows and columns to be added.
Input  :
1 2 3
4 5 6
7 8 9

1 2 3
4 5 6
7 8 9

Output :
2 4 6
8 10 12
14 16 18

How to contribute

Save the solution in program/AddTwoMatrices.c file
Add AddTwoMatrices.c file in add-two-matrices folder

i am new to open source , can u assign this to me

!assign

repo: codinasion/program


text:
small tweaks

update version info for new release
fix arduino.h to Arduino.h (for case-sensitive systems)
add info about filename has to end with MP3 or WAV

@codingABI please accept and add a new release v1.0.2

yeah i know its a wildcard :-)
and i think your correction is very good!
i have added it.
and also did a quick experiment on the first topic.
with g_audio.playFileByName("/BELL*MP3");
and these songs available:

test1

BELL.mp3
BELL0.mp3
BELL0.mp3  was played.

test2

BELL.mp3
BELL1.mp3
BELL.mp3  was played.

I will update the PDF docu and make a new realase with you changes in Github soon

1.0.2 is released now. I had to change some linebreaks from your comments because doxygen, that generates the PDF docu, makes i little bit trouble

In your "quick experiment on the first Topic" the order in which the first file matches seems not to be in alphabetic order.
Perhaps it is "copy order" (=First audio file copied to the drive will be found first, second copied will be found next and so on)? The DFR0534 uses "copy order" already in the function playFileByNumber, playPrevious, playNext….
Could you try to delete all files on the DFR0534 and copy BELL3.mp3 first to the DFR0534 and than copy as second file BELL.mp3 and then BELL1.mp3?
Which file is played with g_audio.playFileByName("/BELL*MP3") ?
If it is BELL1.mp3, is seems that the DFR0534 searches the files when using wildcards in function playFileByName also in "copy order" (and I would add these information to the code comments)
Thanks for you input

i will du the tests.

i just created some small test-files
https://github.com/s-light/DFR0534/tree/playFileByName-test_order/assets/test_sounds
and copied them one after each other in this order to the board:

120bpm 16bars 96kbps.mp3 32sec - 375,6k - as bell3-mp3
240bpm 16bars 96kbps.mp3 16sec -  188,3k - as bell.mp3
300bpm 4bars 96kbps.mp3 3s - 38,3k - as bell1.mp3

and copied together this test-sketch
https://github.com/s-light/DFR0534/blob/playFileByName-test_order/examples/playFileByName_order_test/playFileByName_order_test.ino
the output is
23:00:27.862 -> Ready drives: FLASH
23:00:27.927 -> Current playing drive: FLASH
23:00:27.958 -> Total files: 3
23:00:27.958 -> Total files in directory: 3
23:00:27.958 -> First file: 1
23:00:27.958 -> play /BELL*MP3
23:00:28.119 -> fileNr: 1 name: BELL3   MP3 status: Playing
23:00:28.408 -> fileNr: 1 name: BELL3   MP3 status: Playing
23:00:28.698 -> fileNr: 1 name: BELL3   MP3 status: Playing
....
23:00:59.384 -> fileNr: 1 name: BELL3   MP3 status: Playing
23:00:59.705 -> fileNr: 1 name: BELL3   MP3 status: Playing
23:00:59.995 -> fileNr: -- name:  status: Unknown
23:01:00.548 -> fileNr: 1 name: BELL3   MP3 status: Stopped
23:01:00.843 -> fileNr: -- name: BELL3   MP3 status: Stopped
23:01:01.139 -> fileNr: 1 name: BELL3   MP3 status: Stopped
23:01:01.433 -> fileNr: 1 name: BELL3   MP3 status: Stopped

so your assumption that it is the copy order is correct.
i thin  it searches the index table just in order (and that is the copy order) ....
i have tweaked the description a little bit to reflect the findings.

authors: codingABI s-light


text:
Please update the settings file, it kills a lot of time

in the readme file,
'rest_framework_jwt.authentication.JSONWebAuthentication',
will be now
'rest_framework_jwt.authentication.JSONWebTokenAuthentication', .
I have spent a lot of time figuring out why the project was showing errors.

I found that it was already in read me

repo: codingforentrepreneurs/REST-API-Basics


text:
Duda con resultado del punto 21 E22_P10

Buenas tardes compañeros, alguien me puede ayudar con esto por favor?
En el punto #21 de este taller el bot me calfica con error según entiendo porque estoy poniendo "dentro del rango" y debe ser "Dentro del rango" es decir con mayúscula, pero en realidad lo tengo tal cual con mayúscula, de pronto a alguien más le pasó?
Adjunto evidencia.

Si alguien me puede ayudar se lo agradezco.

Hola @JessiGM, creo que lo que pide el bot es ponerlo en minúscula: 'dentro del rango' y 'fuera del rango'. Al menos a mi me lo calificó bien así la semana pasada, no sé si esto cambió. Espero te ayude.

Hola Juli, si muchas gracias, eso hice y si me sirvio.

authors: JessiGM juli-amezquita

repo: codingupmyfuture/bootcampduckdb


text:
php update v5.6.12

current stable

luizbills, it also needs to be changed in php5_apache2.rb and php5_ext.rb. There may be more but those were the two places I saw, when I submitted my pull request.

Thank you. I'll change.

repo: codio/boxparts


text:
🛑 server is down

In 3f5d587, server ($API_ENDPOINT) was down:

HTTP code: 0
Response time: 0 ms

Resolved: server is back up in d696cb2.


text:
RFC: Use SCSS modules

I would like to hear opinions about switching to SCSS modules.
They're exactly like CSS ones just written in SCSS.
I personally think they would allow for much cleaner styling.
Let me know what you think!
CC: @strdr4605

I understand the benefit of SCSS with nesting and &, so I probably am for it.
But I don't have much experience with it and would not use many features.
Example: I would stick to CSS variables.
But nesting styling would improve DX.

That's completely fine!
I'm pretty sure we can leverage PostCSS for nesting anyway

https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-nesting


text:
🛑 Libreddit is down

In 204b85d, Libreddit (https://libreddit0.herokuapp.com) was down:

HTTP code: 503
Response time: 649 ms

Resolved: Libreddit is back up in cae099e.

repo: coffeefargo/sitestatus


text:
Ability to zoom in on benchmarking plots

I ran across this plot

and wanted to zoom in on the y-axis to manually filter out the large outlier point. It'd be great if we could select a specific region of these plots to zoom in

For some reason, this was not closed when linked to the PR that was merged. So closing, as this https://github.com/coiled/coiled-runtime/pull/421 was merged.

authors: jrbourbeau ncclementi

repo: coiled/coiled-runtime


text:
perf: speed up monetizationstart

In ilp-protocol-stream, Streams emit "outgoing_money" events before connection.totalDelivered is updated. This resulted in the extension ignoring the first outgoing_money event, since it mistakenly assumed that no money was delivered.
In my tests, this shortened the time-to-monetizationstart from 2500-2800ms down to 500-700ms.

Is this speedup also after applying optimizations like exchange rate and packet size hints or have those not gone in yet? I would be curious if they can get the time down even further

It's without, I think. I tested enabling them and they don't make as much of a different as I expected, so I'm actually looking into that next.

Is this fix applicable to the oauth script also? right now the two have different modules that send on streams

I didn't think of that. Yes, I think it is applicable, I'll update the PR.

@sentientwaffle
I can't actually replicate your TTS reductions here in Cambodia.
Were you testing against a local server at all ?

@sentientwaffle
I replicated against a local ilp-plugin-mini-accounts server

@sublimator Testing against a local server may not work because the packets would arrive so quickly that the delay may be too small to notice. I was testing against coil's staging server.

actually, the delay was noticeable on local server if that means anything
to you!?
will PM you to discuss soon

authors: sentientwaffle sharafian sublimator

repo: coilhq/web-monetization-projects


text:
coinbase.wallet.error.ParamRequiredError: APIError(id=param_required): Required parameter missing: to

Hi!
I get this following error message:
coinbase.wallet.error.ParamRequiredError: APIError(id=param_required): Required parameter missing: to
even though I have provided all the required parameters as defined in your documentation:
client.transfer_money(
    account_id,
    to="<coinbase_account_id>",
    amount="1",
    currency="BTC")

I have read all the documentation from coinbase: https://developers.coinbase.com/api/v2#errors, as well as searched through other forums and I haven't found any fix to it, only that someone else has also the same issue: https://bitgetter.pro/2017/05/27/getting-errors-when-sending-funds/
Any ideas?
Cheers

Hey @awasunyin! Sorry for the delay in response.
I'm not able to reproduce this issue with the latest version of this package (2.1.0 at time of writing).
If you're still seeing this issue, can you open a ticket with our support team so they can investigate further?
Thanks!

authors: awasunyin sds

repo: coinbase/coinbase-python


text:
[WL refactor] simplify types for WalletLink messages

Summary

deprecate WalletLinkResponseEventData
derive Web3Method from Web3Request, and remove the legacy one
remove scanQRCode type

How did you test your changes?

unit tests

🟡 Heimdall Review Status

Requirement
Status
More Info

Reviews

🟡
0/1

Denominator calculation

Show calculation

1 if user is bot
0

1 if user is external
0

From .codeflow.yml

1

Additional review requirements

Show calculation

Max
0

0

From CODEOWNERS

0

Global minimum
0

Max

1

1

1 if commit is unverified
0

Sum
1

authors: bangtoven cb-heimdall

repo: coinbase/coinbase-wallet-sdk


text:
Add blocking and pubsub reserved connections

Sidekiq enterprise and pro workers require the use of two categories of commands that redisbetween does not currently support:

subscribe,unsubscribe (and psubscribe/punsubscribe) is used for live config changes to sidekiq workers (such as pausing work for a given a queue)
brpoplpush is used as part of Sidekiq's reliable fetch mechanism to atomically pop and push jobs from queues to working queues in redis. The blocking part of this command is simply to add a timeout to prevent CPU saturation as Sidekiq polls the queue for new jobs to fetch.

Both of these commands differ from the current round trip style behavior of redisbetween, which is generally treated in a first come first serve manner. Both pubsub and blocking commands require connections in the redisbetween connection pool to be reserved, indefinitely if need be.
This feature branch implements two new classes of command handlers for redisbetween (versus the current round trip handler): subscription and blocker, both of which implement a reservation interface. Both implementations overlap a good bit, where incoming commands from local connections are grouped according to the channels they subscribe to or the source list that they are blocking on. Reservations still use connections from the main connection pool, but are limited via configuration. Reserved connections are returned to the pool when all local clients have unsubsribed or when the queue of blocking commands for a given blocker reservation has been emptied.
The primary difference between subscription and blocker is how messages are read from the upstream and then sent to the locals. subscription will subscribe to the appropriate channel and then listen for newly published messages, broadcasting any received message to all locals currently subscribed. blocker will form a queue of all incoming commands for the same source and send each command to the upstream in sequence, responding to the corresponding local once the upstream is unblocked or times out, and then moving to the next command in the queue.
blocker:

subscription:

Notes for Reviewing
I recognize this format is a bit difficult for review when the discrete commit history is omitted. Sorry in advance with respect to that. Here are the primary concerns and areas to look at as a guide to the PR:

Implementation and tracking of reservations in handlers/reservation.go and across proxy/proxy.go and handlers/command.go.
Implementation of subscriptions (it's the simpler of the two), noting the subscribe/unsubscribe mechanisms, broadcasting, and thread safety.
Implementation of blockers, noting the enqueue/dequeue mechanisms, timeout adjustments, and thread safety.
Configuration constraints and enforcements in config/config.go.
Signal handling for quit/shutdown/kill.
Tests and the rest.

@dustMason - you may be interested in this given some of our past conversations.

Hi 👋 thanks for the ping. Haven't had the time to look deeply yet, but do I understand correctly that for blocking / subscription commands, redisbetween will open and maintain a single connection to the upstream per client? eg, if multiple clients are all blocking on the same key via BRPOPLPUSH, redisbetween will maintain an upstream connection for each of them (up to the max)?
If that's the case, then is redisbetween performing any connection pooling? What's the added benefit of using redisbetween to proxy these blocking commands? Seems like we'd want a way to round-robin these blocking messages among connected clients while maintaining a single upstream connection. Likewise with subscriptions, we'd want to broadcast the same message to clients listening to the same key while holding one upstream connection. Apologies if this is already how it works and I'm misreading :)

@dustMason not quite (thankfully). In both the subscription and blocking approaches, we group by the command in some way.
For subscriptions, we reserve a single upstream connection for any incoming local subscription commands that subscribe to the same channel (i.e. if we have 25 local connections all issuing PSUBSCRIBE sidekiq-config, we will group them all on the same upstream connection, keyed by sidekiq-config). We issue the subscribe once to the upstream and then broadcast published messages to all the locals that are tracked on the reservation. We return the reserved connection to the pool if all locals have unsubscribed.
Similarly for blocking commands, we reserve a single upstream connection for all local commands that share the same source argument of a BRPOPLPUSH command (i.e. if we have 25 local connections all issuing BRPOPLPUSH default-queue working-queue 1, we will group them all on the same upstream connection, keyed by default-queue). At this point, only BRPOPLPUSH is supported but adding others would not be too difficult. This implementation differs from subscriptions in that commands are tracked with their local connection in a queue on the reservation. We pop off the queue, send it to the upstream (letting it block as long as specified) and then round tripping the response to the corresponding local. We then move onto the next command in the queue, adjusting specified timeouts accordingly (for the amount of time already spent in the queue). We return the reserved connection to the pool if there are no more blocking commands in the queue.

Ah, thanks for the explanation, that makes sense. Nice solution, well done 🙌

This Pull Request was merged without enough reviews
Please go here to review and +1

authors: cb-heimdall dustMason mbeasley

repo: coinbase/redisbetween


text:
Strict json

closes #22

Error message change to "invalid JSON object or array" will be better.

@fengmk2  fixed

+1

co-body@2.0.0

repo: cojs/co-body


text:
Coerce bigint throws TypeError instead of ZodError

Consider the following code:
var zod = require("zod")

const testSchema = (schema, invalidData) => {
   try {
      schema.parse(invalidData);
   } catch (e) {
       if (e instanceof zod.ZodError) {
          console.log("throws ZodError");
       } else {
          console.log(`throws other error (${e.message})`);
       }
   }
}

console.log("case 1");
testSchema(zod.object({
   foo: zod.string(),
}), {}); // throws ZodError

console.log("case 2");
testSchema(zod.object({
   foo: zod.coerce.number()
}), {
  foo: "invalid"
}); // throws ZodError

console.log("case 3");
testSchema(zod.object({
   foo: zod.coerce.bigint(),
}), {}); // throws other error (Cannot convert undefined to a BigInt)

console.log("case 4");
testSchema(zod.object({
   foo: zod.coerce.bigint(),
}), { foo: "invalid" }); // throws other error (Cannot convert invalid to a BigInt)

(Playground: https://runkit.com/embed/bk8jnwfz1tkq)
I would expect that all cases would throw a ZodError, but it seems as BigInt throws a TypeError instead.
Tested with zod 3.20.2 on node 16.18
This is a bug, right?

Everything seems to be working fine to me.
const schema = z.coerce.bigint()
console.log( schema.parse( 42 ) ) // 42n
console.log( BigInt( 42 ) ) // 42n

try {
    schema.parse( undefined )
} catch ( error ) {
    console.error( error )
    // TypeError: Cannot convert undefined to a BigInt
}

try {
    BigInt( undefined )
} catch ( error ) {
    console.error( error )
    // TypeError: Cannot convert undefined to a BigInt
}

I might misunderstand the usage for "coerce", I'm using zod for validating the input in a REST endpoint. If the user forgets to send a value in an object (which I'm planning to check against my database which has id:s of type bigint), I want to handle that in the same way as all my other validation code, i.e throwing a ZodError with zod and catch that in an error handler. It's a bit unexpected IMO that number and bigint doesn't throw the same error-type when they can't parse the provided value. What's the motivation behind that?

perhaps the docs about coerce would help.
https://github.com/colinhacks/zod#coercion-for-primitives

repo: colinhacks/zod


text:
Add E.164 format validation for strings

Hello, following the previous discussion, I added validation for the E.164 format on strings using a modified regex from this article.  I removed support for spaces as those don't seem to be permitted. The validation could be further enhanced by prohibiting 0 as the first value since country codes start with 1.
There is an alternative regular expression from the Twilio docs for E.164 numbers. This regular expression permits very short E.164 numbers. It could be used in tandem with the existing string validations like min and max. This would give users the option to adapt the number length further, which seems to be necessary in some instances, according to this stack overflow post.
Cheers
Thank you for your contribution to our project! Before submitting your pull request, please ensure the following:

[x] Your code changes are well-documented.
[x] You have tested your changes.
[x] You have updated any relevant documentation.

This seems good to me. Is there a specific reason this is still a draft PR? My plan is to merge this into v4. String validations like uuid, etc are going to be handled quite differently in Zod 4 but I'm happy to merge this as a starting point before I start the refactor.

Hello, apologies for the delay. I first needed to further investigate in order to be able to add the pr description.
Cheers

Hello, added a section on E.164 to both Readme files.


text:
fix: Add description to ProcessedCreateParams

c.c. #764

Yep, seems to be an oversight. Thanks!

authors: colinhacks equt


text:
default.config.js: Added security.loginOnRegistration & security.loginOnPasswordReset

Added default values for security.loginOnRegistration & security.loginOnPasswordReset to default.config.js in order to document these settings.

You might prefer to set the defaults to false.

Thank you very much for the pull request. I am going to leave it 'false' in order to not cause breaking changes. It is easier for me to do this manually than merge only the first commit on the PR.

authors: colinskow tohagan

repo: colinskow/superlogin


text:
Discuss/remove writer problem new document

DRAFT FOR DISCUSSION
Exploration of adding some details to concept discussed on call; alternative to solving "check each writer at each change point."

No longer relevant

repo: collabswarm/collabswarm


text:
First impression and improvements-issues on documentation

Hi @collerek, thank you for sharing this effort with the rest of us, I have just started experimenting with ormar. I have managed to run your demo with some problems see below, and I have also managed to test it successfully in a couple of alembic migrations .

OS: Ubuntu 18.04
python version: 3.8.6
ormar version: 0.7.3
database backend: sqlite and postgresql

Quick start demo
tracks = await Track.objects.filter(album__name="Fantasies").all()
assert len(tracks) == 2

tracks = await Track.objects.filter(album__name__iexact="fantasies").all()
assert len(tracks) == 2

In the documentation, you are missing await keywords and the ".all()" at the end. Apart from that I managed to run it without any problem, excluding the await peculiarities (read below).
Problems with await
I am a newcomer in async/await use but I noticed that in python 3.8.6, you cannot have await outside function. Is that right ? So for this bulk_create example from the documentation I had to  do
import asyncio

async def main():
    # create multiple instances at once with bulk_create
    await ToDo.objects.bulk_create(
        [
            ToDo(text="Buy the groceries."),
            ToDo(text="Call Mum.", completed=True),
            ToDo(text="Send invoices.", completed=True),
        ]
    )

if __name__ == '__main__':
    asyncio.run(main())

In the same example I noticed that you haven't connected to the database and/or you didn't create an engine.
But It needs
engine = create_engine("sqlite:///db.sqlite")
...

metadata.create_all(engine)

otherwise it results in error, unless the database and the tables have been created. Also in SQLite it seems you don't need to connect using e.g. database.connect() command but I tried a similar example in postgresql when I created the tables and I had to use connect() otherwise you get the following error.
 File "postgres.py", line 148, in acquire
    assert self._database._pool is not None, "DatabaseBackend is not running"
AssertionError: DatabaseBackend is not running

Process finished with exit code 1

OK that is all I wanted to report for your interest and the interest of those newcomers like me that are starting using ormar. Thank you again for your kindness to share your code with all of us.
I am planning to use ormar to build a large scale web app that is based on microservices architecture. I would like to ask you whether you have used it in production for your projects or you know others that have used it successfully ?

@athanhat Thanks for catching that up in the quickstart! :) Already fixed, will publish with next release.
Yes the examples especially for query calls have only core logic extracted to not clutter the view. If I would construct models in each example, connect to db, create it etc. each example will become much bigger and a lot of repetition would be needed.
Async
Yes the whole async/await ecosystem cannot be used outside of a function in any version of python since it was introduced. The whole asyncio module uses an event loop to achieve concurrency and you can only schedule a function for an execution. Whole async/await is a syntactic sugar around coroutines/futures on which asyncio is build. Since Guido was always against introducing new keywords it used to be really ugly. You had to advance it manually with next() call, use yield from syntax and return values were returned in exceptions etc. Before you had to do it (manage the coroutines) in your own code, later it was all abstracted away (still happens internally in asyncio) but this "limitation" remains - python is not concurrent by design and if you want to use concurrent features you need to explicitly use it. You can await functions in some python interpreters (like ipython) but under the hood they do exactly what you did -> wrap it up in asyncio call to run it synchronously. When you await a function outside of event loop you just receive the future that yet has to be scheduled/executed, not the result of the function call. All this is implied just by use of await/async in ormar, cause there is no other way.
You either have to do it yourself, or other libraries like fastapi do it for you. In tests you can also use pytest-asyncio to mark your functions as @pytest.mark.asyncio and pytest will do it for you.
If you want more real life examples than in documentation you can see tests folder. Since they actually have to create and connect to database in most of tests, yet remember that those are tests and not all solutions are suitable to be used in real life.
Database creation / connection
Yes, if you use it outside of a other framework where you connect your database, you need to do it on your own. There are disclaimers about connecting to db and creation of db but only in the fastapi section of the docs, probably should be more specific in other sections. I'm working on dividing/cleanup of the docs as the ormar grew by quite a lot and it's hard to find some information.
If you use fastapi or other web framework you should probably connect there -> in middleware or in startup/shutdown events, to connect once per app start or once per request depending on the framework used. For fastapi a sample events are shown in fastapi section of the docs.
Probably should also include more fully-contained examples in the docs that can run "as is".
Production readiness
Do I think ormar is production ready - short answer - not yet. Cause I believe labeling as "production-ready" requires satisfying a certain number of criteria in regard of testing, features, documentation, api stability etc.
Features
Do I use it in production - yes, partially. For a long time I couldn't find async orm that would suit my needs so I had to hack around pydantic internals and work around sqlalchemy core limitations, that become a technical debt in the long run. That led to creation of ormar and I do intend to use it in production to completely replace my current solution but for that I need some other features that are not yet present, namely:

model inheritance (at least mixins and concrete model inheritance - more on this in #67) - in development
possibility to declare fields on through models in many-to-many relations - to be added
possibility to process forward references (i.e. to create self-refering models) - to be added.

If the current scope of ormar satisfies your needs it's for you to decide. I am always happy to add new features and/or accept PRs - that's the whole point of open source software :)
Api stability
As for the api stability whenever I can I introduce changes in backward compatible changes. Ormar also follows the release numeration that breaking changes bump the major number, other changes and fixes bump minor number. (0.5.2 -> 0.6.0 - breaking, 0.5.2 -> 0.5.3 - non breaking). Saying that the breaking changes can happen (and probably will) but will be reflected in change of version. You should pin the version in your project requirements (which is a best practice anyway).
Documentation
As you already discovered the docs also need refinement, clarification and some additions. Moreover since api is still changing there are no docstrings filled and api documentation is not published - which makes it harder for developers to modify ormar itself. (to be added in #69 ).
Tests
Although the project is build from scratch with intention to keep 100% test coverage (right now around 160 test) for sure not all paths are sufficiently tested and I intend to improve it over time. The bigger the community around ormar the easier it will be to catch bugs and find contributors, that's why I always ask people to consider starring the repo and sharing the news around it.
Summary
Writing all that I saw a lot of libraries that do not meet those requirements marked as production-ready ;)
Also I intend to both develop/ maintain this project as I need this for my own, and will use it fully in production as soon as missing features will be ready.
But if that suits your needs is for you to decide.
As I said all contributions are welcome :)

Great, many thanks for the extensive reply, I'll try to keep you informed on how I am using ormar and the issues I have...

authors: athanhat collerek

repo: collerek/ormar


text:
Allow passing strings to relations and processing ForwardRefs

Allow to pass string value with model name to relation fields and processing it later as a ForwardRefs as pydantic does it.
It would allow to create self-referencing models etc.

Solved in #87

Solved in #87


text:
Ruby 2.4.1 segfault

I'm getting sporadic crashes in Ruby. To reproduce:

macOS 10.12.6 or Linux (Travis Trusty environment for example)
Ruby 2.4.1
SimpleCov 0.14.1 or 0.15.0 or the current master branch

Unfortunately the crashes have different backtraces each time.
The segfault only occurs if simplecov is started, it does not occur if the gem is only required.
The bracktraces range from rspec to simplecov itself.
This Travis build's failed jobs has some examples that were using Coveralls, but I got the same results locally with only SimpleCov.
Some examples of crash logs from my Mac using only SimpleCov.

:wave:
First thanks for the good bug report and the time and research you put into this.
Honestly, I don't know what to do though :man_shrugging:
Have you reported this to ruby core? Feel free to CC me in. Simplecov isn't using any C-extensions or something of the like that'd cause a segfault. We use the standard library coverage tool (which of course is implemented in C though). My fear would be that it's something in ruby itself that changed (coverage hasn't changed in a while) and causes these errors now in that specific combination.
You could try it by just running the ruby standard library coverage to see if that's the culprit.
Otherwise, I guess we'd have to find a "good" simplecov version and bisect to find where we do something so hardcore it crashes ruby.
Either way, both would be ruby bugs imo because no ruby code should crash the ruby interpreter :)

I agree, this is basically an MRI issue anyway, regardless of how I reproduce it. I can also confirm that running it with just Coverage reproduces this issue, so it's definitely not a SimpleCov issue.
I'm working to boil it down to a reproducible test case, and I'll open something with the MRI team.

This seems to be my issue, and it looks like a fix will be included in 2.4.2. https://bugs.ruby-lang.org/issues/13305

Thanks a lot, looking forward to the fix. Although kind of scary that it lived in 2.4 for that long :scream:

authors: PragTob RobinDaugherty

repo: colszowka/simplecov


text:
Filter directories outside SimpleCov.root that have it as a prefix

Given project directory /foo/app and BUNDLE_PATH /foo/app_cache,
ensure the latter is filtered out correctly by the default root filter,
since it's outside of SimpleCov.root.
Otherwise you'll see all those gem files in your coverage report, with
nonsensical paths like ._cache/ruby/2.4.0/gems..., unless you add a
nonsensical /^_cache/ filter
Also add some test coverage for the default filters

Paths are hard, I fixed essentially the same bug in bundler a while back 😂  ... https://github.com/bundler/bundler/pull/4715


text:
Can't compile JavaFX projects (regression?)

More precisely, since commit a1247748926f9af95a2698de4692d3c167b8775a, a simple JavaFX project cannot compile and log the following errors:
[info] Compiling 1 Java source to ./out/javafx/compile/dest/classes ...
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by sbt.internal.inc.javac.DiagnosticsReporter$PositionImpl$ (file:/~/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-sbt/zinc-compile-core_2.12/1.2.5/zinc-compile-core_2.12-1.2.5.jar) to field com.sun.tools.javac.api.ClientCodeWrapper$DiagnosticSourceUnwrapper.d
WARNING: Please consider reporting this to the maintainers of sbt.internal.inc.javac.DiagnosticsReporter$PositionImpl$
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
[error] ./javafx/src/ButtonApp.java:1:1: package javafx.application does not exist
[error] import javafx.application.Application;
[error] ./javafx/src/ButtonApp.java:2:1: package javafx.stage does not exist
[error] import javafx.stage.Stage;
…

Basically it cannot find the JavaFX packages.
Latest commit tested: 80eb7e0df5132dff7b081247176bfae597fe4264
Tested with java-11-graalvm and java-11-openjdk.
Was working as expected before a1247748926f9af95a2698de4692d3c167b8775a.
Sample code
cat build.sc
import mill._, scalalib._

val javaFXVersion = "13.0.2"

object javafx extends JavaModule {
  def mainClass = Some("Main")
  def ivyDeps = Agg(ivy"org.openjfx:javafx-controls:$javaFXVersion")
}

cat javafx/src/ButtonApp.java
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.control.Button;

public class ButtonApp extends Application {
  public static void main(String[] args) {
    launch(args);
  }

  @Override public void start(Stage stage) {
    var button = new Button("Please Click Me!");
    button.setOnAction(e -> stage.close());
    var box = new VBox();
    box.getChildren().add(button);
    var scene = new Scene(box);
    stage.setScene(scene);
    stage.setTitle("Just a button");
    stage.show();
  }
}

cat javafx/src/Main.java
public class Main {

  public static void main(String[] args) {
    ButtonApp.main(args);
  }
}

It is probably an change in coursier, which might got a version bump as a transitive dependency.
Looks like you now need to depend on ivy"org.openjfx:javafx-controls:13;classifier=linux or whatever your platform is. javafx-controls with classifier is a transitive dependency of javafx-controls without classifier.
Might be related to lihaoyi/mill#759
Maybe @alexarchambault sees more and can comment?
Here is the pom.xml of javafx-controls:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.openjfx</groupId>
  <artifactId>javafx-controls</artifactId>
  <version>13</version>
  <parent>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx</artifactId>
    <version>13</version>
  </parent>
  <dependencies>
    <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-controls</artifactId>
      <version>13</version>
      <classifier>${javafx.platform}</classifier>
    </dependency>
    <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-graphics</artifactId>
      <version>13</version>
    </dependency>
  </dependencies>
</project>

(I posted this before: https://gitter.im/lihaoyi/mill?at=5e3175b5433e1d40397320f8)

I've just tried with classifier=linux with a1247748926f9af95a2698de4692d3c167b8775a: same behavior (I'm on linux).
Actually, I tried with some garbage classifiers like ivy"org.openjfx:javafx-controls:$javaFXVersion;classifier=aiueauieai" and I have the same results as without classifier: 4f4fab664dca8083a9768c7f318f0ed0bb521517 compiles and runs as there was no classifier and a1247748926f9af95a2698de4692d3c167b8775a & 80eb7e0df5132dff7b081247176bfae597fe4264 fail to compile with the same package xxxx does not exist errors. No error on javafx.compileClasspath like when you change the artfactId.

coursier does fetch the OS-dependent artifacts. It does from the CLI at least:
$ cs fetch org.openjfx:javafx-controls:13
~/.cache/coursier/v1/https/repo1.maven.org/maven2/org/openjfx/javafx-base/13/javafx-base-13-linux.jar
~/.cache/coursier/v1/https/repo1.maven.org/maven2/org/openjfx/javafx-graphics/13/javafx-graphics-13.jar
~/.cache/coursier/v1/https/repo1.maven.org/maven2/org/openjfx/javafx-graphics/13/javafx-graphics-13-linux.jar
~/.cache/coursier/v1/https/repo1.maven.org/maven2/org/openjfx/javafx-base/13/javafx-base-13.jar
~/.cache/coursier/v1/https/repo1.maven.org/maven2/org/openjfx/javafx-controls/13/javafx-controls-13-linux.jar
~/.cache/coursier/v1/https/repo1.maven.org/maven2/org/openjfx/javafx-controls/13/javafx-controls-13.jar

Same kind of result on macOS.
You might be missing OS and JDK-related infos in the way you're calling the coursier API. The high level API of coursier sets them up this way.
@lefou If that's a possibility for you, I would advise using the higher level API (coursier.Resolve, coursier.Fetch, coursier.Artifacts, etc.), described here, rather than the low-level one, to lower the odds of that kind of issue.

@alexarchambault Thank for your comments. I'll have a look.

For the record, bumped into that as well when updating mill to > 0.5.3

Hello, any news on this issue? Thanks.

No, we discussed the implementation a bit (in #775), but nobody did the work yet.

I may need to work around this issue, and wanted suggestions. Would it be reasonable to use the result of cs fetch and add the files to unmanagedClassPath in my build.sc (after processing to get PathRefs)?

@siddhartha-gadgil unmannagedClasspath is what it is called, unmanaged. So there is a slighly chance, that dependencies provided there may collide with some provided by ivyDeps. But besides that, I think it's a perfectly reasonable work-around.

Thanks. I will watch out for this, especially with transitive dependencies.

I updated PR #775 to gather some feedback.

Just a head's up for those who have not been following. Positive feedback at https://github.com/scalafx/scalafx/issues/343#issuecomment-826143647. Discussion found here.
@lefou Nice work!
@rom1dep thanks for the test/example
8-)

I merged PR #775. Give it some time to build and publish. After that you should be able to pull the latest mill snapshot release or mill  >= 0.9.7 when available.
You need to adapt the coursier resolution process by overriding def resolutionCustomizer: Task[Resolution => Resolution]. This could look like this:
import mill._
import mill.scalalib._

object javafx extends JavaModule {
  override def resolutionCustomizer = T.task {
    Some((_: coursier.core.Resolution).withOsInfo(coursier.core.Activation.Os.fromProperties(sys.props.toMap)))
  }
  def ivyDeps = Agg(ivy"org.openjfx:javafx-controls:13.0.2")
}

This example reads all OS properties from the current system properties, but of course you could also set specific props.

Isn’t it possible to have the Resolution default to withOsInfo(coursier.core.Activation.Os.fromProperties(sys.props.toMap))?
It should not hurt if not needed but will help all project that depends on OS specific artifact.

@s-bernard Sure, it is possible, but it also makes the build less reproducible, as those variables may differ on different machines.

OK but as you say, even with the current default, a build is already not completely reproducible between different machines. And this setting still makes build deterministic on a given system, which is the most important.
Moreover It may break the reproducibility between machines only for projects that actually use this osInfo so that need it. And if you can’t reproduce a bug in a build due to this, you can still override the resolutionCustomizer to use the other system sys.props instead of local ones.
Finally, wasn’t the goal of maven profiles to adapt the build to the current system? Specially to allow the use of system library like javafx does?
On the plus side, it will really make mill more accessible.
BTW, thank you very much for solving this issue.

Unless more users vote in, I'm not going to make it the default. My reasons are based on personal experience being a developer for more than 2 decades. I could imaging that we add some extra trait NonPortableCoursierModule (name just made up) that you can mix-in in any Java/Scala module and which enables and documents these settings by default. PRs welcome!

I like the idea of a trait. I prefer PlatformDependantCoursierModule between the two names. Or maybe CoursierWithOsInfoModule?

Sorry to resurrect this issue, but @lefou's workaround isn't working for me.
import mill._
import mill.scalalib._

object testfx extends JavaModule {

  override def resolutionCustomizer = T.task {
    Some((_: coursier.core.Resolution).withOsInfo(coursier.core.Activation.Os.fromProperties(sys.props.toMap)))
  }

  def ivyDeps = Agg(
    ivy"org.springframework.boot:spring-boot-starter:2.6.2",
    ivy"com.fasterxml.jackson.core:jackson-databind:2.13.1",
    ivy"org.openjfx:javafx-controls:17.0.1",
    ivy"org.openjfx:javafx-fxml:17.0.1"
  )
}

$ mill -i testfx.run
[16/31] testfx.resolvedIvyDeps
1 targets failed
testfx.resolvedIvyDeps Failed to load source dependencies
  not found: https://repo1.maven.org/maven2/org/openjfx/javafx-controls/17.0.1/javafx-controls-17.0.1-${javafx.platform}.jar
  not found: https://repo1.maven.org/maven2/org/openjfx/javafx-fxml/17.0.1/javafx-fxml-17.0.1-${javafx.platform}.jar
  not found: https://repo1.maven.org/maven2/org/openjfx/javafx-graphics/17.0.1/javafx-graphics-17.0.1-${javafx.platform}.jar
  not found: https://repo1.maven.org/maven2/org/openjfx/javafx-base/17.0.1/javafx-base-17.0.1-${javafx.platform}.jar

Nor is @alexarchambault's CLI command.
$ cs fetch org.openjfx:javafx-controls:17.0.1
Error fetching artifacts:
https://repo1.maven.org/maven2/org/openjfx/javafx-base/17.0.1/javafx-base-17.0.1-${javafx.platform}.jar: not found: https://repo1.maven.org/maven2/org/openjfx/javafx-base/17.0.1/javafx-base-17.0.1-${javafx.platform}.jar
https://repo1.maven.org/maven2/org/openjfx/javafx-controls/17.0.1/javafx-controls-17.0.1-${javafx.platform}.jar: not found: https://repo1.maven.org/maven2/org/openjfx/javafx-controls/17.0.1/javafx-controls-17.0.1-${javafx.platform}.jar
https://repo1.maven.org/maven2/org/openjfx/javafx-graphics/17.0.1/javafx-graphics-17.0.1-${javafx.platform}.jar: not found: https://repo1.maven.org/maven2/org/openjfx/javafx-graphics/17.0.1/javafx-graphics-17.0.1-${javafx.platform}.jar

Did something change with coursier or with JavaFX 17?

Something rings a bell, but I don't know if it is related. A quick search revealed this sbt issue https://github.com/sbt/sbt/issues/6564 and this JavaFX issue https://github.com/scalafx/scalafx/issues/362

@charego You can take a look at the javaFXMill project for a working example. Unfortunately I have not updated to the latest Mill version. But it may provide hints as to why your example is not working.

Thanks! I can proceed by tweaking the resolution customizer with @s-bernard's suggestion:
override def resolutionCustomizer = T.task {
  Some((_: coursier.core.Resolution)
    .withOsInfo(coursier.core.Activation.Os.fromProperties(sys.props.toMap))
    .withExtraProperties(Seq(("javafx.monocle", "false")))
  )
}

This makes sense because mill 0.9.11 depends on an older coursier that doesn't have the fix in https://github.com/coursier/coursier/pull/2176. It's unclear why my cs fetch command was failing, as I have the latest milestone version (2.1.0-M2-1) of coursier CLI tool.

authors: alexarchambault charego hmf lefou rom1dep s-bernard siddhartha-gadgil

repo: com-lihaoyi/mill


text:
Replace broken CI badge and add version badge.

This PR fixes the broken "build" badge and adds a badge with the latest published version.

I noticed, that I was using an old version, bc. the docs page shows an outdated one (different PR in the works).
Even the latest video/project by "Rock the JVM" doesn't use quite the latest version. So maybe making it more obvious helps.

repo: com-lihaoyi/scalatags


text:
Controlnet Support

Larger refactor to enable ControlNet by exposing output/middle/input control as optional inputs. Nonetheless, should this be backwards compatible.
Some of the logic moved into a model helper class to hopefully make it easier to adopt new architectures.  Furthermore were ONNX export and Import nodes added to allow for a more flexible engine building workflow.

Hello, thank you for your work and for contributing to the development of TensorRT in ComfyUI! I tried to use your fork but could not get ControlNet to work. Could you share the workflow for exporting the ControlNet pipeline to TRT and the workflow for using it?

I've been testing this branch out and pushed a PR with minor fixes that were needed to get things working on my end.
Just to clarify - IIUC this PR adds support for the TRT engine to use the ControlNet controls (i.e. output/middle/input) passed to the forward pass of Comfy's UNetModel. However, AFAICT the controls are actually generated outside of the UNet forward pass so the TRT engine would only accelerate the UNet forward pass + sampling and not the ControlNet forward pass that generates the controls. This might be different behavior than TRT compilation for SD + ControlNet works in other environments - for example, the ControlNet forward pass is invoked in the UNet forward pass here so the resulting engine would accelerate the ControlNet generation as well. Lmk if I'm off with anything here though!

authors: Danylo-Krasii contentis yondonfu


text:
Disengage on gas toggle

[ ] add toggle
[ ] update safety model
[ ] panda safety tests
[ ] ensure smooth transition after gas is released
[ ] read back unsafe mode
[ ] match behavior of other systems

if we decide to keep steering while the gas is pressed, I think we should also change our pre-enable state to also start steering immediately.

I think we definitely want to keep steering while gas is pressed. Super Cruise and Autopilot do.

Yeah, that's what I thought. But currently we don't steer when you engage with the gas pressed. Which could be confusing, since there are two situations where you can press the gas, and only one of them steers. Therefore, I suggest we remove that and also steer when you engage with the gas pressed.

Yeah, that's what I thought. But currently we don't steer when you engage with the gas pressed. Which could be confusing, since there are two situations where you can press the gas, and only one of them steers. Therefore, I suggest we remove that and also steer when you engage with the gas pressed.

+1 regardless of this situation. controlsState.active vs controlsState.enabled is super confusing and has led to a bunch of bugs  in the car controllers.

I'm not sure we can get rid of the state completely, since if you have disengage on gas enabled you still want to be able to engage with gas.
But we should able to remove the active vs enabled thing, and just make something generic based gas pressed. The car controller should not need to be aware of the toggle status, only the state machine logic.

Other TODOs:

[ ] Ensure the PID controller doesn't wind up when the gas is pressed
[ ] Ensure we send the correct state for cars with stock longitudinal. Otherwise they might try to maintain zero acceleration, instead of slow down when you press the gas lightly. (https://github.com/commaai/openpilot/issues/22439)

Another issue I've been trying to solve is that when you override with gas and let go after a large acceleration, the planner starts at aEgo and then winds to what it actually wants to request. So if you accelerate into a lead, it takes quite a while until we start slowing down (we actually accelerate further after gas press).
Just setting accel to 0 while not active works, but on Toyota if you engage at under 10 mph or so, the car always brakes for a second before accelerating. We can try setting the jerk and a_change costs to zero for 1 frame on engagement for that however.

Sounds like setting to zero might be best then. If the Toyota is not following the commands we send it under 10mph, then we need to fix that quirk in the carController, not upstream in in the planner.

Safety doc update to accompany this PR:
https://github.com/commaai/openpilot/pull/23696

Another issue I've been trying to solve is that when you override with gas and let go after a large acceleration, the planner starts at aEgo and then winds to what it actually wants to request. So if you accelerate into a lead, it takes quite a while until we start slowing down (we actually accelerate further after gas press).
Just setting accel to 0 while not active works, but on Toyota if you engage at under 10 mph or so, the car always brakes for a second before accelerating.

We can set PERMIT_BRAKING to 0 briefly (like for 1 second) if we're sending 0 accel under 10mph, so pcm would just coast along without applying any brakes

@cydia2020 that sounds like a good solution.
Conditions would be

Shortly after engage
a_target is positive
speed under 10mph

Do you want to make a PR and see if that works?

Alternatively we can lower/set to zero the jerk costs in the MPC for one frame, so the planner starts at around the acceleration it would in a few seconds. That way we can start accelerating immediately like stock does. It might affect braking though, so testing needs to be done

You mean this? https://github.com/commaai/openpilot/pull/23639

Yeah it might be better to do this in controls so it's vehicle specific. However I'll gather data on what stock ACC requests when it wants to brake or accelerate when engaging for a few makes.
Maybe they all request their fully ramped up acceleration immediately and can handle that, I'll check that out.

It definitely seems like Toyota doesn't ramp from 0 much more often than I thought, here's another example of me engaging at a stop. openpilot ACC brakes uncomfortably and then slowly accelerates, while stock ACC requests 0.57 m/s/s immediately: https://imgur.com/a/pDXkVn1
And this is what stock ACC does when you engage behind a car: https://imgur.com/a/bDvCgYf

Hyundai ACC when it wants to brake, but being overridden by gas press on a Elantra Hybrid:
https://user-images.githubusercontent.com/25857203/153552887-455294ae-b2d6-4fae-8b99-13e18345a584.png

Hyundai ACC when it wants to brake, but being overridden by gas press on a Elantra Hybrid. Requested acceleration ramps back to zero at a rate of exactly 0.5 m/s^3 ((-.32 - -.03) / (75.19 - 75.77)=0.500):
https://user-images.githubusercontent.com/25857203/153552887-455294ae-b2d6-4fae-8b99-13e18345a584.png

This also occurs on the Hyundai Sonata Hybrid, the Hyundai Pre-enable fork seemed to fix this if I recall

authors: KyleGreenlaw adeebshihadeh cydia2020 geohot pd0wm sshane zorrobyte

repo: commaai/openpilot


text:
[$500 bounty] Drive a loop in MetaDrive

Extend the MetaDrive test to drive a defined course and ensure it stays in the line. Requirements:

at least 1 minute of driving
passes reliably: 20+ times in a row
test fails if a reasonable user would have disengaged during the loop (drives out of lane, etc.)
logs uploaded as an artifact

Ideally, we can also configure the distance and/or runtime of the test with a simple parameter so that we can run a quick one in CI, and perhaps a longer version on master.
https://github.com/commaai/openpilot/blob/master/tools/sim/tests/test_sim_bridge.py

would also be cool if the route is logged as a github actions artifact that can be viewed in the openpilot tools if it fails

Good idea, added to the list


text:
404 for robots.txt

I guess we should provide this file.

Moved to: https://github.com/commercetools/commercetools-sunrise-java-demo/issues/30

authors: hajoeichler lauraluiz


text:
[Bug]: file not found please try another file

Summary
problem 1:-
clicking multiple times on the ' + ' button keeps increasing the dialogs. Those dialogs are useless as you are only uploading a single image you don't need multiple captions and descriptions
problem 2:-
if you are uploading an image and making 2 dialogs in step 1 using the ' +' button and giving two different captions and descriptions to that image then the image is not uploading and showing a TOAST "file not found please try another file "
Steps to reproduce
while uploading an image we get to step 1, where we write the caption and description of the image
in that option the left corner has a ' + ' button, If you click on it, it will increase a dialog box where you can write the caption and description.
Expected behaviour
the ' + ' button is not necessary and useless just remove it.
Actual behaviour
TOAST "file not found please try another file "
Device name
No response
Android version
android 11
Commons app version
3.1.1
Device logs
No response
Screen-shots
No response
Would you like to work on the issue?
Yes

@nicolas-raoul  I created this issue and would like to work on it, if you think its OK then please assign me

@Rishavgupta12345 problem 1 is a feature where u can add captions and descriptions in multiple languages.
I cannot reproduce problem 2. Maybe try with a different image and let us know if you get the same result.

@Rishavgupta12345 problem 1 is a feature where u can add captions and descriptions in multiple languages. I cannot reproduce problem 2. Maybe try with a different image and let us know if you get the same result.

if problem 1 is the feature to add a caption in another language then if once the user is writing the caption in English then the second option should disable English from the options and show other languages. to reproduce this issue try adding English caption twice in the same image. (which should not be present)

I just successfully uploaded an image with captions in English and French.
Also, when there is already a caption in Japanese (for instance), the app does not let me select Japanese as the language for the subsequent captions.
So, I don't see any bug here yet. If you think there is really a bug, maybe post a screencast? Thanks! 🙂

if it is so then I am closing the issue

repo: commons-app/apps-android-commons


text:
Default EXIF redaction: Privacy vs. consistancy with website upload wizard

In Preferences there's choices of which exif fields one should send. However the default on the official website upload form is much wider. Therefore some fields will be chopped off using the app's default. The two should be synchronized so there won't be any difference, in the default state.
I'm saying the app should be shipped with more liberal defaults.

Some quick thoughts: I can see it both ways - more consistency with the website vs more protection of privacy (and in Android, I think Google tries to move us towards the latter). Giving a choice post-install, and maybe reminding at some point later too, might be better.
For example, we can give two options of 1) fully open (or as open as the website) and 2) a limited set of metadata (current default), telling that the user can change it later.
I think there can be reasons to have different defaults, though. On PC, many use retouch software during which the user can sanitize metadata in the way they prefer. On phone, I think the same cannot be said, not to the same extent anyway.

I totally agree with Whym that desktop and Android are different, with very different privacy expectations.
In order to keep the app simple to use for non-technical users, I am in favor of not showing post-install settings suggestions, though.
@jidanni When using the website all EXIF fields are kept, right?

A related phabricator issue on the desktop side: Determine workflow to selectively purge potentially privacy-sensitive EXIF fields, such as geocoordinates, from a Wikimedia Commons file

All I know is I got different results using the website versus using the app. I'm sure the people on the website have made some policy, as they usually do. So you might as well use the same policy.

I could be wrong but it seems like the website basically preserves all the metadata submitted, except for clearly errorneous data. makeFilteredData() seems to fix some errors, but not remove not fundamentally change in metadata fields: https://github.com/wikimedia/mediawiki/blob/8dbf403b1a7b9e951bbd5aba05a804eb8ad94225/includes/media/Exif.php

You might say if their picture includes their mother's shoes and she's picky about it, well then they should aim their camera better.  The same thing with the exif stuff. I mean certainly they agreed to some terms when they began using the app.

authors: jidanni nicolas-raoul whym


text:
Nasrumikail

Nasrumikail good for creation submissions to a single page

What do you mean? Did you find a bug in the app?

authors: nasrumikail nicolas-raoul


text:
Fix transparent view allign

Description
Fixes #1329 , number 9, fixes transparent view visibility
Tests performed
Manual test API level 19
Screenshots showing what changed
Before:

After:

Thanks @neslihanturan !

Ups, forgot to rebase it to release branch @misaochan :/

authors: misaochan neslihanturan


text:
[android] use procfs to check pid validity

Summary
The POSIX implementation of Process::isAlive() relies on successfully calling kill(pid, 0) to validate the target process' PID. This call fails with EPERM when ds2 is running in an Android app sandbox (at least newer Android versions).
Overview
Fix the issue by instead checking that /proc/PID exists. Perform this check only in the Linux override of Process::isAlive() since using procfs is not portable. There is no reason to scope the change to be Android-only, though, since it will work on any Linux system.
Background
Since it doesn't show up here, the implementation of super::isAlive() that this PR replaces is here.
It is worth noting that any solution to validate a PID is best-effort and is inherently racy. We could technically eliminate the check entirely and ds2 will still work-- it just won't fail as fast when trying to attach to an invalid PID.
Validation
Connect lldb to a ds2 instance running in the sandbox of an Android app on a connected Android device or emulator. The Android app must also have android.permission.INTERNET for ds2 to open a socket.

Copy ds2 to the device and into the app sandbox:

adb push build\ds2 /data/local/tmp
adb shell chmod +x /data/local/tmp
adb forward tcp:6543 tcp:6543
run-as com.example.DemoApp cp /data/local/tmp/ds2/ds2 ./ds2
run-as com.example.DemoApp ./ds2 platform --listen localhost:6543 --server -D -d

Launch and connect lldb to the running ds2 instance:

(lldb) platform select remote-android
(lldb) platform connect connect://localhost:6543

Launch the Android app, get its PID, and attach lldb

am start -n com.example.DemoApp/com.package.DemoApp.DefaultActivity

Once lldb attaches, continue execution with (lldb) c.

Expected Behavior
lldb should remain connected to ds2
Actual Behavior
Without this change, it drops the debugger connection

Test failure isn't related to this change.
#113 enabled many more lldb tests against ds2, and it appears this is a flaky one. I'll continue keep an eye on the flaky tests during nightly runs and start disabling (and investigating) them as they show up .

license: NCSA


text:
More ci

Let's not miss breakages due to inattention.

It looks like the swift-build started to fail about 19 hours ago:
Successful build: https://github.com/thebrowsercompany/swift-build/actions/runs/8405527134/job/23018550629
Failed build: https://github.com/thebrowsercompany/swift-build/actions/runs/8413236283/job/23035402472
As far as I can see, there were no source changes in swift-build or the upstream swift repos and the GitHub runners have the identical runner image. But it appears that somehow build started to incorrectly picking up
C:\Program Files\Git\usr\bin\link.exe
instead of
 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.38.33130\bin\HostX64\x64\link.exe
Any thoughts on whether this change could be related? @dabrahams @compnerd

Oh, wow; I didn't mean for the changes to action.yml to be a part of this PR.  @compnerd, maybe you should revert that part.

authors: dabrahams hjyamauchi

repo: compnerd/gha-setup-swift


text:
No dissociation method detected

Im trying to process the following file 09apr2014_HESC_SCX8to12_RP4.raw (ftp://massive.ucsd.edu/MSV000086944/raw/raw/09apr2014_HESC_SCX8to12_RP4.raw) and when I convert it to mzML is not exporting the dissociation method.

Hi @ypriverol,
I have processed the file with versions 1.4.0 and 1.4.2 both seem to produce a valid mzML file, i.e. every MS2 scan has an <activation> element and the fragmentation type is set to HCD - <cvParam cvRef="MS" accession="MS:1000422" value="" name="beam-type collision-induced dissociation" />
Did I understand your problem correctly?

Closed for now, please, feel free to reopen if necessary

authors: caetera ypriverol

repo: compomics/ThermoRawFileParser


text:
Topic and thing updates

This PR updates the handling of topic messages to display hubs and hub channels (sensors and relays) along with real-time sensor values in the Dataflow control panel.  This is to be merged into the Dataflow branch.  The last commit can be used for comparison to the existing Dataflow branch.  Changes include:

refactor to change "thing" to "hub.
add HubChannel  array to HubModel.  A HubChannel contains contains information (type, model, id, etc.) about each sensor and relay attached to the hub (including the current value from a sensor).
add hubDisplayedName to HubModel.  This is the name from the hub type attribute field which is displayed to the user.
restructure message handling to subscribe to and properly process the devices and sensors messages from each hub.  Devices and sensors topics have following formats:
[owner_id]/hub/[hub_id]/devices (JSON dictionary meta data by device_id)
[owner_id]/hub/[hub_id]/sensors (JSON dictionary with sensor values (from hub) by device_id)
publish command messages to hubs to get device information and start sending sensor data.  Command topic has following format:
[owner_id]/hub/[hub_id]/command (JSON dictionary with polling rate, firmware updates, etc.)
display hubs with hub channels inside of Dataflow control panel

Changed the base to dataflow, should be easier to review/merge now!

@kswenson I made changes based on your comments.  Thanks!

authors: ekosmin mklewandowski


text:
concord-server: increase sessionTimeout by default

I've a suspicion we need Jetty session timeout > OIDC session timeout for pax4j-oidc to work correctly due to the way they handle OIDC's state.

Actually, never mind, let's hold this PR for now. I think I found actual cause for the bug and it's just the broken way Mica handles session timeouts.

repo: concord-workflow/concord-charts


text:
Add bitbucket support

This adds Bitbucket flags to support the Bitbucket Dex connector in concourse/dex#3.
ref. concourse/concourse#2567

@edtan we've merged all these components into our concourse/concourse repo. You should be able to find all the relevant files under the skymarshal folder. Do you think you could submit this PR against that repo? Thanks!

@pivotal-jwinters Sure thing, I've created a PR in the concourse/concourse repo now, so I'll close this one out.

authors: edtan pivotal-jwinters

repo: concourse/skymarshal


text:
Unify Application and Package overrides - Allow Package overrides for more core features (same as application/)

I am building a multi-purpose theme package that will be a base (starting point) for all websites I build with concrete 5.7 for ease of development, deployment and maintenance.
Since concrete 5.7 is so flexible and highly customizable I am sure we could achieve this without having to rely/depend on overrides at the application level - that is, also allow overriding [almost] everything at the package level that can be overridden at the application level by following a priority based system: Core > Package > Application with the latter able to override previous controllers when they exist.
This will allow/enable just a single package installation to setup everything as required and then we can start customizing the site using the numerous available options: page design - theme customizer, design and custom template - custom block templates and pagetheme area/block classes.
The bare minimum support should include:-

overriding block controllers for core blocks (override only possible now at application/blocks/)
email template used by the form block (currently done here application/mail/block_form_submission.php).

A method of prioritizing or configuring which package overrides what when multiple packages try to do so should also be provided - maybe a config or dashboard setting to select a particular package (sort of master package) override (Not needed for application level overrides since they are overall) even if its just site specific (not for marketplace). Alternatively the active package theme could be given precedence when multiple packages provide an override that the theme provides.
I am not sure if overrodeCoreByPackage() would work here and whether updates to core blocks will still be available to the overrides in the package but I remember reading packages which override the core this way cannot be approved for marketplace.
Example code that should work but currently does not: override placed in \packages\fluid_theme\blocks\image_slider\controller.php
namespace Concrete\Package\FluidTheme\Block\ImageSlider;

use Concrete\Block\ImageSlider\Controller as ImageSliderBlockController; // coreBlockController to be extended/overriden

class Controller extends ImageSliderBlockController {

    public function registerViewAssets() {
      // bxslider asset group registered in package on_start
        $this->requireAsset('bxslider'); // View::getInstance()->requireAsset('xyz') in view.php not reliable with cache on
        //echo 'registerViewAssets() in package block override!'; // testing...
    }

}

References
http://documentation.concrete5.org/developers/working-with-blocks/working-with-existing-block-types/creating-additional-custom-view-templates/including-custom-templates-in-packages
http://documentation.concrete5.org/developers/working-with-blocks/working-with-existing-block-types/using-a-custom-controller-for-a-core-block-type

The above is based on the logic that the three main directories (concrete, packages, application) are each analogous to each other... a package is therefore a microcosm of an entire site, and since these directories repeat the general pattern with each containing /blocks, /css, /js, /elements, /themes, /views, /controllers etc. functionality should be provided/implemented in any of the following places with overrides at higher levels:-

core (basic functionality)
packages (generic/extended functionality)
application (site specific functionality)

You are right to point out that these things are difficult to override from a package, but I want to add that the way we override today skirts the line of an OCP violation. Instead of adding an "override" like structure, I'd like us to begin an effort to make these parts of our framework more extensible by design.
A lot of our blocks do a ton of fancy stuff in their controllers. Perhaps we can work to abstract the things that one would want to change with these classes and try to reduce their responsibilities as much as we can so that each aspect is easily swappable without having to extend the base class and override by implicit directory structure or arbitrary string bindings like Environment::overrideCoreByPackage('/some/thing', $package);
So here's what I'm thinking. For a start, lets make it so that there is an easy way to break into the block controller selection process and replace the original controller with code. Perhaps an event or some kind of manager or a command bus or something:
(This is kind of long winded, this is just to show how powerful this could be, we can make it simpler to do)
<?php

/** \Symfony\Component\EventDispatcher\EventDispatcher */
$events = $this->app->make('director');

// Create our custom factory class that will be in charge of converting core block controllers into our custom ones
$controller_factory = \My\Custom\Package\Block\Controller\Factory();

// Set up an event listener so that we can break into the resolver
$events->addListener('blockBeforeControllerResolve', function(\Concrete\Core\Block\Controller\ResolverEventInterface $event) use ($controller_factory) {
    $resolver_manager = $event->getResolverManager();

    // Now that we have the manager, lets add a new resolver to the pipeline
    $resolver_manager->addResolver('block_handle', function($block_type, callable $next) use ($controller_factory) {
        // We call $next here so that we get the result from the completed pipeline
        // Notice that we could swap out the $block_type (or whatever information gets passed), or just not call next at all.
        $block_controller = $next($block_type);

        // Now we convert the core block controller into our custom block controller and return that instead.
        return $controller_factory->createFromController($block_controller);
    });
});

Here's just a few ways I could imagine this being used:

Setting some or all blocks to cache always
Adding CSRF protection to block actions
Swapping out the block type completely
Adding error information to the controller's error array
Adding interesting filters to a specific block type

So setting up a resolver like this this would give us all the power we need for swapping out / overriding the block controllers without the need for implicit path matching or too many arbitrary strings that our IDE's don't understand.
As we move forward, we can also put in some effort to breaking down these controllers into smaller more specific classes so that we can do cool stuff like:
<?php

$manager->addResolver('content', function(ContentBlockType $content_block_type, callable $next) {
    // Swap out the editor handler with a new one for ckeditor instead of redactor
    $content_block_type->setEditorHandler(new CkeditorHandler());

    return $next($content_block_type);
});

without having to completely override the entire functionality of the content block or do refactor large swaths of the block controller.
Perhaps we can do something similar with the email templates, what do you guys think about all of this @joe-meyer @aembler @ChrisHougard @herent ?

I should also add that this is a similar idea to what I was trying to do with my block-factory branch on my personal repo, I didn't get too far with it.

Its great, its clever, its powerful, its sophisticated.
Its also very long winded and complex compared to just putting a file at a predefined location in /application or /packages/my_package/
So while I appreciate the ultimate flexibility of such a clever approach, it should not be at the expense of losing the simple approach.

@JohntheFish I am not suggesting we remove the overrides we have. In my examples, I would expect  $next($block_type) to be resolve a controller in the exact same way it does today to support backward compatibility.
That said, if someone broke the chain and returned a replacement controller it'd override your override.
Thanks!
Korvin

Good. Thanks for the reassurance.
A small request should this be implemented. Have a global flag in the dashboard that can be used to disable it globally, and hence all overrides (assuming overrides other than blocks will work in a similar way behind the scenes).
That way, whenever a support request comes in and the environment report shows many overrides, and the response is 'Do you still have the issue with overrides removed?', its just a flip of a dashboard setting to do so.

This is complete. In version 8 you can actually override and/or provide your own custom block templates in a package's theme's directory, not just in application.

authors: JohntheFish KorvinSzanto aembler martbase


text:
7.5.9 breakes our C5DK Blog package

7.5.9 seem to break our C5DK Blog package when we programmatically create the blog pages. It seem that the https://github.com/concrete5/concrete5/commit/0e5e1553602189bc22d68b14b5122fa8c77bd0e7 commit is the problem.
When we explain our users to setup the blog page default page type, we are making the user create a composer ready content block. We do this to be as standard as possible, and because the administrator then will be able to edit the blog page through composer. This will not work any more!
Is this only for the for the composer content block or is it for all blocks inserted in our blog page default page type?
I have a huge problem about how to overcome this. Do we need to make a special version for 7.5.9?
The error we got is as follows:

This worries me a lot - we are already working hard to find a solution to make our C5DK Blog package work in 8.0.
@aembler  Please advice

This is related to a bug fix for the developer API: when developers create content programmatically using Page::add(), it's a bummer to have the composer content blocks included in the page (and then have to be stripped out.) Instead, you have to opt in to including these composer blocks in the outputted page. You obviously want these blocks, since you're creating an alternate composer interface.
If you change the top section of your method to this
			$blog = $C5dkRoot->add($pt, array(
				'cName'					=> $this->title,
				'cHandle'				=> $this->getUrlSlug($this->title),
				'cDescription'	=> $this->description,
				'cAcquireComposerOutputControls' => true
			));

It fixes the problem.

Thanks a bunch... :-)

authors: MichaelMaar aembler


text:
V8b2 - error when upgrade from v8b1 to v8b2

I dont know if this important (beacuse v8b1 is beta) but:
I Replacing the original concrete Directory (from v1 to v2) --> go to this url: http://www.yoursite.com/ccm/system/upgrade. --> run update --> get message "Upgrade to 8.0.0b2 complete!"
Go back to my site (any page):
Get this "long" error (see screenshot)

For now i undo this (go back to v8b1 - but i want somehow to upgrade to b2)

Are you sure you have run "composer install" on this git version before you made an upgrade. If not you will be missing the vendor folders and it will fail...

Hey. I do this steps of this tutorial. I dont know how to "composer install".
http://documentation.concrete5.org/tutorials/how-to-manually-upgrade-concrete5-5-7

The develop version here on github does not include the vendor libraries. You have to run the php command (command prompt on your server) "composer install". You have to do this in the root of your site folder where the composer.json is placed. That will build the vendor folder containing the vendor libraries.
Alternatively you can down a fully build version of concrete5 beta on http://c5.krasnow.me/ (with thanks to @Mnkras).

For the record, I don't think we care to support beta -> beta upgrades what-so-ever or even rc - rc upgrades. Instead we are focused on v7 -> beta or v7 -> rc.

authors: KorvinSzanto MichaelMaar Siton-Design


text:
Upgrade 8.5RC1 to 8.5RC2 - Exception brakes site

After upgrade from 8.5RC1 to 8.5RC2 the following unexpected error is thrown:
An exception occurred while executing 'DROP INDEX UNIQ_60D69F3F6973EC66 ON OAuth2AccessToken': SQLSTATE[HY000]: General error: 1553 Cannot drop index 'UNIQ_60D69F3F6973EC66': needed in a foreign key constraint
Site including dashboard is completely unaccessible.

#7612 should fix this issue

authors: africanforest mlocati


text:
Ensure minimum Python version of 3.5

Checklist

[ ] Used a fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender

Hi! This is the friendly automated conda-forge-webservice.
I tried to re-render for you but ran into some issues, please ping conda-forge/core for further assistance. You can also try re-rendering locally.

authors: conda-forge-linter jamesmyatt

repo: conda-forge/bulwark-feedstock


text:
Releasing v0.0.4

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

authors: conda-forge-linter olegtarasov

repo: conda-forge/conda-export-feedstock


text:
Pin libsdformat to 9.*

In view of https://github.com/conda-forge/libsdformat-feedstock/issues/118, better make sure that libsdformat==9.* is always installed.
Similar to https://github.com/conda-forge/gazebo-feedstock/pull/217 .
Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

@conda-forge-admin, please rerender


text:
Remove ffmpeg and graphicsmagick from runtime dependencies

Closes https://github.com/conda-forge/gmt-feedstock/issues/181

Checklist

[X] Used a personal fork of the feedstock to propose changes
[X] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[X] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[X] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender

I forgot that I should use my personal fork, not the one from GenericMappingTools.

authors: conda-forge-linter seisman

repo: conda-forge/gmt-feedstock


text:
Fix build of library on Windows and add tests

Fix https://github.com/conda-forge/graphite2-feedstock/issues/14 .
Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

@conda-forge-admin, please rerender

Whoops! Thank you for the rapid fix.

authors: pkgw traversaro


text:
Rebuild for new fontconfig macOS dylib compatibility version

Cf https://github.com/conda-forge/fontconfig-feedstock/issues/54 — changing Fontconfig's build system to Meson dropped the compatibility version of the dylib on macOS, requiring users to rebuild.

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

authors: conda-forge-linter pkgw

repo: conda-forge/graphviz-feedstock


text:
Update meta.yaml

Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender

authors: conda-forge-linter richardjgowers

repo: conda-forge/gufe-feedstock


text:
@conda-forge-admin please rerender

Additional comment:
No response

Hi! This is the friendly automated conda-forge-webservice.
I just wanted to let you know that I rerendered the recipe in conda-forge/hugin-feedstock#39.

@conda-forge-admin, please add bot automerge

@conda-forge-admin, please add bot automerge

authors: conda-forge-linter hmaarrfk

repo: conda-forge/hugin-feedstock


text:
Add builds for linux-aarch64, linux-ppc64le and osx-arm64

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

@conda-forge-admin please rerender

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe/meta.yaml) and found it was in an excellent condition.

@conda-forge-admin please rerender

@conda-forge-admin please rerender

Hi! This is the friendly automated conda-forge-webservice.
I tried to rerender for you, but it looks like there was nothing to do.
This message was generated by GitHub actions workflow run https://github.com/conda-forge-webservices/actions/runs/11144944202.

@conda-forge-admin please rerender

Hi! This is the friendly automated conda-forge-webservice.
I tried to rerender for you, but it looks like there was nothing to do.
This message was generated by GitHub actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/11151209952.

authors: conda-forge-admin traversaro