Все потоки
Поиск
Написать публикацию
Обновить
1027.48

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга

Один из авторов термина Open Source и соучредитель Open Source Initiative Брюс Перенс представил первый черновой вариант новой лицензии Post-Open Zero-Cost, нацеленной на решение накопившихся проблем, связанных со взаимодействием разработчиков открытого ПО и коммерческих компаний в контексте получения справедливой обратной отдачи от коммерческого использования кода.

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

Ключевым отличием лицензии Post-Open от существующих открытых лицензий, таких как GPL, является введение договорной составляющей, доступной для расторжения в случае нарушения условий лицензии.

В Post-Open предусмотрено два вида договорных соглашений: бесплатный и платный. Платный договор предусматривает возможность заключения соглашения на предоставление дополнительных прав и применяется при коммерческом распространении продуктов или внесении изменений без их публичного раскрытия.

Лицензия также определяет организацию POST-OPEN ADMINISTRATION, выступающую от имени лицензиаров, являющуюся их юридическим представителем, при необходимости отстаивающую их права и занимающуюся распределением полученных средств с учётом вклада в разработку.

Источник: OpenNET.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

На GitHub под лицензией Apache License 2.0 опубликован проект под названием Nuke v1.1.0. Это реализация арены памяти для Go с бенчмарками и даже реализацией параллельной арены.

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

  • повышение производительности: распределяя память большими блоками, арены памяти сокращают накладные расходы, связанные с частыми вызовами системного распределителя памяти;

  • Улучшенная локальность кэша. Арены памяти также могут улучшить локальность кэша, размещая тесно связанные объекты в одном блоке памяти;

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

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

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

​​​​? 15 марта, 11:00 

? Бесплатный митап «1С в облаке: возможности и риски, решения и кейсы»

Совместно с Инфостарт проводим митап, посвященный 1С в облаке: разберем реальные кейсы, поговорим о бюджетах, сроках, возможностях и рисках.

Митап будет вам полезен, если вы задавались вопросами: 

  • Какие инфраструктурные решения существуют?

  • Как выбрать подходящее решение для вашего бизнеса?

  • Как распределить роли на проекте по миграции?

  • Как рассчитывать бюджет и какие затраты планировать? Как управлять рисками?

В программе митапа круглый стол и пять докладов, с одним из которых выступит Михаил Успенский — наш менеджер продуктов 1С. 

Регистрируйтесь на митап и получите промокод на использование готового облака 1С или других услуг Selectel ➡️

Теги:
Всего голосов 21: ↑19 и ↓2+17
Комментарии0

Учиться программированию… в Roblox

Я обычно рекомендовал Python как первый язык программирования, плюсы очевидны — простота, популярность, гайды, широкий инструментарий.

Но недавно начал изучать платформу Roblox, и был приятно удивлён её простотой и мощностью. Код в нём пишется на языке Lua (если быть точнее, то на специальном подмножестве «Roblox Lua», но для начинающих это не имеет значения).

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

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

После прохождения туториала Coding Fundamentals (около 4 часов в неспешном режиме), я потратил несколько вечеров на создание демонстрации работы «пузырьковой» сортировки.

Код вышел в ~300 строчек с учетом работы с 3D примитивами, которые изображают сортируемый массив:

https://github.com/itlgrim/roblox‑demos/blob/main/sorting‑algorithms/bubble‑sort/BubbleSort.module.lua

Кому интересно, там же лежит файл с уровнем, который можно открыть в Roblox Studio:

https://github.com/itlgrim/roblox‑demos/blob/main/sorting‑algorithms/bubble‑sort/Bubble Sort Demo v1.rbxl

Саму трёхминутную демку залил на YouTube (как оказалось, я не первый, кто пишет сортировки в Roblox, но могу заверить, что эта идея родилась у меня независимо):

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Что если использовать гамма-спектрометры и бета-спектрометры Atom Spectra как поисковые приборы?

В этом видеоролике поговорим о применении гамма-спектрометров Atom Spectra Nano, Atom Spectra Nano PRO и Atom Spectra Beta PRO в качестве поисковых приборов. И покажем на примере перемещающегося источника излучения модель пятнистости распределения загрязнения на грунте.

Да. Над программным обеспечением в части графика cps/МЭД ещё можно поработать. Эта часть приложения для гамма-спектрометра уступает приложению Atom Swift для счётных сцинтилляторов и гейгеров Проекта Атом. Тем не менее вполне информативно.

На территориях радиоактивно загрязненных и обозначенных на картах по цезию-137 как 4-40 кБк/кв.м никакие приборы, называемые в народе дозиметры не покажут никаких интересных средних значений. На правой части этого диапазона у спектрометра ещё есть шансы показать загрязнение по цезию-137 (линия/пик на 662кэВ) довольно быстро. А вот в левой части этого диапазона загрязнений можно попасть в ситуацию, когда время на набор статистики в качестве спектрометра окажется больше, чем возможность просто перемещая спектрометр Atom Spectra на дистанциях 10-30 метров легко обнаружить пятнистость распределения загрязнения. Пятнистость есть всегда. Это не идеальное лакокрасочное покрытие. Именно пятнистость даст бОльший разброс значений cps или мощности дозы по сравнению с зоной 2кБк/кв.м. В зоне 2кБк/кв.м никакими приборами и никакими методами загрязнение не обнаружить. Дальше только радиохимия.

Теги:
Рейтинг0
Комментарии0

Что если детектор радиации должен обнаружить радиоактивный груз, двигающийся на большой скорости?

КБ Радар демонтировало свой стенд на ВДНХ 25 февраля вечером, но перед этим к нам в гости приехал соавтор приложения для спектрометров Atom Spectra - Сергей и привез с собой кучу интересных датчиков радиации  для тестирования скорости реакции датчиков на движущийся источник излучения.

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

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Состоялся выпуск Tcl/Tk 8.6.14, динамического языка программирования, распространяемого совместно с кроссплатформенной библиотекой базовых элементов графического интерфейса. Основное распространение Tcl получил как платформа для создания интерфейсов пользователя и как встраиваемый язык, при этом Tcl также подходит для быстрого прототипирования, веб-разработки, создания сетевых приложений, администрирования систем и тестирования.

Исходный код проекта распространяется под лицензией BSD.

Основные изменения в Tcl/Tk:

  • приведена к кроссплатформенному виду нормализация файловых путей и обработка символа "~" в путях;

  • имя пути, начинающееся с '//' не замещается через '/' в том числе в Cygwin и в QNX;

  • разрешён пустой режим в [chan create] ("[chan create {} $cmd]") для разрешения refchan версии [socket -server];

  • повышена производительность fork при использовании многопоточности с помощью vfork/spawn;

  • обеспечен вызов getsockname(2) в Tcl_MakeFileChannel(3) только тогда, когда это необходимо;

  • защита Tcl/tclsh усилена с помощью функции pledge(2) в OpenBSD или похожих механизмов;

  • tcltest адаптирован для поддержки Tcl 9 (>= tcltest 2.5.7);

  • обеспечено применение замещающего символа при декодировании неполных последовательностей Unicode;

  • из win/makefile.vc убрана опция utf16;

  • zlib обновлён до версии 1.3.1;

  • libtommath обновлён до версии 1.2.1;

  • install-sh обновлён до версии 2020-11-14.01;

  • добавлена поддержка Unicode 15.1;

  • в "[interp limit time -seconds]" решена проблема 2038 года.

Источник: OpenNET.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Копал в поисках хорошего материала — и откопал вот это чудо:

HOMS — Hardware-Oriented Microprocessor Simulator, или аппаратно-ориентированный симулятор микропроцессора. Автор этого образовательного проекта — профессор, написавший две книги в области электроники и программирования:

Github автора.

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

  • комплектующие доступны на любом рынке электроники;

  • возможно создавать инструкции ассемблера под свои задачи;

  • HOMS не требует ПК.

