Search
Write a publication
Pull to refresh
1
0
postdig @postdig

User

Send message

Закладки для демонстрации исходников с подсветкой на вашей странице

Reading time1 min
Views2K

Вы нашли немного времени для создания полезной программы/плагина/виджета/css-файла/html-кода, но на оформление (как всегда) времени осталось минимум?

Тогда предлагаю воспользоваться моим плагином, c помощью которого вы потратите минимум времени на презентабельную демонстрацию ваших исходников прямо у себя на Web-странице. Вот как это выглядит.

Поддерживается C-подобный синтаксис, Java, Python, Bash, SQL, HTML, XML, CSS, Javascript и Makefiles. С помощью расширений можно включить поддержку LISP, Haskell, LUA, OCAML, SML, F#, Visual Basic, SQL, Protocol Buffers и WikiText.

Я не писал все ”с нуля”, для подсветки использовал библиотеку Prettify, которую успешно можно подключать как самостоятельный модуль (она написана на чистом JavaScript).

Полезные ссылки




UPD: PHP тоже подсвечивает, пример тут (последняя закладка)

О качестве услуг в «Хостинг-центре РБК»

Reading time3 min
Views4K

Приветствую хабравчане!



Сегодня я хочу рассказать Вам свою историю и донести до общества текущие проблемы у одного из лидеров хостинга в России — "Хостинг Центра РБК".

image

Мое первое знакомство с «Хостинг Центром» началось еще в июле 2008-го года, тогда мне пришлось отказаться от выделенного сервера и искать альтернативы. Выбирал я долго и основательно. Остановился на 2х вариантах: Агава или ХЦ. Агаву я невзлюбил за почтовые фильтры и мой выбор пал на ХЦ, как на более популярного, а следовательно, надежного провайдера. Как оказалось, зря…

Update: Хабр — сила. Сегодня позвонил саппорт и предложил перенести VPS на другой сервер.
Читать дальше →

Про правильную посадку в кресле

Reading time5 min
Views76K
Навеяно постами про подлокотники. Это сборник разных советов, которые я потихонечку собирал в записную книжку, когда впервые столкнулся с проблемами, которые может вызвать неправильная посадка в компьютерном/водительском кресле и дополнял собственным опытом и знаниями.

Что есть правильная посадка в кресле?

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

Пара слов о физиологии: главная задача вашего организма — это обеспечение подвижности и работоспособности «здесь и сейчас». Почти всегда — с жертвами в будущем. Что же происходит, когда мы сидим в кресле? Современный офисный человек физически плохо развит (это правда), поэтому долгая напряженная поза (голова вытянута вперед, глаза вглядываются в монитор, спина скруглена и перекошена вбок, потому что одна рука лежит безвольно, а вторая активно шевелит мышкой) приводит к тому, что его спинные мышцы не могут удерживать правильное положение позвоночника больше чем полтора-два часа — они просто расслабляются и отпускают связочно-суставный аппарат. Чтобы не произошло травмы — организм включает экстренный режим сохранения подвижности и перераспределяет вертикальную нагрузку так, чтобы компенсировать ее изгибом самого позвоночника и натяжение связок и мелких мышц.

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

Решение — правильная поза. Как ее достичь? Причем совершенно штатными средствами, без адских подлокотников или кресел за полторы тысячи евро?

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

Атака на WPA: подробности

Reading time10 min
Views39K
По мотивам топика о взломанном WPA.
Попытаемся все же разобраться, что случилось и чем это может нам грозить. Поскольку криптографические атаки — вещь, требующая для понимания весьма много специфических знаний, статью можно считать в некотором роде ознакомительной с безопасностью в Wi-Fi сетях.
Читать дальше →

Три первых шага к оптимизации LAMP

Reading time2 min
Views5.5K
Бытует мнение, что связка LAMP (Linux+Apache+Mysql+PHP) не требует особой настройки и работает «из коробки». Это далеко не так. После того, как я долго убеждал товарища установить кеширующий акселератор PHP xcache, я решил провести небольшой эксперимент и попробовать выключить xcache на своём виртуальном сервере, находящемся под небольшой нагрузкой (около хита в секунду). В реальной жизни нагрузка на процессор мала, а вот память загружена сильно, т.к. её немного (256МБайт).

Результаты эксперимента превзошли все ожидания.
Читать дальше →

Тег label

Reading time1 min
Views21K
Когда уже горе-верстальщики научаться использовать этот тег? Повсюду в проекте такие ляпы:

<form ...>
 <input type="checkbox" ..> Поставьте галочку, чтобы стало зае...сь <br>
 ...
</form>


Видя такое, пользователь сначала кликает на надпись, обламывается, кликает на сам чекбокс.
Разве нелья было сразу сделать так?
<form ...>
 <label><input type="checkbox" ..> Поставьте галочку, чтобы стало зае...сь</label><br>
 ...
</form>


Некоторые даже вешают обработчик события OnClick на кусок текста, лишь бы не использовать label… :(

Нативный шаблонизатор

Reading time9 min
Views8K
Я довольно давно уже использую нативные шаблоны, но, почему-то, у многих людей нативные шаблоны ассоциируются с конструкциями типа:

  1. $title = 'My title';
  2. include('templates/index.html');
* This source code was highlighted with Source Code Highlighter.

  1. <html><head><title><?php echo $title ?></title></head>
  2. <!-- ... -->
* This source code was highlighted with Source Code Highlighter.


То есть, переменную определили и приинклюдили html-файл. Я считаю, что это в корне неверный подход. Почему?

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

Таким образом, я пришел к выводу, что шаблонизатор нужен, но он не должен быть навороченным тормозом типа Smarty.
Идеология блочных шаблонизаторов (XTemplate, например) мне не импонирует потому, что в них нет ветвлений как таковых, есть только циклы.

Потому я написал свой.
Читать дальше →

MySQL и JOINы

Reading time6 min
Views149K
Поводом для написания данной статьи послужили некоторые дебаты в одной из групп linkedin, связанной с MySQL, а также общение с коллегами и хабролюдьми :-)

В данной статье хотел написать что такое вообще JOINы в MySQL и как можно оптимизировать запросы с ними.

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

Мультидоменный сервер nginx -> apache

Reading time3 min
Views9.6K
Приветствую! Размещаю по просьбе друга статью.
У него к сожалению пока нет регистрации на хабе, а у меня мало кармы что бы выслать приглашение.
Если есть возможность и понравились статья вышлите ему инвайт, или можно попробовать поднять мне карму что бы я мог выслать ему инвайт.

Итак задача:
Организовать удобное администрирование многодоменного web сервера.
Модель системы: linux -> nginx -> apache -> php -> mysql.

Раньше у меня для каждого домена были отдельные конфиги для nginx и apache,
и для добавления нового хоста требовалось добавить как минимум 2 конфига.

Работа была организована удобно. По сути, были 2 скрипта. 1 для добаления хоста к nginx, другой для apache. (ещё есть скрипт добавления хоста в bind но это другая история).

Но и это было не удобно в условия добавления удаления хостов… иногда забыл nginx прописать, иногда в апаче чтото не то…
Решено было следующим образом:

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

Эмуляция многопоточности в PHP

Reading time10 min
Views30K
Суть многопоточности (для приложения) состоит в том, что процесс может состоять из нескольких (однотипных) потоков, выполняющихся «параллельно», то есть без упорядочивания по времени — выполнился один, пошел следующий. Использование многопоточности позволяет ускорить выполнение задачи и/или снизить нагрузку, таким образом, улучшая быстродействие самого приложения.

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

Я рассмотрю простой пример, как можно достичь эмуляции многопоточности в PHP.
Читать дальше →

Многопроцессовые демоны на PHP

Reading time3 min
Views44K
Зачем может понадобиться писать демоны на PHP?
  • Выполнение трудоемких фоновых задач;
  • выполнение задач, которые длятся больше, чем время ожидания при HTTP-запросе (30 секунд);
  • выполнение задач на более высоком уровне доступа, чем серверный процесс (читай — под рутом).

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

Дёшево и сердито блокируем 85% спама: greysmtpd

Reading time3 min
Views3K
Пока я не стал фрилансером, я не знал, что такое спам. У меня хватало ума не светить свой email где попало, а для регистраций на сайтах использовать временные email. И я привык к тому, что вся почта у меня бегает очень быстро, письма никогда не теряются, и никто не жалуется что мой сервер отказался принимать его письмо. Став фрилансером, я оказался вынужден опубликовать свой email, причём на многих сайтах — ведь новые клиенты должны иметь возможность легко со мной связаться. И спам полился… сначала небольшим ручейком, но в последнее время он уже напоминает скорее полноводную реку, чем ручеёк.

Использование традиционных спам-фильтров (RBL, GMail, SpamAssassin, etc.) меня не устроило: все они время от времени ошибаются, и принимают за спам нормальные письма. И не важно, они их давят, возвращают отправителю, или складируют в отдельную папку чтобы я их периодически просматривал — в любом случае есть ненулевая вероятность потерять важное письмо.
Читать дальше →

JavaScript Cross Site (XSS) POST

Reading time4 min
Views13K
Недавно, в Dojo появилась возможность производить cross site POST запросы, т.е. отправка POST запросов на другие сайты, с другими доменными именами. Это событие осталось незамеченным в нашем сообществе JavaScript разработчиков. По крайней мере, никто и слова про это не сказал. А зря…

В один прекрасный момент
Читать дальше →

Супер-юзабильные формы

Reading time2 min
Views54K
super_form

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

На помощь приходит замечательный скрипт «Masked Input Plugin», который позволяет назначить для каждой формы маску, по которой данные будут заполнятся.

Возможно Вы не совсем поняли, но лучше один раз увидеть, чем сто раз услышать.
Читать дальше

"Спросика" — учебное пособие по Symfony Framework

Reading time7 min
Views11K

Вызов (от переводчика)


Symfony — это один из тех фреймворков на PHP5, который привлекает своей достаточной документацией, множеством плагинов, обновлениями, анонсами новых версий и многим другим.
К сожалению документации на русском языке пока мало. Многие зарезервированные доменты вроде http://symfony-project.ru/ лишь имею одну фразу — «Скоро будет». И причём уже давно.
На самом проекте  http://symfony-project.org/ в разделе документации можно увидеть наш триколор только в разделе «Cookbook».
Итак, я бросаю вызов и намереваюсь заняться переводом. API переводить думаю смысла нет, книга — слишком объёма пока что для меня (но это временно явление, возьмусь может и за неё). А переводить мы начнём Askeet Tutorial. Если первый перевод примут — буду перводить дальше. Каждый день не обещаю, но постараюсь в будние дни по статье выкладывать

Итак... поехали!

Неблокирующая загрузка JavaScript

Reading time1 min
Views1.7K
Примечание: ниже перевод статьи «Non-blocking JavaScript Downloads», в которой автор рассказывает о проблемах, связанных с подключением JavaScript-файлов, и возможной параллелизации их загрузок. Мои комментарии далее курсивом.

Stoyan StefanovОб авторе: Stoyan Stefanov является веб-разработчиком Yahoo! в группе Exceptional Performance и курирует разработку YSlow — инструмента по измерению производительности. Он также внес значительный вклад в разработку продуктов с открытым кодом, выступал на конференциях и автор технических текстов. Его последняя книга Object-Oriented JavaScript.

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

читать дальше на webo.in →

Альтернатива cookies посредством Java Script

Reading time5 min
Views14K
Поиск по хабру похожей статьи не дал, потому рискну поделится с теми кто еще не в курсе
Многие из вас сталкивались с проблемой хранения данных на клиенте. Первым делом в голову приходит cookies но ограничение хранения данных в размере не более 4kb не всех радует, сегодня если позволите я вам расскажу как посредством Java Script хранить около 100kb на клиенте.
итак приступим

Усовершенствования во вредоносных скриптах

Reading time1 min
Views950
Авторы вредоносных скриптов становятся всё изощрённее. По сообщениям от антивирусных компаний, они изучили и начинают активно применять новые трюки. Если раньше скрипты можно было легко обезвредить, просто поменяв переменную eval() на alert(), то теперь в скриптах используется переменная callee(), чтобы блокировать такие изменения. Хуже того, вирусописатели теперь используют информацию из document.referrer, document.location и location.href для декодирования скриптов, оптимизированных для конкретного сайта. Другими словами, эти скрипты будут запускаться только при определённых условиях, что делает их обнаружение довольно трудным.

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

Специалисты SANS рекомендуют установить маленький 8-строковый патч для программы SpiderMonkey, который показывает все аргументы eval() перед их запуском на исполнение. На сегодняшний день это, возможно, самый лучший способ для поиска вредоносных скриптов.

$/tmp/js/src$ diff jsobj.orig jsobj.c
1256a1257
> char *c;
1366a1368,1372
>
> c = js_GetStringBytes(cx->runtime, str);
> if (file && c) {
> printf («File %s Line %i calls eval with the following parameter:\n%s\n\n»,file,line,c);
> }

Бесплатный сервис для выслеживания потерянных ноутбуков

Reading time2 min
Views28K
В наши дни потерять ноутбук — значит лишиться значительной части собственной цифровой жизни. Потеря важных фотографий, записок, паролей, веб-ссылок, файлов зачастую гораздо важнее, чем несколько сотен долларов на новое железо. Вот почему вчерашний запуск проекта Adeona так важен для всех нас.

Adeona — это открытый и бесплатный проект. Названный по имени римской богини Адеоны, которая помогала потерянным детям найти путь обратно к маме, этот сервис отслеживает IP-адрес потерянного ноутбука. Сервис работает просто: сначала нужно скачать специальную программу-шпион (с открытыми исходниками), после установки эта программа начинает посылать зашифрованные послания на распределённый хостинг OpenDHT. Если ноутбук когда-нибудь потеряется, то пользователь скачивает другую программу, вводит свой логин и пароль, и получает всю информацию в расшифрованном виде, в том числе IP-адреса всех подключений ноутбука к интернету, а также служебную информацию обо всех окружающих маршрутизаторах (точках Wi-Fi). Этих данных может быть вполне достаточно, чтобы вычислить злоумышленника и быстро вернуть пропажу.

Версия «Адеоны» под Mac способна даже задействовать встроенную в ноутбук веб-камеру и сделать снимок злоумышленика.

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

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

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

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity