Pull to refresh
0
max7 @max7read⁠-⁠only

User

Send message

Shorewall: файрволл для всех

Reading time5 min
Views39K
Внезапно оказалось, что Shoreline firewall совсем не освещен на Хабре, несмотря на то, что является крайне удобным инструментом (и весомым аргументом против pf в холиварах) для настройки файрволла под линуксом.

Просьба не холиварить на темы «Линукс — говно, у нас в OpenBSD круче», «А у меня Kerio WinRoute, а вы все неудачники» и подобные.
Статья для тех, кто выбрал Linux из каких-то соображений и не хочет тратить уйму времени на изучение iptables (а там есть, где запутаться).

Посему, под катом простыня
Читать дальше →

FireHOL — файрволл для невежд за пять минут

Reading time4 min
Views9.5K
Это даже не статья и не полноценное руководство, а маленький сниппет, который поможет вам в наикратчайшие сроки поднять хорошо защищенный и правильно настроенный роутер на любой GNU/Linux машине. И это при полном отсутствии необходимости знания iptables.

Firehol, в отличие от shorewall, это даже не набор скриптов, а всего лишь один bash скрипт. Поэтому для его использования необходимость в perl и других интерпретаторах отпадает.

Firehol ближе к старому доброму narc (netfilter automatic rule configurator), но последний не обновлялся уже 6 лет и представляет из себя достаточно простой скрипт, который не совместим с последними версиями iptables. Ближе он тем, что позволяет писать правила практически на родном человеческом языке.
Читать дальше →

Создаём медиа-пульт из телефона для Linux'a

Reading time5 min
Views8.5K

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

BluePad использовать у меня не получилось, ибо она рассчитана на более-менее не маленькие экраны. В связи с чем, в мой экранчик на Nokia 3110c она тупо не влазила… Поэтому, я начал искать дальше. И в в процессе поисков наткнулся на такую замечательную программу, как anyRemote. Именно о ней и пойдёт речь.

Всё, что нам понадобится:
1) Телефон с bluetooth
2) Компьютер с Linux’ом на борту 
3) Bluetooth адаптер для компа.

Далее под катом.

Debian пакет с собственными скриптами: «Сделай сам»

Reading time6 min
Views712
В продолжение темы пользователя dreadatour, написавшего набор скриптов для заливки скриншотов на сервис clip2net, я решил показать, как можно собрать DEB пакет с собственными скриптами. Сам уже давно использую эту практику, удобно, если надо поделиться с кем-то или же взять с собой «к соседу» набор собственных утилит и не мучаться с зависимостями, вспоминая, что же ты там используешь, чтобы оно заработало.

Я не очень люблю dpkg-buildpackage, так как придется возиться с MakeFile'ами, а в данном случае оно все просто не нужно, скрипты не компилируются, а просто должны оказаться на своих местах. Поэтому собирать будем «совсем руками». Заодно покажу что же такое DEB пакет вообще и расскажу о некоторых «костылях», которые с ним можно иногда сотворить.

Итак, приступим! Нам понадобятся:
date, tar, gunzip, vi (nano, ee, kate, gedit), ar

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

Scheme и классы

Reading time1 min
Views1.8K
Представлю вам последнее видео, посвященное языку программирования Scheme. Дальше мы переходим на Пролог, а напоследок постараемся реализовать классы в функциональном языке.


Если не доступен режим HD, то перейдите, пожалуйста, на vimeo.

Полное решение третьего задание по курсу Programming Paradigms, включающее набранный в видео код.

Видео доступно:

Защищаем себя в Torrent сети, блокируем нежелательных пиров и организации

Reading time1 min
Views15K
Как вы знаете что в торрент сети доказать что данный пользователь скачал файл — нельзя, но можно только копировать список пиров подключившись к раздаче, затем идет запрос на ваш клиент о том какой у вас % закачки, но на данном этапе можно порвать соединение, что нам и предлагают.

Вы наверно помните программу которая это делала — PeerGuardian, но она не работает под Win Vista \ 7 да и у нас есть другие не менее хорошие ОСи.

Недавно старый PeerGuardian пережил обновление до peerblock, теперь он не ставит драйверов в систему и выглядит так.
image
Так же есть блокировщики для MacOs
Читать дальше →

О монадических технологиях

Reading time6 min
Views3.5K
Кирпичёв правильно пишет про небрежность интуитивного понимания императивных языков: http://antilamer.livejournal.com/300607.html.

Однако, мне кажется, что важно было бы озвучить, что всё то, что сейчас скрывается под именем «монада» — само по себе достаточно спутанно в плане педагогики и евангелизма.  Классическая шутка SPJ/Вадлера звучит как «нам следовало назвать ЭТО warm fuzzy things, чтобы не пугать людей теоркатом».  Шутка поразительно недальновидная.   Проблема лежит в той же плоскости, что и называние стоящих перед тобой задач словом «stuff» (это то, с чем борется Аллен в своём GTD).  
Монады в настоящий момент являются миру как сложный ком из исторически обусловленных причин, проблем, решений, технических возможностей и теоретических основ (как алгебраических, так и аспектов теории вычислений). 
Все эти наслоения можно (и нужно) расщепить в первом приближении так (порядок приблизительно случайный):
  • стремление к экспликации эффектов (чистое внедрение императивно-подобных моментов в вычисление), (см. труды Вадлера);  здесь мы включаем ввод-вывод, STM, параллельные вычисления и проч.)
  • удобный механизм для материализации базовых микро-стратегий вычисления — вызов функции (call-by-name/call-by-value), многозначность, смена состояния (присваивания!), обработка исключений, останов при неудаче, continuations, бэктрекинг;
  • typeclasses как механизм внесения монад в язык, и как следствие — удобный механизм для мета-перехвата вычисления (невероятно удобно для domain-specific embedded languages);
  • строгая проверка типов, проистекающая из использования typeclasses, и позволяющая механически проверять корректность использования объектов;
  • существование монадических законов, в которые укладываются монады, что позволяет материализовывать абстрактные комбинаторы; это позволяет находить порой неожиданные изоморфизмы между различными предметными областями, а также помогает при оптимизации и верификации программ;
  • проработанная теоретическая основа (теория категорий), на которой базируются монады; это облегчает жизнь создателям базовых библиотек, на которых потом базируется всё реальное программирование;
  • монады — лишь один из классов в длинной цепочке интересных алгебраически обусловленных классов, некоторые из которых слабее монад, а некоторые — сильнее: Functor, Applicative, Monoid, Traversable, Foldable, Monad со товарищи, Arrow со товарищи;
  • стремление к материализации некоторых видов вычислений в алгебраическую структуру (моноидальные вычисления); это открывает широкий простор для оптимизаций, верификации программ, создания абстрактных комбинаторов, а также устранение unbounded recursion — по мощности результатов это похоже на то, как когда-то ввод-вывод был надежно изолирован в IO Monad;

Потратим по паре абзацев на каждый пункт.
Читать дальше →

Брукс был прав, или главная сложность программирования

Reading time3 min
Views5.4K
Речь в данной заметке пойдет не об известном законе Брукса, связывающем количество людей, задействованных в проекте, и скорость разработки, а о менее известной статье, написанной им еще в 1987 году.

Брукс о сложности программирования


Статья называлась «No Silver Bullets – Essence and Accidents of Software Engineering». В ней утверждалось (и с этим сложно не согласиться), что сущностью программирования является, прежде всего, не написание инструкций машине на конкретном языке программирования, а выработка подробной структуры взаимодействующих сущностей, представляющих сущности проблемной области, а также проверка внутренней непротиворечивости этой структуры. Поэтому даже если, например, изобрести компьютерный язык, оперирующий понятиями на уровне проблемной области, или какое-либо другое средство, призванное существенно облегчить разработку ПО, программирование все равно останется сложной задачей, поскольку придется точно определять взаимосвязи между объектами реального мира, устанавливать исключения, предусматривать все возможные переходы между состояниями и т.д. Следовательно, ни одно средство разработки ПО не сможет существенно (на один-два порядка) снизить сложность разработки. Именно в описании структуры взаимодействующих сущностей проблемной области Брукс и видит главную сложность программирования.

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

Видеолекции по компьютерной графике от МарГТУ — теперь в Интернете!

Reading time1 min
Views1.2K
Не так давно мы анонсировали на Хабре проект UniverTV, который был отлично воспринят Хабрособществом. Однако, было множество комментариев об отсутствии на сайте раздела «Информационные технологии»…
Читать дальше →

STL Filter — скрипт для лаконичных ошибок STL

Reading time3 min
Views1.7K
STL славится своей способностью заполнять метры экранного пространства сообщениями об ошибках. Надоело смотреть на экран и видеть перлы вроде:

testmap.cpp:25: error: no matching function for call to ‘std::map<int, double, std::less, std::allocator<std::pair<const int, double> > >::map(int, int, int)’
/usr/include/c++/4.3/bits/stl_map.h:175: note: candidates are: std::map<_Key, _Tp, _Compare, _Alloc>::map(const std::map<_Key, _Tp, _Compare, _Alloc>&) [with _Key = int, _Tp = double, _Compare = std::less, _Alloc = std::allocator<std::pair<const int, double> >]
/usr/include/c++/4.3/bits/stl_map.h:165: note: std::map<_Key, _Tp, _Compare, _Alloc>::map(const _Compare&, const _Alloc&) [with _Key = int, _Tp = double, _Compare = std::less, _Alloc = std::allocator<std::pair<const int, double> >]


ну и еще пара десятков строк.

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

Добавление возможности скриптинга своим приложениям с помощью Active scripting

Reading time10 min
Views4.7K
Последнее время я заметил некоторый интерес хабралюдей к такой теме как скриптинг. Были статьи про Lua, про V8 (JavaScript движок Google Chrome). Я же хотел бы рассказать об использовании технологии Active Scripting (она же ActiveX Scripting) от Microsoft.
Это технология, используемая для реализации поддержки скриптов в приложениях. Именно так работает движок JavaScript всеми любимого браузера IE ;) Однако, не спешите с выводами. Да, тот же движок V8 работает в разы быстрее, но и у данной технологии есть свои преимущества и возможные области применения, о которых я тоже расскажу.
Читать дальше...

aptitude vs apt. 5 причин, почему я использую aptitude

Reading time2 min
Views74K
Пять параметров, по которым aptitude превосходит (по четвертому параметру не уступает) apt:

1. Логичность синтаксиса. И единство управления.
2. Гибкость поиска.
3. Проставление меток пакетов.
4. Разрешение зависимостей.
5. Интерфейс.

наглядно и с картинками

Троллинг и тролли (о том, как составлять классификацию и выделять группы)

Reading time8 min
Views8.3K
Устав от обилия «аналитических» статей, посвященных такому социальному явлению, как троллинг, я, честно говоря, в очередной раз составил портрет среднестатистического обитателя сети и призадумался — а насколько вообще возможна классификация этого явления? Естественно, что в 99% виденных мной статей классификация никакой научностью даже не пыталась страдать в лучшем случае оставаясь на уровне «тролль закомплексованный — тролль незакомплексованный», а в худшем — на уровне «тролль хороший — тролль плохой». Естественно, что на основе такой классификации разобраться с этим явлением практически невозможно.

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

Топик находится в блоге «учитесь работать» просто потому, что научитесь уже, блин, составлять классификации!
Читать дальше →

DLL Injection

Reading time4 min
Views71K
DLL инъекция дает возможность выполнять свой код в адресном пространстве уже запущенного процесса. Многие используют инфицирования для написания читов для игр, выполнения вредоносных действий для системы и т.п. Но данный прием не обязательно применять для реализации коварных планов, а например, для обновления своего приложения.
Читать дальше →

Шлюз+шейпер для домашней сети на Ubuntu

Reading time4 min
Views30K
Моя домашняя сеть разрослась до количества трех компьютеров. В связи с чем началась дележка: кто будет качать первым.
Иногда даже страничка в ФФ открывается по 2-3 минуты, так как на соседнем компе во всю качает торрент.
Советом системных администраторов (то есть мной) было принято решение создать шлюз c шейпером который будет динамически делить канал на всех.
Ну начнем
Читать дальше →

Использование V8

Reading time9 min
Views28K
V8 — это движок JavaScript от Google, который используется в браузере Chrome. Он быстрый и доступен в исходных кодах (С++) для Linux (точнее для gcc) и под Windows.

В свете роста популярности использования V8 я решил поделиться своим (годичным) опытом его использования на платформе Windows в качестве серверного скриптового движка.

Часть 1. Введение и простейшая программа, использующая V8.

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

«OOC для C, — это как Scala для Java»

Reading time7 min
Views2.3K
Сегодня на Hacker News наткнулся на пост о (похоже очень) новом языке "ooc". Бросил на день все дела, занялся ковырятельством — уж больно интересно выглядит.

Итак, "ooc — это современный, объектно-ориентированный, функционально(ватый), высокоуровневый, низкоуровневый, секси язык программирования". (Именно секси его и представляют разработчики, ну а я бы добавил что еще и "компилируемый")

По сути — ooc — транслятор языка высокого уровня в C со сборщиком мусора.

Как выразился один из посетителей сайта: "ooc для C, — это как Scala для Java" (jimbokun@HN).

Обязательный «Hello, World» на ooc:

hello.ooc:
"Hi, softer world =)" println()

на выходе hello.c и hello.exe.

ooc-компилятор транслирует это в c-код и использует доступный c компилятор (gcc, mingw, icc, tinycc) чтобы сделать из этого hello.exe (или ./hello). Поддержка tinycc заявлена, но в реальности ждем поддержки C99 в самом tinycc (автор обещал сделать обходные пути, но пока не работает), поэтому наслждаемся пока что довольно неслабого размера .exe'шниками (gcc от mingw других не делает).

Итак, что у нас уже есть в языке: классы, объекты, строгая типизация, угадывание типов (n := "Beer" length()), chaining (.dothis().dothat()), совместимость с c-библиотеками, абстрактные классы, шаблоны из C++, списки, разреженные(sparse) списки, хеши (ArrayList, SparseList, HashMap), for (i in list) { ... }, обертки для c-шных функций и классов, перегрузка операторов, полиморфизм, сборщик мусора (отключаемый), import file/name (не нужны .h, но .h можно использовать как extern), closures, eiffel's contracts, исключения, reflections, pattern matching, ranges, ternary operator, bindings, generics, coroutines, GTK, SDL, OpenGL, GLU, GLUT bindings…

Как сказал товарищ varjag@HN: «Я думаю это розыгрыш, сделанный пользователями Ruby, но нигде этого в тексте не вижу.» Нет, этот язык существует на самом деле. Примеры, линки, установка, подводные коряги — под катом…
Читать дальше →

Установка виртуальных машин KVM под ubuntu server

Reading time5 min
Views161K
Последнее время применение виртуализации при построении серверной инфраструктуры встречается все чаще. Гибкость, масштабируемость, экономия делают эту технологию очень перспективной. Сейчас на рынке существует достаточное количество решений, как проприетарных, так и open source, позволяющих развернуть виртуальные сервера. Один из таких вариантов я хочу рассмотреть в данной статье.
Читать дальше →

Webmin — система на кончиках пальцев

Reading time2 min
Views130K
image

Как говорится на официальном сайте, Webmin — это web-интерфейс для системного администрирования Unix. Используя любой современный баузер, Вы можете настраивать аккаунты юзеров, сервер Apache, DNS, файловый сервер и многое другое.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity