Search
Write a publication
Pull to refresh
3
0.3
Send message

Астрофизики построили трехмерную визуализацию нашего суперкластера

Reading time1 min
Views60K


Объединенная команда астрофизиков из Франции, Израиля и США создали трехмерную визуализацию локального суперкластера, куда входит и наша Галактика. Сам суперкластер был назван Laniakea, что означает «Неизмеримые небеса» на гавайском (кстати, есть нечто схожее с «Лалангаменой» — есть такой НФ рассказ и сборник НФ произведений, если не читали, рекомендую).

Диаметр сечения суперкластера составляет 160 мегапарсек, это в несколько тысяч раз больше, чем диаметр Млечного пути. А масса такого образования более, чем в сто тысяч раз превышает массу нашей Галактики. «Небеса» включают в себя около 100 тысяч галактик.

Читать дальше →

Алгоритмы сжатия данных без потерь, часть 2

Reading time9 min
Views104K
Часть 1

Техники сжатия данных


Для сжатия данных придумано множество техник. Большинство из них комбинируют несколько принципов сжатия для создания полноценного алгоритма. Даже хорошие принципы, будучи скомбинированы вместе, дают лучший результат. Большинство техник используют принцип энтропийного кодирования, но часто встречаются и другие – кодирование длин серий (Run-Length Encoding) и преобразование Барроуза-Уилера (Burrows-Wheeler Transform).
Читать дальше →

Первая Всесоюзная олимпиада школьников по программированию (информатике) 1988 года

Reading time6 min
Views52K
Это первая публикация про первые школьные олимпиады по программированию/информатике. Вторая будет про 1989 год.
1988 — Первая Всесоюзная
1989 — Первая Всероссийская
1989 — Первая Международная

Приглашаю всех читателей попробовать свои силы в решении задач. (И дать порешать задачки своим знакомым школьникам)

Контекст


1988 год был годом утраты Ершова, Митник проходил курс лечения от компьютерной зависимости в тюрьме нестрогого режима, Моррис выпустил своего червя на свободу, федералы только-только перевели дух после поимки Поулсена, DARPA создала спецподразделение по компьютерной безопасности, немецкие хакеры проводили уже пятый Chaos Communication Congress, моя нога впервые вступила на московскую землю, в СССР в Свердловске (Екатеринбург) произошла первая Всесоюзная олимпиада школьников по информатике.

Про уровень техники того времени пост «Советские персональные компьютеры»

13-20 апреля 80 школьников из всех союзных республик 2 дня осваивали компьютеры Роботрон-1715 (справа на фото), а затем решали шесть задач.

Олимпиада состояла из двух туров — Теоретического (4 задачи) и Машинного (2 задачи).
Читать дальше →

Загрузка виртуальных linux-машин с диска без разделов

Reading time5 min
Views19K
При создании корневых дисков виртуальных машин, обычно, на них с помощью fdisk/gdisk создается таблица разделов с единственным разделом для размещения на нем операционной системы. Это порождает некоторые неприятности на стороне гипервизора, например:

  • При монтировании диска нужно помнить, что монтируется не само блочное устройство, а раздел на нем. Проблема усугубляется если используется lvm-диск — ядро не видит разделы на нем без применения средств убеждения в виде kpartx.
  • Для восстановления раздела требуется не только резервная копия файловой системы, но и бубен/копия первого трека.
  • Изменение размера такого диска требует еще одного бубна лишней операции по изменению размера раздела на диске

Избавиться от таблицы разделов можно прямой загрузкой ядра, но этот метод не безгрешен. Гипервизор должен иметь на своей стороне образы ядер виртуальных машин, которые нужно поддерживать актуальными при обновлениях гостевых ОС.
Хочу рассказать вам об альтернативном варианте загрузки с диска без разделов с помощью EFI и GRUB2.
Читать дальше →

Установка юзерскриптов в Опере в общих случаях и для защищённых страниц (https)

Reading time8 min
Views29K
Для некоторых юзерскриптов начинает иметь значение, каким способом пользователь установит его в браузер Оперу. Если сделать установку, не разрешив доступ к некоторым доменам, работа будет неполноценной, а при установке кроссдоменного скрипта, да ещё использующего защищённый протокол (HTTPS), такое запросто может случиться. Например, для юзерскрипта HabrAjax, кроме основного сайта Хабра, используется доступ к кнопкам Google Plus на plusone.google.com и проверяются обновления скрипта на домене userscripts.org. Всё это требует дополнительных настроек, которые были описаны прямо в юзерскрипте (ссылка в настройках "примеч.для Оперы"), но сделаны довольно кратко и с одной иллюстрацией. Здесь посмотрим на вопрос шире, чтобы пользователи Оперы и разработчики юзерскриптов для неё имели инструкции под рукой и полностью понимали широту вопроса. Заодно, описаны места установки юзерстилей. Для тех, кто всё это знает, полезно будет посмотреть абзац выводов с 2 замечаниями в самом низу.
Читать дальше →

Использование моделей в Qt

Reading time4 min
Views103K
За последний год пришлось довольно много работать с Model/View фреймворком Qt. Приходилось как писать собственные модели, так и переделывать существующие. И вот, после созерцания очередного творения, решил представить общественности некоторые наработки.

Начнем с очевидного:

Не используйте виджеты

Все эти QTableWidget, QListWidget и QTreeWidget — не для вас.

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

Одни плюсы, а минусов, при этом, не замечено.
Читать дальше →

Оптимизация Linux для desktop и игр

Reading time8 min
Views176K
В этой статье я хочу поделиться почти 10-летним опытом использования Linux на домашнем компьютере. За это время я провел много экспериментов над ядром, испробовал различные конфигурации для разных применений и теперь хочу все это систематизировать в длинный пост с рекомендациями как выжать из linux максимум и добиться отличной производительности, без необходимости покупать мощное железо.

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

Хоть я и пообещал, что после прочтения этой статьи, можно будет играть в Metro 2033 на калькуляторе (шутка, такого не будет), все же она начнется с рекомендации купить кое-что из железа, если у вас этого еще нет.
Читать дальше →

Фрагментация Android практически перестала быть проблемой?

Reading time4 min
Views38K
Привет, Хабр! Сегодня мы хотим предложить вашему вниманию перевод статьи, в которой Эдди Вессалло (Eddie Vessallo) (CEO Entropy) высказывает интересную точку зрения о фрагментации Android. Не секрет, что среди устройств, работающих под этой ОС, нет даже намёка на какую-то унификацию разрешений дисплеев. Всевозможные смартфоны и планшеты от десятков, если не сотен, производителей отличаются невероятным разнообразием разрешений дисплеев. Это уже давно привело к тому, что разработка приложений под Android связана с очень большими трудозатратами по оптимизации интерфейса под всевозможные разрешения. Однако автор статьи-первоисточника считает, что теперь это практически перестало быть проблемой.
Читать дальше →

Иерархические модели в Qt

Reading time8 min
Views60K
Продолжаю тему создания моделей с использованием Qt MV. В прошлый раз была критическая статья по поводу того, как делать не надо. Переходим к позитивной части.

Для создания плоских моделей списков и таблиц можно использовать заготовки QAbstractListModel и QAbstractTableModel. Доведение их до готовности не составляет большого труда, поэтому рассматривать их подробно нет необходимости.

Создание же иерархических моделей – более сложная задача. О ней и пойдет речь в этой статье.
Заинтересовавшихся прошу под кат

Сборка Mingw в Windows своими руками

Reading time8 min
Views71K
В сети можно найти много описаний сборки mingw и GNU утилит под ним. Я тоже решил написать свой вариант, так как во-первых он на русском. Во-вторых используются последние стабильные исходники (по состоянию на 27.01.2011). В третьих добавлена оптимизация циклов (graphite loop optimizations). В четвертых я описываю причины выбора тех или иных опций конфигурации исходников. В пятых, чтобы не забыть.
Читать дальше →

Qt: работа с Vkontakte API и Phonon

Reading time12 min
Views20K
Qt
Статья описывает взаимодействие Qt c такими программными интерфейсами как Vkontakte API и Phonon, в реальных примерах и подробным описанием.
В конце статьи ссылка на репозиторий с исходным кодом который Вы можите свободно скачать и запустить.
Читать дальше →

Реализация Model-View-Presenter в Qt

Reading time3 min
Views27K
Проектируя архитектуру одного проекта, остановился на паттерне MVP — подкупила возможность легко менять ui, а также простота покрытия тестами. Все примеры реализации MVP, что я нашёл в сети, были на C#. При реализации на Qt возникла пара неочевидных моментов, решение которых было успешно найдено. Собранная информация ниже.
Читать дальше →

Перегрузка операторов в C++

Reading time6 min
Views779K
Доброго времени суток!

Желание написать данную статью появилось после прочтения поста Перегрузка C++ операторов, потому что в нём не были раскрыты многие важные темы.

Самое главное, что необходимо помнить — перегрузка операторов, это всего лишь более удобный способ вызова функций, поэтому не стоит увлекаться перегрузкой операторов. Использовать её следует только тогда, когда это упростит написание кода. Но, не настолько, чтобы это затрудняло чтение. Ведь, как известно, код читается намного чаще, чем пишется. И не забывайте, что вам никогда не дадут перегрузить операторы в тандеме со встроенными типами, возможность перегрузки есть только для пользовательских типов/классов.
Читать дальше →

Qt 5.1 и корректный deployment в Windows

Reading time4 min
Views86K
Добрый день!
Для меня он вышел не очень добрым, 10 часов из жизни потрачено в поисках решения на простой вопрос, но в конечном счете я его нашел, и сейчас поделюсь с вами.
Итак, краткая предыстория.
Один мой заказчик попросил разработать kiosk-mode приложение на Qt. И для начала, сделать версию для POS-терминала с ОС Windows XP.
Ok, за неделю я что-то сверстал по приложенным макетам и попробовал отдать версию заказчику. Приложив Qt5Core.dll, Qt5Gui.dll, ну и прочие .dll используемых модулей Qt.
«Failed to load platform plugin „windows“» сказала японскаяфинская бензопила.
Читать дальше

Кратко от том как сделать свой Qt geoservice plugin

Reading time8 min
Views26K
image + image =?
Следующим шагом после GPS модуля, стало его практическое применение в моем проекте. Возможно кому-то этот пост будет интереснее.
Тоже не особо интересно, но зайду

Немного о рукописных шрифтах

Reading time4 min
Views97K

— У вас же такие славные письменные принадлежности, и сколько у вас карандашей, сколько перьев, какая плотная, славная бумага… И какой славный у вас кабинет!
Ф.М. Достоевский, «Идиот»


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

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

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

Новый виток технического прогресса в области машинописной техники – изобретение компьютеров – возвратил индивидуальности почерка былое величие. Шрифты оставались стандартными, но теперь их выбирали по собственному вкусу и усмотрению.

Желаемая механизация с сохранением индивидуальных особенностей? Безусловно так. Но давайте сравним всем нам знакомые компьютерные шрифты с рукописными: частично с познавательной целью, частично – с целью предаться ностальгии об ушедшем в прошлое великом и незабвенном искусстве каллиграфии.
Читать дальше →

QJson как библиотека для работы с JSON в Qt

Reading time4 min
Views64K

Привет, хабр!

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

Внимание! Этот пост — заметка. Все что вы тут прочитаете можно найти в гугле и на офф сайте проекта — но я думаю что такая заметка не будет лишней.
Читать заметку...

QML — больше, чем просто GUI

Reading time10 min
Views19K
Этот пост участвует в конкурсе „Умные телефоны за умные посты“.

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

Этот пост не является очередным переводом или вольным изложением разнообразных QML Howto и Quick Start. Скорее, это описание подводных камней, с которыми можно столкнуться при написании реального приложения.

Игровое полеКогда Qt Quick/QML только было заявлено, от Нокии звучали слова, что «в перспективе не только пользовательский интерфейс будет писаться на Qt Quick, но и вся логика несложных приложений будет написана на яваскрипте, программистам не потребуется написать ни строчки кода на плюсах». Заявление было ещё более провокационное, чем мой заголовок, и сразу меня заинтересовало: я решил попробовать написать несложную игру без единой строчки кода на плюсах.

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


Об остальном мы узнаем под катом.
Повесть, как я яваскрипт побеждал

Обзор новых возможностей С++14: Часть 2

Reading time5 min
Views67K
На этот раз нововведений гораздо меньше, чем в первой части. Все-таки С++14 считается незначительным релизом, нацеленным скорее на устранение недочетов С++11, чем привнесение новых возможностей.

Краткий перечень:
  • Освобождение памяти определенного размера
  • Одинарная кавычка, как цифровой разделитель
  • Аттрибут [[deprecated]]
  • Пользовательские литералы для std::complex
  • Filesystem API
  • Преобразование сетевого порядка байт

Обзор новых возможностей С++14: Часть 1
Текущий черновик стандарта

Читать дальше →

Обзор новых возможностей С++14: Часть 1

Reading time10 min
Views141K
В апреле в Бристоле прошла встреча комитета С++, на которой были рассмотрены первые предложения по внесению изменений в новый стандарт С++14. Все рассматриваемые в этой статье изменения были одобрены на этой встрече и уже занимают свое почетное место в последней версии черновика нового стандарта (N3690 от 15 мая 2013).

Краткий перечень:
  • Автоматическое определение типа возвращаемого значения для обычных функций
  • Обобщенная инициализация захваченных переменных лямбд с поддержкой захвата-по-перемещению
  • Обобщенные (полиморфные) лямбда-выражения
  • Упрощенные ограничения на создание constexpr функций
  • Шаблоны переменных
  • exchange
  • make_unique
  • Обособленные строки
  • Пользовательские литералы для типов стандартной библиотеки
  • optional
  • shared_mutex и shared_lock
  • dynarray

Читать дальше →

Information

Rating
3,991-st
Location
Кызыл, Тува (Тувинская Респ.), Россия
Registered
Activity

Specialization

Software Developer, Application Developer
Senior
From 150,000 ₽
Python
C++
Linux
Docker