Search
Write a publication
Pull to refresh
16
0
Что в имени тебе моём? @mas

User

Send message

Картинки в чате skype

Reading time2 min
Views78K
image

Оказывается, в чате скайпа работают некоторые HTML-теги, в том числе и <font color="">
Благодаря этому возможно создавать несложные картинки в тексте сообщений.

Список поддерживаемых в скайпе тегов www.wikireality.ru/wiki/HTML_в_Скайпе
Для того чтобы оправить HTML-код в чате нужно зажать CTRL+SHIFT и кликнуть на кнопку отправки сообщения.

Код картинки pastebin.com/raw.php?i=z4EspzjC

Ниже показан пример генерации HTML-кода из изображения на PHP.

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

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

Reading time2 min
Views37K
Работать дизайнером очень интересно. Это творческая работа. И как любому творческому человеку, дизайнеру нужна муза или вдохновение.

Я уверен, что у каждого дизайнера есть набор сайтов, на которые они периодически заходят для того что бы черпать это самое вдохновение. У меня так же есть такой список. И я хочу им с вами поделиться.

Естественно, если вы расскажите о своих ресурсах, я буду благодарен.

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

Активная защита FreeBSD на основе логов, sh и cron

Reading time6 min
Views10K
Приветствую всех администраторов FreeBSD!

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

Задача возникла сама собой, при просмотре логов:
/var/log/exim/rejectlog
/var/log/auth.log
/var/log/apache22/httpd-error.log


в них постоянно попадала информация о неудачных попытках подобрать пароль к exim, к серверу и к веб-почте соответственно. Рано или поздно злоумышленники могут пароль подобрать, поэтому их нужно как-то остановить, например, добавив их IP-адрес в правила ipfw. А на веб-сервере еще и пытались найти несуществующие каталоги и файлы, относящиеся к администрированию, типа phpmyadmin, очевидно, чтобы проверить их на существующие уязвимости.
Читать дальше →

Помогите сделать веб-браузеры лучше

Reading time9 min
Views3.1K
Вы по-тихоньку верстаете очередной дизайн и в этот раз вы решили попробовать CSS3 и HTML5, ведь нынче эти новые спецификации вполне поддерживаются большинством современных браузеров. Вы настрочили уже приличное количество кода, время от времени подумывая о том, как же упрощают вашу работу новые технологии и вдруг вам в голову взбрело ненадолго остановиться и проверить работу странички в других браузерах. Вы уже начинаете нервничать, ведь козе понятно — подобную проверку надо было проводить на гораздо более ранних стадиях. Вы запускаете все браузеры, какие у вас есть, и шепчите своему компьютеру «Пожалуйста, работай». Браузер А, все работает. Вы улыбаетесь, чувствуете облегчение. Браузер B и все тоже отлично. Вы расплываетесь в улыбке и у вас поднимается настроение. Браузер C… «FUUUUUUUUUUUUU~!»
Знакомая ситуация?

Профессионал

Reading time10 min
Views18K
Когда-то, когда деревья были большими, а устоявшаяся ныне конструкция автомобилей — четыре колеса, мотор спереди и двери по бокам — не казалась ещё такой незыблемой, разные смелые инженеры экспериментировали с расположением двигателя — ну, например, сзади. Все помнят «Запорожец»? Среди этих инженеров был и Фердинанд Порше. Но у этого варианта компоновки было много минусов, которые, в итоге, перевесили её преимущества — и все эксперименты канули в Лету. Но только не Porsche. Легендарная модель 911 с мотором в том самом месте выпускается уже почти пятьдесят лет. Как говорят сами инженеры, за полвека они настолько отточили конструкцию, что что недостатков за ней не осталось — а её уникальные преимущества сохранились.

Телефонов с выдвижной клавиатурой в своё время тоже выпускалось немало. Сама идея карманной клавиатуры звучала очень в унисон с концепцией карманного же компьютера, которыми стремились стать все телефоны. Концепция осталась, телефоны превратились в смартфоны, а вот выдвижная клавиатура не прижилась, по разным причинам — тяжело, неудобно, габаритно. Среди экспериментаторов был и Sony Ericsson. Первый смартфон в линейке Xperia, Xperia X1, был как раз боковым слайдером с выдвижной клавиатурой. Потом вышел X2, а в прошлом году появился компактный Sony Ericsson Xperia X10 mini pro, сочетавший в себе имя и технику топовой модели с компактностью обычного мобильника. Модель зарекомендовала себя как крайне удачная, и в этом году вышло второе поколение — Sony Ericsson Xperia mini pro. Аппарат уже не раз упоминался в этом блоге, но недавно он попал, наконец, мне в руки для полноценного обзора. А в качестве референсного телефона выступит упомянутый выше предшественник — Xperia X10 mini pro.



Много текста и картинок под катом

Библиотека для упрощения HTTP-запросов

Reading time1 min
Views151K
Requests — библиотека Python, которая элегантно и просто выполняет HTTP-запросы. Теперь не нужно осваивать urllib2 с излишне сложными программными интерфейсами.

Вот как выглядит HTTP-запрос с авторизацией с помощью requests:

>>> r = requests.get('https://api.github.com', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json'
Читать дальше →

Замыкания и объекты JavaScript. Переизобретаем интерпретатор

Reading time12 min
Views25K
Обычно концепции или парадигмы программирования объясняют либо описательно — «разжёвывая» новые идеи простыми словами, либо метафорически — уподобляя их хорошо знакомым аудитории предметам и понятиям. Но ни первый, ни второй способ не дает такого точного и полного представления о предмете, как взгляд с точки зрения низкоуровневой реализации.

Когда в изучении языка доходишь до нетривиальных вещей, бывает полезно сместить уровень абстракции, чтобы понять, как на самом деле всё устроено. Ведь, по большому счету, любые конструкции языков сколь угодно высокого уровня сводятся к старому доброму машинному коду. Писать в объектно-ориентированном или функциональном стиле можно и на чистом C, и даже на ассемблере. Грубо говоря, любой высокоуровневый язык — это зафиксированный на уровне компилятора или интерпретатора набор синтаксических карамелек и шоколадок. Повышение уровня абстракции позволяет писать более сложные программы с меньшими усилиями, но вот понять в начале пути, что конкретно имеется в виду под наследованием или замыканием, как это всё работает и почему, гораздо легче, разобравшись, каким образом всё это реализовано.

JavaScript, как никакой другой язык, нуждается в именно таком объяснении. Функциональная природа, скрытая за Си-подобным синтаксисом, и непривычная прототипная модель наследования поначалу сильно сбивают с толку. Давайте мысленно понизим уровень JavaScript до простого процедурного, наподобие Си. Отталкиваясь от этого «недоязыка», переизобретем функциональное и объектно-ориентированное программирование.
Читать дальше →

Продуктивная работа в vim с использованием snipMate

Reading time4 min
Views11K
В этой статье я хочу рассказать об одном замечательном плагине для vim, который значительно ускоряет написание кода, вёрстку и редактирование текстов.

snipMate — позволяет быстро вставить в документ текстовый шаблон с помощью ключевого слова + <tаb> и предоставляет удобную навигацию по вставленному шаблону.
Читать дальше →

Работа с Java в командной строке

Reading time11 min
Views659K
Сейчас уже никто не создает программы в консоли. Используя любимую IDE, разработчик чувствует себя неуютно за чужим компьютером, где её нет.
Решив разобраться в работе Ant и Maven, я поймал себя на том, что не смогу собрать приложение без них в консоли.
В данной статье я постарался уместить все этапы проектирования демонстрационного приложения, чтобы не искать справку по каждой команде на просторах Интернета.
Читать дальше →

Руководство: пишем интерпретатор с JIT на PyPy

Reading time12 min
Views12K
Все исходные коды и примеры из этой статьи доступны здесь.

Когда я первый раз смотрел проект PyPy, мне потребовалось некоторое время, чтобы выяснить, что он из себя представляет. Он состоит из двух вещей:

— набор инструментов для написания интерпретаторов языков программирования;
— реализация Питона с применением этого набора инструментов.

Вероятно, большинство людей думает, что PyPy это только вторая часть, но это руководство не об интерпретаторе Питона. Оно о том, как написать интерпретатор своего языка.

Я взялся за это руководство для того, чтобы лучше понять как работает PyPy и что он из себя представляет. Предполагается, что вы очень мало знаете о PyPy, поэтому я начну с самого начала.

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

Abrakadabra — каталог фильмов ex.ua

Reading time1 min
Views1.5K
image

Думаю многие из вас знают про ресурс ex.ua.

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

Месяц назад я запустил проект abrakadabra.com.ua. Теперь благодаря фильтрам можно отобрать например фантастические комедии 90-х годов на французском языке в отличном качестве. Со страницы фильма можно перейти на соответствующую страницу ex.ua либо на страницу поиска по торренту. Сейчас добавлены только rutracker.org и 0day.kiev.ua.

Пару дней назад добавили 1000-й фильм. Месяца через 3-4 закончим работу над базой ex.ua по фильмам и мультфильмам. Через месяц, к сентябрю, запустим раздел по сериалам.

Для рейтинга использую, как фундамент рейтинг с кинопоиск.ру. То есть голосуя на сайте пользователь наращивает рейтинг.

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

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

Флаги 254 стран одним спрайтом

Reading time1 min
Views16K
Однажды, nickivanov нарисовал миниатюры для кучи разных флагов и выложил их в свободный доступ. А недавно, artpolikarpov собрал их в один спрайт и написал к нему удобный css, который позволяет легко отобразить любой флаг просто указанием нужного класса.

Вполне возможно, что однажды этот набор сохранит кому-нибудь много времени при работе над сайтом.

И был бы этот топик топиком-ссылкой, да по необъяснимым причинам не разрешает Хабр в топиках-ссылках указывать авторов, заслуживающих похвал. Так что вот они ссылки:
Описание: artpolikarpov.ru/projects/flags
Архив с флагами: artpolikarpov.ru/projects/flags/flags.zip

Проверка кармы пользователя сайта habrahabr.ru с помощью Python на Android. Часть 2 — GUI

Reading time4 min
Views6.9K
В первой части я рассказал как настроить Android смартфон для работы с SL4A (Scripting Layer for Android), показал как вызывать системные всплывающие окна, получать из них введенную пользователем информацию и выводить в них результат работы. В этой же части я расскажу о построении интерфейса к приложению с помощью WebViews. Если коротко, то WebViews это способ построить интерфейс приложения с помощью HTML, JavaScript и CSS. Если учесть, что в Android смартфонах полнофункциональный webkit, то построение интерфейса не такая уж и проблемная задача.
Читать дальше →

Таинственное число 6174

Reading time6 min
Views17K
Число 6174 по-настоящему таинственное. На первый взгляд может показаться, что в нём нет ничего уникального. Но как мы увидим дальше, каждый кто умеет считать, может обнаружить секрет, который делает число 6174 таким особенным.

Функция Капрекара

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

Это простое действие, но Капрекар обнаружил, что оно ведёт к удивительному результату. Давайте посмотрим, как это работает, например, на числе 2005. Из этих цифр мы можем получить максимальное число 5200, а минимальное — 0025, то есть 25. Вычитания будут выглядеть так:

5200 — 0025 = 5175
7551 — 1557 = 5994
9954 — 4599 = 5355
5553 — 3555 = 1998
9981 — 1899 = 8082
8820 — 0288 = 8532
8532 — 2358 = 6174
7641 — 1467 = 6174
Читать дальше →

Популярные вопросы на собеседовании по C++ и ответы на них

Reading time9 min
Views352K
Здравствуйте!

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

О том, что спрашивают на собеседовании у C++ программистов, а также об ответах на эти вопросы и пойдет речь в данном посте.
Читать дальше →

re2c — компилятор регулярных выражений

Reading time3 min
Views8.5K
Задача выделения из потока символов определенных лексем является весьма распространенной. Часто ее решают с помощью лексических анализаторов, конфигурируемых регулярными выражениями. Многие анализаторы построены по принципу генерации программного кода, который в свою очередь реализует логику регулярных выражений. Фактически, это компиляция языка регулярных выражений в код языка программирования.

Например, flex — это один из таких анализаторов. Старый, но проверенный годами.

Я много пользовался flex'ом, он имеет и плохие и хорошие стороны, но по большому счету, жаловаться не приходилось.

Но вчера наткнулся на интересный проект — re2c. По сути, на этой штуке можно писать лексические анализаторы прямо на коленке за несколько минут.

Подробности

Пайпы, the pythonic way

Reading time3 min
Views19K
Одни питонисты любят код читаемый, другие предпочитают лаконичный. К сожалению, баланс между первым и вторым — решения по-настоящему изящные — редко случается встретить на практике. Чаще стречаются строки вроде
my_function(sum(filter(lambda x: x % 3 == 1, [x for x in range(100)])))
Или четверостишья а ля
xs = [x for x in range(100)]
xs_filtered = filter(lambda x: x % 3 == 1, xs)
xs_sum = sum(xs_filtered)
result = my_function(xs_sum)
Идеалистам же хотелось бы писать как-то так
result = [x for x in range(100)] \
    | where(lambda x: x % 3 == 1)) \
    | sum \
    | my_function

Не в Питоне?
Зря так думаете...

IPython advanced usage

Reading time4 min
Views14K
Данный инструмент знаком большинству разработчиков на Python.
В тоже время, не так много людей подозревают о раширенных возможностях предоставляемых данной интерактивной оболочкой, пользуясь в основном автодополнением.

Terminal 2014 python 2014 125ճ0image

Статья построенна на выдержках из обширной, понятной и красивой документации ipython.github.com/ipython-doc/dev/interactive/index.html
Пропустим такие явные вещи, как автодополнение и история команд, сохраняемая мыжду вызовами.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity