Как стать автором
Обновить
26
0

Пользователь

Отправить сообщение

Числа — доклад Дугласа Крокфорда о системах счисления в жизни и в программировании

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

Давайте посмотрим, откуда пришли числа, куда они могут привести и как они работают.



В основе статьи — доклад Дугласа Крокфорда (Douglas Crockford) с июньской конференции HolyJS 2017 в Санкт-Петербурге (презентацию доклада можно найти тут)
Всего голосов 27: ↑26 и ↓1+25
Комментарии10

Иллюзия скорости

Время на прочтение10 мин
Количество просмотров44K
Много лет я и мои коллеги убеждали разработчиков, что чем быстрее сайт — тем лучше. Статья не о том. Я не собираюсь показывать вам статистику, насколько больше зарабатывают компании, которые оптимизируют сайт для производительности (а это так). Расслабьтесь, возьмите чашечку шоколада — мы вместе совершим путешествие во времени.

Настоящее время и воспринимаемое время



Читать дальше →
Всего голосов 74: ↑73 и ↓1+72
Комментарии35

TOP'ай сюда

Время на прочтение5 мин
Количество просмотров177K
Обзор практически всех *top утилит под linux (atop, iotop, htop, foobartop и т.д.).

top

Все мы знаем top — самую простую и самую распространённую утилиту из этого списка. Показывает примерно то же, что утилита vmstat, плюс рейтинг процессов по потреблению памяти или процессора. Совсем ничего не знает про загрузку сети или дисков. Позволяет минимальный набор операций с процессом: renice, kill (в смысле отправки сигнала, убийство — частный случай). По имени top суффикс "-top" получили и все остальные подобные утилиты в этом обзоре.

atop


Atop имеет два режима работы — сбор статистики и наблюдение за системой в реальном времени. В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин) скидывает состояние в двоичный журнал. Потом по этому журналу atop'ом же (ключ -r и имя лог-файла) можно бегать вперёд-назад кнопками T и t, наблюдая показания atop'а с усреднением за 10 минут в любой интересный момент времени.

В отличие от top отлично знает про существование блочных устройств и сетевых интерфейса, способен показывать их загрузку в процентах (на 10G, правда, процентов не получается, но хотя бы показывается количество мегабит).

Незаменимое средство для поиска источников лагов на сервере, так как сохраняет не только статистику загрузки системы, но и показатели каждого процесса — то есть «долистав» до нужного момента времени можно увидеть, кто этот счастливый момент с LA > 30 создал. И что именно было причиной — IO программ, своп (нехватка памяти), процесор или что-то ещё. Помимо большего количества информации ещё способен двумя цветами подсказывать, какие параметры выходят за разумные пределы.
Читать дальше →
Всего голосов 401: ↑389 и ↓12+377
Комментарии122

VPN везде и всюду: IPsec без L2TP со strongSwan

Время на прочтение10 мин
Количество просмотров321K
image
достаточно сильный лебедь

Если вы когда-либо искали VPN, который будет работать на десктопах, мобильных устройствах и роутерах без установки дополнительного ПО и перепрошивки роутера, вы, вероятно, выбирали между PPTP и L2TP+IPsec. У протокола PPTP имеются проблемы с безопасностью и прохождением через брандмауеры и NAT, так что в 2015 году его уже использовать не стоит, а использование L2TP излишне, т.к. L2 VPN, по моему мнению, для обычного удаленного доступа не нужен практически никогда.

Удивительно, что в интернете не так-то просто можно найти информацию о настройке чего-то помимо L2TP+IPsec в транспортном режиме, учитывая, что это обширный стек протоколов, который можно конфигурировать буквально как душе угодно, поэтому я попытаюсь устранить такое несовершенство мира.

Небольшое введение в мир IPsec

Вообще говоря, не совсем правильно называть IPsec VPN. IPsec не предназначен для построения «виртуальных частных сетей», а создан для шифрования или защиты от подмены передаваемых по IP данных. Это специальный слой поверх IP, который, в зависимости от режима и настроек, работает по-разному. В отличие от привычного VPN, который создает новый интерфейс в системе, на который вы, как это чаще всего бывает, назначаете IP-подсеть из диапазона частных адресов (т.е. создаете новый сетевой сегмент), и через который маршрутизируется трафик в зашифрованном виде, IPsec просто шифрует трафик магическим образом между «внешними» интерфейсами сервера и клиента.
Читать дальше →
Всего голосов 50: ↑49 и ↓1+48
Комментарии166

Опыт внедрения 2fa на linux с duosecurity

Время на прочтение6 мин
Количество просмотров8.3K
На недавно прошедшей конференции Zeronights я рассказывал про двухфакторную аутентификацию, и какие проблемы могут быть при ее внедрении. К сожалению, времени выступления для полного погружения в тему было мало, поэтому я постараюсь раскрыть некоторые детали в рамках отдельных постов.
И начну с самой популярной темы, а именно двухфакторной аутентификации на linux — какие есть варианты настройки и почему даже очень хорошее решение требуется доработать напильником.
Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии3

Система принятия решения и управления рисками на жизненном примере

Время на прочтение6 мин
Количество просмотров20K
В данной публикации я приведу практический пример использования системы принятия решений и управления рисками, только не на предприятии, а в обычной жизни. Этот подход я использовал лично и подтвердил его работоспособность. Как минимум на психологическом уровне, так как ни один из описанных рисков, к счаcтью, не сработал.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии12

Еще 12 big data кейсов

Время на прочтение11 мин
Количество просмотров22K
Хабр, привет. Сегодня мы подготовили еще 12 примеров того, как технологии больших данных приносят компаниям деньги.
Читать дальше →
Всего голосов 18: ↑15 и ↓3+12
Комментарии2

Гарвардский курс по основам программирования CS50 теперь на русском

Время на прочтение4 мин
Количество просмотров177K
image

Предыстория: кто мы и как дошли до жизни такой

Мы — команда проекта JavaRush. А JavaRush, кто еще не в курсе, — это полностью автоматизированный обучающий онлайн-курс по Java. Когда-то давно, именно благодаря поддержке хаброюзеров и статьям на хабре, JavaRush и появился. В то время мы собирались переучить на программистов миллион человек.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии38

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

Время на прочтение12 мин
Количество просмотров154K

КДПВ


Если разделять языки программирования по популярности, то они делятся на три эшелона. Первый эшелон включает мейнстрим-языки, такие как Java, JavaScript, Python, Ruby, PHP, C#, C++ и Objective-C. Несмотря на то, что некоторые из ведущих языков возможно увядают, вам лучше знать один или несколько из них, если вы хотите иметь возможность легко найти работу.


Языки второго эшелона пытаются пробиться в мейнстрим, но ещё не добились этого. Они доказали свою состоятельность путем создания сильных сообществ, но они до сих пор не используются большинством консервативных IT-компаний. Scala, Go, Swift, Clojure и Haskell — языки, которые я бы отнёс ко второму эшелону. Некоторые компании используют эти языки для отдельных сервисов, но широкое применение встречается редко (за исключением Swift, который начинает обгонять Objective-C в качестве основного языка для iOS). Go и Swift имеют хорошие шансы на переход из второго эшелона в первый в течение ближайших двух-трёх лет.


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


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

Читать дальше →
Всего голосов 77: ↑67 и ↓10+57
Комментарии146

Linux 25 лет

Время на прочтение7 мин
Количество просмотров32K
«Привет всем пользователям minix - 

Я создаю (бесплатную) операционную систему (просто хобби, ничего профессионального уровня gnu) для 386(486) AT-клонов. С подобным я вожусь уже с апреля, скоро будет готово. Я хотел бы получить любые отзывы о том, что вам нравится и не нравится в minix, поскольку моя ОС её немного напоминает (то же физическое размещение файловой системы (по практическим соображениям) среди прочего).

Я уже портировал bash(1.08) и gcc(1.40), и всё, похоже, работает. То есть уже через несколько месяцев у меня получится что-то с практическим применением, и мне хотелось бы знать, какие функции понадобятся. Принимаются все предложения, хотя я не обещаю, что их выполню :-)

Линус (torvalds@kruuna.helsinki.fi)
PS. Да — в ней нет никакого кода из minix, у неё многопоточная файловая система. Она НЕ портируема (использует переключение задач 386 итд), и, наверное, никогда не будет поддерживать что-либо, кроме жёстких дисков AT, но это всё, что у меня есть :-(.»

Поздним вечером 25 августа 1991 года Линус Торвальдс оставил это сообщение в группе новостей comp.os.minix. Линусу на тот момент был 21 год, он учился в Хельсинском университете в Финляндии. 25 лет спустя операционная система, которую пишет Линус и ещё десяток тысяч разработчиков, управляет работой миллиардов устройств по всему миру: от крошечных микроконтроллеров, одноплатных компьютеров и смартфонов до огромных суперкомпьютеров на тысячи, сотни тысяч, миллионы ядер.

На изображении: дискеты, на которых записаны одни из самых первых версий Linux, фото Симона Рамбла.
Читать дальше →
Всего голосов 69: ↑63 и ↓6+57
Комментарии24

История URL, часть 2: путь, фрагмент, запрос и авторизация

Время на прочтение11 мин
Количество просмотров23K

mosaic web browser


URL'ы не должны были стать тем, чем стали: мудрёным способом идентифицировать сайт в интернете для пользователя. К сожалению, мы не смогли стандартизировать URN, который мог бы стать более полезной системой наименования. Считать, что современная система URL достаточно хороша — это как боготворить командную строку DOS и говорить, что все люди просто должны научиться пользоваться командной строкой. Оконные интерфейсы были придуманы, чтобы пользоваться компьютерами стало проще, и чтобы сделать их популярнее. Такие же мысли должны привести нас к более хорошему методу определения сайтов в Вебе.

— Дейл Догэрти, 1996

Есть несколько вариантов определения слова "интернет". Один из них — это система компьютеров, соединенных через компьютерную сеть. Такая версия интернета появилась в 1969 году с созданием ARPANET. Почта, файлы и чат работали в этой сети еще до создания HTTP, HTML и веб-браузера.


В 1992 году Тим Бернерс-Ли создал три штуки, благодаря которым родилось то, что мы считаем интернетом: протокол HTTP, HTML и URL. Его целью было воплотить понятие гипертекста в реальности. Гипертекст, в двух словах — это возможность создавать документы, которые ссылаются друг на друга. В те годы идея гипертекста считалась панацеей из научной фантастики, заодно с гипермедиа, и любыми другими словами с приставкой «гипер».

Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии7

История URL'а: домен, протокол и порт

Время на прочтение13 мин
Количество просмотров43K

11 января 1982 года двадцать два специалиста по информатике встретились, чтобы обсудить «компьютерную почту» (ныне известную как "электронная почта"). Среди участников был будущий основатель Sun Microsystems, парень, который сделал Zork, чувак, создавший NTP, и еще один, который убедил правительство платить за Unix. Перед ними стояла задача решить проблему: в ARPANET было 455 хостов, и ситуация выходила из под контроля.



Проблема возникла из-за того, что ARPANET переходил с оригинального протокола NCP на протокол TCP/IP, на котором сейчас существует Интернет. После такого перехода быстро должно было появиться множество объединенных сетей (inter...net), которым требуется иерархическая система доменов, чтобы ARPANET мог резолвить свои домены, а другие сети — свои.

Читать дальше →
Всего голосов 37: ↑37 и ↓0+37
Комментарии25

Партиционирование в PostgreSQL – Что? Зачем? Как?

Время на прочтение23 мин
Количество просмотров173K
Функцией партиционирования таблиц в PostgreSQL, к сожалению, активно пользуются пока не многие. На мой взгляд, очень достойно о ней рассказывает в своей работе Hubert Lubaczewski (depesz.com). Предлагаю вам еще один перевод его статьи!

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

Так что я постараюсь объяснить в меру своих знаний и возможностей, что это такое, зачем его стоит использовать и как это сделать.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии26

JIT-компилятор оптимизирует не круто, а очень круто

Время на прочтение6 мин
Количество просмотров54K

Недавно Лукас Эдер заинтересовался в своём блоге, способен ли JIT-компилятор Java оптимизировать такой код, чтобы убрать ненужный обход списка из одного элемента:


// ... а тут мы "знаем", что список содержит только одно значение
for (Object object : Collections.singletonList("abc")) {
    doSomethingWith(object);
}

Вот мой ответ: JIT может даже больше. Мы будем говорить про HotSpot JVM 64 bit восьмой версии. Давайте рассмотрим вот такой простой метод, который считает суммарную длину строк из переданного списка:


static int testIterator(List<String> list) {
    int sum = 0;
    for (String s : list) {
        sum += s.length();
    }
    return sum;
}
Читать дальше →
Всего голосов 63: ↑62 и ↓1+61
Комментарии129

Как ускорить сборку с Maven

Время на прочтение3 мин
Количество просмотров31K
Maven
Что делать, если сборка (build) с Maven проходит слишком медленно? Ведь когда сборка длится слишком долго, любой, даже самый терпеливый разработчик, может заскучать и отвлечься.

Для быстрого поиска в Google или для закладок, сразу предлагаю итоговое решение:
mvn package -am -o -Dmaven.test.skip -T 1C

— для сборки проекта без тестов.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии40

Введение в компиляторы, интерпретаторы и JIT’ы

Время на прочтение13 мин
Количество просмотров46K
С рождением PHP 7 не прекращаются споры об абстрактных синтаксических деревьях, just-in-time компиляторах, статическом анализе и т. д. Но что означают все эти термины? Это какие-то волшебные свойства, делающие PHP гораздо производительнее? И если да, то как это всё работает? В этой статье мы рассмотрим основы работы языков программирования и разъясним для себя процесс, который должен выполняться до того, как компьютер запустит, например, ваш PHP-скрипт.
Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии15

Критическая уязвимость позволяет перехватывать весь сетевой трафик пользователей Windows

Время на прочтение3 мин
Количество просмотров67K


Исследователи из ИБ-подразделения компании Tencent под названием Xuanwu Lab обнаружили серьезную ошибку в реализации протокола NetBIOS, использующейся в Windows. Критическая уязвимость получила название BadTunnel — она позволяет злоумышленникам полностью контролировать сетевой трафик жертвы.
Читать дальше →
Всего голосов 39: ↑32 и ↓7+25
Комментарии14

Vulners — Гугл для хакера. Как устроен лучший поисковик по уязвимостям и как им пользоваться

Время на прочтение9 мин
Количество просмотров97K


Часто нужно узнать всю информацию о какой-нибудь уязвимости: насколько найденный баг критичен, есть ли готовые сплоиты, какие вендоры уже выпустили патчи, каким сканером проверить наличие бага в системе. Раньше приходилось искать вручную по десятку источников (CVEDetails, SecurityFocus, Rapid7 DB, Exploit-DB, базы уязвимостей CVE от MITRE/NIST, вендорские бюллетени) и анализировать собранные данные. Сегодня эту рутину можно (и нужно!) автоматизировать с помощью специализированных сервисов. Один из таких — Vulners, крутейший поисковик по багам, причем бесплатный и с открытым API. Посмотрим, чем он может быть нам полезен.
Читать дальше →
Всего голосов 45: ↑45 и ↓0+45
Комментарии3

Путешествие запроса Select через внутренности Постгреса

Время на прочтение9 мин
Количество просмотров28K
До конференции PG Day'16 Russia остались считанные дни, расписание можно посмотреть на нашем сайте. Мы трудимся в поте лица, но тем не менее успеваем готовить для вас переводы самых интересных материалов о PostgreSQL. Сегодня представляем вашему вниманию перевод статьи Pat Shaughnessy о поведении запроса Select.

Готовясь летом к этой презентации, я решил изучить некоторые части исходного кода PostgreSQL на C. Я запустил очень простой запрос select и наблюдал, что Постгрес с ним делает, с помощью LLDB, отладчика C. Как Постгрес понял мой запрос? Как он нашел данные, которые я искал?



Этот пост — неформальный журнал моего путешествия через внутренности PostgreSQL. Я опишу пройденный мной путь и то, что я видел в процессе. Я использую серию простых концептуальных диаграмм, чтобы объяснить, как Постгрес выполнил мой запрос. В случае, если вы понимаете C, я также оставлю вам несколько ориентиров и указателей, которые вы можете поискать, если вдруг решите покопаться во внутренностях Постгреса.

Исходный код PostgreSQL восхитил меня. Он оказался чистым, хорошо задокументированным и простым для понимания. Узнайте сами, как Постгрес работает изнутри, присоединившись ко мне в путешествии в глубины инструмента, которым вы пользуетесь каждый день.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии24

Пример простой автоматизации letsencrypt

Время на прочтение8 мин
Количество просмотров74K
image

Удостоверяющий центр «Let’s Encrypt» (далее просто letsencrypt) вышел из беты пару месяцев назад, пообтерся в реальных условиях, избавился от детских болезней и оброс различными клиентами. И к этому моменту выдал 5 миллионов сертификатов. Самое время внедрять, т.е. получать сертификаты на свои домены и обновлять их в автоматическом режиме. Но как внедрить так, чтобы приблизиться к любимому админскому «поставил и забыл»? Чтобы было просто получать новые сертификаты, а старые при этом обновлялись автоматом? Ну и как добавить немного безопасности в этот процесс?
Ответ под катом.
Читать дальше →
Всего голосов 37: ↑34 и ↓3+31
Комментарии38

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность