Pull to refresh
0
@razrread⁠-⁠only

User

Send message

Python для системных администраторов

Reading time8 min
Views93K
Автор перевода messerr, просто с кармой ему не повезло.

Введение

 
Как системный администратор, вы сталкиваетесь с многочисленными проблемами. Управление пользователями, дисковым пространством, процессами, устройствами и бэкапами могут стать причиной потери волос, юмора или вменяемости у многих администраторов. Shell скрипты могут выручить, но они зачастую имеют множество ограничений. В этом случае полнофункциональный скриптовый язык, такой как Python, способен превратить утомительную задачу в легкую и, смею сказать, веселую.
Примеры в этой статье демонстрируют различные возможности Python, которые вы можете использовать на практике. Если Вы работаете с помощью них — вы на правильном пути к пониманию силы Python.
 
Читать дальше →

LISP-программирование как жанр искусства

Reading time1 min
Views5.7K
Нереальный, фееричный перфоманс с использованием LISP и OpenGL.
Поначалу ничего непонятно, но все завораживающее действо начинается с 5 минуты где-то. Может быть это и есть один из видов искусства будущего?


Уже представляю себе «выступает заслуженный LISP-ист России, лауреат международных премий Иван Лямбдин»

Многоуровневое дерево с маркерами (только HTML, CSS, без Javascript)

Reading time5 min
Views24K
Многоуровневое дерево с маркерами (только HTML, CSS)До того как заняться верской гитарных аккордов (статьи 1,2,3) я столкнулся с необходимостью сделать человеку на сайте меню-дерево. Рисовать не хотелось вообще, поэтому я взял старый добрый HTML с CSS и начал делать это дерево, начал с простого одноуровневого, а позже сделал многоуровневое с маркерами, которое и представлю.

Позже это дерево дало мне плоды в виде habrahabr.ru/blogs/css/53792
Читать дальше →

Атака на беспроводные сети. Чуть меньше теории и чуть больше практики

Reading time6 min
Views316K
image
В общих чертах теорию и процесс атаки хорошо описал юзер n3m0 в своих статьях «Атаки на беспроводные сети», поэтому я не буду заострять внимание на многих теоретических моментах.
Я же хочу описать самые простейшие способы обхода защиты, но более подробно.
Читать дальше →

Пуленепробиваемый HTML: 37 шагов к идеальной разметке

Reading time11 min
Views20K
Примечание: это не полный перевод статьи. Я выбрал только самые интересные лично для себя пункты. Статья не претендует на свежесть, но возможно даже люди хорошо знакомые с версткой найдут для себя что-то интересное. Статья затрагивает некоторые аспекты семантики верстки с конкретными примерами.

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

Создание gsmrozetka.ru

Reading time4 min
Views5.7K
Кратенько о нас. Мы — это компактный коллектив разработчиков. Пишем на чем угодно, паяем все, что можно припаять. Своя собственная, небольшая лаборатория для проведения адских экспериментов.
Достаточное количество друзей-знакомых-клиентов, поддерживающих нас. И ставящих перед
нами различные задачи. Иногда эти задачи порождают, кроме основного продукта, еще и побочный.

Сегодня я расскажу не о основном, а о как раз случайно созданном нами продукте. Родился он
благодаря такой цепочке:

Удаленны съем статистики со спец-техники (делали и сделали)->
Шуточки про дистанционное управление 50-тонным тралом (хотим, но пока времени нет )->
Возвращение на землю с мыслью, что это же прикольно -по-управлять чем-нибудь ->
Знакомый, с его постоянными поездками на дачу и включением обогревателя, чтобы что-то
там не промерзло и не прорвало. Товарищ хотел простенькую железку. Чтобы воткнул ее и
все заработало. Чтобы, не выезжая на дачу, он мог включить-выключить свой котел.

Навскидку. У нас был удлинитель. Был сотовый телефон.
Image and video hosting by TinyPic

А хотелось что-то типа вот такого:
Image and video hosting by TinyPic

Ну, или, как вариант, на самый крайний случай — вот такого:
Image and video hosting by TinyPic

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

Создание сайта из готовых компонентов на примере сайта заказа еды в офис

Reading time14 min
Views8.7K
В окрестностях нашего офиса нет приличного общепита, поэтому обеды нам привозят на заказ из одного кафэ. Заказ осуществляется за день (на понедельник заказ делается с пятницы), по телефону, с перечислением всех блюд и их количества (в случае если заказ не изменился относительно вчерашнего достаточно просто сказать это). Как компания, занимающаяся разработкой ПО, преимущественно веб, мы до недавнего времени жили по принципу «Сапожник без сапог», и весь учет заказов велся ответсвенным за заказ еды человеком на листочке, в случае изменения заказа нужно было писать письмо этому ответственному человеку, а он уже пересчитывал общий заказ.

Выкроив немного свободного времени в перерыве между проектами реализовал (именно реализовал, а не написал — почему именно так, расскажу немного ниже) систему для заказа еды. За основу, как нетрудно догадаться исходя из тематики блога, была взята CMS Drupal, которая является моим основным инструментом уже около полутора лет.

Цели данного топика:
  • Показать новичкам на довольно простом примере, как создается сайт невысокой сложности на CMS Drupal
  • Кратко расказать про несколько основных модулей — как правило они применяются в 90% проектов на друпале
  • Показать как можно собрать сайт на друпале из готовых компонентов, не написав при этом ни одной строчки кода (на самом деле будет пара строк кода, но немного не в том виде, как он обычно пишется =))


Итак, что должно быть реализовано в проекте:
  • Меню — список блюд, разделенных на категории, с возможностью описания блюд
  • Индивидуальные заказы — пользователь может сделать и заказ, просмотреть его содержимое и изменить
  • Сводный заказ — список всех заказаных пользователями блюд с указанием их количества
  • Возможность делиться впечатлениями о блюдах — тут просто возможность комментирования и рейтингования

Поехали

25 самых опасных ошибок в программировании

Reading time8 min
Views2.9K
Всем привет.
Под катом — перевод статьи Джеффа Атвуда, в которой он приводит список 25 наиболее опасных ошибок в программировании от Common Weakness Enumeration со своими комментариями.

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

Пять способов повысить продуктивность.

Reading time3 min
Views7.7K
По началу я думал что это будет просто перевод одного весьма забавного текста. Но оказалось, что он из рук вон плох, поэтому от него остались только тезисы.

Давайте сразу же договоримся — эти советы подходят в основном программерам, ну и, скажем так, сильно технишн людям. Зададимся вопросом — что такое «продуктивность»? Не знаю как вы, а я вкладываю в это слово очень простое значение. Человек продуктивен, когда выполняет необходимые ему действия с минимальным напрягом для себя и максимальной отдачей для других. В случае программера идеально продуктивным является человек, который легко и непринужденно пишет хороший код за минимальное время. Хватит слов — вот вам советы:

1. Никогда не ищите глазами, пользуйтесь функциями поиска. Всегда, всегда используйте поиск, если вы печатаете быстро. Хороший пример — открытие файла в редакторе. Используйте поиск или комплишн (в зависимости от редактора) и вы увидите насколько это быстрее. То же относится к выбору таба/буфера, если редактор не позволяет перейти в нужный буфер — выкиньте его, иначе смотрите в пункт 4. Идеальный редактор работает так — нажимаем кнопочку (в моем случае Ctrl-X + b) и в строке ввода вписываем первые несколько букв открытого в другом табе файла. Завершаем всё нажатием tab и enter. Таким методом я переключаю открытый буфер за 0.2 секунды. Мышью и глазами я переключаю его за 1.4 секунды. Что приводит нас к следующему пункту.

2. Не повторяйте что-либо более 10 раз. Это критическое число для всех разное, для меня оно именно десять. Автоматизируйте. Больше. Чаще, но не увлекаясь глобализмом. Причем не только в коде, в редакторе, в среде, но и в жизни. Нужно разбить 20 куриных яиц? Сделайте коробочку с дырочками и отсекайте острую часть яйца. 11 раз написать триграмматон на заборе? Сделайте шаблон и купите балон с краской. Не забывайте, что клавиатурные шорткаты есть почти во всем софте. Каждый раз когда вы снимате руки с клавиатуры — теряете время.

3. Учитесь скриптовым языкам. Python, Ruby, Perl, Bash, Javascript, CMD, VBasic. Просто хватайте тот, который ближе к вам и пишите-пишите-пишите. Понятно, что выбрать просто, если вы работаете в windows — для вас только CMD и VBasic. Юниксоидам доступно чуть больше, думаю это одна из причин почему гики так активно пересаживаются на Linux. Я знаю, что учиться не легко — но надо. Есть один странный рецепт — попробуйте в течение 2-3 недель работать из консоли. Нет, не надо отказываться от окон и тп — просто откройте окно терминала или cmd и работайте из него, запустив нужный вам скриптовый интерпретатор. И ради бога, никаких far/mc/nc и тп. — ваша цель научиться писать скрипты. После этих 2х недель вы вернетесь к привычной среде с довольно большим знанием о том, как же устроен скриптовый язык. Напомню, для python и ruby есть ipython и iruby. Для perl есть mshell, остальные интерпретируемы сами по себе.

