Search
Write a publication
Pull to refresh
75
0.6

User

Send message

Скорочтение: работает или нет? Часть 2: разбор методик

Reading time8 min
Views53K
Краткое содержание первой части: скорочтение – это набор разных механик, которые [в некоторых случаях] помогают получать информацию из текста быстрее, чем при обычном чтении. Тем не менее, даже скорочтение не поможет читать с «пулеметной» скоростью – ваши способности возрастут, но вряд ли превысят 500-600 слов в минуту (среди комментаторов к предыдущей части материала, правда, были и те, кому удалось развить скорость чтения и до 700 слов в минуту). Большинство громких заявлений скорочтецов, ставивших мировые рекорды в тысячи слов в минуту, – не более чем самореклама и неподтвержденные данные (исключение – «человек дождя» Ким Пик).

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

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

Возможности PostgreSQL для тех, кто перешел с MySQL

Reading time9 min
Views51K

Крутой varanio буквально на прошлой неделе прочитал на DevConf забойный доклад для всех кто пересел на Посгрес с MySQL, но до сих пор не использует новую базу данных в полной мере. По мотивам выступления родилась эта публикация.


Мы рады сообщить, что подготовка к PG Day'17 Russia идет полным ходом! Мы опубликовали полное расписание предстоящего мероприятия. Приглашаем всех желающих прийти и похоливарить с Антоном лично



Поскольку доклад на DevConf вызвал в целом положительные отзывы, я решил оформить его в виде статьи для тех, кто по каким-то причинам не смог присутствовать на конференции.


Почему вообще возникла идея такого доклада? Дело в том, что PostgreSQL сейчас явно хайповая технология, и многие переходят на эту СУБД. Иногда — по объективным причинам, иногда — просто потому что это модно.


Но сплошь и рядом складывается такая ситуация, когда какой-нибудь условный программист Вася вчера писал на MySQL, а сегодня вдруг начал писать на Посгресе. Как он будет писать? Да в целом также, как и раньше, используя лишь самый минимальный набор возможностей новой базы. Практика показывает, что проходят годы, прежде чем СУБД начинает использоваться более менее полноценно.

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

Магия SSH

Reading time11 min
Views535K
С SSH многие знакомы давно, но, как и я, не все подозревают о том, какие возможности таятся за этими магическими тремя буквами. Хотел бы поделиться своим небольшим опытом использования SSH для решения различных административных задач.

Оглавление:

1) Local TCP forwarding
2) Remote TCP forwarding
3) TCP forwarding chain через несколько узлов
4) TCP forwarding ssh-соединения
5) SSH VPN Tunnel
6) Коротко о беспарольном доступе
7) Спасибо (ссылки)
Читать дальше →

Реализация алгоритма A*

Reading time30 min
Views84K


Эта статья является продолжением моего введения в алгоритм A*. В ней я показал, как реализуются поиск в ширину, алгоритм Дейкстры, жадный поиск по наилучшему первому совпадению и A*. Я стремился как можно больше упростить объяснение.

Поиск по графам — это семейство схожих алгоритмов. Существует множество вариаций алгоритов и их реализаций. Относитесь к коду этой статьи как к отправной точке, а не окончательной версии алгоритма, подходящей ко всем ситуациям.
Читать дальше →

Введение в алгоритм A*

Reading time10 min
Views197K
При разработке игр нам часто нужно находить пути из одной точки в другую. Мы не просто стремимся найти кратчайшее расстояние, нам также нужно учесть и длительность движения. Передвигайте звёздочку (начальную точку) и крестик (конечную точку), чтобы увидеть кратчайший путь. [Прим. пер.: в статьях этого автора всегда много интерактивных вставок, рекомендую сходить в оригинал статьи.]


Для поиска этого пути можно использовать алгоритм поиска по графу, который применим, если карта представляет собой граф. A* часто используется в качестве алгоритма поиска по графу. Поиск в ширину — это простейший из алгоритмов поиска по графу, поэтому давайте начнём с него и постепенно перейдём к A*.

Индексы в PostgreSQL — 4

Reading time26 min
Views121K

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

Btree


Устройство


Индекс btree, он же B-дерево, пригоден для данных, которые можно отсортировать. Иными словами, для типа данных должны быть определены операторы «больше», «больше или равно», «меньше», «меньше или равно» и «равно». Заметьте, что одни и те же данные иногда можно сортировать разными способами, что возвращает нас к концепции семейства операторов.
Читать дальше →

ZFS on Linux: вести с полей 2017

Reading time6 min
Views62K
ZFS является одной из самых нафаршированных файловых систем (ФС), а главное — она заботится о сохранности нашей информации. Да, она не является «серебряной пулей», но в своей области показывает прекрасные результаты.
ZFS

Проект ZFS on Linux изначально был создан для портирования существующего кода из Solaris. После закрытия его исходного кода совместно с сообществом OpenZFS проект продолжил разработку ZFS для Linux. Код может быть собран как в составе ядра, так и в виде модуля.
image
Сейчас пользователь может создать пул с последней совместимой с Solaris версией 28, а также с приоритетной для OpenZFS версией 5000, после которого началось применение feature flags (функциональные флаги). Они позволяют создавать пулы, которые будут поддерживаться в FreeBSD, пост-Sun Solaris ОС, Linux и OSX вне зависимости от различий реализаций.

В 2016 году был преодолён последний рубеж, сдерживавший ZFS на Linux — многие дистрибутивы включили его в штатные репозитории, а проект Proxmox уже включает его в базовую поставку. Ура, товарищи!

Рассмотрим как наиболее важные отличия, так и подводные камни, которые есть в настоящее время в версии ZFS on Linux 0.6.5.10.
Читать дальше →

Вы — не Google

Reading time7 min
Views103K
Мы, программисты, иногда почему-то сходим с ума. Причём по каким-то совершенно нелепым причинам. Нам нравится думать о себе, как о супер-рациональных людях, но когда дело доходит до выбора ключевой технологии нового продукта, мы погружаемся в какое-то безумие. Вдруг оказывается, что кто-то слышал что-то об одной классной вещи, а его коллега читал комментарий о другой на Хабре, а третий человек видел пост в блоге о ещё чём-то похожем… и вот мы уже пребываем в полнейшем ступоре, беспомощно барахтаясь в попытках выбора между совершенно противоположными по своей сути системами, уже и забыв, что мы вообще пытаемся выбрать и почему.

Рациональные люди не принимают решения таким образом. Но именно так программисты часто решают использовать что-то вроде MapReduce.

Вот как комментировал этот выбор Joe Hellerstein своим студентам (на 54-той минуте):

Дело в том, что в мире сейчас есть где-то 5 компаний, обрабатывающие данные подобных объёмов. Все остальные гоняют все эти данные туда-сюда, добиваясь отказоустойчивости, которая им на самом деле не нужна. Люди страдают гигантоманией и гугломанией где-то с середины 2000-ых годов: «мы сделаем всё так, как делает Google, ведь мы же строим один из крупнейших (в будущем) сервисов по обработке данных в мире!»

image

Сколько этажей в вашем датацентре? Google сейчас строит четырёхэтажные, как вот этот в Оклахоме.
Читать дальше →

Теория и практика unattended upgrades в Ubuntu

Reading time6 min
Views56K
Unattended upgrades — это родной для Debian/Ubuntu (и других основанных на них дистрибутивов GNU/Linux) механизм автоматических обновлений. По умолчанию он включён в системе благодаря наличию установленного пакета unattended-upgrades и конфигурационного файла /etc/apt/apt.conf.d/50unattended-upgrades, а настроен на обновления пакетов только из security-репозитория, куда попадают, например, критичные исправления для пакета libssl, которые выходят в результате очередного пополнения базы уязвимостей CVE.


