TGViewer
Channel Public Channel
Шось про айтішку

Шось про айтішку

@smthng_dev

Мілтек, ШІ, собаки та село
Чат https://t.me/+oo6Cid6vhhNiZDRi
Subscribers
2.09K
Photos
616
Videos
221
Links
756

Showing posts older than #1035 · Back to latest

Older Posts 19 shown
Post #1034 1.06K
Хтось шукає роботу розробником (веб та/або мобайл)? Знайомим у медичний стартап треба людина для розробки mvp. Пишіть в коментах, передам контакт.
Post #1032 1.18K
Прийшов час збирати ваші донати на пластик для друку бімб для ЗСУ. За останні три місяці ми надрукували виробів на 750кг

Гроші на банці закінчуються, а вже треба купляти пластик. Цього місяця ми ще й розширили команду друкарів.

Тому як завжди, буду вдячний за допомогу та поширення 👉 https://send.monobank.ua/jar/8TTMjgaRFy
  • 🔥 20
  • ❤ 4
  • 👏 1
Post #1031 1.02K
Давайте розкажу вам про всілякі performance штуки.

Нещодавно дивився як в ClojureScript прискорити деякі операції в іммутабельних векторах. Вектор це типу масив, але усі операції на ньому створюють новий вектор і під капотом він імплементований як дерево з 32 нодами в кожній гілці. Отут можна більш детально почитати про імплементацію векторів https://hypirion.com/musings/understanding-persistent-vector-pt-1

Як порівняти два таких вектори? Типу зробити [1 2 3] == [1 2 3]. По класиці — це пройтись по кожному елементу і порівняти їх. Це реалізовано через ітератор, порівнюємо кожні наступні значення поки не знайдемо пару відмінних значень it1.next() == it2.next(). Аллокація ітератору і виклик його методів займає час і пам'ять. Але є інший спосіб.

Замість того, щоб використовувати загальний механізм (тут це ітератор), можна спеціалізувати код для порівняння двох векторів і використати деталі імплементації вектору щоб прискорити операцію порівняння. По суті можна пройтись по дереву, порівнюючи його гілки (масиви по 32 елементи). Так як вектор імутабельний, його гілки теж імутабельні. Тому порівняння пари гілок в більшості випадків можна робити по посиланню, а коли гілки відмінні по посиланню, то перевірити їх глибоким обходом.

Таким чином worst case виграш по швидкості виходить близько 30%, що дуже непогано.

Ще одна штука. Є в нас вектор [1 2 3 4 5 6 7 8], і ми робимо йому (drop v 4) щоб видалити перші 4 значення. Під капотом насправді оригінальний вектор не змінюється, а огортається в тип даних ChunkedSeq (послідовність значень розбита на групи) і трекає позицію з якою ця послідовність починається. Якщо ми дропнули перші 4 значення у векторі, то chunked seq буде починати вичитувати значення з індексу 4 у оригінальному векторі.

У реальному коді конвертація векторів у chunked seq відбувається доволі часто. Я помітив, що порівняння вектору з chunked seq повільніше ніж порівняння двох векторів між собою. Виявилось що як і у випадку з векторами, порівняння відбувається лінійниим перебором. А так як chunked seq тримає в собі оригінальний вектор, то задача оптимізації цього випадку по суті зводиться знов до порівняння двох векторів через спеціалізацію коду під цей випадок.

Тут результати бенчмарку показали приріст у швидкості операції від 300% до 500%.

Здавалося б що це непотрібні мікро оптимізації, але коли вони робляться у самій мові програмування чи її стандартній бібліотеці, то всі користувачі мови автоматично отримують покращення при цьому не сплачуючи за це ні центу.

Також це хороший приклад того, як на перших порах можна зробити працююче рішення на абстракціях і пізніше покращити конкретні кейси через спеціалізацію алгоритму на більш низькому рівні. В таких випадках точкове ускладнення коду цілком виправдане.
Hypirion Understanding Clojure's Persistent Vectors, pt. 1 Ever wondered how Clojure's persistent vector actually works? This is part 1 of a blog series which aims to explain them.
  • 👍 21
  • 🤯 2
Post #1030 956
Ладно, напишу шо думаю. Як на мене, то це все виглядає так, що більшості проєктам треба HTML і трохи JS. Але тому шо за роки досягнень та маркетингу всі пересіли на React, плюс Vercel пушить непотрібну складність, то є запит на щось модернове і просте.

Але люди вже звикли к отаким типу фулстек фреймворкам, де в тебе і бекенд з серверним рендерингом і роутер і дата фетчинг і клієнт і все це інтегровано. Тому хочеться щоби було комплексне і просте рішення.

Тому повертаючись до React. Keep calm і продовжуйте робити на ньому те, для чого він був створений — виключно клієнтські високо-інтерактивні застосунки. Саме в таких проєктах декларативність UI допомагає не загрузнути у складності. А для лендосів і конструкторів з формочками воно не треба.

В моїй роботі мало що змінилось за роки використання реакту, хіба що хуки прийшли, але і ними я мало користуюсь, бо для нетривіальних проєктів краще підходить стейт менеджер. З усіх апішок доданих за останні роки я майже нічого не використовую. І це не заважає будувати такі апки як https://pitch.com/ та https://whimsical.com/

Найкраще що дав реакт — це декларативний UI
  • 👍 16
  • ❤ 2
Post #1029 955
господи поможи, у фронтенді революція, люди дивляться на Remix 3, і не викупають шо ми повертаємось в часи бекбону

function Counter(this: Remix.Handle) {
// State is just a closure
let count = 0;

return () => (
<div>
<div>{count}</div>
<button
class="p-2 text-green-500"
on={dom.click((event, signal) => {
count++;
this.update();
})}
>
Inc
</button>
</div>
);
}


this.update() ви шо серйозно?

чювакі не роздуплили сигнали походу

https://frantic.im/remix-3/
frantic.im Thoughts on Remix 3 The pendulum is about to swing the other direction
  • 🤔 4
  • 🤮 2
  • 💯 2
Post #1028 967
нарешті fpv каміки в новій батлі
  • ❤ 9
  • 👍 4
  • 🤩 1
Post #1027 1.05K
Тільки мене тригерить оце плаваюче меню поверх стрічки? Наче і не заважає, але створюється відчуття перекритого контенту.

Я так розумію це те, що нас чекає коли всі підтягнуться під дизайн iOS 26
  • 💯 34
  • 👍 4
  • 😁 4
Post #1026 1.19K
Post #1025 1.18K
День два і в селі буде вода. Понад Дніпром на кручі луплять свердловини на 120 м щоб дотягнутись до води.

Ну ви понял, тепер це канал про ковиряння у багнюці) в принципі не сильно відрізняється від ковиряння у коді
  • 😁 33
  • 🎉 7
  • 🥰 2
  • 👏 2
  • 🔥 1
Post #1024 1.11K
Я напевне перша людина у світі яка досліджувала бурʼян через чатгпт
  • 🔥 13
  • 😁 5
  • 🤔 1
Post #1022 895
В кого вигорання чи інші захворювання, запрошую вас на толоку.

Тут можна покосити бурʼян, зламати паркан, спалити його, нарубати дров, вкрасти в сусіда гарбуза, розвалити сарай, залатати дах, поштукатурити стіни.

І все це безкоштовно!
  • 🔥 30
  • ❤ 2
Post #1021 1.24K
Муд в Києві останніми днями
  • 😁 38
Post #1020 1.18K
Донатні книжки всім відправив.

Пес нагадує вам про збір на корча Т5 для однокласника та його побратимів з fpv підрозділу в 1 бригаді ТРО

Вже є 160к з 420 👉 https://send.monobank.ua/jar/8czBpeXpDu
  • ❤ 10
  • 👍 2
Post #1019 2.17K
Ми розширюємо виробництво літаків, треба будуть складальники, пайщики та налаштувальники бортів. Всьому навчаємо. На налаштування треба бажано трошки технічну людину яка шось шарить в компах.

Може в кого серед знайомих чи родичів є люди (часто це студенти) які шукають роботу? Київ, робота на виробництві по місцю.

Буду вдячний за поширення.

https://skydefenders.com.ua/
  • 🔥 12
  • 😁 3
Post #1017 996
Питання, що в нас по альтернативам 1С? Є якісь єдині системи ведення складу та бухгалтерії?
Post #1016 1.36K
хто з вас
  • ❤ 19
  • 😁 12
  • 👍 4
  • 😱 2
  • 💯 2
Post #1014 1.15K
Bun має кльовий FFI як на мене. Грався днями з біндінгами з JS до glfw/opengl/bullet, вирішив спробувати для цього Bun.

Все шо треба зробити — це описати в JS інтерфейс нативних функцій і завантажити динамічну бібліотеку. Причому перше можна згенерити ллмкою.

Для інтеропу з C++ звичайно треба трохи пописати коду і зробити обгортки з екстернами.

Карочє класна фіча якою легко користуватись, якщо є потреба підключати нативні модулі.

Bun FFI https://bun.sh/docs/api/ffi

PS
Bun написаний на Zig, яким можна компілювати C/C++, теж зручна штука, zig build-lib src/bullet.cpp -dynamic -lc -lc++ і готово
  • 👍 10
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →