Pull to refresh
50
0
Friedrich von Never @ForNeVeR

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

Send message

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

Можете почитать вот тут. Если кратко, то всё сломается, и придётся ремонтировать :)

Если цените этот старый добрый трек, то посмотрите вот этот… ээ, ремейк?
https://youtu.be/R4yeftbm4hY

О, это хорошие новости. Но всё ещё только на Windows, правильно?

В статье приведена инструкция по сборке варианта tdlib на C++/CLI (!), который известен своей хтоничностью. Предоставляется из коробки в апстриме, в этом основное преимущество (но собирать апстрим они всё равно в любом случае предлагают руками). Зато оно точно не умеет в современный .NET рантайм на платформах, отличающихся от Windows. Ну и, признаться, я не уверен, как правильно собирать core-compatible C++/CLI проекты, и делают ли это в Телеграме, и, как следствие, а совместимо ли оно вообще с современным .NET даже на Windows (в статье, если я правильно понял, вы предлагаете использовать олдоватый .NET Framework).

Вместо этого, как альтернативу, можно взять библиотеку-враппер tdsharp и готовую нативную сборку в нугете tdlib.native, обе из которых нынче мейнтейню я. Они совместимы с современными рантаймами; нативная часть умеренно¹ кроссплатформенна (но вы можете подложить свою собранную как вам нужно, и всё тоже заработает).

¹ Почему «умеренно»? Потому что я пока не осилил пайплайны для сборки натива на ARM64, но буду рад принять пул-реквесты для их поддержки. Windows, Linux, macOS x64 поддерживаются, остальные платформы пока нет.

Вероятно, Cygwin'овский cat у вас как раз и обрабатывает ANSI-последовательности, преобразуя их к командам Windows console API.

Я не считал себя сентиментальным человеком, но вы завоевали моё сердце.

Огромное спасибо всем причастным к публикации кода всех этих прекрасных игр и к поддержке сообщества. Вы — лучшие! ♥

Я так и не понял, что такое «мои контакты». Вообще непонятный какой-то концепт. Вроде бы, в списке чатов появляются вообще все люди, которые мне когда-то писали. Но их ещё иногда (хз по какому принципу) предлагается добавить или не добавлять в какой-то скрытый «контакт-лист».


Чёрт знает что, если честно.

Простите, не могли бы вы провести небольшой эксперимент? Попробуйте быстро нажимать на вашем Макбуке клавишу A (английскую) и Caps Lock.


В идеале, у вас должна получиться вот такая строка: aфaфaфaфaфaфaф


У меня это почему-то ужасно работает, раскладка практически не переключается при быстром нажатии. Пришлось накатывать какой-то волшебный патч через Karabiner (который обещает отвалиться не то на Big Sur, не то на M1, я пока не понял).

Не подумайте, что это был камень в чей-то огород :)


Я тоже не представляю, как можно эту историю улучшить.

Когда мне нужно было решить подобную задачу (преобразовать LaTeX-формулу в SVG), то я воспользовался библиотекой, которую сейчас мейнтейню — WPF-Math.


Причём функция, генерирующая SVG, у нас там получилась вообще в качестве одного из случайных побочных результатов разработки.

Мне очень понравилась та часть контеста, где нужно было реализовывать виртуальную машину и исследовать галактику, но к моменту настоящего контеста (когда нужно было писать ботов) запал уже, к сожалению, иссяк :(


Атмосфера вами была сделана просто великолепно, и организация на хорошем уровне.


Однако, с CI у нас была одна проблема: оказалось, что в вашем Докер-образе для Haskell не хватает каких-то там библиотек, и из-за этого несколько участников нашей команды сначала долго и старательно запиливали какой-то крутой модуль для работы с HTTP, а потом так же долго и старательно его выпиливали, когда мы не смогли запустить его в вашем образе, и не смогли даже после нескольких принятых вами пул-реквестов развернуть там все нужные зависимости :(

Девять месяцев спустя читать это стало очень интересно.

Конструктор родительского класса можно вызывать в любом месте конструктора дочернего класса в JS и CoffeeScript.


Однажды я на это очень хорошо напоролся, когда переводил кодовую базу с CoffeeScript на одну из относительно ранних версий TypeScript, в которой так делать было нельзя (по крайней мере, тогда; как сейчас — уже не знаю). Пришлось довольно нефигово приседать, чтобы пофиксить все связанные с такой миграцией проблемы (да, само собой как-то нечаянно получилось, что код оказался завязан на это поведение; самому неприятно).


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

У меня провайдерские блокировки так и остались, рутрекер с точкой не работает.

Анонимные рекорды в F# пытаются играть по примерно таким же правилам, кстати.

Самое обычное дело. Например, для компиляции PDF из LaTeX-документа latexmk тоже много раз перезапускает процесс, покуда не получится удовлетворительный результат (впрочем, там этому есть логичное объяснение).

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

Вроде в какой-то версии это допилили. У меня работает, например, такое:


[<Measure>] type cm
[<Measure>] type xx = cm ^ (1/3)

let a = 10<cm>
let b = 10<xx>

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

В F# есть такая встроенная фича, называется units of measure. Очень удобная, в моём физическом коде пару ошибок помогла поймать.


Во многих других функциональных языках, в которых есть конструкции вида newtype, это также делается достаточно изящно.


(забавный факт: автор обсуждаемой статьи как раз тоже топит за F#)

Дедфуду интересен подход, при котором «компилируется — значит, работает», побольше всяких там компилтайм проверочек, побольше всего в системе типов, побольше обоснованной уверенности в коде.


Delphi, Pascal — ну вообще не про это.

Information

Rating
Does not participate
Location
Amsterdam, Noord-Holland, Нидерланды
Registered
Activity