Обновить
-15
0.2
Андрей@Octagon77

Пользователь

Отправить сообщение

Мне как-то кажется, что случай не новый. Ибо вроде как общеизвестно, что

Осёл, поработавший в тени, больше никогда не будет работать на солнце.

Здесь, возможно, то же самое. Поняв, что бизнес идея тупо звонить кому ни попадя - не рабочая, нужно стенать, стонать и жаловаться, но не придумывать рабочую идею. Есть гипотеза почему так, вариант предыдущей:

Ослы, вкусившие административного ресурса, ...

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

Регулярно актуализировать - это подвиг, не отнимешь.

Лицензия не только читаема, что уже поразительно, но и приемлема. Есть мелкие, однако, вопросики. Вот "любому использованию" уделена масса внимания, а "любое не использование" почему-то обойдено стороной.

воспроизведение Произведения (полностью или частично) на бумаге путем распечатки с помощью принтера в одном экземпляре

А не на бумаге? А без принтера? А разве два экземпляра частичного воспроизведения не могут оказаться тождественны одному экземпляру? История с Хираньякашипу подталкивает к более общему стилю написания лицензий...

в том числе экземпляров, содержащих какую-либо часть произведения

Это невыполнимое условие ибо запрещает, в частности, писать

void main() {

Формат epub выглядит серой нечитаемой простынью по сравнениию с pdf, который тоже не блещет изысками форматирования. Надо бы по тексту предупредить - epub, по возможности, не качайте.

Сразу, после заглядывания в случайное место, в глаза бросилось

// base_url/part_2/2.2/ex_1.dart
void main() {
// Dart 2
final myList = [1, 2];
var a = myList[0];
var b = myList[1];
print('a: $a, b: $b'); // a: 1, b: 2

// Dart 3
var [a1, b1] = myList; // или final [a1, b1] = myList;
print('a1: $a1, b1: $b1'); // a1: 1, b2: 2
}

разве немного иначе не было бы понятнее:

// base_url/part_2/2.2/ex_1.dart
void main() {
final myList = [1, 2];

// Dart 2
var a = myList[0];
var b = myList[1];

// Dart 3
var [a1, b1] = myList; // или final [a1, b1] = myList;

// with the same result
print('a1: $a1, b1: $b1'); // a1: 1, b2: 2
}

Сама идея бесплатной книги по Dart кажется мне великолепной, особенно когда основная цель - продвижение Flutter, что самого по себе, что курсов или ещё чего по нему. Стандартный подход - вот великий Flutter но и про неизбывный Dart тоже поговорим, - не работает потому, что как раз Dart и есть главное психологическое препятствие на пути к Flutter.

Моя предварительная оценка - 129 из 137.

Нету в Rust никакой безопасности, а раз так, нету и никакого её обмена на эффективность - Rust быстр на уровне С. Есть, как и везде, ложь, полуправда, политика и шкурные интересы.

В Rust реализованы, если угодно - доведены до абсурда, некие интересные сами по себе идеи, для удобства назовём их парадигмой, заставившие меня понять - парадигмы могут быть разные (Scheme пытался но не смог) и чем очевиднее, что где-то никакой парадигмы то и нету, тем разрушительнее её неизбежное наличие. Как пример - borrow checker продают как безопасность, которая, в зависимости от точки зрения, либо отсутствует либо преждевременна и, следовательно, не нужна в лучшем случае, но не продают как способ облегчить чтение и понимание программы, хотя про отсутствие второй модифицирующей ссылки можно повторить всё когда-то сказанное про отсутствие go to.

У Rust хороший тулинг, я бы сказал - отличный кабы у Go тулинг не был бы на том же уровне, хорошая интеграция с С, разве что у Zig и того лучше, и отличная, в смысле непревзойдённая, документация на сайте. Я не знаю, достаточно ли этого чтобы объяснить движуху вокруг Rust, но поветрие "перепишем на Rust" породило много интересного, а набор крейтов Rust, уступая числом но, вроде как, возрастая быстрее, превосходит набор пакетов Go разнообразием, то есть Rust выглядит поуниверсальнее.

Как Rust ложится на (безумную) схему "джун - сеньор - тестер" я не знаю, но знаю - это важно. Но и без этого движ вокруг Раста не удивителен, а в истории смысл точно есть.

Забыл, придётся отредактировать пост. У Rust отвратительно медленный компилятор, но его как раз сейчас переделывают.

Все .go файлы в одной директории должны объявлять один и тот же package. Они видят друг друга полностью, как если бы были одним файлом.

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

Если бы написать чуть полнее, скажем про go.work, go.mod и то, когда имена пакета и директории могут не совпадать - будет понятно, что обязательный package не 100% исторически сложившееся уродство, а в нём есть и некоторая логика и некий потенциал на мало ли что в будущем. Мне кажется, что в статье изложено меньше чем квант.

Про "видят друг друга полностью" - неверно. Файлы друг друга не видят вообще, их видит команда go. Поэтому в одном каталоге может быть несколько .go файлов в каждом из которых есть и "package main" и "func main" и команды типа "go run m_v3.go p1.go p2.go" и "go run m_v1.go p1.go p2.go" будут работать, а комманда "go run ." - нет.

Такие мелочи важны как раз для начинающих, у них и main может быть в разных вариантах, и раскладка по модулям плавать.

Объявляет и инициализирует переменную одновременно

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

В JavaScript два пустых значения: undefined и null. Тони Хоар назвал null "ошибкой на миллиард долларов". JS решил эту проблему... удвоив её.

Он не удвоил, он именно решил... для случая когда возможны ровно три состояния - известно, неизвестно, не спрашивали. Так нередко и бывает, поэтому в комментариях некоторые и пишут что получилось хорошо. Как только состояний больше - JS требует задуматься, а весь огород вокруг undefined и nil только мешает. В Go такого нет, да.

То же самое относится и к обработке ошибок. Пока состояний два - получилось и упс, try да ? работают идеально. Как только задача не столь тривиальна - метод Go удобнее чем баян который можно нагородить вокруг типов исключений и отметки мест откуда они.

Главная проблема новичка сейчас это старые учебники. Классический «Effective Go» писали в 2009-м, там нет ни модулей, ни дженериков. Учить по нему Go всё равно что учить JS по учебникам времен ES3.

Если учить методом копипасты, то да - старые учебники есть проблема. Но тогда "сейчас" неуместно - так всегда было и всегда будет, не только с Go но и со всем остальным что не сдохло и меняется пока учебник пишут. А приверженность методу копипасты - сама по себе проблема больше, чем не самый свежий учебник.

Effective Go из 2009 - это действительно перебор, но почему бы не взять Mastering Go? Четвёртое издание - Go 1.22, на дворе - 1.25. Нужно только прочитать 3 release notes, и все проблемы с несовременностью решены. Автор там, кстати, пишет - предыдущие идания не устарели, за исключением первого. То есть учебник по Go 2018 года устарел, а 2019 года - ещё нет.

Как по мне, учить по тому, где чего-то нету, не страшно - об отсутствующем можно узнать потом, всех издержек - будешь знать как обойтись без тех самых, например, дженериков и редко пользоваться этим знанием. Неприятно учить о том, чего уже нет, тут выученное действительно вредит и печалит при выбрасывании, но как раз Go явно гарантирует отсутствие таких случаев. Go Compatibility Promise называется. На уровне best effort гарантирует, естественно, и у меня есть ровно один пример - всё, что кто-то постиг про core types изучая спецификацию языка - псу под хвост, это оказалась плохая идея.

Первое, что нужно забыть, это GOPATH. В прошлом Go требовал, чтобы весь ваш код находился в одной глобальной директории $GOPATH. Эта эра закончилась. Начиная с Go 1.14, Модули Go (go.mod) являются стандартом. Теперь вы можете создавать проект в любой папке, точно так же, как вы это делаете с npm init.

Зачем забывать про GOPATH? Она никуда не делась и бесценна для тех новичков, что предпочитают учиться путём дурацких экспериментов. Кстати, лучшая структура для новичков - go.mod, и то опционально, в корне и всё остальное разбросанное по папкам в художественном беспорядке - в go run можно просто перечислить нужные файлы с единственным ограничением нахождения их в одном каталоге, что легко обходится ссылками. И если обращаться именно к новичку, то рассказывать про go.work нужно раньше, чем про go.mod...

Основная проблема новичка в Go в том, что он не может понять границы того, что вознамерился изучать. На сколько хороши Андроид приложения на Go? Можно ли сделать сайт на Go без знания JavaScript? Какие игры можно делать на Go? Ставить Code или настраивать Neovim или пользовать Helix что работает с gopls из коробки? Вот это всё, чтобы не было ни "где же я был, раньше надо было учить" ни "лучше бы я Rust учил". А вспомогательная - манера сайта go.dev устроить множество точек входа в примерно два текста, из-за чего у новичка глаза разбегаются.

Напишу как я это понял, вдруг кому интересно.

  • Является ли вид страницы в браузере функцией от данных? Очевидно да.

  • Значит ли это что можно написать фронтенд средствами функционального программирования? Разумеется.

  • Как будет себя вести такой фронтенд? Перерисовываться при малейшем изменении данных.

  • Это что/как? Задница/внезапно.

Не огорчайтесь. Цель мер - повысить курс доллара с целью избежания убыточности нефтегазового сектора и, одновременно, улучшения наполнения бюджета. Ваш крайне несчастный фрилансер станет ещё и фрирайдером въехав в Рай на горбе нефтянки.

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

Я смотрю на график и самая высокая точка - больше трёх раз в неделю. Я неправильно смотрю на график? И это я могу понять - больше трёх занятий спортом в неделю требует то ли дисциплины то ли организованности, это автоматом повышает балл, особенно сейчас, когда высокая школьная оценка не требует ни ума ни фантазии.

Посмотрите на линии: они имеют нисходящую динамику, то есть эффект негативный. Тем не менее p-value 0,089, что значит, имеется некоторый тренд, но не статистически значимый результат[^5].

Я смотрю на линии и недоумеваю. Зачем они идут там, где нет данных? Кто тот мастер смартфона с 24 часами экранного времени в день на выходных который не спит по две ночи подряд? При переходе от 5 к 10 часам... я вижу явное положительное влияние.

При этом обратная картина, если смотреть, как количество сна влияет на оценки, — буквально развернутый

Тут я решительно отказываюсь видеть смотреть на прямую. Сон - физиологический параметр. Для каждой группы больных - он свой. Девочки спящие по 6 часов, как и мальчики спящие по 7 - это проблема, возвращающая к вопросу о том, что нужно для хороших школьных оценок. С учётом ЕГЭ - а вдруг может быть полезно подавить несколько ограничить способность к мышлению вообще.

И что занятно - ниже Автор сам описывает почему прямая абсолютно неуместна...

На протяжении всего эссе я использую слово “влияет”, однако я соглашусь с критикой, что это не в полной мере так. Уместнее сказать, что “связано”, а вот природу связи еще предстоит выяснить при дальнейших исследованиях.

Это очень верно, но почему бы не пойти дальше? Не понимая природу связи бессмысленно рисовать прямую - в ней нет смысла. С другой стороны - прямая существует сама по себе, почему бы её не привести? И действительно - почему бы и нет, но тогда разве не славно привести и параболу?

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

Я бы сказал, что статья - хорошая работа продажника, но не скажу. Потому что не понимаю кто будет конечным бенефициаром если она таки продаст мне Rust. Поэтому просто скажу, что все штампы по поводу Rust, равно как и по другим языкам - чисто маркетинговые сказки, серьёзно такое обсуждать...

Но что, если я скажу вам, что существует почти идеальный язык?

Ну да, очевидно существует. А "почти" - почти всемогущее лингвологическое волшебство.

Это Rust.

Ну да, конечно, он входит в группу почти идеальных языков вместе с, как минимум, Go и Dart. Ну и чё?

Как вышло вот это вот поколение хайповых языков, так я написал наивный тест - числа Фибоначчи. Так посчитать, сяк, большие целые надо откуда-то взять - библиотеки пощупать, GUI да TUI прикрутить, в Termux запустить, APK собрать... ну и на язык посмотреть.

Rust ничем меня не порадовал - ни соразмерностью частей, ни окончательным решением хоть какой-то проблемы, ни особым удобством работы (Cargo по сравнению с СMake - песня, но по сравнению с Go - ровня). И не порадовал компилятором - ну не быстро, в Termux жалуется что не может какие-то ссылки создать, копировать мол приходится...

А Go соразмерностью частей порадовал, дженерики например, по скорости Go то в два раза медленнее то в два раза быстрее (это может быть модуль больших целых, поди знай), но главное - только с ним все эксперименты прошли как по маслу (иными словами, дебилы, о которых пишет выше cupraer, успешно нейтрализованы). Вторым по небесячести, к слову, был JavaScript.

А вот то, что вот эти два способа

func frp(n int, a *big.Int, b *big.Int) *big.Int {
	if n < 2 {
		return b
	}
	return frp(n-1, b, a.Add(a, b))
}

func frt(n int) (*big.Int, *big.Int) {
	if n < 2 {
		return big.NewInt(0), big.NewInt(1)
	}
	a, b := frt(n - 1)
	return b, a.Add(a, b)
}

оба посчитали миллионное число мяу не сказав - тут я удивился. Переполнение стека, кстати, не перехватывают оба языка...

В Go нужно понять - не надо всё время писать if err != nil {return err}, а в Rust - не надо плодить ссылки. Как по мне - паритет. В Go объекты не надо бездумно создавать, в Rust их не нужно бездумно копировать - паритет, особенно учитывая, что по настящему критический код всё равно попросят написать без выделения или освобождения памяти.

Так что да, в Rust всё нормально, но не до таких восторгов. А можно иначе - либо нормально, но не всё, либо над Rust трудятся зря.

Вот как эти труды описывает ИИ Гугла

Key areas of work

  • Performance: The compiler performance group is working on a roadmap to improve compilation speed, and progress has already doubled the performance over the past few years. A 2025 survey identified linking as a major bottleneck, and the default linker for the popular x86_64-unknown-linux-gnu target is switching to the faster LLD linker.

  • Refactoring and modernizing: There are ongoing projects to redesign and re-implement parts of the compiler for better semantics and to prevent bugs. One example is the need for a redesign of "unsized locals" because the current implementation lacks a proper operational semantics, making its interaction with optimizations unpredictable.

  • Team and project structure: The compiler team structure has been reorganized to better focus on specific areas, and the overall project is tracking progress towards a slate of 40 project goals, including many flagship initiatives.

  • Language and feature stabilization: Regular new versions of Rust are released (like 1.85.0, 1.88.0, and 1.90.0), which include new stable language features and improvements to Cargo, the package manager. 

Blender - с большой вероятностью плохой пример, распаковал архив да двинул blender.desktop. И со многим так же, причём чем дальше тем больше - Go, Julia, Rust... даже Python... и далее программы на них. И пишут же - flatpack, всё не снап, хотя хрен редьки...

На этом не точка, если точка - значит хвост виляет собакой. Способов перекодировать fb2 в epub очень много. Например, https://github.com/rupor-github/fb2converter прост и (у меня) прекрасно работает, в дереве папок с разными файлами добавит ко всем fb2 одноимённые epub одной командой.

Является консольным приложением, написан на Go - можно взять с Github релиз, хоть под Винду хоть под Termux, а можно и собрать самому где угодно, хоть на смартфоне через тот же Termux, на всё максимальный расход - три команды. Только что на Хабре была статья про кросс компиляцию - прекрасное дополнение к ней ибо можно не нагружать телефон и собрать для Termux на любом компе. Но ещё раз - есть релиз, собирать не обязательно.

К слову, на Arch со товарищи - в AUR.

В общем да, так.Но после этого вопроса я начинаю за Вас волноваться... Я tview рекомендовал хоть и искренне, но немного игриво - в предположении что дефот для TUI в виде github.com/charmbracelet/bubbletea (и его окружение типа github.com/charmbracelet/lipgloss да github.com/charmbracelet/bubbles/*) вполне известны. Они тоже добавляют мало, может меньше чем на пол мега больше.

На смартфоне 4.2 мегабайта без, 3.0 с -s -w.

Они до сих пор в деле, и вряд ли это когда-то изменится:

К перечисленному можно, а может и нужно, много чего добавить, особенно в присутствии таких тузов как nvim, emacs, nnn, yazi, ncdu2, cmus, rtorrent, browsh.

Их легко:

И ещё, как выяснится ниже, использовать для превращения смартфонов, от себя добавлю - и старых компов, в весьма полезные вещи.

Фактически, почти любой телефон можно превратить в сервер-малютку и запустить на нём что-то интересное

Запускать интересное - да, превратить - скорее нет. Какие разрешения и исключения ни делай, всё равно и приложения, и особенно подпроцессы внутри приложений, периодически прибиваются никчемными мобильными операционками.

Termux живёт в своей песочнице

А что на Андроид не живёт в своей песочнице? И где слово "пока" - Termux завис на третьей бете на пол года, а тот Андроид на котором он перестанет запускаться - не за горами. Отзывы об альтернативе, Debian в виртуалке Андроид 16, премерзкие. Так что праздник терминала на мобилке может и покончаться.

На Android же для запуска консольных программ главное — дать права Termux, выставить переменные среды для SSL и запустить termux-chroot

Права - да, конечно. Всё остальное мне лет за шесть так и не понадобилось.

Да пребудет с вами сила go build!

Оно конечно, но как-то недообосновано, есть альтернативы. Для Go - Python, Rust если не думать про Эппл, JavaScript, Lua и даже Scheme с которой не так уж и плохо на мобилках. Для build - run, компиляция прямо на Termux - тоже вариант.

Всё ждал когда Автор чего-то предложит, не дождался, даже Телеграм канала не дождался. Поэтому предлагаю за него github.com/rivo/tview.

Ткнул по ссылочке, открыл раздел Теория, про module упомянуто, про strict упомянуто, про из связь не упомянуто. Дальше можно не ругать, уже понятно - недоработа от недоинтеллекта.

Это всё замечательно, но если в статье упомянут Flutter, то нужно как-то это показать. Рисовать то на экране может каждый, а вот в документации по Flet написано

# Signing Android bundle

TBD

[tool.flet.android.signing]
# store and key passwords can be passed with `--android-signing-key-store-password`
# and `--android-signing-key-password` options or
# FLET_ANDROID_SIGNING_KEY_STORE_PASSWORD
# and FLET_ANDROID_SIGNING_KEY_PASSWORD environment variables.
key_store = "path/to/store.jks" # --android-signing-key-store
key_alias = "upload"

# Splash screen

Иными словами, APK замучаешься получать, Flet сложным не заморачивается - TBD и отвали.

А если Автор, задним числом, попытается сказать, что статью писал не об этом, то тогда, в статье не об этом,

Раньше это означало погружаться в дебри Tkinter, изучать монструозный PyQt или тащить тяжеловесный Electron ради пары кнопок.

просто и тупо неверно - есть масса приемлимых альтернатив начиная с PyGame.

Чем хороша статья которая перевод? Во первых, не надо цепляться к тексту, как это делается местами выше - разговор то с переводчиком. Во вторых, перевод обычно с буржуинского, а буржуины - мастера искусства продавать. Часто слышу я про Zig, но именно на этот раз я как-то сразу

yay zig

и оно мне

5 extra/cargo-zigbuild 0.20.1-1 (1.1 MiB 3.5 MiB)
    Compile Cargo project with zig as linker
4 extra/zigbee2mqtt 2.6.3-1 (39.4 MiB 196.8 MiB)
    A Zigbee to MQTT bridge
3 extra/zls 0.15.0-2 (1.2 MiB 3.5 MiB)
    A language server for Zig
2 extra/zig0.14 0.14.1-2 (20.1 MiB 159.2 MiB)
    a general-purpose programming language and toolchain for maintaining robust, optimal, and reusable software
1 extra/zig 0.15.2-2 (23.8 MiB 186.4 MiB)
    a general-purpose programming language and toolchain for maintaining robust, optimal, and reusable software
==> Packages to install (eg: 1 2 3, 1-3 or ^4)
==> 1 3

И тут обращает на себя внимание пакет 5 - я не знаю зачем менять в Cargo линковщик, но Zig точно оказался как химия - широко простёр руки свои в дела человеческие. Поэтому я сразу за телефон и в Termux - многократно уже убедился, что всё интересненькое в пакетах Termux есть, а постылого ничего и нету, рекомендую лайфхак. И там zig да zls как с куста

Так что

$ zig version
0.15.2
$

Продано, можно поздравлять автора и переводчика. В Termux, правда, 0.15.1.

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

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

Уже сейчас не удивительна фраза "Ещь что дают", просто такого будет радикально больше. Что не сегодня это началось, понятно по древней фразе "Если хочешь чтобы что-то было сделано нормально - делай это сам".

Для размышляющих о будущем ещё одна цитата, тоже, вероятно, не вполне точная - "Воду можно найти, еду можно украсть, кислород можно выпросить, а за доступ в Сеть можно только заплатить".

Какой результат он получит при сравнении переменных различными вариантами:

Зависит от того, кто этим заинтересовался. И от soft skills джуна. Обычно - либо одобрение своих способностей, либо удовольствие вопрошающего от его превосходства.

Почему так происходит?

  • против глупости сами боги бороться бессильны

  • на любом дне снизу могут постучать

  • язык без костей - можно и такое задачей или экспертами назвать

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

У меня ребёнок пользовал Windows, давно. Переустановить самому пришлось всего один раз. Но и Windows тогда была совсем другой, так что может Линукс и лучше.

Но кто выбирает для ребёнка Линукс в надежде на контроль - не будет его. Стоит показать ребёнку Линукс, более того - просто напомнить о его существовании когда на машине стоит Windows, как о любом контроле при наличии физического доступа к машине можно забыть. Всяких приколов не меряно, от флешки с Линукс не оставляющей никаких следов и до шифрования папки на уровне файловой системы.

1
23 ...

Информация

В рейтинге
2 989-й
Зарегистрирован
Активность

Специализация

Разработчик игр, разгильдяй
Средний
От 1 000 000 ₽
JavaScript
TypeScript
Node.js
React Native