Лицензия — CC BY-NC-SA 4.0 DEED.

Полное техническое описание HOMS в PDF.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Проклятие дженериков 💀

Дженерики могут показаться очень простой темой.
Например, вот так в Java выглядят классные и простые методы интерфейса List:

interface List<E> extends Collection<E> {
	boolean add(E e);
	E set(int index, E element);
}

Но у обобщений много нюансов: вложенность, вариантность, границы и т.д. Это сильно усложняет их использование.
Вот не менее классный, но совсем непростой flatMap интерфейса Stream🙈:

interface Stream<T> extends BaseStream<T, Stream<T>> {
	<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);
}

Также, реализация дженериков - всегда трейдоф. Мы либо получаем большой исполняемый файл, из-за того, что приходится генерировать код для разных типов. Либо получаем дополнительную нагрузку в рантайме, из-за различных проверок.

Из-за таких сложностей, в языке Go (философия которого - простота и минимализм) дженерики появились аж через 12 лет после релиза языка. А первый коммент про то что нужны дженерики появился меньше чем через 24 часа🙃

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

  • С++ вышел в 1979, дженерики - 1986

  • Java - 1996, дженерики - 2004

  • C# - 2001, дженерики - 2005

  • Go - 2009, дженерики - 2021

Теги:
Всего голосов 5: ↑3 и ↓2+1
Комментарии8

16 сервисов для Создания Резюме и Профиля LinkedIn с использованием Искусственного Интеллекта. Часть 2

← Читать первую часть

  1. resumeworded — Бесплатная мгновенная обратная связь о вашем резюме и профиле LinkedIn.

  2. jasper — ИИ копирайтер Jasper поможет генерировать интересные статьи в LinkedIn.

  3. resumaker ai — Конструктор резюме.

  4. rezi ai — Платформа для составления резюме.

  5. designs ai — Разработает основу резюме, подберет подходящие цвета и шрифты. Сэкономит вам время на дизайне, а вы сосредоточитесь на демонстрации своего опыта и навыков.

  6. mosaic ai — Помогает подобрать подходящие ключевые слова для резюме.

  7. CVJury — Конструктор резюме, сопроводительного письма и профиля LinkedIn.

Канал по программированию на Python (материалы, обзор библиотек и тд.)

Теги:
Всего голосов 7: ↑6 и ↓1+5
Комментарии0

16 сервисов для Создания Резюме и Профиля LinkedIn с использованием Искусственного Интеллекта.

  1. kickresume — На сайте лежат настоящие резюме людей, которых взяли, например, в Amazon. Используйте их в качестве шаблона.

  2. copy ai — Поможет создать резюме на нейросетях. Выберите шаблон «Resume», вбейте желаемую должность, напишите о себе в свободной форме, стиль текста профессиональный и вы получите четкое описание ваших навыков разбитых по пунктам.

  3. enhancv — Более 1000 примеров резюме.

  4. HyreSnap — Бесплатный конструктор резюме на основе искусственного интеллекта. ИИ сделает ваше резюме максимально совместимым с описаниями вакансий.

  5. resumestar io — онлайн-редактор создает современные одностраничные резюме.

  6. skillroads — Конструктор резюме на базе искусственного интеллекта. ИИ знает, какие навыки необходимо добавить и какой опыт выделить.

  7. hiration — Сервис оценит текущее резюме и сопроводительное письмо и предложит изменения.

  8. resumA.I. — Напишет и отредактирует пункты резюме с помощью ChatGPT.

  9. thisresumedoesnotexist — 1000 примеров AI резюме (на базе enhancv).

    Часть 2. Продолжение

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии1

У меня есть студент колледжа, которому я иногда помогаю. Вчера он попросил пройти с ним задание колледжа. Язык - C, тема - работа с памятью, массивы, структуры. В задании дан task.h файл с описанием используемых структур и функций с именами, говорящими сами за себя, которые и надо реализовать в соответствующем task.c файле.

