User
Разбираемся в числах с плавающей точкой (часть 0)
Как только у меня появилось свободное время, я взялся за старое. Завел себе тетрадку и пошло-поехало. Хотелось додуматься до всего самому, лишь иногда заглядывая в стандарт IEEE 754.
И вот что из всего этого вышло. Интересующихся прошу под кат.
Клещевой энцефалит: опасность, которой пренебрегают
О клещевом энцефалите слышали, пожалуй, все, однако и сегодня можно услышать множество мифов касательно этой болезни. Так, например, в Сибири люди массово покупают страховки от укуса клеща, в которую входит инъекция иммуноглобулина; применяют такие средства, как йодантипирин или анаферон; в конце концов, решают, что достаточно просто достать клеща и прижечь место укуса.
Эта статья – не руководство по профилактике и лечению клещевого энцефалита. В том случае, если вас укусил клещ, необходимо в первую очередь обратиться к врачу.
Уроки по SDL 2: Урок 4 — Растяжка PNG
Сначала определимся с тем, что мы будем делать. Сегодня научимся загружать изображения другого расширения (не BMP), а именно: PNG. Переделаем изображение в другой формат для ускорения работы и изменим размеры изображения. Работать будем с этим избражением:

10 возможностей быть продуктивнее с Eclipse для Java разработчиков

Многие из вас знают, как эффективно повышает производительность использование горячих клавиш, шаблонов кода и очень клёвой строки поиска (Quick Access), но я бы хотел рассказать о десяти возможностях, которые знают не все.
Мой переезд в Норвегию

Я решил написать эту статью, потому что в интернете мало информации именно о переезде в Норвегию. Люди в основном описывают жизнь, процесс поиска работы и тому подобное. Ниже я постарался рассказать о подготовке документов, регистрации в стране, открытии банковского счёта, аренде квартиры и т.п. Надеюсь, это будет полезно.
Продолжение.
Анализ сишного Hello World
Для C hello world выглядит просто и коротко:
#include <stdio.h>
void main() {
printf("Hello World!\n");
}
Поскольку программа такая короткая, должно быть элементарно объяснить, что происходит «под капотом».
Интерактивный Roadmap для изучающих веб-разработку
Для компоновки теоретических материалов мы применили необычное решение – все они объединены в интерактивный граф, который удобно использовать в качестве Roadmap для изучающих веб-разработку. Материалы связаны между собой, и кроме самой теории содержат упражнения по написанию кода.

Примеры C++ кода до и после Ranges

Библиотека Ranges была принята в C++20 на совещании стандартного комитета в Сан-Диего в ноябре прошлого года. Библиотека предоставляет компоненты для обработки диапазонов значений, направленных на упрощение нашего кода. К сожалению, библиотека Ranges не очень хорошо документирована, из-за этого ее труднее понять тем, кто хотел бы ее освоить. Этот пост предназначен для ознакомления с примерами кода, написанного с использованием Ranges и без нее.
Делаем ретро-игру из 80-х или как готовить макеты для лазерной резки

Хабр, привет! Так получилось, что меня давно просили сделать старую настольную игру из СССР — «Сражение». Вот пришло время выполнять обещание, заодно решила показать как создавать макеты для лазерной резки и что получается в итоге. Большой сложности в этом нет, но есть некоторые нюансы.
Много статей хабра по теме DIY содержит жалобы: на отсутствие навыков работы с лобзиком, малую жесткость картона, сложности с созданием корпуса. Каждый сам выбирает способ реализации своих идей, но мне важно показать как легко можно сделать макет в том же Inkscape, отдать его в работу и получить готовые детали.
Английский язык. Проблемы изучения

Я думаю ни для кого не секрет, что существующая система преподавания не нацелена на быстрое и успешное изучение английского языка. Причина этой проблемы кроется за множеством факторов: репетиторы получающие большие деньги за час “помощи” вам, частные школы “делающие деньги”, устаревшие методы преподавания в учебных заведениях, авторы сотен книг очередных революционных методик “английский за 30 мин”, “железный занавес”, при котором родились большинство преподавателей. Обсуждение этой проблемы периодически всплывает на различных конференциях, но как говорится “а воз и ныне там”. Эта статья призвана помочь наверстать упущенные годы изучения языка.
Встань и иди. Операции на позвоночнике: когда делать, чем опасно
- Операции на позвоночнике рискованны, грозят инвалидностью и параличом.
- Хирурги готовы искромсать всех подряд, даже не предлагая пациенту альтернатив.
- Хороший массажист вылечит любую проблему со спиной.
Начало работы с stm32 или не повторяйте моих ошибок
Небольшой рассказ о граблях, встреченных на пути познания ARM на примере stm32f103c8t6 и stm32l151rct6.
Персональные данные (Краткий FAQ)
Что такое персональные данные?
Персональные данные - любая информация, относящаяся к определенному или определяемому на основании такой информации физическому лицу, в том числе:
— его фамилия, имя, отчество,
— год, месяц, дата и место рождения,
— адрес, семейное, социальное, имущественное положение, образование, профессия, доходы,
- другая информация (см. ФЗ-152, ст.3).
Например: паспортные данные, финансовые ведомости, медицинские карты, год рождения (для женщин), биометрия, другая идентификационная информация личного характера.
В общедоступные источники персональных данных (адресные книги, списки и другое информационное обеспечение) с письменного согласияфизического лица могут включаться его фамилия, имя, отчество, год и место рождения, адрес, абонентский номер и иные персональные данные (см. ФЗ-152, ст.8).
Персональные данные относятся к информации ограниченного доступа и должны быть защищены в соответствии с законодательством РФ. При формировании требований по безопасности систем персональные данные разделяют на 4 категории.
Лямбды: от C++11 до C++20. Часть 2

В первой части серии мы рассмотрели лямбды с точки зрения C++03, C++11 и C++14. В этой статье я описал побуждения, стоящие за этой мощной фичей C++, базовое использование, синтаксис и улучшения в каждом из языковых стандартов. Я также упомянул несколько пограничных случаев.
Теперь пришло время перейти к C++17 и немного заглянуть в будущее (очень близкое!): C++20.
Функциональный Swift — это просто
В статьях о функциональном программировании много пишут о том, как ФП подход улучшает разработку: код становится легко писать, читать, разбивать на потоки и тестировать, построить плохую архитектуру невозможно, а волосы становятся мягкими и шелковистыми.
Недостаток один — высокий порог входа. Пытаясь разобраться в ФП, я столкнулся с огромным количеством теории, функторами, монадами, теорией категорий и алгебраическими типами данных. А как применять ФП на практике, было неясно. Кроме того, примеры приводились на незнакомых мне языках — хаскеле и скале.
Тогда я решил разобраться в ФП самого начала. Разобрался и рассказал на codefest о том, что ФП — это на самом деле просто, что мы уже им пользуемся в Swift и можем пользоваться еще эффективнее.
Авиационные газотурбинные двигатели
Авиационные ГТД можно можно разделить на:
- турбореактивные двигатели (ТРД)
- двухконтурные турбореактивные двигатели (ТРДД)
- Турбовинтовые двигатели (ТВД)
- Турбовальные двигатели (ТВаД)
Притом, ТРД и ТРДД могут содержать в себе форсажную камеру, в таком случае они будут ТРДФ и ТРДДФ соответственно. В этой статье мы их рассматривать не будем.
Начнём с турбореактивных двигателей.
Турбореактивные двигатели
Такой тип двигателей был создан в первой половине 20-го века и начал находить себе массовое применение к концу Второй мировой войны. Первым в мире серийным турбореактивным самолетом был немецкий Me.262. ТРД были популярны вплоть до 60-ых годов, после чего их стали вытеснять ТРДД.

Современная фотография Me-262, сделанная в 2016 году
Самый простой турбореактивный двигатель включает в себя следующие элементы:
- Входное устройство
- Компрессор
- Камеру сгорания
- Турбину
- Реактивное сопло (далее просто сопло)
Можно сказать, что это минимальный набор для нормальной работы двигателя.
А теперь рассмотрим что для чего нужно и зачем.
Эффективная генерация числа в заданном интервале
В подавляющем большинстве моих постов о генерации случайных чисел рассматривались в основном свойства различных схем генерации. Это может оказаться неожиданным, но производительность алгоритма рандомизации может зависеть не от выбранной схемы генерации, а от других факторов. В этом посте (на который меня вдохновила превосходная статья Дэниела Лемира) мы исследуем основные причины снижения производительности генерации случайных чисел, которые часто перевешивают производительность движка ГПСЧ.
Представьте такую ситуацию:
В качестве домашнего задания Хуан и Саша реализуют одинаковый рандомизированный алгоритм на C++, который будет выполняться на одном университетском компьютере и с одним набором данных. Их код почти идентичен и отличается только в генерации случайных чисел. Хуан торопится на свои занятия по музыке, поэтому просто выбрал вихрь Мерсенна. Саша, с другой стороны, потратил несколько лишних часов на исследования. Саша провёл бенчмарки нескольких самых быстрых ГПСЧ, о которых недавно узнал из соцсетей, и выбрал наиболее быстрый. При встрече Саше не терпелось похвастаться, и он спросил Хуана: «Какой ГПСЧ ты использовал?»
«Лично я просто взял вихрь Мерсенна — он встроен в язык и вроде неплохо работает».
«Ха!», — ответил Саша. «Я использовал
jsf32
. Он намного быстрее, чем старый и медленный вихрь Мерсенна! Моя программа выполняется за 3 минуты 15 секунд!».«Хм, неплохо, а моя справляется меньше, чем за минуту», — говорит Хуан и пожимает плечами. «Ну ладно, мне пора на концерт. Пойдёшь со мной?»
«Нет», — отвечает Саша. «Мне… эээ… нужно снова взглянуть на свой код».
Эта неловкая вымышленная ситуация не особо и вымышлена; она основана на реальных результатах. Если ваш рандомизированный алгоритм выполняется не так быстро, как хотелось бы, и узким местом похоже является генерация случайных чисел, то, как это ни странно, проблема может быть и не в генераторе случайных чисел!
Интернет для дачника. Часть 3. Русские идут
Введение в Spring, или что делать, если по всему проекту @Autowired и @Component, а вы не понимаете, что это
Эта статья будет полезна тем, кто уже начал изучать Java и даже успел добиться некоторых успехов в понимании Java Core, и вот услышал слово Spring. И, возможно, даже не один раз: знание Spring Framework, как минимум, фигурирует в описаниях множества вакансий для джавистов. Эта статья поможет вам взобраться на самую первую ступеньку: понять общую идею столь популярного фреймворка.
Начнем издалека. Существует такое понятие как Inversion of Control, по-русски – Инверсия управления, сокращенно – IoC. IoC — один из принципов, приближающий наш код к слабосвязанности. IoC — это делегирование части наших обязанностей внешнему компоненту.
Существуют разные реализации IoC подхода, нас интересует одна из них — Dependency Injection, внедрение зависимостей. Что это такое, название говорит само за себя, так что раскрыть ее я постараюсь на примере. Мы пишем приложение, автоматизирующее работу сети магазинов. Есть классы Shop (магазин) и Seller (продавец). У класса Seller имеется поле типа Shop — магазин, в котором работает продавец. Вот мы и столкнулись с зависимостью: Seller зависит от Shop. Теперь задумаемся, как в объект Seller попадет объект Shop? Есть варианты:
- Внедрить его через конструктор и сразу, при создании продавца, указывать магазин, в котором он работает:
public class Seller {
private Shop shop;
public Seller(Shop shop) {
this.shop = shop;
}
}
- Создать сеттер и с помощью его вызова устанавливать продавцу магазин:
public class Seller {
private Shop shop;
public void setShop(Shop shop) {
this.shop = shop;
}
}
Перечисленные два способа — это реализация Dependency Injection (но пока еще это не IoC). И, наконец, мы подобрались к спрингу: он предоставляет еще один способ внедрять зависимости (а тут уже IoC).
Information
- Rating
- Does not participate
- Registered
- Activity