Хочется избавиться от любых сложных зависимостей, требующих нетривиального администрирования (Yggdrasil, I2P и т.д.) Выше я уточнил что оба компьютера могут выходить в обычный интернет и писать/читать текстовые строки по некоторым заранее известным URL. Достаточно ли этого для пробивки NAT?
Допустим, внешнего IP ни одного хоста я не знаю, но допускается использование простейших внешних открытых ресурсов - желательно простейших http, таких как веб-сайты на бесплатном хостинге, может быть какие-то богом забытые чаты, в общем что угодно куда компьютер может периодически выкладывать некоторую строку данных, содержащую тот же внешний IP, полученный из сервисов типа jsonip.com
А как вообще на низком уровне осуществляется обход NAT? Допустим у меня есть два компьютера, подключенные к разным провайдерам, оба за NAT. И я хочу их соединить скажем по протоколу UDP. Простейшая самописная программка, умеющая отправлять и получать UDP пакеты. C одного отправляем пакет - на другом получаем. Что для этого нужно сделать? При этом у меня нет никакого внешнего сервера со статическим IP.
Тема интересная, нечто подобное я предлагал для децентрализованной пиринговой соцсети. А вот будет ли это работать для насквозь коммерциализированного собственнического "обычного интернета" - вопрос открытый. Вот даже автор статьи начал за здравие, а кончил за монетизацию.
И конечно, самый сложный вопрос - правильные алгоритмы. Здесь нужно очень хорошо подумать, как сделать так чтобы избавиться от всевозможных накруток и "поисковой оптимизации", как разделить мнения людей по разным вопросам (такое зачастую бывает что в одних вопросах человек профи а в других профан), и т.д. А если рассматривать децентрализованные архитектуры, то сложность возрастает еще на несколько порядков, накладывается нетривиальная криптография и т.п. Это реально непростая задача.
Непонятно зачем нужен именно минималистический браузер. Но если я правильно понимаю он использует собственный движок? Тогда наверное это можно было бы использовать как компонент для WYSIWIG редакторов в различном софте (особенно учитывая svg и математические формулы). А то хромовский движок в режиме ediatable далеко не идеально обрабатывает многие ситуации (ну или нужно полностью обмазаться javascript'ом).
В игры уже давно не играю, но Blood в свое время понравился именно за реалистичную атмосферность. В тех же Doom и Quake как правило какие-то абстрактно-сюрреалистичные катакомбы, вообще не вызывающие никаких ассоциаций. В Blood же почти каждый уровень хорошо ассоциирован с реальным миром. Кладбище, поезд, особняки и отели в горах, больница, дремучий лес с деревянными постройками и т.п. Мне визуально нравятся текстуры дерева - вроде и шутер, и врагов нужно отстреливать, но при этом мозг как-то отдыхает на таких текстурах:)
Кстати, а какие из последующих игр можно было бы назвать визуально и атмосферно похожими на Blood?
Немного побочная тема, но был бы интересен обзор даркнета как такового, наиболее популярных ресурсов где чаще всего что-то "выкладывают". Возможно здесь есть знатоки, которые захотят написать такую статью?
По сути никаких фундаментально новых фич в язык уже давно не добавляют, только "стабилизируют", наполняют библиотеки и т.п. Интересно, означает ли это что набор фич в Rust исчерпывающий, и концептуально ничего больше в языке (в общем случае - не только в Rust) не нужно?
Кстати, исключительно логичная вещь, которая по идее должна быть во всех языках программирования (но увы, это не так). Скажем, число 0 - это что? int, float, double, байт, слово, двойное слово, четверное слово, знаковое, беззнаковое, или может какой нибудь объект "длинной арифметики"? В большинстве языков тип (скажем int32) сразу прибивается к константе гвоздями. И дальнейшее использование константы в выражениях с объектами других типов подразумевает приведение типа (или всякие постфиксы, типа 0ULL). А на самом деле 0 - это просто 0, математическая абстракция, которая по уму должна приводиться к наиболее удобному типу непосредственно в месте использования. Так что в Go все правильно сделали.
Проблема в том что "файл проекта" в существующих языках не является частью стандарта языка. Хотя казалось бы, почему не стандартизировать? Тогда заодно решилась бы и проблема совмесимости между разными компиляторами и IDE. Файл-то один, стандартный, работай в любой ОС, с любым компилятором и из любой IDE.
Кстати интересно, а если поставить на другой диск Linux, то можно ли из него запускать ранее установленную винду через виртуалку? По идее должно быть можно. И если отключить такой винде инет, то можно более-менее спокойно пользоваться уникальным виндовским софтом (фотошоп, видеоредакторы и т.п.) и не связвыаться с обновлениями?
Дело не в GUI. Я никогда толком не пользовался make-файлами и потому у меня глаз незамыленный. Прочитал первую попавшуюся статью на Хабре - в целом все понятно, но это же сплошной антипаттерн. Какой-то текстовый ассемблер или что-то типа того. Общая область видимости, глобальные и магические переменные, все недостатки bash-скриптов (строки не в кавычках и прочее)... Словно бы из мира современных языков тебя окунули в какой-то FORTRAN/ALGOL/COBOL. Неудивительно что люди в этом не хотят разбираться и относятся как к какому-то древнему legacy, которое "как-то работает и ладно".
При этом еще большой вопрос, а нужен ли именно такой подход для сборки проектов. Мне больше нравится подход не make-файлов, а файлов проекта: есть некий "файл проекта" на базе стандартного структурного формата (json, xml...), который содержит в отдельных секциях список всех исходников, опции компиляции, информацию о целях сборки, информацию о конфигурациях (Debug, Release и т.п.). Все остальное решает компилятор. В редких случаях, когда какой-то конкретный файл нужно собрать с особыми опциями, или вызвать внешнюю программу, к файлу добавляется информация PreBuild/PostBuild. Преимуществ у такого подхода масса: иерархическая структурированность, пригодность для автоматического изменения, в т.ч. с помощью GUI (это же структурный формат для которого есть масса парсеров), использование в качестве файла ассоциированного с IDE (щелкаешь по нему и проект загружается в IDE, с деревом исходников, со всеми настройками).
Согласен, за это я Питон не люблю (как уже отметил выше). Но в сравнении с bash у него хотя-бы частично классический синтаксис. Строки это строки, числа это числа, классически задаются списки, массивы и т.д.
Они свернули именно туда куда планировали (и скорее всего планировали задолго до 2012). А вот мы свернули не туда где-то в 1992-1993, когда, отвлекшись на чисто экономические трудности, спустили на тормозах идею люстрации сотрудников одной конкретной государственной организации...
У меня волосы шевелятся когда я вижу любой код на bash)) Как вообще на этом можно что-то писать? Хотя Питон я тоже не люблю, но он хотя-бы придерживается классического синтаксиса языков программирования.
Нет, вполне понятно что любые скрипты командной строки - это в каком-то смысле развитие самой идеи запуска программ в командной строке, а значит синтаксис путей, аргументов командной строки, пайплайнов и т.п. должен быть в скриптах без изменений. Это накладывает существенные ограничения на синтаксис скриптов - строки не в кавычках, пробелы вместо запятых и прочая муть, делающая bash очень сильно отличающимся от любого классического языка. Не знаю можно ли было пойти по другому пути в принципе... Я не пишу "скрипты" как таковые, но если мне нужна простая утилита командной строки - я пишут ее на Go.
Ну вот хочется чтобы делалось (может не в firefox, но хоть в каком-то браузере, их сейчас много). А вместо этого мы видим какие-то дизайнерские изыски, новые эмодзи и прочее.
Раньше коммуникаторы и кнопочные телефоны были и полтора и два сантиметра и больше в толщину и никаких проблем с ношением их в карманах не было.
Хочется избавиться от любых сложных зависимостей, требующих нетривиального администрирования (Yggdrasil, I2P и т.д.) Выше я уточнил что оба компьютера могут выходить в обычный интернет и писать/читать текстовые строки по некоторым заранее известным URL. Достаточно ли этого для пробивки NAT?
Допустим, внешнего IP ни одного хоста я не знаю, но допускается использование простейших внешних открытых ресурсов - желательно простейших http, таких как веб-сайты на бесплатном хостинге, может быть какие-то богом забытые чаты, в общем что угодно куда компьютер может периодически выкладывать некоторую строку данных, содержащую тот же внешний IP, полученный из сервисов типа jsonip.com
А как вообще на низком уровне осуществляется обход NAT? Допустим у меня есть два компьютера, подключенные к разным провайдерам, оба за NAT. И я хочу их соединить скажем по протоколу UDP. Простейшая самописная программка, умеющая отправлять и получать UDP пакеты. C одного отправляем пакет - на другом получаем. Что для этого нужно сделать? При этом у меня нет никакого внешнего сервера со статическим IP.
Тема интересная, нечто подобное я предлагал для децентрализованной пиринговой соцсети. А вот будет ли это работать для насквозь коммерциализированного собственнического "обычного интернета" - вопрос открытый. Вот даже автор статьи начал за здравие, а кончил за монетизацию.
И конечно, самый сложный вопрос - правильные алгоритмы. Здесь нужно очень хорошо подумать, как сделать так чтобы избавиться от всевозможных накруток и "поисковой оптимизации", как разделить мнения людей по разным вопросам (такое зачастую бывает что в одних вопросах человек профи а в других профан), и т.д. А если рассматривать децентрализованные архитектуры, то сложность возрастает еще на несколько порядков, накладывается нетривиальная криптография и т.п. Это реально непростая задача.
Непонятно зачем нужен именно минималистический браузер. Но если я правильно понимаю он использует собственный движок? Тогда наверное это можно было бы использовать как компонент для WYSIWIG редакторов в различном софте (особенно учитывая svg и математические формулы). А то хромовский движок в режиме ediatable далеко не идеально обрабатывает многие ситуации (ну или нужно полностью обмазаться javascript'ом).
А как это правильно устанавливать? Запускаю bat файл - выдает "Sorry, Blood.rff seems to be missing."
В игры уже давно не играю, но Blood в свое время понравился именно за реалистичную атмосферность. В тех же Doom и Quake как правило какие-то абстрактно-сюрреалистичные катакомбы, вообще не вызывающие никаких ассоциаций. В Blood же почти каждый уровень хорошо ассоциирован с реальным миром. Кладбище, поезд, особняки и отели в горах, больница, дремучий лес с деревянными постройками и т.п. Мне визуально нравятся текстуры дерева - вроде и шутер, и врагов нужно отстреливать, но при этом мозг как-то отдыхает на таких текстурах:)
Кстати, а какие из последующих игр можно было бы назвать визуально и атмосферно похожими на Blood?
С++ до сих пор бурлит, хотя гораздо старше чем Rust:) Рефлексия к примеру.
Немного побочная тема, но был бы интересен обзор даркнета как такового, наиболее популярных ресурсов где чаще всего что-то "выкладывают". Возможно здесь есть знатоки, которые захотят написать такую статью?
По сути никаких фундаментально новых фич в язык уже давно не добавляют, только "стабилизируют", наполняют библиотеки и т.п. Интересно, означает ли это что набор фич в Rust исчерпывающий, и концептуально ничего больше в языке (в общем случае - не только в Rust) не нужно?
эх, а я думал - декартово произведение, на каждом языке для каждлй задачи
Кстати, исключительно логичная вещь, которая по идее должна быть во всех языках программирования (но увы, это не так). Скажем, число 0 - это что? int, float, double, байт, слово, двойное слово, четверное слово, знаковое, беззнаковое, или может какой нибудь объект "длинной арифметики"? В большинстве языков тип (скажем int32) сразу прибивается к константе гвоздями. И дальнейшее использование константы в выражениях с объектами других типов подразумевает приведение типа (или всякие постфиксы, типа 0ULL). А на самом деле 0 - это просто 0, математическая абстракция, которая по уму должна приводиться к наиболее удобному типу непосредственно в месте использования. Так что в Go все правильно сделали.
Проблема в том что "файл проекта" в существующих языках не является частью стандарта языка. Хотя казалось бы, почему не стандартизировать? Тогда заодно решилась бы и проблема совмесимости между разными компиляторами и IDE. Файл-то один, стандартный, работай в любой ОС, с любым компилятором и из любой IDE.
Кстати интересно, а если поставить на другой диск Linux, то можно ли из него запускать ранее установленную винду через виртуалку? По идее должно быть можно. И если отключить такой винде инет, то можно более-менее спокойно пользоваться уникальным виндовским софтом (фотошоп, видеоредакторы и т.п.) и не связвыаться с обновлениями?
Дело не в GUI. Я никогда толком не пользовался make-файлами и потому у меня глаз незамыленный. Прочитал первую попавшуюся статью на Хабре - в целом все понятно, но это же сплошной антипаттерн. Какой-то текстовый ассемблер или что-то типа того. Общая область видимости, глобальные и магические переменные, все недостатки bash-скриптов (строки не в кавычках и прочее)... Словно бы из мира современных языков тебя окунули в какой-то FORTRAN/ALGOL/COBOL. Неудивительно что люди в этом не хотят разбираться и относятся как к какому-то древнему legacy, которое "как-то работает и ладно".
При этом еще большой вопрос, а нужен ли именно такой подход для сборки проектов. Мне больше нравится подход не make-файлов, а файлов проекта: есть некий "файл проекта" на базе стандартного структурного формата (json, xml...), который содержит в отдельных секциях список всех исходников, опции компиляции, информацию о целях сборки, информацию о конфигурациях (Debug, Release и т.п.). Все остальное решает компилятор. В редких случаях, когда какой-то конкретный файл нужно собрать с особыми опциями, или вызвать внешнюю программу, к файлу добавляется информация PreBuild/PostBuild. Преимуществ у такого подхода масса: иерархическая структурированность, пригодность для автоматического изменения, в т.ч. с помощью GUI (это же структурный формат для которого есть масса парсеров), использование в качестве файла ассоциированного с IDE (щелкаешь по нему и проект загружается в IDE, с деревом исходников, со всеми настройками).
Согласен, за это я Питон не люблю (как уже отметил выше). Но в сравнении с bash у него хотя-бы частично классический синтаксис. Строки это строки, числа это числа, классически задаются списки, массивы и т.д.
Они свернули именно туда куда планировали (и скорее всего планировали задолго до 2012). А вот мы свернули не туда где-то в 1992-1993, когда, отвлекшись на чисто экономические трудности, спустили на тормозах идею люстрации сотрудников одной конкретной государственной организации...
У меня волосы шевелятся когда я вижу любой код на bash)) Как вообще на этом можно что-то писать? Хотя Питон я тоже не люблю, но он хотя-бы придерживается классического синтаксиса языков программирования.
Нет, вполне понятно что любые скрипты командной строки - это в каком-то смысле развитие самой идеи запуска программ в командной строке, а значит синтаксис путей, аргументов командной строки, пайплайнов и т.п. должен быть в скриптах без изменений. Это накладывает существенные ограничения на синтаксис скриптов - строки не в кавычках, пробелы вместо запятых и прочая муть, делающая bash очень сильно отличающимся от любого классического языка. Не знаю можно ли было пойти по другому пути в принципе... Я не пишу "скрипты" как таковые, но если мне нужна простая утилита командной строки - я пишут ее на Go.
Ну вот хочется чтобы делалось (может не в firefox, но хоть в каком-то браузере, их сейчас много). А вместо этого мы видим какие-то дизайнерские изыски, новые эмодзи и прочее.