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

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

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

Самые полезные приёмы работы в командной строке Linux

Время на прочтение 5 мин
Количество просмотров 156K
Каждый, кто пользуется командной строкой Linux, встречался со списками полезных советов. Каждый знает, что повседневные дела вполне можно выполнять эффективнее, да только вот одно лишь это знание, не подкреплённое практикой, никому не приносит пользы.

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

image

Перед вами – небольшой список полезных приёмов работы с командной строкой Linux. С некоторыми из них вы, возможно, уже знакомы, но успели их позабыть. А кое-что вполне может оказаться приятной находкой даже для знатоков. Хочется надеяться, что некоторые из них будут вам полезны и превратятся из «списка» в живые команды, которыми вы будете пользоваться каждый день.
Читать дальше →
Всего голосов 146: ↑130 и ↓16 +114
Комментарии 149

Памятка пользователям ssh

Время на прочтение 13 мин
Количество просмотров 1.5M
abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

Оглавление:
  • управление ключами
  • копирование файлов через ssh
  • Проброс потоков ввода/вывода
  • Монтирование удалённой FS через ssh
  • Удалённое исполнение кода
  • Алиасы и опции для подключений в .ssh/config
  • Опции по-умолчанию
  • Проброс X-сервера
  • ssh в качестве socks-proxy
  • Проброс портов — прямой и обратный
  • Реверс-сокс-прокси
  • туннелирование L2/L3 трафика
  • Проброс агента авторизации
  • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
Читать дальше →
Всего голосов 360: ↑352 и ↓8 +344
Комментарии 148

Чем меньше, тем лучше — о возможностях языков программирования

Время на прочтение 10 мин
Количество просмотров 28K
Многие языки программирования включают в себя избыточные возможности. Развитие языка включает в себя работу по их исключению.

Существует много языков программирования, и новые продолжают появляться всё время. Лучше ли они тех, что уже существовали раньше? Очевидно, что на этот вопрос невозможно ответить, пока не будет дано чёткое определение что же такое «лучше» в отношении языков программирования.

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

«Совершенство достигается не тогда, когда нечего добавить, а тогда, когда нечего убрать»

Антуан де Сент-Экзюпери

В этой статье вы увидите несколько примеров возможностей различных языков программирования, которые уже общепризнанны избыточными и ещё несколько других, которые имеют те же черты и могут когда-нибудь быть отнесены к той же группе.
Читать дальше →
Всего голосов 75: ↑49 и ↓26 +23
Комментарии 185

Обзор способов и протоколов аутентификации в веб-приложениях

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


Я расскажу о применении различных способов аутентификации для веб-приложений, включая аутентификацию по паролю, по сертификатам, по одноразовым паролям, по ключам доступа и по токенам. Коснусь технологии единого входа (Single Sign-On), рассмотрю различные стандарты и протоколы аутентификации.

Перед тем, как перейти к техническим деталям, давайте немного освежим терминологию.

  • Идентификация — это заявление о том, кем вы являетесь. В зависимости от ситуации, это может быть имя, адрес электронной почты, номер учетной записи, итд.
  • Аутентификация — предоставление доказательств, что вы на самом деле есть тот, кем идентифицировались (от слова “authentic” — истинный, подлинный).
  • Авторизация — проверка, что вам разрешен доступ к запрашиваемому ресурсу.


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

Аналогично эти термины применяются в компьютерных системах, где традиционно под идентификацией понимают получение вашей учетной записи (identity) по username или email; под аутентификацией — проверку, что вы знаете пароль от этой учетной записи, а под авторизацией — проверку вашей роли в системе и решение о предоставлении доступа к запрошенной странице или ресурсу.

Однако в современных системах существуют и более сложные схемы аутентификации и авторизации, о которых я расскажу далее. Но начнем с простого и понятного.
Читать дальше →
Всего голосов 48: ↑48 и ↓0 +48
Комментарии 20

Прогрессивное упрощение

Время на прочтение 3 мин
Количество просмотров 10K
Статья была опубликована на LayerVault и была переведенна специально для Хабрахабра.

Идея упрощения


image

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

Итак, суть идеи прогрессивного упрощения заключается в том, что удобство использования не находится в одной конкретной точке. Со временем пользователь начинает лучше ориентироваться в приложении, поэтому интерфейс продукта должен изменяться под этого пользователя.
Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 23

Как из дешевого и простенького роутера сделать полнофункциональный сервер.

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

Введение


Первым роутером, который попал ко мне, был D-Link DI-524, у меня не было времени что либо выбирать, просто купил первый попавшийся недорогой роутер с wi-fi. Так как по натуре я люблю всё ломать, я почти сразу полез в интернет искать, как его можно усовершенствовать.
Но в то время почти ничего не нашел кроме советов просверлить в нем дырок. Да действительно он частенько перегревался и поэтому нестабильно работал, но на такой рискованный шаг я не пошел.
Благо я его почти сразу продал своему другу.
Когда мне снова понадобилось такое устройство, я уже знал какие функции мне действительно необходимы, для меня это было QoS. Я как обыденный покупатель начал смотреть на маркетинговые описания возможностей и фишек устройств. Для меня это тогда казалось единственно верным. Оказалось это не совсем так.
Я купил asus w520gu, я им в целом доволен (об этом позже), но считаю правильным поделиться опытом и информацией как я его усовершенствовал.
Кому интересно читаем дальше
Всего голосов 113: ↑105 и ↓8 +97
Комментарии 141

Настольная игра для самых маленьких программистов (от 7 лет)

Время на прочтение 2 мин
Количество просмотров 57K
Мы тут весь год общались с детскими психологами и вообще много думали о теме детского образования. Как один из результатов — сделали игру на развитие логики.



В общем, юному программисту нужно будет написать стек действий для таксиста. Чтобы довезти пассажира куда надо с первого раза. Сразу говорю — можно играть и с 4-5 лет. Как обычно, если ребёнок — сын инженера, смело вычитайте 2 года из минимального возраста.
Читать дальше →
Всего голосов 95: ↑88 и ↓7 +81
Комментарии 76

Заметки о кросс–компиляции приложений под DD-WRT

Время на прочтение 8 мин
Количество просмотров 19K
Недавно у меня перестал работать вайфай-рутер и после некоторых раздумий я заказал Asus RT-N16. Хотелось наконец–то познакомиться с альтернативными прошивками. Характеристики этого рутера уже описывались на Хабре. Итак, DD-WRT установлена (v2.24), самба заведена, в первый юсб порт воткнута системная флешка, а во второй — внешний жесткий диск. А дальше я заинтересовался: а смогу ли я запустить свои программы на этом рутере? Я не нашел в сети руководства по сборке программ под рутер и надеюсь этой статьей восполнить пробел. Приведу пошаговое руководство с описанием небольших проблем, встреченных на пути.

В качестве подопытной программы мне хотелось запустить Easysync, о которой я недавно писал. Повторюсь, что это открытая программа для синхронизации файлов в стиле дропбокса. Программа написана с использованием Qt 4, а в качестве движка синхронизации используется Unison. Так что, эта статья описывает как откомпилировать Qt, Unison, Easysync для архитектуры MIPS и рассказывает о запуске Easysync на вашем домашнем рутере.
Поехали!
Всего голосов 58: ↑55 и ↓3 +52
Комментарии 42

Ловец молний

Время на прочтение 6 мин
Количество просмотров 134K
image Да, зима — не лучшее время для статьи о молниях. Но время близится! Сезон дождей и гроз всего через каких-то 4-5 месяцев, а работы – хоть отбавляй.

Все видели молнии? Молнии красивые, витые. Вы знаете как они действительно выглядят? Да, их удается сфотографировать, но только с одной стороны, и через раз.

А мы научились ловить каждую молнию, да ещё строить полную 3d модель каждой, даже невидимой в облаках молнии! Более того, через 15 секунд после удара в любой точке над Москвой, её координаты и трёхмерный профиль сразу же обновляется на нашем сайте!
Под катом 6 мБ трафика.
Давайте поподробнее и с начала
Всего голосов 421: ↑419 и ↓2 +417
Комментарии 170

Опасный target="_blank"

Время на прочтение 2 мин
Количество просмотров 199K
Большинство создают внешние ссылки через target="_blank" и не знают одного интересного нюанса — страница, на которую мы попадем таким образом, получит частичный контроль над ссылающейся на нее страницей через js свойство window.opener.

Через window.opener.location мы сможем сделать редирект на, к примеру, фишинговую страницу. Это своего рода tabnabbing, только более продвинутый. Так как жертва меньше всего ожидает подмены страницы, в открытой ранее, доверенной вкладке браузера.
Читать дальше →
Всего голосов 132: ↑126 и ↓6 +120
Комментарии 136

Анатомия драйвера

Время на прочтение 5 мин
Количество просмотров 25K
Опять вернёмся в традиционную область разработки операционных систем (и приложений для микроконтроллеров) — написание драйверов.

Я попробую выделить некоторые общие правила и каноны в этой области. Как всегда — на примере Фантома.

Драйвер — функциональная компонента ОС, ответственная за отношения с определённым подмножеством аппаратуры компьютера.

С лёгкой руки того же Юникса драйвера делятся на блочные и байт-ориентированные. В былые времена классическими примерами были драйвер диска (операции — записать и прочитать сектор диска) и драйвер дисплея (прочитать и записать символ).

В современной реальности, конечно, всё сложнее. Драйвер — типичный инстанс-объект класса, и классов этих до фига и больше. В принципе, интерфейс драйверов пытаются как-то ужать в прокрустово ложе модели read/write, но это самообман. У драйвера сетевой карты есть метод «прочитать MAC-адрес карты» (который, конечно, можно реализовать через properties), а у драйвера USB — целая пачка USB-специфичных операций. Ещё веселее у графических драйверов — какой-нибудь bitblt( startx, starty, destx, desty, xsize, ysize, operation ) — обычное дело.

Цикл жизни драйвера, в целом, может быть описан так:

  • Инициализация: драйвер получает ресурсы (но не доступ к своей аппаратуре)
  • Поиск аппаратуры: драйвер получает от ядра или находит сам свои аппаратные ресурсы
  • Активация — драйвер начинает работу
  • Появление/пропадание устройств, если это уместно. См. тот же USB.
  • Засыпание/просыпание аппаратуры, если это уместно. В контроллерах часто неиспользуемая аппаратура выключается для экономии.
  • Деактивация драйвера — обслуживание запросов прекращается
  • Выгрузка драйвера — освобождаются все ресурсы ядра, драйвер не существует.


(Вообще я написал в прошлом году черновик открытой спецификации интерфейса драйвера — см. репозиторий и документ.)

Мне известны три модели построения драйвера:

  • Поллинг
  • Прерывания
  • Нити (threads)

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

LLVM для исследователей

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

Что такое LLVM?


LLVM — это по-настоящему удобный для разборки и сборки «ранний» компилятор для таких традиционных языков программирования, как C и C++.

LLVM настолько хорош, что считается «больше, чем просто компилятором» (это динамический компилятор, он работает с языками, не относящимися к семейству C, он представляет собой новый формат доставки для App Store и т. д. и т. п.). Все перечисленное верно, но для нашей статьи важно лишь приведенное выше определение.

LLVM имеет несколько ключевых отличий от других компиляторов:

  • Главное новшество — промежуточное представление (ПП). LLVM работает с ПП, которое действительно можно прочитать (если вы умеете читать ассемблерный код). Возможно, кому-то это не покажется столь уж большим откровением, однако это свойство очень важно. ПП других компиляторов обычно имеют настолько сложную структуру, что их невозможно записать вручную, трудно понять и использовать.
Читать дальше →
Всего голосов 72: ↑68 и ↓4 +64
Комментарии 6

События, которые повлияли на ваше развитие в детстве

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


UPD: игра вышла.

Привет!

Тут такая история. Я заметил, что в какой-то момент стал отмечать для себя важные вещи для развития ребёнка. Например, у меня в детстве был сначала модульный конструктор с мотором, колёсами, батарейками и так далее, а потом – модульный же радиоконструктор. Эти два предмета очень сильно повлияли на то, чем я потом интересовался в будущем.

Ещё пример – в детстве надо обязательно сходить в политехнический и археологический музеи Москвы. Или, например, запомнились такие штуки: первая хорошая НФ, подаренная в 8 лет; дед, научивший меня чертёжному почерку за 15 минут; шахматы каждые выходные; огромная коробка Лего и так далее. И таких событий – тысячи.

У меня просьба. Давайте накидаем важные и интересные вещи, которые можно и нужно сделать с ребёнком до примерно 10 лет. Наверняка ведь у вас есть такие «чекпоинты», которые запомнились.
Читать дальше →
Всего голосов 160: ↑154 и ↓6 +148
Комментарии 552

Лучший подарок – книга. Делаем красивый переплет

Время на прочтение 8 мин
Количество просмотров 258K
Идея создания книги собственными руками поселилась в голове изрядно давно. Изучив практическую сторону вопроса, я лишь укрепился в этом желании, но руки никак не доходили даже до выбора книги. И вот некоторое время назад судьба распорядилась за меня. В силу обстоятельств непреодолимой силы во мне появилось желание подарить уникальную вещь, а, как известно, лучше книги подарка нет. Выбор пал на любимое произведение объекта моего неконтролируемого интереса, невероятно мудрое и емкое, смыслом, а не словами, творение Экзюпери — «Маленький принц». Желание творить подстегивала и моя личная любовь к этой книге. Решение было принято, время неумолимо приближало момент вручения, и я приступил к работе.
Читать дальше →
Всего голосов 233: ↑219 и ↓14 +205
Комментарии 61

Беспилотник на базе Raspberry Pi. Часть 1

Время на прочтение 2 мин
Количество просмотров 112K
Привет, %хабраюзер%. Хочу поделиться историей о своем беспилотнике (БЛА) на малинке.

Перед тем, как начать делать беспилотник, стоял выбор, какую летательную модель брать за основу: квадракоптер или самолет? Так как с коптерами я в свое время наигрался, знаю их основной минус: чаще всего время полета составляет 10-20 минут. Лично для меня это очень мало, поэтому было решено взять за основу самолет.

Читать дальше →
Всего голосов 51: ↑47 и ↓4 +43
Комментарии 62

Электронный тортик в кармане: дневник разработки

Время на прочтение 12 мин
Количество просмотров 99K
электронный тортик в осенней гамме

Около года назад, когда я игрался с официальным Arduino Starter Kit, мне пришла в голову мысль сделать в подарок жене «схемотехнический тортик», а именно плату со светодиодами-свечками, которые можно задувать. Эта задача показалась мне хорошим учебным проектом для понимания того, как программировать микроконтроллеры и как воплощать программы в материю (ведь электроникой я стал увлекаться относительно недавно, а программировать начал еще в школе, поэтому ощущал огромный пробел в своем образовании).

Мне хотелось бы поделиться своим опытом разработки такого простого устройства с нуля, и заодно выложить его схему и программу, так что вы сможете воспроизвести его дома.
Читать дальше →
Всего голосов 59: ↑58 и ↓1 +57
Комментарии 45

Информация

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