Примечание: здесь и далее рассматриваются unattended upgrades в контексте серверных редакций Ubuntu, что скорее всего применимо «как есть» и к другим дистрибутивам, но могут встречаться свои особенности, оставшиеся вне рамок статьи.

Итак, какие дополнительные возможности предоставляют unattended upgrades (помимо включённых по умолчанию security updates) и к каким проблемам они могут привести?
Читать дальше →

Использование статистики в PostgreSQL для оптимизации производительности — Алексей Ермаков

Reading time17 min
Views34K
Друзья, мы продолжаем публиковать транскрипции наиболее интересных технических докладов прошлых конференций PG Day Russia. Сегодня вашему вниманию предлагается доклад Алексея Ермакова, специалиста компании Data Egret, посвященный устройству и функционированию планировщика.



Статистическая информация, собираемая PostgreSQL, имеет большое влияние на производительность системы. Зная статистику распределения данных, оптимизатор может корректно оценить число строк, необходимый размер памяти и выбрать наиболее быстрый план выполнения запроса. Но в некоторых редких случаях он может ошибаться, и тогда требуется вмешательство DBA.

Помимо информации о распределении данных, PostgreSQL также собирает статистику об обращении к таблицам и индексам, вызовов функций и даже вызовов отдельных запросов (при помощи расширения pg_stat_statements). Эта информация, в отличие от распределений, больше нужна администраторам, нежели для работы самой базы, и очень помогает для нахождения и исправления узких мест в системе.

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

Postgres и Пустота

Reading time2 min
Views14K

Только что натолкнулся на возможность Postgresql, показавшуюся мне забавной. Для кого "баян" — респект вам, я несколько лет работаю с Postgres и до сих пор не натыкался на такую штуку.


select; без указания полей, таблицы и условий возвращает одну строку. Но у этой строки нет полей:


=> select;
--
(1 row)

Для сравнения:


=> select null;
 ?column? 
----------

(1 row)
=> select null where 0=1;
 ?column? 
----------
(0 rows)

А сможем ли мы создать таблицу из такого "пустого" запроса? Таблицу без полей.

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

О том, как в Instagram отключили сборщик мусора Python и начали жить

Reading time8 min
Views47K
Отключив сборщик мусора Python (GC), который освобождает память, отслеживая и удаляя неиспользуемые данные, Instagram стал работать на 10% быстрее. Да-да, вы не ослышались! Отключив сборщик мусора, можно сократить объем потребляемой памяти и повысить эффективность работы кэша процессора. Хотите узнать, почему так происходит? Тогда пристегните ремни!

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

Нельзя так просто взять и расширить каналы связи

Reading time11 min
Views29K
Вот этот график показывает, как сетевая задержка влияет на максимальную скорость при использовании TCP. Проще говоря, если у вас пинг 500 миллисекунд, то при доступной полосе пропускания 6, 10, 100, 500 и т. д. мегабит трафик между двумя хостами у вас не разгонится выше одного мегабита.


Моя команда занимается оптимизацией каналов связи. Иногда удаётся поправить всё буквально парой кликов вручную, но чаще нужно устанавливать специальные устройства, которые существенно ужимают обмен и превращают протоколы в более «оптимистичные» или «предиктивные».

Что такое «оптимистичный» протокол? Очень примерно — это когда удалённый сервер ещё не ответил, что можно отправлять следующий фрейм, а железка уже говорит «посылай», потому что знает, что шанс успеха — 97%. Если вдруг что-то пойдёт не так, она уже сама дошлёт нужный пакет, не беспокоя отправляющий сервер.
Читать дальше →

Типизируя техническое интервью

Reading time9 min
Views9.5K

Предлагаю читателям "Хабрахабра" перевод статьи Kyle Kingsbury, a.k.a "Aphyr".
Ранее: Заклиная техническое интервью


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

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

14 полезных сервисов и приложений для изучения английского

Reading time4 min
Views89K

Специально для читателей Хабра мы составили список ресурсов и приложений, которые позволят эффективно дополнить занятия с преподавателем или самостоятельное обучение.


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

Индексы в PostgreSQL — 1

Reading time17 min
Views486K

Предисловие


В этой серии статей речь пойдет об индексах в PostgreSQL.

Любой вопрос можно рассматривать с разных точек зрения. Мы будем говорить о том, что должно интересовать прикладного разработчика, использующего СУБД: какие индексы существуют, почему в PostgreSQL их так много разных, и как их использовать для ускорения запросов. Пожалуй, тему можно было бы раскрыть и меньшим числом слов, но мы втайне надеемся на любознательного разработчика, которому также интересны и подробности внутреннего устройства, тем более, что понимание таких подробностей позволяет не только прислушиваться к чужому мнению, но и делать собственные выводы.

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

В этой части мы поговорим про разделение сфер ответственности между общим механизмом индексирования, относящимся к ядру СУБД, и отдельными методами индексного доступа, которые в PostgreSQL можно добавлять как расширения. В следующей части мы рассмотрим интерфейс метода доступа и такие важные понятия, как классы и семейства операторов. После такого длинного, но необходимого введения мы подробно рассмотрим устройство и применение различных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.
Читать дальше →

Открытый курс машинного обучения. Тема 1. Первичный анализ данных с Pandas

Level of difficultyEasy
Reading time15 min
Views1.1M


Открытый курс машинного обучения mlcourse.ai сообщества OpenDataScience – это сбалансированный по теории и практике курс, дающий как знания, так и навыки (необходимые, но не достаточные) машинного обучения уровня Junior Data Scientist. Нечасто встретите и подробное описание математики, стоящей за используемыми алгоритмами, и соревнования Kaggle Inclass, и примеры бизнес-применения машинного обучения в одном курсе. С 2017 по 2019 годы Юрий Кашницкий yorko и большая команда ODS проводили живые запуски курса дважды в год – с домашними заданиями, соревнованиями и общим рейтингом учаcтников (имена героев запечатлены тут). Сейчас курс в режиме самостоятельного прохождения.

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

Как перестать гадать и начать считать

Reading time8 min
Views16K
Привет всем, меня зовут Чудинов Денис и сегодня мы будем искать математику в веб-аналитике.
Трафик, из всех физических явлений, является достаточно сложным с точки зрения природы процесса, так как, насколько мне известно, еще никто не сформулировал математические законы, описывающие трафик. Тем не менее, попробуем применить элементарные методы теории вероятности и математической статистики для формализации и оценки правдоподобия наших суждений.
Читать дальше →

История создания первой игры на Unity — от идеи до релиза

Reading time7 min
Views41K


Добрый день! Я — инди-разработчик (с недавнего времени), 2 года назад, будучи пожарным, пришла в голову мысль создать свою игру на Android. Из опыта было только создание карт под игровые движки Gold Source и Source (на них построены старые добрые: Counter-Strike, Half-Life и многое другое), взяв волю в кулак, решил что я обязательно справлюсь и занялся штудированием интернет-поисковика Google.

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

Осторожно, под катом gif-изображения.
Читать дальше →

Работа с DSL: создание собственного анализатора с использованием библиотек Python

Reading time5 min
Views16K


В нашем блоге на Хабре мы пишем не только о темах, связанных с информационной безопасностью, но уделяем значительное внимание вопросам разработки софта — например, ведем цикл о создании и внедрении инструментов DevOps. Сегодня же речь пойдет об использовании предметно-ориентированных языков (Domain-specific language, DSL) для решения конкретных задач с помощью Python.

Материал подготовлен на основе выступления разработчика Positive Technologies Ивана Цыганова на конференции PYCON Russia (слайды, видео).
Читать дальше →

Information

Rating
3,684-th
Location
Екатеринбург, Свердловская обл., Россия
Registered
Activity