Search
Write a publication
Pull to refresh
43
0
Александр Вольф @alexwolf

User

Send message

8 полезных регэкспов с наглядным разбором

Reading time2 min
Views274K
О мощи и гибкости регулярных выражений написано много, и их использование давно уже является стандартом для различного рода операций над текстом. Пожалуй, чаще всего регэкспы работают при валидации вводимых данных — здесь им практически нет альтернативы, если не считать громоздкий циклический разбор с кучей неочевидных проверок. Начнём с самого простого:

1. Часть ЧПУ (человекопонятный URL)


По сути, слово с дефисами.

Паттерн: /^[a-z0-9-]+$/
short_url

Примеры посерьёзнее

Организация видео трансляции

Reading time2 min
Views173K
Предлагаю сообществу поделиться своим опытом в области видео трансляций.
Может получится создать что-то на подобии мини пособия.
Схема простая: кто-то задает вопрос, а знающий ответ – делиться информацией. И всё это попадает в топик.
Попробую начать из того, что узнал по советам и ответам на форумах.
Читать дальше →

Структуры данных: бинарные деревья. Часть 1

Reading time6 min
Views382K

Интро



Этой статьей я начинаю цикл статей об известных и не очень структурах данных а так же их применении на практике.

В своих статьях я буду приводить примеры кода сразу на двух языках: на Java и на Haskell. Благодаря этому можно будет сравнить императивный и функциональный стили программирования и увидить плюсы и минусы того и другого.

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

Автоматизация работы *nix системного администратора

Reading time3 min
Views2.7K
О ssh и системных администраторах:

С давних пор *nix системные администраторы используют ssh для удаленного управления серверами.
Некоторые из них делают себе готовые наборы скриптов для обновлений софта, раскладки из репозитория, и так далее.
До определенных размахов бедствия можно обходить парк машин одну за одной. Однако рано или поздно парк машин вырастет до вполне себе солидных размеров и тогда простейшая раскладка по фронтэндам новых скриптов становится головной болью нескольких часов.

Вот здесь вот и начинается самое интересно:
одни системные администраторы запускают свои скрипты в несколько потоков, другие придумывают как отмазаться от части машин.

Однако теперь есть универсальное решение

Анимированные меню на jQuery [часть 2]

Reading time3 min
Views4.4K
По мотивам этого перевода.

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

image

Смотрим демо
Читаем далее...

Анимированные меню на jQuery

Reading time6 min
Views5.5K
Недавно я наткнулся на сайт Dragon Interactive (dragoninteractive.com). Сайт этот достаточно добротно сделан в плане дизайна. А изюминкой можно назвать их анимированное меню. Ну вот если бы это было сделано в Adobe Flash, я даже и не упоминал бы о таком. Но при более близком рассмотрении оказалось, что их меню — это сочетание простых XHTML, CSS и Javascript. В данной статье я собираюсь продемонстрировать, как создавать менюшки (очень близкие к Dragon Interactive’s menu).

Смотрим демо
Читаем далее...

TAG_ADD Plugin

Reading time3 min
Views1.1K
Привет, %username%
Как-то раз мне пришлось писать форму для добавления постов в блог. Помимо стандартных полей (название, дата, текст и.т.д.) необходимо было привинтить юзабельную форму добавления тегов.
Т.к. я кодю в jQuery, то и выбор был однозначным.
Вот необходимые задачи, которые я поставил перед собой:
  1. Легко в настройке
  2. Все теги храняться в одном файле (в кэше)
  3. Минимальная нагрузка на сервер и клиента
  4. Список тегов — подсказок открывается только для выбранного запроса на определенный тег.

Инструкция, ссылки и.т.д.

Читаем руководства в цвете

Reading time1 min
Views1.8K
Учитывая, что День системного администратора только раз в году, а так хочется побольше ярких дней, давайте внесем немного цветов в серые будни доблесных бойцов невидимого фронта! :)

Раскрашиваем будни системного администратора...

.vimrc, который всегда со мной

Reading time2 min
Views67K
Моему .vimrc уже больше восьми лет. Он помнит времена PentiumII, Debian Potato и gcc настолько древнего, что я уже и не помню его версии. Он развивался с пятой версии Vim, приобретал полезные фрагменты и избавлялся от ненужных. И вот внезапно захотелось поделиться с вами его содержимым. Весь файл я показывать пока не буду, лишь пройдусь по некоторым, на мой взгляд, интересным моментам.
Читать дальше →

