Forwarded from Техножрица 👩💻👩🏫👩🔧
Давно хотела поделиться с подписчиками каким-нибудь прикольным курсом по критическому мышлению или методологии научных исследований, но долгое время не попадалось на глаза ничего годного. Пару недель назад я всё-таки натолкнулась на очень интересный, хоть и очень специфический курс от Йельского Университета - Understanding Medical Research: Your Facebook Friend is Wrong ( https://www.coursera.org/learn/medical-research/ ). Курс состоит из видеолекций, материалов для чтения и большого количества тестов для самопроверки, которые помогают не забыть, о чем была лекция, через пять минут после ее окончания. Доступ ко всем материалам бесплатный; платить надо только если вы (зачем-то) захотите сертификат об окончании. Лекции (без тестов и доп.материалов) также доступны в виде плейлиста на ютубе: https://www.youtube.com/playlist?list=PLh9mgdi4rNewVyTec_MVGxIbNSEeMhEsZ . Для полноценного понимания того, о чём говорит лектор, предварительное медицинское образование не требуется: всё рассчитано на достаточно широкую аудиторию.
Состоит курс из следующих частей:
➡️ The Basics: как делаются научные исследования в области медицины, что такое кризис воспроизводимости, как корректно ставить исследовательские вопросы чтобы избежать расплывчатых результатов и ненамеренной подгонки.
➡️ Medical Statistics Made Ridiculously Simple: основы математической статистики, объяснения того, что такое стат.значимость и как это все используется в мед.исследованиях.
➡️ Types of Medical Studies: какие виды мед.исследований существуют (спойлер: не только двойные слепые, case study и мета-анализ).
➡️ How Wrong Conclusions Are Reached: как понять, в каких случаях за корреляцией действительно скрывается причинно-следственная связь, а в каких - нет, как распознавать скрытые переменные, влияющие на исход эксперимента, что такое p-hacking.
➡️ Bias: разбираются систематические ошибки, связанные с перекосом составов участников экспериментов и ошибками измерения. Также в этой главе разбираются занимательные статистические парадоксы.
➡️ Fixing the Problems with Medical Studies: какими методами корректируют систематические ошибки в медицинских исследованиях.
Несмотря на то, что весь курс посвящен исследованиям в одной научной области (медицине), разобранные в нем примеры неплохо раскрывают основы научной методологии, общей для всех экспериментальных наук и учат тому, как применять критическое мышление при разборе научных статей в целом. Обаятельный профессор, излучающий Big Hirsch Energy в радиусе поражения атомной бомбы (только гляньте на его страницу в Google Scholar - https://scholar.google.com/citations?user=iB9er1AAAAAJ&hl=en !), подробно и строго объясняет, как отличать сигнал от шума в потоке "научных сенсаций" на практике, что лично мне кажется более полезным, чем абстрактные разговоры о критическом мышлении. Чел реально думает как ученый и учит этому нас своим вдохновляющим примером - при чем, как мы все любим, за ноль рублей.😉 😉 😉
#учебные_материалы
Состоит курс из следующих частей:
Несмотря на то, что весь курс посвящен исследованиям в одной научной области (медицине), разобранные в нем примеры неплохо раскрывают основы научной методологии, общей для всех экспериментальных наук и учат тому, как применять критическое мышление при разборе научных статей в целом. Обаятельный профессор, излучающий Big Hirsch Energy в радиусе поражения атомной бомбы (только гляньте на его страницу в Google Scholar - https://scholar.google.com/citations?user=iB9er1AAAAAJ&hl=en !), подробно и строго объясняет, как отличать сигнал от шума в потоке "научных сенсаций" на практике, что лично мне кажется более полезным, чем абстрактные разговоры о критическом мышлении. Чел реально думает как ученый и учит этому нас своим вдохновляющим примером - при чем, как мы все любим, за ноль рублей.
#учебные_материалы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤9🤡2
Forwarded from гнег
This media is not supported in your browser
VIEW IN TELEGRAM
the time picker on iphones alarm app isnt actually circular its just a really long list
😁35🤯3🔥1😱1🤡1
#prog #rust #article
Shortcomings of Procedural Macros
Или как в процедурный макрос, определённый на impl-блоке, прокинуть информацию о методах с реализацией по умолчанию из определения трейта.
Спойлер: всё в рамках языка, без IO между макросами, но выглядит всё равно как хак.
Shortcomings of Procedural Macros
Или как в процедурный макрос, определённый на impl-блоке, прокинуть информацию о методах с реализацией по умолчанию из определения трейта.
Спойлер: всё в рамках языка, без IO между макросами, но выглядит всё равно как хак.
cryptical.xyz
Shortcomings of Procedural Macros – Cryptical
and how to overcome them
🤔5
Forwarded from Пездуза
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡13😁4❤2
Forwarded from Таксики и лытдыбр σποραδικος
Мы с Иваном Ильичом
Премию вручали
Я мудак и он мудак
[ДАННЫЕ ПРОПАЛИ]
Все мы фонд SCP
Премию вручали
Я мудак и он мудак
[ДАННЫЕ ПРОПАЛИ]
Все мы фонд SCP
🌚16😁9🔥4🥰1🤯1
#cpp
P2723R1 Zero-initialize objects of automatic storage duration
Можно прочитать только ради секции об отзывах
P2723R1 Zero-initialize objects of automatic storage duration
Можно прочитать только ради секции об отзывах
😁7🤔3👍1
#prog #article
Writing Mac and iOS Apps Shouldn’t Be So Difficult
Вопреки названию, не специфично для эппловских платформ.
Автор также отмечает, что в силу того, что скрипты также хранились в базе данных, это позволяло применять обновления приложения без рестарта и без копирования большого количества нативного кода.
Writing Mac and iOS Apps Shouldn’t Be So Difficult
Вопреки названию, не специфично для эппловских платформ.
The app was implemented in two pieces:
The kernel, written in C, implemented the database, networking, inter-application communication, various built-in data types, script compiler and evaluator and debugger, and so on
The scripts used the kernel and implemented most of the actual app behavior
Since it was an app, it had plenty of UI — menus, contextual menus, buttons, larger UI components, and so on. What was brilliant was that you could, for instance, add and edit menus, and when you chose a menu command it would run your script. (Or when you clicked a toolbar button, etc.)
You could write an entire static blog publishing system and the UI to go with it without ever restarting the app. Click a thing, then see what happens in the app — and if it’s not right you’d edit the script, which would be automatically recompiled when called the next time.
In other words, there was absolutely no friction when it came to iteration. Write some code without restarting and see your changes immediately.
But I wanted to bring up a second aspect to this: it’s not just frictionless iteration that was so great, it was also the scripting language and environment.
One of the best parts of this was how easy persistence was. I mentioned the hash-table-based database. Hash tables could contain hash tables
<...>
In any script, at any time, without any ceremony, you could read and write from the database simply using dot notation: user.prefs.city = "Seattle" would set the value of city in the prefs table which was contained by the user table. This value would persist between runs of the app, because it was stored in the database.
I’ll remind you of the timing: this was the ’90s. We worked this way for real, and we were amazingly productive.
Автор также отмечает, что в силу того, что скрипты также хранились в базе данных, это позволяло применять обновления приложения без рестарта и без копирования большого количества нативного кода.
🤔4
Forwarded from Experimental chill
Latency profiler
Представьте ситуацию, вы пишете код на Python, вызываете посередине библиотеку, например, для inference, понимаете, что программа работает медленно. Собираете профиль с помощью стандартных утилит вроде perf, и в итоге видите следующую картину
90% Matmul
10% some Python
Смотрите на это, расстраивайтесь, ведь умножение матриц скорее всего так сильно соптимизировано, что можно даже не пытаться.
К счастью, не все так просто. Perf собирает события со всех потоков и CPU, которые суммируются. В итоге если вдруг умножение матриц было на многих ядрах, скажем, 8, то вы увидите в профиле, что вес matmul в 8 раз больше.
Недавно в perf добавили --latency, тулза, которая делит все события на количество активных CPU. После этого вы можете увидеть профиль в духе
40% matmul
60% some Python
Теперь оптимизировать питон есть смысл для задержки (latency), ведь профиль показывает, что из реального времени вы провели 40% в умножении матриц (может, на многих ядрах) и 60% в питоне (скорее всего в 1 ядре). Это часто бывает полезно в серверах, системах сборки, в тулзах командной строки.
Не без ограничений, если у вас многопоточный сервер, у которого есть thread pool для какой-то работы, то математика задержки будет сложнее. Тестировать лучше изолированно и без нагрузки на остальную систему. Полезно, но надо знать как пользоваться.
https://www.phoronix.com/news/Linux-6.15-Perf-Tools-Latency
Представьте ситуацию, вы пишете код на Python, вызываете посередине библиотеку, например, для inference, понимаете, что программа работает медленно. Собираете профиль с помощью стандартных утилит вроде perf, и в итоге видите следующую картину
90% Matmul
10% some Python
Смотрите на это, расстраивайтесь, ведь умножение матриц скорее всего так сильно соптимизировано, что можно даже не пытаться.
К счастью, не все так просто. Perf собирает события со всех потоков и CPU, которые суммируются. В итоге если вдруг умножение матриц было на многих ядрах, скажем, 8, то вы увидите в профиле, что вес matmul в 8 раз больше.
Недавно в perf добавили --latency, тулза, которая делит все события на количество активных CPU. После этого вы можете увидеть профиль в духе
40% matmul
60% some Python
Теперь оптимизировать питон есть смысл для задержки (latency), ведь профиль показывает, что из реального времени вы провели 40% в умножении матриц (может, на многих ядрах) и 60% в питоне (скорее всего в 1 ядре). Это часто бывает полезно в серверах, системах сборки, в тулзах командной строки.
Не без ограничений, если у вас многопоточный сервер, у которого есть thread pool для какой-то работы, то математика задержки будет сложнее. Тестировать лучше изолированно и без нагрузки на остальную систему. Полезно, но надо знать как пользоваться.
https://www.phoronix.com/news/Linux-6.15-Perf-Tools-Latency
Phoronix
Linux 6.15 Perf Tooling Introduces New Support For Latency Profiling
The perf tools changes were merged today for the Linux 6.15 kernel
👍4❤1🔥1
#prog #article
Faster Rust builds on Mac
Nicholas Nethercote заметил, что на Mac компиляция одного Rust-проекта была подозрительно долгой. Замеры времени компиляции через cargo показали, что очень долго исполняются билд-скрипты, причём каждый следующий дольше предыдущего. Как оказалась, это антивирусная фича MacOS (называется XProtect), которая сканирует исполняемые файлы на признаки malware при первом запуске. Билд-скрипты компилируются и исполняются каждый раз заново при компиляции, поэтому постоянно страдают от этих задержек. Замедление же объясняется тем, что процесс, который сканирует исполняемые файлы, однопоточный.
По очевидным причинам это ускоряет и cargo run, и cargo test (особенно для доктестов до edition 2024, каждый из которых компилируется в отдельный бинарник).
Из забавного: отключение XProtect снизило для Mads Marquart время для прогона всех UI-тестов rustc (около 4000 исполняемых файлов) с 9 мин 42 с до 3 мин 33 с.
Faster Rust builds on Mac
Did you know that macOS has a secret setting that can make Rust builds faster? It can also make Rust tests faster (sometimes massively so). It probably even has similar effects for other compiled languages such as C, C++, Go, and Swift. It sounds crazy, but read on…
Nicholas Nethercote заметил, что на Mac компиляция одного Rust-проекта была подозрительно долгой. Замеры времени компиляции через cargo показали, что очень долго исполняются билд-скрипты, причём каждый следующий дольше предыдущего. Как оказалась, это антивирусная фича MacOS (называется XProtect), которая сканирует исполняемые файлы на признаки malware при первом запуске. Билд-скрипты компилируются и исполняются каждый раз заново при компиляции, поэтому постоянно страдают от этих задержек. Замедление же объясняется тем, что процесс, который сканирует исполняемые файлы, однопоточный.
You can avoid these scans by adding Terminal (or any alternative terminal app you are using, such as iTerm) as a “developer tool” in System Settings. See these docs for details.
<...>
Please note that if you do this you are disabling an OS security feature. You should not do it unless you are comfortable with the potential speed/security trade-off.
По очевидным причинам это ускоряет и cargo run, и cargo test (особенно для доктестов до edition 2024, каждый из которых компилируется в отдельный бинарник).
The status quo is that this behaviour is documented in a few obscure places and 99%+ of Mac users are unaware. Fortunately, Mads [Marquart] has a draft PR for Cargo that detects if XProtect is enabled and issues a warning to the user explaining its impact and how to disable it.
Из забавного: отключение XProtect снизило для Mads Marquart время для прогона всех UI-тестов rustc (около 4000 исполняемых файлов) с 9 мин 42 с до 3 мин 33 с.
Nicholas Nethercote
Faster Rust builds on Mac
Did you know that macOS has a secret setting that can make Rust builds faster? It can also make Rust tests faster (sometimes massively so). It probably even has similar effects for other compiled languages such as C, C++, Go, and Swift. It sounds crazy, but…
🤯12👍5😁3🤣1