Открыл он task.c в VS Code, после объявления первой функции набрал открывающую скобочку и нажал enter. Codeium написал первую строку, - раньше мы занимались JavaScript, и я ему посоветовал его поставить. Правильно. Он нажимает tab, снова enter, - опять правильно. Короче, 95% кода он протаббил, причем, самый сложный код (работа с памятью). Немного сам поменял логику где надо только.

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

Минуты две мы это переваривали на уровне: "Он нас слышит". Потом я вспомнил, что этот же тест давался в колледже и год назад, а может и ранее, и, скорей всего, информация о нем есть в интернете, хотя прямых упоминаний я ненагуглил. Так что, и слышит, и видит, и знает.

Короче, чувства от всего этого очень противоречивые. Как бы не оказалось от Codeium вреда больше, чем пользы в этом случае.

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

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

Playground screenshot
Playground screenshot

Кроме плейграунда работает локальная демка для Windows и Linux/x84-64 и сборка из исходников (ARM64).

Контекст: Экспериментальный язык Аргентум:

  • безопасный: memory safe, type safe, null-safe, array-index-safe..., не имеет небезопасных кастов, unsafe режима или взлома через рефлексию,

  • быстрый и компактный (не требует виртуальных машин и фреймворков, исполняемые файлы измеряются килобайтами),

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

  • в отличие от Раста и Свифта - гарантирует отсутствие утечек памяти,

  • в отличие от Go, Java, Kotlin, JS, Python - не использует сборщик мусора, поэтому приложения не имеют спорадических пауз и не страдают перерасходом памяти и процессорного времени,

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

  • во время компиляции детектит нарушения инвариантов композиции и агрегации в иерархиях объектов,

  • может напрямую вызывать Си-код и грабить корованы.

Детали: https://aglang.org/

Теги:
Всего голосов 12: ↑12 и ↓0+12
Комментарии28

Ближайшие события

Опубликован релиз языка программирования общего назначения Rust 1.76, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation.

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

Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.

Основные новшества в Rust 1.76 включают в себя исправления ошибок и доработки, а также добавление в документацию отдельной секции, описывающей совместимость различных типов аргументов и типов возвращаемых значений функций на уровне ABI.

Релиз Rust 1.75 состоялся в конце декабря 2023 года.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Полезные библиотеки Python список из более 100 мини - проектов⁠⁠

Всем привет! Хочу поделиться интересным сборником проектов от уровня "Hello World" до создания ботов WhatsApp.

Python-Mini-Projects — большой сборник(более 100) мини проектов на Python, подойдет как новичкам так и программистам с опытом.

На основе мини проектов можно делать свои более серьезные проекты или дорабатывать код))

Список всех мини программ сборника - клик

Сcылка на GitHub - клик

(Кстати если вы интересуетесь Python и хотите узнать больше об этом языке программирования, то приглашаю вас подписаться на мой канал! https://t.me/python_scrypt полезные материалы, уроки и новости из мира программирования)

Теги:
Всего голосов 10: ↑5 и ↓50
Комментарии0

Как внедрить телеметрию в on-premise-инфраструктуре

На предстоящий DevOpsConf 2024 выступлю с докладом по телеметрии и расскажу:
— Какие инструменты вам помогут в деле формирования, сбора, хранения и отображения данных телеметрии.
— Как выбрать тот или иной продукт и не наткнуться на несовместимость решений.
— Какой набор инструментов использовать, если вы работаете исключительно с on-premise инфраструктурой.
Материалы доклада помогут собрать решение для вашего случая.

Кому будет полезен доклад:
DevOps-инженерам и архитекторам.

Обо мне:
Ведущий DevOps-инженер Hilbert Team. Более 15 лет в IТ. Cоавтор курсов Yandex Cloud: «DevSecOps в облачном CI/CD», «Аутентификация и управление доступами», «Managed Service for ClickHouse», «Масштабирование нагрузки в K8s».

Если планируете посетить DevOpsConf, приходите 4 марта в 10:00 в Зал «Кейптаун».

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Как улучшить читаемость и информативность трассировки кода?

Используйте осмысленные имена переменных и функций: Понятные имена облегчают понимание назначения вашего кода. Это поможет определить причину исключения при чтении трассировки.

Разбивайте сложные функции: Если функция слишком большая и выполняет по факту несколько действий, то отследить ход её выполнения будет сложнее. Разделение функции на несколько даст возможность более точно обрабатывать и анализировать исключения.

Добавляйте комментарии, используйте docstring: Документируйте свой код с помощью комментариев и описания функции, чтобы обеспечить дополнительный контекст.

Обрабатывайте исключения на соответствующих уровнях: Отлавливайте исключения ближе к источнику ошибки — это сделает вывод более информативным с точным указанием места вызова исключения.

Пишите содержательные сообщения об ошибках: При вызове исключений старайтесь писать более информативные описания ошибки.

Используйте логирование: Модуль logging позволяет дополнять и форматировать информацию об исключениях в более структурированном и настраиваемом виде:

try:
    unknown_method()
except Exception as e:
    logging.error("Error occurred", exc_info=True)

Используйте модуль traceback: Этот модуль также содержит методы, позволяющие обрабатывать возникшие исключения и дополнительно форматировать вывод информации об ошибке. Примеры использования traceback.

Теги:
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

В чём преимущество хэшируемых структур данных?

  • Быстрый поиск: хешированные структуры данных обеспечивают быстрое время поиска, обычно со средней временной сложностью O(1). Это происходит потому, что хэш-функция обеспечивает прямой доступ к местоположению нужного элемента в структуре данных, устраняя необходимость в последовательном поиске.

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

  • Работа с большими наборами данных: Хешированные структуры данных особенно полезны при работе с большими наборами данных. Постоянная временная сложность операций поиска, вставки и удаления обеспечивает постоянную производительность независимо от размера набора данных.

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

  • Кэширование: хэшированные структуры данных широко используются в механизмах кэширования. Хеш-функция позволяет быстро определить, присутствует ли конкретный элемент в кэше, что обеспечивает эффективное извлечение и снижает необходимость в дорогостоящих вычислениях или операциях ввода-вывода.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Что такое «программирующая программа»?

Сегодня исходники программ выглядят как текст на английском языке со специфическими конструкциями, но так было не всегда. Первые программы писали в машинных кодах, и это было невероятно сложно. Требовалось детально знать архитектуру конкретной ЭВМ и пошагово представлять исполнение команд.

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

Одним из основоположников отечественной кибернетики и теоретического программирования был математик Алексей Андреевич Ляпунов. Ещё в начале пятидесятых годов прошлого века он предложил операторный метод описания программ и разработал теорию синтаксических программных структур.

Под руководством Алексея Ляпунова в 1954 году в Институте математики АН СССР был написан первый советский транслятор — ПП-1, или «программирующая программа номер 1». Она вызвала большой интерес со стороны высшего руководства страны и получила статус приоритетной разработки.

Уже в 1956 году на её базе создали «ПП-2» первый в мире транслятор с загрузчиком, отладчиком и библиотекой основных процедур. Он использовался на засекреченной ЭВМ «Стрела», установленной в Вычислительном центре Минобороны СССР.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии1

Поделитесь с командой создателей Go своими отзывами о разработке с помощью этого языка программирования.

Опрос для разработчиков Go 2024 открыт, и мы хотим услышать ваше мнение!

С 2016 года данные опросов разработчиков Go помогают нам определять ключевые модели использования, понимать проблемы разработчиков, узнавать предпочтения в отношении инструментов и отслеживать новые тенденции в сообществе. Ваши отзывы очень важны для формирования будущего Go, поэтому, пожалуйста, уделите 10–15 минут, чтобы заполнить опрос до 11 февраля 2024 года. Примите участие в опросе прямо сейчас!

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

Теги:
Рейтинг0
Комментарии0

Вклад авторов