Средневзвешенная система голосования

Reading time3 min
Views3.5K
Вступление. Эту статью написал мой друг — Семён Шторкин, владелец нижегородского сайта-коммьюнити для фотографов (фотогорький). Пока его, к сожалению, нет на Хабре, но попробую этим топиком заработать для него инвайт :)

Добрый день. Хочу поделиться с уважаемым хабрасообществом весьма объективной системой оценок и рейтингов, основанной на средневзвешенной системе с оценками по пятибалльной шкале.
Читать дальше →

IE8 и поддержка стандартов — transparent PNG + opacity, а также data:URI + AlphaImageLoader

Reading time1 min
Views8.3K
Наковырял пару проблем работы браузера IE8. Может кому пригодится.

Прозрачный PNG + filter:alpha(opacity)



.class{
background:url(transparent.png);
filter:alpha(opacity=50);
}

результат — прозрачные пиксели становятся черными

Лекарство


нужно применить мульти-фильтр

.class{
background:none;
filter:alpha(opacity=50) progid:DXImageTransform.Microsoft.AlphaImageLoader(src=transparent.png, sizingMethod='crop');
}


Следующая проблема нашлась благодаря предыдущей
Читать дальше →

Qtiplot + Python дают огромные возможности для построения графиков и обработки данных

Reading time4 min
Views7.9K

Сегодня я немного расскажу про программу QtiPlot и возможность скриптования её возможностей с помощью языка Python.

Программа QtiPlot разрабатывается как свободный аналог Origin, то есть универсального средства представления и анализа данных. Она позволяет строить всевозможные графики, выполнять операции с данными, искать аппроксимации кривых и тд. С Ориджином я не работал с первого курса института, так что сравнить возможности не смогу, да это и не важно, QtiPlot имеет три важнейших преимущества, это свободность, кроссплатформенность и скриптование на языке Python, о котором пойдёт речь дальше.

В настоящее время «стандартом де факто» для построения графиков в мире *nix систем является gnuplot, в мире Windows это Origin, видимо ломанный, если посмотреть на его стоимость (чуть менее $1000 за самую крутую версию). Так вот QtiPlot в месте с Питоном вполне могут потеснить эти продукты.

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

jQuery UI 1.7.2

Reading time2 min
Views4.1K
Почти незаметно вышел второй поддерживающий релиз jQuery UI 1.7.

Подробный список исправлений я переведу позднее, однако на рабочем проекте обновление библиотеки произошло без проблем. Кстати, проблема с toggle решена. И, главное, начата работа над jQuery UI 1.8!

Загрузить

Файлы

Список изменений


Смотрите список изменений версии 1.7.2, чтобы увидеть, что именно включено в этот релиз…

Новые темы


Ребята из Filament Group снова сделали это. Они отдали нам 7 ещё более красочных тем оформления в галерее ThemeRoller:
Читать дальше →

Определяем порядок столбцов в составном индексе

Reading time5 min
Views23K
Хочу поделиться простым эмпирическим методом, который я использую для определения того, в каком порядке должны идти столбцы в составном индексе. Этот способ подходит не только для MySQL, он также применим к любым СУБД, в которых используются b-tree индексы.

Давайте начнем с запроса, который возвращает пустой результат, но при этом делает полный скан таблицы. EXPLAIN покажет на нем, что нет доступных индексов (т.е. possible_keys = NULL)

SELECT * FROM tbl
WHERE
  status='waiting' AND
  source='twitter' AND
  no_send_before <= '2009-05-28 03:17:50' AND
  tries <= 20
ORDER BY date ASC LIMIT 1;
Читать дальше →

Блокировка ботов и нежелательных пользователей на уровне вебсервера nginx

Reading time2 min
Views24K
У меня, да и думаю у вас, логи веб-сервера частенько забиваются запросами вида:

62.193.233.148 - - [28/May/2009:18:20:27 +0600] "GET /roundcube/ HTTP/1.0" 404 208 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"
62.193.233.148 - - [28/May/2009:18:20:28 +0600] "GET /webmail/ HTTP/1.0" 404 206 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"
212.150.123.234 - - [29/May/2009:20:51:12 +0600] "GET /admin/main.php HTTP/1.0" 404 212 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:12 +0600] "GET /phpmyadmin/main.php HTTP/1.0" 404 217 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:12 +0600] "GET /phpMyAdmin/main.php HTTP/1.0" 404 217 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:13 +0600] "GET /db/main.php HTTP/1.0" 404 209 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:13 +0600] "GET /PMA/main.php HTTP/1.0" 404 210 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:14 +0600] "GET /admin/main.php HTTP/1.0" 404 212 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:14 +0600] "GET /mysql/main.php HTTP/1.0" 404 212 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:15 +0600] "GET /myadmin/main.php HTTP/1.0" 404 214 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:15 +0600] "GET /phpadmin/main.php HTTP/1.0" 404 215 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:16 +0600] "GET /webadmin/main.php HTTP/1.0" 404 215 "-" "-"


В основном это боты, бывают и пользователи, которые сканируют сервер на наличие всяких папок, ищут уязвимости.
Так вот захотелось блокировать эти IP-адреса сразу после попытки сканирования сервера, средствами nginx.

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

jQuery Ui.datetimepicker

Reading time1 min
Views32K
Привет! Сегодня решил сойти с ума! Конечно родной datepicker в ui это хорошо, но когда нужно и параметр «время» – данного виджета не хватает.
Внимание! Писал все быстро, инструкцию не пишу т.к. хватает этой.
Думаю разберетесь.
Демо тут.

Генерация сложных паролей простыми фразами

Reading time1 min
Views12K
Любите ли вы запоминать пароли вида:

qG4'P}:ZGKq?
0[KO!,7`@;6F
]xQ1H]mxLPa#
?

Я — терпеть не могу! Особенно с учётом того, что периодически все эти пароли нужно менять и для каждого сервиса отдельно, а их столько, что голова кругом идёт! Где тут всё запомнишь?

Вариантов несколько:
а) задавать простые пароли и боятся что их кто нибудь подберёт/угадает;
б) задавать сложные пароли (см. выше) и таскать их всё время с собой на бумажке (что тоже очень небезопасно!);
в) использовать метод шифрования простых фраз штатными средствами в системе.

Именно третий пункт я и затрону. Сей метод сводится к следующему (примитивный пример):

%echo "простая_фраза" | md5

На выходе вы получите криптостойкий хеш вида: b3d0da41b07d550d97d579bd642d7dbf. Однако это самый примитивный пример. Можно использовать md5 в связке с sha1/uuencode/openssl и вообще со всем что вам только в голову придёт! Так же можно, например, брать хеш с хеша определённое кол-во раз. Только хотелось бы предупредить, что длину пароля необходимо урезать (!), т.к. если размер будет известен — криптостойкость падает в разы.

Представляю вашему вниманию простой скрипт для реализации сего деяния. Назвал я его «genspass» (от GenerateS encoded Password), написан на классическом unix shell (разумеется совместим с bash/zsh и прочими).
Программа работает просто: получает ключевую фразу (слово, символ — не важно), переводит в MD5, далее в BASE64 и урезает до назначенной длины (задаётся в скрипте), после чего на экран выводится результат.
Пример: вводим 123 получаем YmExZjI1MTFmYzM, копируем и вставляем куда нужно.

Последнюю версию скрипта всегда можно получить по этому адресу.

Разработка web-приложений на C++

Reading time2 min
Views56K

Прочитав недавний топик про использование C++ и fastcgi, я наконец-то решился опубликовать свои наработки на тему Web и C++.

Существующие решения, с моей точки зрения, реализуют простые вещи сложным образом. Моей целью было устранить это досадное недоразумение, написав библиотеку, которая позволит писать эффективные кросс-платформенные веб-приложения на С++ так же легко и быстро, как и на PHP, Python, Java, и т.д.
Читать дальше →

Настенные часы для математиков

Reading time1 min
Views7K
image

Часы, которые показывают время максимально непонятным образом – довольно популярная категория гаджетов. Теперь добавился и настенный вариант. Программисты, математики, физики и просто неравнодушные к точным наукам люди должны оценить. Нормальных цифр на этом устройстве нет, а есть формулы. Кубический корень из 1728 – это 12, 3 – уникальный код цифры в XML и так далее. Полная расшифровка лежит на сайте продавца. Да, стоят часики 25 долларов.

Information

Rating
Does not participate
Location
Барнаул, Алтайский край, Россия
Date of birth
Registered
Activity