4. Изучите свой IDE настолько, насколько это возможно. В идеале — откажитесь от IDE в пользу хорошего текстового редактора. Я имею ввиду редактора. Например ViM или Emacs. Пользователи MacOS могут использовать и TextMate, однако мне он кажется жалким подобием левой руки (слабой пародией на MicroEmacs). Да, и уверяю вас — оба редактора, и ViM, и Emacs имеют столько возможностей, сколько не снилось любому другому. В то же время оба они прекрасно работают без донастройки, хотя я предпочитаю Emacs. Конечно многие еще помнят что Emacs раcшифровывается как Eight Megs And Constantly Swaping, но 8 метров памяти уже давно перестали быть чем-то из ряда вон выходящим. Окей, вернемся. Выберите редактор. И теперь используйте его везде, где только можно. Вбейте себе в голову — вы используете ТОЛЬКО этот редактор. Потому что достаточно хорошо знать два редактора невозможно. Знатоки утверждают что работая со своим редактором на полную катушку вы получаете буст к производительности в 200-500%. И глядя на Бацека, например, я в это верю. И единственный минус от этого знания только в одном — вы не сможете от этого отвыкнуть.

5. Изучайте технологии и пишите маленькие программки. Выделяйте себе 20-30 процентов времени на ковыряние в новых движках или базах данных. Да, двадцать-тридцать процентов времени. Я знаю что обычно на это выделятся куда меньше — но меня-то не надо обманывать, я ж сам такой был, и хорошо знаю сколько процентов времени программист пишет код. Подвиньте чуть-чуть время, выделяемое вами на чтение LiveJournal и закопайтесь по локоть в Django. Или сядьте и напишите скрипт для накручивания голосов на Хабре. В общем проводите время весело и с пользой. Это сильно помогает отдохнуть на работе не теряя темпа. А главное — это очень неплохо сказывается на структуре вашего кода — теперь вы знаете как и что делают другие.

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

Vim как IDE для веб-разработки, и не только.

Reading time12 min
Views102K
В данной статье рассматриваются мощные плагины, позволяющие повысить удобство разработки в VIM, а также даются ценные указания по их доработке и использованию. В том числе, используемых команд и горячих клавиш.

Рассмотрена настройка через конфигурационный файл vimrc и приведены ссылки на статьи с описанием отдельных моментов.

Кого-то VIM оттолкнет, показавшись поначалу слишком сложным или неудобным. Однако не стоит недооценивать его гибкость и возможность настройки себя, ведь из VIM можно буквально вылепить идеальный редактор/IDE, таким, каким вы представляете его себе.

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

Я постарался писать как можно компактней, но без потери содержательной части, но статья все-равно вышла довольно объемной. Материал логически разбит на несколько разделов и совсем не обязательно читать его по порядку. Тем не менее, прочитать сведения по установке плагинов и настройке vimrc я рекомендую настоятельно.


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

Заметаем следы

Reading time1 min
Views23K
Помните я про kill -9 $$ рассказывал?

Так вот, немного повторюсь: kill -9 $$ — «выход» из консоли без сохранения истории.
Как это работает: $$ — идентификатор текущего процесса консоли; kill -9 думаю объяснять не надо? Ну на всякий случай: kill -9 убивает указанный процесс (дочерние процессы также убьются, сами).

Но перед тем как бесследно исчезать из консоли не мешало бы всё таки подчистить файл ~/.bash_history, и самый интересный файл: /var/log/lastlog, именно в нём записан последний IP с которого логинились. Файл этот не обычный plain text, поэтому править его надо осторожно. Открываем и везде меняем свой IP.
В общем то его можно совсем удалить, тогда при логине в консоль вообще не будет строчки с last login, у меня на Debian, например, он сам не создается.

Таким образом, зная пароль, можно практически незаметно попасть в систему и так же незаметно оттуда исчезнуть.

Для операций с файлом lastlog нужны права root.

И пожалуй самое главное: не забывайте о том, что Linux ведет довольно подробные логи, и каждое ваше действие может быть где-то да и записано.

Cisco: Пути сертификации неисповедимы

Reading time3 min
Views39K
Свою первую статью я решил написать о том, о чем невольно задумывается каждый начинающий инженер Cisco: о Зарплате. Шучу, конечно о самообучении и Сертификации.

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

Администрирование без галстука.

Reading time3 min
Views3.5K
В системном администрировании существует как минимум два противоположных подхода, я называю их «Из говна и палок» ( di_halt) он же подход «левши» и «пижонский». Каждый их них судя по обилию холиваров в интернете имеет достаточно приверженцев. Каждый администратор выбирает для себя один из подходов исходя из внутренних убеждений и реалий бытия. Чаще всего ему приходится идти на различного рода компромиссы как со своей совестью, так и с бюджетом на IT.

Конечно есть еще и третий подход — «раздолбайский», но про него говорить как-то не очень хочется. Если администратор хочет навести порядок — наведет. Если не хочет, то большие деньги и современное оборудование не помогут. Уж очень много на нынешней работе примеров такого подхода.
Читать дальше →

Кузявые ли бутявки, т.е. пишем морфологический анализатор на Python

Reading time8 min
Views54K
Морфологический анализатор для русского языка — это что-то заумное? Программа, которая приводит слово к начальной форме, определяет падеж, находит словоформы — непонятно, как и подступиться? А на самом деле все не так и сложно. В статье — как я писал аналог mystem, lemmatizer и phpmorphy на Python, и что из этого получилось.
Читать дальше →

Функциональное программирование для землян — функции

Reading time5 min
Views9.2K


В статье про Python пользователь Xronos попросил рассказать о функциональном программировании (ФП). Поскольку я одно время довольно плотно занимался с Lisp, я хотел бы немножко рассказать об этом. Сразу хочу сказать, что о чистом ФП речь не идет. Я расскажу о более простых и более применимых приемах на примере языка Python.

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

Python, формирование структуры — Guido van Rossum (часть 2)

Reading time5 min
Views7.5K
imageЭто продолжение статьи из официального блога автора любимого всеми нами языка. Поэтому повествование ведется от лица самого Гуидо ван Россума. Первая часть здесь.

Введение и обзор



Вступление.

Python сейчас является одним из самых популярных некомпилируемых языков программирования, наравне с Perl, Tcl, PHP и Ruby. Хотя он чаще всего рассматривается, как «скриптовый язык», на самом деле это вполне полноценный язык программирования, подходящий для решения большинства стандартных задач и занимающий одну ступень с Lisp или Smalltalk (впрочем, как и со многими другими). В настоящее время Python используется фактически для всего — от одноразовых простеньких скриптов до больших расширяемых веб-серверов, работающих по 24 часа семь дней в неделю. Он используется для разработки GUI-приложений и баз данных, клиент-серверных веб-приложений и тестирования. Python используется учеными, пишущими приложения под быстрейшие в мире суперкомпьютеры, и детьми, которые в первый раз учатся программировать.
А что там дальше?

Python, философия дизайна — Guido van Rossum (часть 1)

Reading time5 min
Views9.9K
image
Это первая часть статьи из официального блога автора любимого всеми нами языка. Поэтому повествование ведется от лица самого Гуидо ван Россума. Вторая часть здесь.

Дальнейший текст поможет нам нырнуть глубже в историю языка Python. Тем не менее, перед тем, как мы сделаем это, мне бы хотелось заострить внимание на философских вещах, которые помогли мне принимать решения, пока я разрабатывал дизайн и структуру Python.
А дальше?

Рисуем иконки животных

Reading time1 min
Views12K
Иконки животных

Частенько мне приходится слышать вопросы на тему рисования иконок. Методик их рисования большое множество. Кто-то рисует ручкой на стикере, а потом сканит и шопит. Кто-то пользуется Пэйнтером и планшетом, кто-то обходится исключительно вектором, а кто-то исключительно Фотошопом… Я привык рисовать иконки мышкой в Фотошопе, а планшет при этом выполняет чисто декоративную функцию на моем рабочем столе. Итак, веселый зоопарк.

Пошаговая инструкция:
Читать дальше →

Основы Python — кратко. Часть 5. Определение функций, основы.

Reading time3 min
Views169K
Начав писать главу про ООП, понял что совсем забыл освятить такой большой и нужный раздел Пайтона как функции. Тема это большая и обширная, потому, чтобы не сильно растягивать паузу между уроками, решил разделить ее на 2 части. Сначала расскажу основы, потом уже углубленные особенности Пайтоновского функциестроения.

Функции в Пайтоне объявляются не просто, а очень просто. Вот пример самой простой:

def empty_func():
    pass

Начинается объявление с ключевого слова def, что как не сложно догадаться является сокращением от define. После него идет имя функции. После имени в круглых скобках задается список параметров, в данном случае отсутствующих.
Читать дальше →

Основы Python — кратко. Часть 4. Генераторы списков

Reading time3 min
Views220K
List comprehensions

Продолжим наш цикл уроков. Добрый день.

Генерация списков

Генерация списков (не знаю как адекватно перевести на русский list comprehensions) — яркий пример «синтаксического сахара». То есть конструкции, без которой легко можно обойтись, но с ней намного лучше :) Генераторы списков, как это не странно, предназначены для удобной обработки списков, к которой можно отнести и создание новых списков, и модификацию существующих.
Допустим, нам необходимо получить список нечетных чисел, не превышающих 25.
В принципе, только познакомившись с работой команды xrange решить эту проблему несложно.

>>> res = []
>>> for x in xrange(1, 25, 2):
...     res.append(x)
...
>>> print res 

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

Information

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