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

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

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

Пишем социальную сеть на Ruby on Rails. Часть 2

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

Прошлая статья:

Пишем социальную сеть на Ruby on Rails. Часть 1

Всем привет, сегодня вторая часть серии статей "Пишем социальную сеть на Ruby on Rails" и сегодня я планирую добавить CI/CD.

Читать далее

Топ-10 книг для разработчика

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

Совершенствоваться в сфере разработки — это не только писать хороший код, но и читать о том, как его писать.




Привет, хабр! Продолжаю делиться полезными подборками. Совсем недавно я опубликовал 2 поста с перечнем Github репозиториев: Часть1 и Часть2. На этот раз предлагаю вашему вниманию подборку полезных книг для разработчиков. Кому интересно — добро пожаловать под кат.
Читать дальше →

Анализ кода демо Second Reality

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

23 июля 2013 года был опубликован исходный код демо Second Reality (1993 год). Как и многим, мне не терпелось взглянуть на внутренности демо, которое так вдохновляло нас на протяжении всех этих лет.

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

  • Командная работа.
  • Обфускация.

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

Часть 1: введение


Демо


Прежде чем приступать к коду, дам ссылку на захват легендарного демо в HD-видео (Майкла Хата). Сегодня это единственный способ полноценно оценить демо без графических глитчей (даже DOSBox не может правильно его запускать).

Изолируем демоны с systemd или «вам не нужен Docker для этого!»

Время на прочтение9 мин
Количество просмотров51K
В последнее время я вижу, как довольно большое количество людей применяет контейнерную виртуализацию только для того, чтобы запереть потенциально небезопасное приложение внутри контейнера. Как правило, используют для этого Docker из-за его распространенности, и не знают ничего лучше. Действительно, многие демоны первоначально запускаются от имени root, а далее либо понижают свои привилегии, либо master-процесс порождает обрабатывающие процессы с пониженными привилегиями. А есть и такие, которые работают исключительно от root. Если в демоне обнаружат уязвимость, которая позволяет получить доступ с максимальными привилегиями, будет не очень приятно обнаружить злоумышленников, уже успевших скачать все данные и оставить вирусов.
Контейнеризация, предоставляемая Docker и другим подобным ПО, действительно спасает от этой проблемы, но также и привносит новые: необходимо создавать контейнер для каждого демона, заботиться о сохранности измененных файлов, обновлять базовый образ, да и сами контейнеры часто основаны на разных ОС, которые необходимо хранить на диске, хотя они вам, в общем-то, и не особо нужны. Что делать, если вам не нужны контейнеры как таковые, в Docker Hub приложение собрано не так, как нужно вам, да и версия устарела, SELinux и AppArmor кажутся вам слишком сложными, а вам бы хотелось запускать его в вашем окружении, но используя такую же изоляцию, которую использует Docker?

Capabilities

В чем отличие обычного пользователя от root? Почему root может управлять сетью, загружать модули ядра, монтировать файловые системы, убивать процессы любых пользователей, а обычный пользователь лишен таких возможностей? Все дело в capabilities — средстве для управления привилегиями. Все эти привилегии даются пользователю с UID 0 (т.е. root) по умолчанию, а у обычного пользователя нет ни одного из них. Привилегии можно как дать, так и отобрать. Так, например, привычная команда ping требует создания RAW-сокета, что невозможно сделать от имени обычного пользователя. Исторически, на ping ставили SUID-флаг, который просто запускал программу от имени суперпользователя, но сейчас все современные дистрибутивы выставляют CAP_NET_RAW capability, которая позволяет запускать ping из-под любого аккаунта.
Получить список установленных capabilities файла можно командой getcap из состава libcap.
% getcap $(which ping)
/usr/bin/ping = cap_net_raw+ep

Флаг p здесь означает permitted, т.е. у приложения есть возможность использовать заданную capability, e значит effective — приложение будет ее использовать, и есть еще флаг iinheritable, что дает возможность сохранять список capabilities при вызове функции execve().
Capabilities можно задать как на уровне ФС, так и просто у отдельного потока программы. Получить capability, которая не была доступна с момента запуска, нельзя, т.е. привилегии можно только понижать, но не повышать.
Также существуют биты безопасности (Secure Bits), их три: KEEP_CAPS позволяет сохранить capability при вызове setuid, NO_SETUID_FIXUP отключает перенастройку capability при вызове setuid, и NOROOT запрещает выдачу дополнительных привилегий при запуске suid-программ.
Читать дальше →

BPF для самых маленьких, часть нулевая: classic BPF

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

Berkeley Packet Filters (BPF) — это технология ядра Linux, которая не сходит с первых полос англоязычных технических изданий вот уже несколько лет подряд. Конференции забиты докладами про использование и разработку BPF. David Miller, мантейнер сетевой подсистемы Linux, называет свой доклад на Linux Plumbers 2018 «This talk is not about XDP» (XDP – это один из вариантов использования BPF). Brendan Gregg читает доклады под названием Linux BPF Superpowers. Toke Høiland-Jørgensen смеется, что ядро это теперь microkernel. Thomas Graf рекламирует идею о том, что BPF — это javascript для ядра.


На Хабре до сих пор нет систематического описания BPF, и поэтому я в серии статей постараюсь рассказать про историю технологии, описать архитектуру и средства разработки, очертить области применения и практики использования BPF. В этой, нулевой, статье цикла рассказывается история и архитектура классического BPF, а также раскрываются тайны принципов работы tcpdump, seccomp, strace, и многое другое.


Разработка BPF контролируется сетевым сообществом Linux, основные существующие применения BPF связаны с сетями и поэтому, с позволения @eucariot, я назвал серию "BPF для самых маленьких", в честь великой серии "Сети для самых маленьких".

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

Настройка Firefox в Linux

Уровень сложностиСредний
Время на прочтение127 мин
Количество просмотров96K
Решил написать о настройке Firefox для Linux. В интернете похожие статьи тоже есть, но в основном они по старым версиям браузера. Радикальных отличий в настройке Firefox для Linux или для Windows нет, однако есть свои особенности.
Читать дальше →

Компьютер ПЭВМ «Поиск». Электронмаш

Время на прочтение10 мин
Количество просмотров82K
image Сегодня я бы хотел немного рассказать о незаслуженно обделенном на Хабре вниманием советском ПЭВМ Поиск. Отличает данный компьютер от многочисленных Байтов, Ириш, Корветов, БК0010, Радио-Р86 и прочих то, что он был полу-совместим с IBM XT/PC. Машина базировалась на отечественном аналоге процессора Intel i8088 — КМ1810ВМ88, работающем на чуть завышенной частоте — ~ 5 MHz, против 4,7 MHz у оригинальной XT. Однако, в целом, компьютер работал медленнее, чем XT, потому что в Поиске не была реализована полноценная CGA видеокарта. Фактически, текстовые режимы эмулировались – видеоадаптер всегда работал в графическом режиме, а буквы на экране прорисовывал системный BIOS попиксельно. Естественно это отнимало кучу процессорного времени. Еще одним отличием от настоящей XT было отсутствие DMA, что так же сказывалось на быстродействии работы с памятью не в лучшую сторону. Да и самой памяти было далеко не 640Kb, которых бы конечно хватило всем, а поменьше, и ее хватало не всем. Однако, несмотря на все недостатки, ПЭВМ Поиск мог запускать актуальную в то время MS-DOS и работать практически со всеми популярными в то время приложениями и играми, начиная от Norton Commander и Digger, заканчивая Windows и Office. И цена, конечно… Если настоящую XT-шку могли позволить себе в основном только организации, то ПК Поиск был более-менее доступен для рядового советского инженера (месячная зарплата). Но обо всем по порядку…
Много фотографий на калькулятор и скриншотов

История игрушки. Поле Чудес

Время на прочтение11 мин
Количество просмотров301K
Случилось это в городе, закрытом от шпионов, цыган и бед социалистической экономики. В Советском Союзе было ровно 10 таких городов, повязанных атомным секретом.

Жизнь мальчиков с математическими способностями в атомных городах была предопределена — школа с пятерками по алгебре и геометрии, мех-мат столичного университета, возвращение в систему, квартира через год, кандидатская степень в 40 лет, ВАЗ 2103 к пятидесяти годам, звание доктора, гараж, шесть соток, четыре квадратных метра.

Бесконечные размышления о математическом моделировании ядерных взрывов разрывали мальчикам мозг. Мозг можно было отвлечь тремя способами — алкоголем, азартными играми и спортом. Секс и музыка помогали не всегда.

Pole Chudes для iPhone

Далее я проваливаюсь в историю компьютерной игры.
Под тегом личные воспоминания ветерана без ссылок, рекламы, картинок и кода.
Спасибо за чудесные комментарии, парни.

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

Настраиваем AirPrint на обычном USB принтере под Mac OS X 10.6.5 (Видео)

Время на прочтение1 мин
Количество просмотров25K
Вчера вышла прошивка для устройств на iOS за номером 4.2.1, в паре с Mac OS X 10.6.5 она позволяет печатать на принтерах с iPad и iPhone.

Но есть маленькое НО, по задумке Apple это возможно только с определенными специальными принтерами.

Программка airprinthacktivator решает эту проблему в корне, и мы можем печатать на любом USB принтере.

Вот снял сегодня видео, как это работает.



Программку для активации функции AirPrint для обычных USB принтеров качаем тут — netputing.com/airprinthacktivator

На iPhone 4 тоже работает.

Обзор маршрутизатора NETGEAR WNR3500L

Время на прочтение6 мин
Количество просмотров65K
Здравствуйте, хабралюди и хабрагости!
Увидел пару обзоров маршрутизаторов NETGEAR на Хабре за последнее время и решил внести свою лепту в это дело.На руках у меня где-то с апреля месяца имеется железка WNR3500L.
Ключевыми особенностями маршрутизатора можно назвать наличие гигабитных портов, usb-порта, wi-fi n-стандарта и сравнительно низкая цена (4500 рекомендованная, менее 4000 — в недорогих компьютерных магазинах) за предлагаемый функционал. Полноценный обзор мне сделать сложно, в силу отсутствия необходимого для этого железа в нужное время и в нужном месте, но кое-что интересное, полагаю, смогу написать. Сознательно включил в обзор ряд для многих очевидных моментов, которые не относятся напрямую к роутеру, но, тем не менее, некоторым хабрапосетителям могут быть новыми и интересными.

Внешний вид.

Внешний вид маршрутизатора мало отличается от WNR2000 или WNR3500 (использовано изображение с офф. сайта, глянец меня победил).



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

Преемник Blapkmarket'а — Warket

Время на прочтение2 мин
Количество просмотров3.2K
image
По примеру Apple, Google решила встроить в Android Market и не прогадала, ведь всякому нравится, когда не приходится искать свежий софт, бегая как бешеная собака по сайтам произодителям, как это делает большинство пользователей к примеру WM или Symbian. Однако не ясно по каким причинам Google, одними почитаемый, другими презираемый, а третьими используемый, отказал России и некоторому количеству стран в возможносит купить приложения за деньги, оставив в списке только бесплатные приложения.
Читать дальше →

Axelvox HD242 – удобный звук

Время на прочтение4 мин
Количество просмотров44K
Сейчас буду рад рассказать Вам о новых наушниках с саморегулирующимся размером и очень высококачественным звуком, который оценят как простые слушатели, так и заядлые меломаны и профи.



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

Интернет-радио

Время на прочтение3 мин
Количество просмотров4.3K
последние несколько лет постоянно, часов по 10-16 в день, слушаю интернет-радио и вот небольшой список очень хороших, на мой взгляд, станций, которые постоянно развиваются и совершенствуются, выбирал те, которые меньше всего надоедают и их можно слушать очень долго:
Читать дальше →

Релаксирующий редактор

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

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

Под катом немного графики и впечатлений

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

Установка с внешнего HDD

Время на прочтение2 мин
Количество просмотров371K
image
Я уже как год отказался от DVD привода, а тенденции нетбуков говорят о правильности решения. Но перед мной встал вопрос, как установить операционку без DVD. Не к месту умерла флешка, а когда я пошел в магазин за новой, на глаза случайно попались внешний диски Seagate Expansion, 250Gb версия которого стоила буквально на 500 рублей дороже, чем 8Gb флешка (2323 рубля). А размер и весь которой, не сильно смущал карман куртки.
Размеры:141 x 18 x 80 мм
Вес:0.16 кг

Но как оказалось, установка Windows 7 с USB HDD, работает не по-такому же принципу как с USB FLASH. Разобравшись и проверив работоспособность, делюсь информацией с вами.
Работает как и для Настольных ПК, ноубтуков, так и для Нетбуков.
  • Подготовка HDD
  • Нарезка и подготовка разделов HDD;
  • Копирование Windows 7

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

Codecademy запустил русскую версию

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


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

Это стало возможным благодаря получению 10 млн долларов венчурного финансирования от Kleiner Perkins, Index Ventures, Union Square Ventures, Юрия Мильнера и Ричарда Брэнсона, сообщает TechCrunch.

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

Упорядочивание аудиотеки. Практические советы

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

Введение


Вообще, я во многих вопросах перфекционист. Если есть — нужно, чтобы было безупречно (иногда это сказывается отрицательно, но сейчас не об этом). Свою аудиоколлекцию я тоже привык держать в чистоте. Но со временем, при пополнении стало накапливаться много мелких неприятностей. Вот некоторые из них:
  • Разные шаблоны для имен файлов: 4 — Звезда | 04 — Звезда | 04. Звезда
  • Разные имена исполнителей в тегах: Чиж & Co | Чиж и Ко. | Mylene Farmer | Mylène Farmer
  • Не указаны исполнители альбома (что приводит к полному бардаку в альбомах-компиляциях)
  • Не совсем корректная информация об альбомах, состоящих из нескольких дисков
  • Путаница в годах изданий и переизданий (ремастеринг, и т.д.)
Ну и прочие мелочи.
Часто у пользователей коллекции составляют несколько тысяч, а иногда — несколько десятков тысяч записей. Так что, перелопачивать все вручную — долго и неэффективно.

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

Итак, начнем...

Достоевский, Петербург, Яндекс.Карты

Время на прочтение1 мин
Количество просмотров2.4K
В день рождения Федора Михайловича Достоевского хочется напомнить вам, что ближайшие выходные в Санкт-Петербурге можно провести не только в поисках дома из фильма «Питер FM», но и найти дом старухи-процентщицы, проверив заодно, точно ли 730 шагов отделяют его от места, где жил Родион Раскольников. В общем, предлагаем вам прогуляться по местам, связанным с главным ФМ русской литературы.



Пишите в комментариях, каких объектов не хватает в нашей «экскурсии». Мы всё проверим и добавим на карту.

Читатели и прогульщики
.

Релаксирующие текстовые редакторы для Linux

Время на прочтение4 мин
Количество просмотров8.8K
У самого ubuntu нету, поэтому попросили разместить. Думаю статья окажется полезной.

image
Еще в прошлом году на Хабре вышла статья о «релаксирующем» текстовом редакторе Ommwriter. Специфическая визуальная оболочка не могла не привлечь графоманов, нуждающихся в полном погружении в процесс написания текста. К сожалению, на момент выхода статьи хабраюзера langolf (а, впрочем, и до сих пор) не вышло ни одной версии для Linux.

Однако, это не означает, что аналогов Ommwriter не существует. Я был порядочно удивлен, случайно узнав о существовании многих программ, подходящих для такого рода графоманства. Поэтому мною был подготовлен небольшой обзор «focus on writing» текстовых редакторов для Linux.
Читать дальше →

Команда dd и все, что с ней связано

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

В UNIX системах есть одна очень древняя команда, которая называется dd. Она предназначена для того, чтобы что-то куда-то копировать побайтово. На первый взгляд — ничего выдающегося, но если рассмотреть все возможности этого универсального инструмента, то можно выполнять довольно сложные операции без привлечения дополнительного ПО, например: выполнять резервную копию MBR, создавать дампы данных с различных накопителей, зеркалировать носители информации, восстанавливать из резервной копии данные на носители и многое другое, а, при совмещении возможностей dd и поддержке криптографических алгоритмов ядра Linux, можно даже создавать зашифрованные файлы, содержащие в себе целую файловую систему.
Опять же, в заметке я опишу самые часто используемые примеры использования команды, которые очень облегчают работу в UNIX системах.
Читать дальше →
1

Информация

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