Разработчик под ником punkx представил список игр, пазлов и головоломок, чтобы научить своего ребенка программированию.
В список вошли (по ссылкам есть pdf с карточками игр для свободной печати, а также описание правил и игровые видео):
Искусство создания компьютерных программ
Разработчик под ником punkx представил список игр, пазлов и головоломок, чтобы научить своего ребенка программированию.
В список вошли (по ссылкам есть pdf с карточками игр для свободной печати, а также описание правил и игровые видео):
Оплачиваемая стажировка Cloud.ru для AppSec-инженеров — набор до 6 апреля 📢
Присоединяйтесь к AppSecCamp — оплачиваемой стажерской программе, которая поможет начинающим IT-специалистам прокачаться в одной из самых востребованных областей на стыке разработки ПО и информационной безопасности.
За три месяца вы:
прокачаете навыки безопасной разработки приложений;
научитесь определять уязвимости в коде на языках Go, Python, JavaScript, TypeScript и других;
получите опыт работы с SAST-, DAST- и SCA-инструментами;
научитесь проводить моделирование угроз и security code review.
Прием заявок на AppSecCamp открыт до 6 апреля включительно, а для прошедших этапы отбора стажировка начнется 13 мая. Пройти стажировку можно очно — в офисе Cloud.ru в Москве, а также удаленно из любой точки РФ.
А в статье можно почитать о результатах и впечатлениях участников стажировок Cloud.ru в 2023 году. Используйте шанс погрузиться в реальные проекты, обучиться актуальным технологиям и продолжить работу в крутой компании.
Еще полезное в блоге:
Как разработчики решали одну маленькую, но NP‑полную проблему — поделимся на конференции GoCloud про облака 📝
Что общего между загрузкой транспортных контейнеров на судно и грамотным формированием портфеля ценных бумаг? Все это задачи комбинаторной оптимизации, которые можно свести к спиновой модели. Квантового компьютера под рукой не оказалось, зато были две Tesla V100 с кучей памяти и тензорных ядер, методы линейной алгебры, альфа-бета отсечение и фортрановские библиотеки. Не то чтобы все это было необходимо, но хотелось найти точное решение, которым ведущий разработчик Cloud.ru Александр Мальцев поделится на конференции GoCloud.
📌 Тема: Кейс: как решить одну маленькую, но NP‑полную проблему
📅 Когда: 21 марта в 15:30 мск
Что еще интересного будет на GoCloud, смотрите в программе конференции.
Полезное в блоге:
«Много ядер» не имеет смысла
Нашумевший в конце прошлого года своим выходом мощный процессор AMD Threadripper Pro 7995, оказывается, не оправдывает себя в реальной жизни. Здесь понимаем под этим обычные условия использования, т. е. нет специального навороченного охлаждения, обычный корпус, память в пределах разумного и т. д.
Вот тут описывается опыт использования в разных конфигурациях. Вкратце: из‑за поставленного ограничения на тепловыделение в 350 Вт процессор не использует всю имеющуюся у него мощь, так что работа всего на 16 ядрах оказывается равносильна работе на всех 96. Процессор просто сбрасывал скорость при достижении предельного тепловыделения. Нагрузка была в виде сборки всего проекта Хромиум. Плюс ко всему, потребовалось значительно больше памяти, для того, чтобы сборка в принципе работала на таком большом количестве ядер. Для использования всей мощности автору пришлось делать специальную конфигурацию машины.
В общем чип оправдывает себя только при использовании в специальных условиях.
По своему опыту могу сказать: на старенькой машинке Атлон II x4 (2009г) Хромиум собрался за ~40 часов.
Как превратить блочное хранилище в объектное — тема доклада на IT-конференции GoCloud про облака 📝
Всем привет! Продолжаем знакомить с программой конференции GoCloud про облака.
📌 Тема: Cloud.ru Evolution Object Storage: как превратить блочное хранилище в объектное
📅 Когда: 21 марта в 14:40 мск
Если вам интересны вопросы масштабирования, версионирования и консистентности в понимании протокола S3 — приходите послушать доклад. Расскажем о том, как написали свое объектное хранилище, какие подходы рассматривали и с какими проблемами столкнулись.
👉 Зарегистрироваться на GoCloud
Что еще интересного есть в блоге:
Фильтры Throttling VS Debounce
Оказывается, они работают по-разному )
Еще посты об IT в ИТ БД → t.me/it_bd
Оба этих фильтра используются для того, чтобы не дублировать события.
Например, пользователь злостно и быстро кликает на кнопку «Обновить» десять раз подряд.
Но нам достаточно сделать один запрос к беку вместо десяти, чтобы получить актуальное значение.
В этом случае нужно отфильтровать лишние события, то есть пропустить лишние клики, обработав лишь 1 событие.
И тут есть два подхода:
Throttling — пропускает первое событие и игнорирует остальные N миллисекунд
Например, если установить Throttling = 500мс, то обработается первый клик, а все следующие 500мс клики будут игнорироваться.
Debounce — отсчитывает N миллисекунд после последнего события и только после этого пропускает последнее событие.
Например, если установить Debounce = 500мс, то клики будут игнорироваться, пока пользователь не сделает перерыв в 500мс. После 500мс простоя последнее событие обработается.
5 полезных расширений VScode для работы с документацией
Draw.io Integration
Хорошо подходит для работы со сложными диаграммами: сперва можно создать диаграмму в десктопной версии Draw.io, а потом доработать ее в VScode с помощью расширения Draw.io Integration.
Quarto
Quarto — крутая штука для работы с документацией под R, Python, Julia и Observable. Расширение Quarto для VScode поможет редактировать и рендерить QMD-файлы. В нем есть режим предварительного просмотра, который позволяет менять код документа и одновременно просматривать результат.
Jupyter
Jupyter — один из самых популярных фреймворков для создания заметок, особенно в Python. Кстати, Jupyter классно работает вместе с документацией Quarto для Python. Расширение VScode Jupyter интегрирует заметки Jupyter в редактор VScode и поддерживает ipynb-файлы.
Markdown All in One
С расширением Markdown All in One удобно редактировать документацию в формате Markdown. Оно располагает два окна рядом: редактор кода и тут же результат.
Mermaid
Mermaid особенно полезен, если вам нужно создать структуру кодовой базы или динамическую диаграмму. В VScode есть два расширения для работы с файлами Mermaid — Mermaid Preview и Markdown Preview Mermaid Support.
Этот топ расширений составил автор этой статьи, а ее перевод читайте у нас в блоге.
Числа, которые должен знать каждый программист в 2024 году и далее:
L1 cache reference = 1 ns (1 нс)
Branch mispredict = 3 ns (3 нс)
L2 cache reference = 4 ns (4 нс)
Send 1K bytes over 1 Gbps network = 11 ns (11 нс)
Mutex lock/unlock = 17 ns (17 нс)
Main memory reference = 100 ns (100 нс)
Read 1 MB sequentially from memory = 1 us (1 мкс)
Compress 1K bytes with Zippy = 2 us (2 мкс)
Read 4K randomly from SSD = 16 us (16 мкс)
Read 1 MB sequentially from SSD = 19 us (19 мкс)
Read 1 MB sequentially from disk = 474 us (474 мкс)
Round trip within same datacenter = 500 us (500 мкс)
Disk seek = 2 ms (2 мс)
Send packet CA->Netherlands->CA = 150 ms (150 мс)
Графическая визуализация этих и других данных (чисел, констант) для программистов.
Напишите, пожалуйста, в комментариях ваши числа для проектов в 2024 году.
Один из авторов термина Open Source и соучредитель Open Source Initiative Брюс Перенс представил первый черновой вариант новой лицензии Post-Open Zero-Cost, нацеленной на решение накопившихся проблем, связанных со взаимодействием разработчиков открытого ПО и коммерческих компаний в контексте получения справедливой обратной отдачи от коммерческого использования кода.
В новой лицензии отражена возможность наложения дополнительных условий на коммерческое использование, например, за получаемую в результате использования открытого ПО выгоду компаниям предлагается расплачиваться либо участием в разработке, либо отчислять деньги, которые будут распределяться между непосредственными разработчиками.
Ключевым отличием лицензии Post-Open от существующих открытых лицензий, таких как GPL, является введение договорной составляющей, доступной для расторжения в случае нарушения условий лицензии.
В Post-Open предусмотрено два вида договорных соглашений: бесплатный и платный. Платный договор предусматривает возможность заключения соглашения на предоставление дополнительных прав и применяется при коммерческом распространении продуктов или внесении изменений без их публичного раскрытия.
Лицензия также определяет организацию POST-OPEN ADMINISTRATION, выступающую от имени лицензиаров, являющуюся их юридическим представителем, при необходимости отстаивающую их права и занимающуюся распределением полученных средств с учётом вклада в разработку.
Источник: OpenNET.
На GitHub под лицензией Apache License 2.0 опубликован проект под названием Nuke v1.1.0. Это реализация арены памяти для Go с бенчмарками и даже реализацией параллельной арены.
Арена памяти — это метод управления памятью, при котором сразу выделяется большой блок памяти, а его части используются для удовлетворения запросов выделения от программы. В контексте языка со сборкой мусора, такого как Go, использование арен памяти может дать несколько преимуществ:
повышение производительности: распределяя память большими блоками, арены памяти сокращают накладные расходы, связанные с частыми вызовами системного распределителя памяти;
Улучшенная локальность кэша. Арены памяти также могут улучшить локальность кэша, размещая тесно связанные объекты в одном блоке памяти;
эффективность сборки мусора. Использование арен памяти может снизить рабочую нагрузку на сборщик мусора за счёт уменьшения количества объектов, которые необходимо отслеживать и собирать, что приводит к меньшему времени паузы и более предсказуемой производительности.
Однако, хотя арены памяти предлагают эти преимущества, они не являются панацеей и имеют свои недостатки, такие как потенциальное увеличение использования памяти из-за неиспользуемого пространства внутри выделенных блоков. Необходимо тщательное рассмотрение и профилирование, чтобы определить, полезно ли использование арены памяти для конкретного приложения.
? Бесплатный митап «1С в облаке: возможности и риски, решения и кейсы»
Совместно с Инфостарт проводим митап, посвященный 1С в облаке: разберем реальные кейсы, поговорим о бюджетах, сроках, возможностях и рисках.
Митап будет вам полезен, если вы задавались вопросами:
Какие инфраструктурные решения существуют?
Как выбрать подходящее решение для вашего бизнеса?
Как распределить роли на проекте по миграции?
Как рассчитывать бюджет и какие затраты планировать? Как управлять рисками?
В программе митапа круглый стол и пять докладов, с одним из которых выступит Михаил Успенский — наш менеджер продуктов 1С.
Регистрируйтесь на митап и получите промокод на использование готового облака 1С или других услуг Selectel ➡️
Учиться программированию… в Roblox
Я обычно рекомендовал Python как первый язык программирования, плюсы очевидны — простота, популярность, гайды, широкий инструментарий.
Но недавно начал изучать платформу Roblox, и был приятно удивлён её простотой и мощностью. Код в нём пишется на языке Lua (если быть точнее, то на специальном подмножестве «Roblox Lua», но для начинающих это не имеет значения).
На мой взгляд, в обучении программированию очень важен короткий цикл обратной связи — «написал две строчки, запустил, увидел, как они что‑то поменяли, продолжаешь».
Идея Roblox крутится вокруг игровых уровней, которые создают сами участники коммьюнити — причастность к видеоиграм, вероятно, может стать дополнительной мотивацией для начинающих.
После прохождения туториала Coding Fundamentals (около 4 часов в неспешном режиме), я потратил несколько вечеров на создание демонстрации работы «пузырьковой» сортировки.
Код вышел в ~300 строчек с учетом работы с 3D примитивами, которые изображают сортируемый массив:
Кому интересно, там же лежит файл с уровнем, который можно открыть в Roblox Studio:
Саму трёхминутную демку залил на YouTube (как оказалось, я не первый, кто пишет сортировки в Roblox, но могу заверить, что эта идея родилась у меня независимо):
Что если использовать гамма-спектрометры и бета-спектрометры 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кБк/кв.м никакими приборами и никакими методами загрязнение не обнаружить. Дальше только радиохимия.
Что если детектор радиации должен обнаружить радиоактивный груз, двигающийся на большой скорости?
КБ Радар демонтировало свой стенд на ВДНХ 25 февраля вечером, но перед этим к нам в гости приехал соавтор приложения для спектрометров Atom Spectra - Сергей и привез с собой кучу интересных датчиков радиации для тестирования скорости реакции датчиков на движущийся источник излучения.
В этом видеоролике обсуждаем с Сергеем, какие детекторы и каким образом реагируют на источник излучения, двигающийся с довольно большой скоростью.
Состоялся выпуск Tcl/Tk 8.6.14, динамического языка программирования, распространяемого совместно с кроссплатформенной библиотекой базовых элементов графического интерфейса. Основное распространение Tcl получил как платформа для создания интерфейсов пользователя и как встраиваемый язык, при этом Tcl также подходит для быстрого прототипирования, веб-разработки, создания сетевых приложений, администрирования систем и тестирования.
Исходный код проекта распространяется под лицензией BSD.
приведена к кроссплатформенному виду нормализация файловых путей и обработка символа "~" в путях;
имя пути, начинающееся с '//' не замещается через '/' в том числе в 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.
Копал в поисках хорошего материала — и откопал вот это чудо:
HOMS — Hardware-Oriented Microprocessor Simulator, или аппаратно-ориентированный симулятор микропроцессора. Автор этого образовательного проекта — профессор, написавший две книги в области электроники и программирования:
В первоисточнике о проекте утверждается, что:
комплектующие доступны на любом рынке электроники;
возможно создавать инструкции ассемблера под свои задачи;
HOMS не требует ПК.
Лицензия — CC BY-NC-SA 4.0 DEED.
Проклятие дженериков 💀
Дженерики могут показаться очень простой темой.
Например, вот так в 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
16 сервисов для Создания Резюме и Профиля LinkedIn с использованием Искусственного Интеллекта. Часть 2
resumeworded — Бесплатная мгновенная обратная связь о вашем резюме и профиле LinkedIn.
jasper — ИИ копирайтер Jasper поможет генерировать интересные статьи в LinkedIn.
resumaker ai — Конструктор резюме.
rezi ai — Платформа для составления резюме.
designs ai — Разработает основу резюме, подберет подходящие цвета и шрифты. Сэкономит вам время на дизайне, а вы сосредоточитесь на демонстрации своего опыта и навыков.
mosaic ai — Помогает подобрать подходящие ключевые слова для резюме.
CVJury — Конструктор резюме, сопроводительного письма и профиля LinkedIn.
Канал по программированию на Python (материалы, обзор библиотек и тд.)
16 сервисов для Создания Резюме и Профиля LinkedIn с использованием Искусственного Интеллекта.
kickresume — На сайте лежат настоящие резюме людей, которых взяли, например, в Amazon. Используйте их в качестве шаблона.
copy ai — Поможет создать резюме на нейросетях. Выберите шаблон «Resume», вбейте желаемую должность, напишите о себе в свободной форме, стиль текста профессиональный и вы получите четкое описание ваших навыков разбитых по пунктам.
enhancv — Более 1000 примеров резюме.
HyreSnap — Бесплатный конструктор резюме на основе искусственного интеллекта. ИИ сделает ваше резюме максимально совместимым с описаниями вакансий.
resumestar io — онлайн-редактор создает современные одностраничные резюме.
skillroads — Конструктор резюме на базе искусственного интеллекта. ИИ знает, какие навыки необходимо добавить и какой опыт выделить.
hiration — Сервис оценит текущее резюме и сопроводительное письмо и предложит изменения.
resumA.I. — Напишет и отредактирует пункты резюме с помощью ChatGPT.
thisresumedoesnotexist — 1000 примеров AI резюме (на базе enhancv).
У меня есть студент колледжа, которому я иногда помогаю. Вчера он попросил пройти с ним задание колледжа. Язык - C, тема - работа с памятью, массивы, структуры. В задании дан task.h файл с описанием используемых структур и функций с именами, говорящими сами за себя, которые и надо реализовать в соответствующем task.c файле.
Открыл он task.c в VS Code, после объявления первой функции набрал открывающую скобочку и нажал enter. Codeium написал первую строку, - раньше мы занимались JavaScript, и я ему посоветовал его поставить. Правильно. Он нажимает tab, снова enter, - опять правильно. Короче, 95% кода он протаббил, причем, самый сложный код (работа с памятью). Немного сам поменял логику где надо только.
Но самое стремное было в конце. В задании было требование, которое мы не поняли - некорректная формулировка, какая-то бессмысленная логика. И вот доходим мы до этого момента в коде, и Codeium пишет то, что скорей всего правильно. Не имеет смысла, но правильно. Причем логика этой строки выходила за контекст того, что было ранее написано, она относилось именно к тому конкретному требованию задачи.
Минуты две мы это переваривали на уровне: "Он нас слышит". Потом я вспомнил, что этот же тест давался в колледже и год назад, а может и ранее, и, скорей всего, информация о нем есть в интернете, хотя прямых упоминаний я ненагуглил. Так что, и слышит, и видит, и знает.
Короче, чувства от всего этого очень противоречивые. Как бы не оказалось от Codeium вреда больше, чем пользы в этом случае.