Сова пишет…
2.98K subscribers
375 photos
38 videos
5 files
445 links
Download Telegram
Сова пишет…
Если вы пользуетесь Godaddy, лучше мигрировать настолько быстро насколько возможно
Вброшу еще немного инфы

Чуваки из godaddy настолько безумны, что банят тупо всех, даже своих старых клиентов
1🙈7❤2😁2🌚2🔥1
Как определить контору пидорасов?

Во первых, выкуп домена в 4 раза дороже продления.

Во вторых, купить с креденшенами из РФ стоит на $24 доллара дешевле, чем из Армении.
👎66😁26💯8😱32
Но в защиту конторы, спустя полгода регулярных написываний в поддержку, мне разблокировали аккаунт на 48 часов.
😁13💅4🗿3👎22
Около 3-4 месяцев назад я начал проект smartbundle, так как заметил странное противоречие: по-моему мнению 99.9% библиотек имеют один и тот же пайплайн сборки, но каждый человек каждый раз зачем-то пилит его с нуля.
Причём каждый раз изобретая свои способы решения одних и тех же проблем, что приводит к тому, что package.json в проектах превращается в священную корову, так как он собирает в себя все костыли совместимости, которые лучше не трогать, так как никто не помнит что там и зачем. И даже больше: люди просто говорят "а мы не можем решить проблему совместимости, сорян" https://blog.isquaredsoftware.com/2023/08/esm-modernization-lessons/

И это чуток мне надоело: я хочу собрать все практики внутри одной тулы, чтобы не приходилось даже знать о всех костылях: пусть бандлер просто соберёт код и не будет меня волновать.

И моя гипотеза о том, что эта штука возможна, походу работает. Как я говорил: имя ему smartbundle https://github.com/XaveScor/smartbundle

И сборка приложения становится как никогда простой: вот пример переноса библиотеки на смартбандл - https://github.com/XaveScor/json-to-ast-es/commit/48d5861529e664c9b2adeb84f5d8e92398f3b997
0 конфигов. 0 доп библиотек. примерно 0 знаний о том во что должен превратиться код. Нужны только минимальные знания о современном package.json и за что отвечает строчка "exports". И всё.
После чего остаётся только перейти в директорию ./dist и опубликовать пакет.

Смартбандл всё ещё на этапе разработки и требует огромного количества фич, а это невозможно добиться без качественной обратной связи. Все обновления и мысли по смартбандлу я веду в @smartbundle. Подписывайтесь, делегируйте смартбандлу сборку ваших библиотек и занимайтесь кодом, а не инфрой.
❤23👍9🔥6🤔1
Вот в ЭКОСИСТЕМЕ APPLE есть такое приложение как iPhone Mirroring

Его суть в том, чтобы я мог лежа на диване с ноутбуком потыкать в нужные мне приложения на айфоне не вставая, особенно полезно, если айфон на зарядке в другой комнате.

Что интересно, эта фича работала несколько недель сразу после релиза, а потом перестала.

Месяцем позже Apple выкатили апдейт для всех устройств и вроде заработало.

Сейчас я решил снова воспользоваться этой фичей: мне пришло уведомление с айфона, тыкнул, открылось iPhone Mirroring.

Но! Apple предлагает мне встать, найти айфон и разблокировать его, чтобы использовать эту фичу!

Но тогда нафига мне эта фича? Как так?
😁33🔥2👍1
Сова пишет…
Вброшу еще немного инфы Чуваки из godaddy настолько безумны, что банят тупо всех, даже своих старых клиентов
Ну и теперь окончательно понятно что это за компания.

Я начал перенос последнего домена, когда мне разблокировали доступ на 48 часов.

Потом выяснилось, что для переноса нужно сменить контактные данные,
а подтверждение занимает 48 часов 🤡.

Спустя 48 часов аккаунт снова был заблокирован,
перенести домен я не смог, а когда написал в поддержку, мне ответили, что теперь аккаунт был закрыт навсегда.
😁39😢12🌚6🤷‍♂5🔥2
Казалось бы, что может быть такого, в патчинге глобальных функций в javascript окружении?

Не так давно, сообществу удалось пропушить отмену манки-патчинга fetch командой next.js.

Но вы знали, что StrictMode патчит console.log?

Попробуйте вот этот код:


import "./styles.css";
import { useEffect, StrictMode } from "react";
import ReactDOM from "react-dom/client";

const rootElement = document.getElementById("root")!;
const root = ReactDOM.createRoot(rootElement);

root.render(
<StrictMode>
<App />
</StrictMode>
);

function App() {
useEffect(() => {
console.info("useEffect fn called!");
}, []);

return <h1>Hello CodeSandbox</h1>;
}


И вы увидите, один лог "useEffect fn called!"
Но если добавить счетчик


let amount = 0;

export default function App() {
useEffect(() => {
console.info("useEffect fn called!", ++amount);
}, []);

return <h1>Hello CodeSandbox</h1>;
}


То, сразу будет заметна проблема:


useEffect fn called! 1
useEffect fn called! 2


И вы можете сказать: ну что такого, удобно же?
Но вам не кажется, что об этом можно было написать в документации?
https://react.dev/reference/react/StrictMode

А еще можно дать флаг, чтобы выключить это поведение (может и есть, но в документации нет ничего!)

Отлаживать работу сложных компонентов, когда React вставляет палки в колеса на каждом шаге, это адовое действо!

Если хочется потыкать:
https://github.com/facebook/react/blob/main/packages/shared/ConsolePatchingDev.js

Может это только у меня так?

Оказывается, да!
В более поздних 17+ версиях react это поведение откатили.
Теперь подсвечивают второй лог более бледным цветом

Да здравствует здравый смысл, раз уж у нас нет нормального фреймворка
🗿16👍8👎7❤2
Очень нравится, когда удается настолько сократить код при этом повысить читаемость
35👍11😁8🌚3🤩1
Forwarded from Effector news (Дима Zerꙫbias)
effector 23.3.0

- Улучшены сообщения об ошибках для skipVoid и store without sid: теперь по стектрейсу видно в каком сторе произошло исключение, что помогает быстрее найти и исправить его поведение
- Добавлена поддержка произвольного количества аргументов в колбэк scopeBind. Автоматически позволяет передать в reflect bind колбэки с числом аргументов больше одного
- Исправлено поведение clearNode в большом ряде ситуаций при работе с withRegion


Мы продолжаем активную работу над моделями и новым мажорным релизом. Данный минорный релиз потребовался чтобы позволить разрабатывать MVP моделей поверх 23 версии не углубляясь в эффективную реализацию. Разработка будет проходить в этом репозитории. Stay tuned!
12👍7🔥2👎1😡1
С сегодняшнего дня мой юзернейм в великой социальной сети — x.com/sergeysova

Теперь у меня есть:
- t.me/sergeysova
- github.com/sergeysova
- x.com/sergeysova

На самом деле юзернейм использую в куче других соц сетей и сервисов, но эти были наиболее интересны.

Удалось связаться с предыдущим владельцем юзернейма, а так как аккаунт не использовался, то пользователь поменял на другой, за что ему отдельное огромное спасибо!
👎120🔥24❤5👍4🌚1
В виду популяризации нейросетей, а также инструментов разработчиков с AI, я добавил в effector.dev несколько подходов, которые облегчат работу.

Стоит начать с коллекции всей документации в виде единого файла. Передаете любую ссылку из списка ниже в ваш ChatGPT/Gemini/Grok и задаете вопросы.
Изначальная задумка отсюда:
https://scalabledeveloper.com/posts/llms-txt-with-astro/

В effector доступно несколько документов:
https://effector.dev/docs/llms.txt
https://effector.dev/docs/llms-full.txt

А также я сделал отдельно локализованные версии:
https://effector.dev/en/llms-full.txt
https://effector.dev/ru/llms-full.txt
https://effector.dev/uz/llms-full.txt
Не вся документация переведена полностью, поэтому недостающие статьи дополняются английским исходником.

Из этих файлов вычищены внутренние ссылки, ID-заголовков, а также вырезан некоторый кастомный markdown синтаксис. Это уменьшает количество токенов.
🔥388👍5👎1
Кроме этого, я уже давненько создал Custom GPT под названием Effector Assistant, вы можете найти его в каталоге ChatGPT GPTs.

Я загрузил в него не только документацию effector, но еще и WithEase, некоторые свои статьи и рекомендации для ChatGPT.

Вот пример ответа:
https://chatgpt.com/share/67b43fa3-bfe0-8002-8b6c-cdc9b43ab351
1❤16👍66🔥2
Раз уж пишу про обновление документации effector, то расскажу, что сейчас сообщество активно пишет новые статьи и улучшает уже написанные!

Effector становится все более привлекательным инструментом для изучения.

Сейчас я не вкладываю много сил в документацию, так как недавно участвовал в программном комитете Podlodka React Crew #2, а также продолжаю дописывать контент для frontend.vision и активно стараюсь не выгореть.

Количество материалов по effector растет с каждым днём, я даже не успеваю вычитывать все новые статьи, поэтому активно использую некоторые AI-технологии для создания контента.

Например, я выкачал всю документацию и статьи, разбил на кусочки и посчитал эмбеддинги, чтобы в дальнейшем крайне быстро и точно искать по содержимому. Это супер сильно помогает при написании статей.

Вообще, это подход так называемого RAG (Retrieval-augmented generation), но вместо использования полноценного инструмента я собрал свой RAG дома на коленке используя NodeJS + SQLite запуская в CLI.

По сути, собираю уникальную пачку чанков из документации последовательным поиском, а дальше либо читаю глазами результат, либо компилирую в единый ответ через LLM.

Если интересно, расскажу как это работает подробнее
🔥249❤5👎3👍2
Я каким-то образом пропустил Rust 1.85

Язык перешел на новую стабильную версию синтаксиса Edition 2024

https://blog.rust-lang.org/2025/02/20/Rust-1.85.0.html
👍8🔥1
Forwarded from Hacknote.js (Никита Балихин)
Системы эффектов

Недавно послушал выпуск Подлодки про "Системы эффектов в языках программирования" и решил поделиться некоторыми рандомными рассуждениями на эту тему.

"Окраска" функций

"Окраской" функций называется некоторая декларация эффектов, содержащихся в функции.

В JavaScript есть 2 варианта "окраски" функций:

- async — обозначает, что функция асинхронная и позволяет использовать внутри неё оператор await
- * — обозначает, что функция является генератором и позволяет использовать внутри неё оператор yield

Fun fact: эти 2 варианта можно скомбинировать, чтобы получить AsyncIterator, который можно перебирать оператором for await...of.

В языке Nim система эффектов позволяет окрашивать функции любыми эффектами, что выглядит весьма любопытно (на самом деле существует ещё множество языков с такой возможностью, но почему-то мне сразу вспомнился именно Nim).

Обработка исключений

В Java есть оператор throws, позволяющий "окрасить" функцию эффектом выброса определённого типа исключения и на этапе сборки удостовериться, что эти исключения обработаны.

JavaScript/TypeScript не позволяет типизировать исключения (разве что задокументировать их с помощью JSDoc или TSDoc), но теоретически эту проблему можно решить знаменитой монадой Either.

Чистота функций

Бандлеры используют аннотацию /*#__PURE__*/, которая обозначает отсутствие побочных эффектов в функции, для более эффективного тришейкинга (упомянал об этом в своём докладе).

В самом JavaScript нет языкового средства для выражения чистоты функции — то есть отсутствия в ней эффектов, хотя было бы классно использовать это знание, например, для исполнения кода во время сборки (как, например, c babel-plugin-macros).
🔥8❤3👍3
В документацию effector.dev подъехал ПР

Теперь в навигации есть красивый переключатель разделов, спасибо @senzujuju

https://github.com/effector/effector/pull/1232
16🔥5❤4👍1🤩1
Знаете, когда 10 лет опыта в IT вложены не только в карьерный рост, но и в крутые сторонние медиапроекты и создание качественного контента? Вот Андрей Смирнов — это как раз такой случай.

Что он уже успел:

Уже 9 лет в IT-менеджменте — управлял людьми в X5 Tech, IPONWEB и Rambler.

Ведёт аж два подкаста: Frontend Weekend и «600k в секунду». Правда, второй уже давно пора переименовать в «1M в секунду» — инфляция, что поделать.

Организовал свою первую конференцию по софтовым навыкам Soft Weekend.

Регулярно выступает на крупнейших конференциях: TeamLead Conf, HolyJS, Frontend Conf, CodeFest и других.

Участвует в программных комитетах CTO Conf, Podlodka Teamlead Crew и ИТ-Пикника.

Но главное, почему я вообще об этом пишу — это его канал. Там не просто «сухая экспертность», а живые истории, личный опыт и много реально работающих советов.

Например, что мне зашло:

- «Как придумать идеальную тему для доклада» 
- «Стоит ли доверять интуиции?»
- «Технические навыки у управленцев?»

Тексты Андрея реально приятно читать. Это не блогер, который через силу умничает, а думающий эксперт, делящийся своими размышлениями, опытом и самоиронией.

Рекомендую подписаться.
👎453🔥10❤9🤷‍♂73