Обновить

Флаги в программировании: наглядный пример для новичков

Уровень сложностиПростой

Обсудим использование флагов в коде на примерах.
Статья предназначена для тех кто только начинает осваивать программирование и испытывает трудности в определении флага (переменную булевого типа)

Например есть такая задача перебрать данные и определить есть ли там нужные нам для примера возьмем ситуацию из жизни: переберем мешок с картошкой, нужно узнать есть ли там гнилая мешок представим списком [] из 1 и 2, где 1 - означает гнилую картофелину.

Как бы мы это делали? сначала мы бы взяли одну картофелину и посмотрели на нее, и так делали бы до конца или пока не встретили гнилую....

А в конце основываясь на наблюдениях делали бы выводы.

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

Читать далее

Структура пространства пифагоровых троек

Уровень сложностиПростой

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

Читать далее

Виртуальные тренажеры: классификация и особенности

Уровень сложностиСредний

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

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

Далее

Способы импорта файла OST в Outlook всех версий

Уровень сложностиСредний

Хотя Outlook создает файл OST, его нельзя напрямую импортировать в Microsoft Outlook. Но это можно сделать с помощью стороннего решения. В этом посте я объясню все возможные способы импорта OST в Outlook всех версий.

Outlook использует два типа файлов данных Outlook. В большинстве учетных записей используется файл данных Outlook (.pst). Ваши электронные письма обычно доставляются и хранятся на почтовом сервере, если у вас есть учетная запись Microsoft Exchange. Вторая форма файла данных, известная как автономный файл данных Outlook (OST), позволяет вам работать с сообщениями, даже если вы не можете подключиться к почтовому серверу в вашей системе. Далее мы обсудим, как импортировать OST в профиль Outlook?

Что такое файлы OST?

Когда вы создаете новую учетную запись в Microsoft Outlook, создается зашифрованный файл данных Outlook, известный как Offline Storage Table (OST). Это связано с определенным профилем на определенном ПК, где была настроена ваша учетная запись. Вы можете использовать файлы данных Outlook, если у вас есть учетная запись MS Exchange и вы хотите работать в автономном режиме (.ost). Они чрезвычайно полезны в случае простоя сервера или ненадежного интернет-соединения.

Однако в следующей части мы рассмотрим различные методы преобразования OST в файл данных Outlook.

Читать далее

Разница между Type и Interface в TypeScript

Уровень сложностиПростой

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

Если Вам лень читать, то можете сразу посмотреть видео на данную тему:

И так, приступим

Пишем парсер на Python за 5 минут

Уровень сложностиПростой

В данной статье мы рассмотрим, как парсить сайты быстро и эффективно при помощи нового инструмента LxmlSoup. Библиотека является аналогом популярной BeautifuulSoup, повторяющий её синтаксис. Что касается скорости, LxmlSoup превосходит BeautifulSoup в 2 раза, за счёт библиотеки lxml под капотом.

Читать далее

Распределенное машинное обучение с помощью PySpark

Уровень сложностиПростой

Решил взяться за изучение распределенного машинного обучения и освоившись в основах инструментария MLLib от PySpark, хочу привести конкретный пример применения библиотеки. Заодно рассказать: а зачем вообще идти в эту сторону?

Simple. Fast. Scalable. Unified.

Это все о нем. Спарк – это мультиязычный движок для решения задач дата инжиниринга, а также машинного обучения на кластере. Спарк включают обычно в экосистему Hadoop, он действует поверх MapReduce и предоставляет высокоуровневые API для работы с большими данными.

Впрочем его можно установить на одной машине локально или в Colab, что мы и сделаем.

Устанавливаем pyspark.

Читать далее

Null в JavaScript: объект или примитив

Уровень сложностиПростой

Nullодин из семи примитивных типов данных в JavaScript (остальные —строки, числа, булевые значения, undefined, BigInt и Symbol).

И только для типа null проверка typeof возвращает объект. Значит ли это, что null — объект? Нет
Null все-таки примитив. История с типом — баг при создании JavaScript.

Так как же он работает?

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

Таких тегов было 5:

000 — объект
1  — целое число
010 — double (дробное число)
100 — строка
110 — boolean

То есть теги занимали три первых бита в 32-битной ячейке (и один бит в случает целых чисел).

У типа null не было своего отдельного тега. При этом, значение null хранится в памяти в виде нуля (0000, т.е. во всех отведенных под значение битах — нули).

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

Источники:
The history of “typeof null” (большинство информации отсюда), A quick and thorough guide to ‘null’

Читать далее

Сколько в 2023 году стоят деньги частных инвесторов?

Уровень сложностиПростой

Хотите привлечь инвестиции в свой бизнес, но не знаете какую доходность предложить инвестору и как ее посчитать? – Разобрал этот вопрос на примере реального проекта в статье.

Читать далее

Создаём оптимизированные модели внутри Unreal Engine одним плагином

Уровень сложностиПростой

Вам нравится, когда игры мало весят, а крутая графика не отнимает слишком много времени у процессора? Мне тоже :)

Процедурная генерация в играх может применяться не только для создания однотипных данжей и квестов. Пример .kkrieger показывает, что сгенерировать можно буквально весь визуал полноценной 3D(!) игры.

Читать далее

Золото, машины и доллары

Уровень сложностиСредний

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

Для объективности будем рассматривать один конкретный товар - машину, внедорожник, и два средства сбережения и обмена - доллары и золото. Для начала стоит привести график инфляции доллара за 2000-2023 года:

Читать далее

Обзор библиотеки vue3-picture-input

Уровень сложностиСредний

Если вы ищите простые решения, для того чтобы создать input для картинок. А такие решения как Dropzone слишком избыточны в функционале, то данная библиотека прекрасно вам подойдет.

Читать далее

Быстрый старт в Java. Терминал и Java

Уровень сложностиПростой

В современном мире большинство программистов используют интегрированные среды разработки (IDE), которые предоставляют широкий набор функций и инструментов для создания, отладки и тестирования кода. Однако, не все разработчики умеют работать с терминалом, который также является важным инструментом для запуска и тестирования кода. В данной статье мы поговорим о том, как установить Java, попытаемся найти разницу между OpenJDK и OracleJDK, научимся компилировать, собирать jar-файлы, писать самостоятельно MANIFEST.mf и дебажить свой код в терминале.

Читать далее

Telegram бот для отслеживания позиции в очереди на 2b2t

Уровень сложностиПростой

Данный бот поможет отслеживать свою позицию в очереди на 2b2t удаленно от ПК.

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

Бот реализован на языке python, с использованием библиотеки telebot. Данная библиотека позволяет осуществлять управление telegram ботом.

Читать далее

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

Уровень сложностиПростой

В одном проекте мне необходимо было получать из одного источника данные и, в зависимости от текущего состояния, отдавать эти данные одному из множества ресиверов. Схему можно описать так: если некуда отдавать данные, то они должны просто обнуляться (либо - для любителей статистики - инкрементировать соответствующий счетчик); в случае готовности одного из ресиверов принимать данные - отдавать их ему. По условиям задачи ресивер готовый принимать данные всегда один.

В языке go есть такая конструкция:

Читать далее

Создание спецификации ASP.NET Core OpenAPI во время сборки

Необходимо создать локальный манифест инструмента для того чтобы проект мог вызывать инструментарий CLI Swashbuckle из контекста нашего решения. Для этого мы сначала запустим команду .NET CLI

Читать далее

Samsung с точки зрения фаната Xiaomi

Уровень сложностиПростой

Спецификации устройств:

Samsung Galaxy s22 Ultra 5g, SM-908O (Hong Kong) под управлением OneUI 5.0 (Build Number: S9080ZHS2BWA2) и Android 13

Xiaomi mi note 10 Pro (он же cc9 Pro) под управлением MIUI 13.0.3 Стабильная (RFDRUXM) и Android 11

Читать далее

Защита от повторного запроса с помощью БД

Уровень сложностиПростой

Если вы разрабатываете Веб-приложение или REST-сервис, то рано или поздно столкнётесь с повторными запросами. Что имеется в виду? Объясню на примере Веб-страницы с кнопкой. По нажатию на кнопку, на бэкенд отправляется запрос. Запрос, соответственно, синхронный и пока серверная часть делает какую-то работу, браузер клиента показывает, что загружает страницу. Если это происходит продолжительное время, клиент может подумать, что его запрос завис и нажать кнопку ещё раз. Также повторное нажатие может произойти случайно.

Какая тут может произойти проблема? Если это, например, какой-то запрос данных, то в общем-то проблемы и нет, но если это действие, которое должно отработать только один раз, то тут могут быть весьма неприятные последствия. Для примера в интернет-магазине собрана корзина и создан заказ на оплату (статус REGISTERED), далее по нажатию кнопки "оплатить" с клиента списывают деньги и переводят заказ в статус оплачен (PAID). И если в этом процессе произойдёт двойной запрос, то с клиента могут списать деньги за заказ два раза.

Читать далее

Очередь с приоритетами на С++ с использованием динамической кучи (heap) минимумов (максимумов) и шаблонов (template)

Уровень сложностиПростой

Содержание

1. Введение в структуру данных - куча

1.1. Возможности кучи

1.2. Описание структуры данных — куча

1.3. Базовая реализация кучи минимумов с помощью вектора

2. Работа кучи с разными типами данных

2.1. Применение шаблонов С++ для настройки кучи на работу с разными типами данных

2.2. Определения оператора сравнения в пользовательском типе данных для работы с кучей

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

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

4. Использование для реализации кучи указателей

Читать далее