Search
Write a publication
Pull to refresh
2
0
Садовников Антон Петрович @Siddthartha

Developer

Send message

Подсветка текста в «TextArea»

Reading time4 min
Views20K
Эта статья покажет, как в современных браузерах можно сделать подсветку текста в поле редактирования (WYSIWYG).
Пример можно посмотреть, в google.docs или на некоторых продвинутых форумах.

Уверен, многим это будет интересно.

Атрибут contentEditable и параметр designMode


Именно contentEditable или designMode и делает для нас всю основную «грязную» работу.

Если этот атрибут поставить в тег, то всё, что внутри тега, становится автоматически редактируемым.

<html><head></head><body>
  <div contentEditable="true"><b>C</b>ontent<u>!!!</u></div>
</body></html>
работающий пример

Этот атрибут не поддерживается сейчас некоторыми старыми браузерами (например, FireFox 2.0). Но есть более «глобальный» параметр страницы, который сейчас поддерживают все браузеры, который нам может помочь —
designMode

На чем работает Digg

Reading time2 min
Views1.2K
Главный архитектор Digg.com Джо Стамп (Joe Stump) рассказал в корпоративном блоге о том, как на данный момент устроен и работает крупнейший новостной агрегатор, находящийся на 142 месте по посещаемости в рейтинге Alexa.com.


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

UNetbootin — Universal Netboot Installer

Reading time1 min
Views17K

UNetbootin позволяет устанавливать различные Linux / BSD дистрибутивы на раздел жёсткого диска или флешку. А также создание загрузочных образов Parted Magic, Super Grub Disk, Backtrack, NTPasswd, Smart Boot Manager (SBM), FreeDOS, и других

скачать для windows

скачать для linux

unetbootin.sourceforge.net
www.teamteabag.com/2008/08/13/howto-linux-from-usb-the-easy-way-with-unetbootin

Очередной HowTo по Vim

Reading time1 min
Views7.6K
Update: похоже, что после обновления хабра появились проблемы с постингом больших статей. Старый текст, который был здесь ранее, хабр обрезал до середины, залить же новый мне не удалось — все время выдается ошибка «Возникла ошибка в получении XML данных: Internal Server Error» (насколько я понял, проблемы именно в большом объеме). Честно говоря, у меня сейчас нет ни времени ни желания разбираться с этим (к тому же переформатирование статьи из блога под хабр занимает довольно много времени), поэтому отсылаю вас к оригиналу — Очередной HowTo по Vim.

Совместная разработка с помощью Subversion

Reading time6 min
Views13K
Управлять наёмными рабочими и распределенными проектами — это просто и весело. Стоп, что за чушь? На помощь приходит хороший контроль версий — именно то, что вам нужно, чтобы правильно вести ваши проекты.

Далее — перевод статьи Collaborate and Connect with Subversion. Это мой первый перевод, поэтому был бы очень рад вашим замечаниям.

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

Scribus — полиграфия в открытую

Reading time3 min
Views19K

Не так давно, меня по-дружески попросили сверстать для печати одну небольшую книжонку, я с радостью согласился, радуясь попутной возможности изучить соответствующее ПО. Таким образом, я и познакомился со Scribus, о котором сегодня пойдёт речь.


Scribus — это настольное издательское ПО (DTP), или другими словами: программа для визуальной верстки печатных документов (газет, журналов, брошюр, литературы и т.п). OpenSource аналог AdobeInDesign или QuarkXPress.


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


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


Итак, что умеет Scribus

FC-TrackBar 0.4.1 — новое начало

Reading time2 min
Views2.8K

Заглянем в прошлое

Не так давно в статьях раздела JavaScript были представлены широкой публике трекбары:



Проект неожиданно получил продолжение. К разработке присоединились камрады abarmot и 1602, а активное обсуждение привело к улучшению текущего и реализации нового функционала. Поэтому, появилось желание сделать проекту свой собственный «дом», где он будет жить и развиваться, что было успешно реализовано на sourceforge.net. Теперь вместо того, чтобы писать статью на каждое изменение в трекбарах автор может спокойно обновлять архивы и описания, а вы самостоятельно скачивать последние версии.

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

Crop & Resize на страницах ваших сайтов

Reading time3 min
Views32K
Пройдясь по хабра-поиску выяснил, что готового решения для кропа-ресайза изображений, на движке JavaScript/HTML/CSS еще не предлагалось. Поэтому, позвольте представить вашему вниманию модуль для ваших сайтов, частично реализуюший функционал редактирования, распространенный на фото-хостингах.

К делу

Внешне задумка выглядит так:


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

Изучаем потоки, чанки и ищем конец

Reading time1 min
Views14K
Примечание: ниже перевод статьи «On Streaming, Chunking, and Finding the End», в которой авторы рассматривают процесс передачи информации по HTTP-соединению и возможности для ускорения этого процесса. Мои комментарии далее курсивом.

Два способа передачи



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

Если вы занимаетесь веб-разработками достаточно продолжительное время, скорее всего, вы уже знаете, как работает сброс буфера (flush) на стороне сервера. Этот метод позволяет начать отправку части данных пользователю, в то время как скрипт может продолжать выполнять некоторые, достаточно медленные, действия (скажем, ресурсоемкий запрос к базе данных). Если вы уже применяли эту возможность, тогда вы, вероятно, использовали преимущества потокового (streaming) механизма, хотя могли и не знать всех деталей работы HTTP-протокола.

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

Картамания

Reading time1 min
Views650
Представляю хабрасообществу проект картамания.

Если по простому, картамания — это streetview по русски (да, мы сделали это, пока остальные мечтали). В настоящее время в нашей базе более 15 тысяч панорам улиц Москвы, которые можно не только просматривать на сайте, но и размещать в вашем блоге (к сожалению, хабрадвижок не разрешил включить в пост панораму :-\). При просмотре панорам на сайте, конечно же, можно перемещаться между панорамами, «катаясь» таким образом по Москве (осторожно, затягивает). Кроме того, можно оставлять свои комментарии на любых панорамах.

Мы так же предоставляем возможность пользователям самим делать панорамы с помощью телефона. Использяю нашу j2me программу, можно произвести съемку панорамы, после чего запостить ее наш сервер, которой склеит и сохранит вашу панораму на сайте (или даже разместит на карте, если у телефона есть встроенный gps).

So welcome to kartamania. Конструктивная критика и обнаружение багов приветствуется.

RANX.ru — знакомьтесь… по-новому!

Reading time2 min
Views965
RANX.ru запустил новую для рунета систему онлайн-знакомств.

В общих чертах сервис работает по следующей схеме:
Вы просматриваете фотографии представителей интересующего Вас пола и отвечаете на вопрос «хотите познакомиться?». Никаких громоздких анкет. Только фотографии и информация о себе, оставленная пользователем в свободной форме.
ranx.ru
Отличает RANX.ru от подобных сервисов в рунете то, что RANX.ru не посылает погравившемуся Вам человеку сообщение о том, что Вы хотите с ним познакомиться. Вместо этого, Ваша фотография будет среди первых показана ему (или ей), и только если симпатия будет взаимной, вы сможете написать друг другу. Таким образом одним пользователям не прийдется отказывать, а другим — получать отказ.

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

40 советов по оптимизации вашего PHP-кода

Reading time4 min
Views57K
Всем доброго времени суток.

Перевод заметки "40 Tips for optimizing your php code". Автор — Reinhold Weber.

  1. Если метод может быть статическим, объявляйте его статическим.
  2. echo быстрее, чем print.
  3. Передавайте в echo несколько параметров, вместо того, чтобы использовать конкатенацию строк.
  4. Устанавливайте максимальное количество проходов ваших циклов for до цикла, а не во время его выполнения.
  5. Удаляйте свои переменные для освобождения памяти, тем более, если это большие массивы.
  6. Остерегайтесь магических методов, таких как __set, __get, __autoload.
  7. require_once дорого обходится.
  8. Указывайте полные пути в конструкциях include/require, меньше времени будет тратится на поиск файла.
  9. Если вам необходимо определить время, когда скрипт был запущен, используйте $_SERVER[’REQUEST_TIME’] вместо time().
  10. Старайтесь использовать strncasecmp, strpbrk и stripos вместо регулярных выражений.

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

Семинар по Sphinx

Reading time1 min
Views1.2K
10го апреля в 16:20 на факультете ВМиК МГУ (2й учебный корпус, 5я поточная аудитория) пройдет семинар по open-source движку полнотекстового поиска Sphinx, с участием автора.

Участие бесплатное (как и движок) — но количество мест ограничено, и вход по пропускам. Поэтому необходимо заранее сообщить ФИО для оформления пропуска по адресу flx@msu.ru. (Мы будем отсылать обратно подтверждения.)

Приглашаем всех желающих!

Взаимодействие с GMail на PHP

Reading time1 min
Views2.2K
Еще в 2005 году командой энтузиастов была написана библиотека libgmailer для взаимодействия с почтой компании Google. К сожалению проект был заброшен, но даже несмотря на это, классы позволяют на сегодняшний день получать информацию о письмах, ярлыках и вложениях. Причем последние можно даже скачать.
Читать дальше →

data URI

Reading time2 min
Views8K
Пару лет назад я занимался проблемой data URL в Internet Explorer, добился определённых результатов, но то, что получилось, использовать было невозможно. Data URL (иногда его ещё называют «протокол data:») — возможность вставлять ресурсы (графику, CSS, JavaScript и так далее) в HTML код.


Подробнее о data URL можно узнать из свежей статьи на «Хабре» «Картинки в теле страницы с помощью data:URL». Хотелось только её дополнить двумя замечаниями: IE8b1 поддерживает data URL длиной не более 32Кб, в современных версиях других браузеров ограничений увидеть не удалось, Safari/Opera/FF показали изображения размером около 700Кб.


Теперь амбула.


Вчера ночью мне пришла в голову идея как можно попытаться корректно совместить data URL и включение картинок через протокол mhtml. То, что у меня не получилось два года назад, получилось сейчас.


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


Надеюсь на примерах всё понятно:
bolk_data_uri_header();
bolk_data_uri('myjpeg.jpg');
bolk_data_uri('ourpng.png', 'border: 2px dotted red');


Код самой библиотеки:
function bolk_data_uri_header() 
{ 
    echo "<!--\n" 
        ."Content-Type: multipart/related; boundary=\"=_NextPart_01C6A9B1.539AB070\"\n\n" 
        ."--=_NextPart_01C6A9B1.539AB070\n" 
        ."Content-Transfer-Encoding: base64\n" 
        ."Content-Type: text/html\n" 
        ."-->\n\n"; 

} 

function bolk_data_uri($file, $style = '') 
{ 
    if (!( file_exists($file) && ($data = @getimagesize($file)) )) return false; 

    $name = uniqid('', true); 

    if ($style <> '') $style = ' style="'.htmlspecialchars($style).'"'; 
    $mime = strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') ? " type='{$data['mime']}" : '';

    echo "<!--\n" 
        ."--=_NextPart_01C6A9B1.539AB070\n" 
        ."Content-Location: {$name}\n" 
        ."Content-Transfer-Encoding: base64\n" 
        ."Content-Type: {$data['mime']}; -->\n" 
        ."<object data='data:{$data['mime']};base64,\n\n"; 

    echo base64_encode(file_get_contents($file)); 

    echo "' {$data[3]}{$style}{$mime}'><img " 
        ."src='mhtml:http://{$_SERVER['HTTP_HOST']}"
        ."{$_SERVER['REQUEST_URI']}!{$name}' {$data[3]}{$style} /></object>\n\n" 
        ."<!--\n" 
        ."--=_NextPart_01C6A9B1.539AB070-->"; 

    return true; 
}



Секрет в совмещении данных, чтобы IE, обратившись к странице по протоколу mhtml нашёл нужный кусор, «спрятанный» внутри тега, а остальные браузеры увидели бы картинку через data URL.


Код тестировался под Opera 9.50b, FF 2.0.0.13, Safari 3.1 и IE6. Предложения и результаты испытаний — прошу в комментарии.


Оригинал записи опубликован в моём блоге.

Linux для веб-разработчика

Reading time1 min
Views40K
Здравствуйте уважаемые хабрапользователи и линукс юзеры. Сломился я перед выбором ОС и решил поставить Linux, только в выборе дистрибутива я заступорился.

Дело в том, что работая на Windows, уже привыклось использовать различный софт (фри или триал). И при переходе на Линукс, хочется увидеть альтернативы.

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

В общем вопрос прост: Какой на ваш взгляд лучший дистрибутив Линукс, подойдет типичному веб-программисту (Java, PHP, MySQL PostgreSQL, SFTP/SSH-ftp, SSL-FTP поддержкой).

Просто Windows откровенно достал своими лагами (даже на такой машине как Athlon X2 4800+, 2GB RAM). Хочется продуктивной работы, что бы ничто не отвлекало. Поэтому спрашиваю мнение у професионалов. Благо, на этом сайте, есть такие. :)

p.s. В данный момент использую Nu PHPed (там есть поддержка SSH доступа, работает стабильней, чем в Zend`е, инклуды можно щёлкать прямо в коде и открываются отдельными файлами, поиск декларации функций, классов и переменных, WinSCP как ftp-клиент, оч удобный, SQL Manager для работы с БД MySQL pgAdmin для работы с PostgreSQL).

Самый недооцененный язык в мире

Reading time5 min
Views8.7K
JavaScript logo
JavaScript, также известный как Mocha, или LiveScript, или JScript или ECMAScript один из самых популярных языков программирования. Фактически каждый персональный компьютер имеет его интерпретатор и активно им пользуется. JavaScript всецело обязан своей популярностью тому, что он стал основным скриптовым языком для веба.

Несмотря на его популярность, немногие знают, что JavaScript — это очень хороший объектно-ориентированный язык с множеством возможностей. Почему многие этого не понимают? Почему этот язык настолько не понят?

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

GroovyTel и IPKall — бесплатно американский телефонный номер

Reading time1 min
Views25K
Защел недавно на сайт замечательного сервиса gtalk2voip.com посмотреть какие новые фенечки появились и увидел интересную новость за 29 января о сервисе www.groovytel.com
Вкратце — персональные американский телефонный номер с возможностью переадресации на Google Talk, MSN Messenger, Yahoo Messenger, Free World Dialup, Gizmo5. При регистрации позволяют выбрать номер из 3 предложенных, мне выдали вида +15672587XXX. Действительно работает проверял только на gtalk. При осуществлении звонка — в gtalk поступает вызов от абонента с номером телефона (если определяется).

Схожие сервисы: gobaza, jetnumbers.

Update:

Побродив по просторам интернета обнаружил еще один сайт www.ipkall.com имеющий перед groovytel большие преимущества (для меня лично) в возможности использования в хардварных решениях (поддерживает SIP и IAX). Настроил переадресацию на аккаунт sipnet.ru который заведен на AudioCodes MP-202. Теперь для приёма звонков компьютер не требуется и можно пользоваться обычным тел аппаратом =)

Также бесплатный тел. номер в Германии (Мюнхен) вида +49 (89) 721010 XXXXX
дает sip оператор www.bluesip.net переадресацию на другой sip аккаунт не поддерживает.

Большой список DID провайдеров www.voip-info.org/wiki/view/DID+Service+Providers

Высокопроизводительные AJAX-приложения

Reading time1 min
Views741
Примечание: ниже перевод презентации «High Performance Ajax Applications», подготовленной ведущим специалистом из Yahoo (а теперь уже из Apple) Julien Lecomte. В ней автор освещает некоторые аспекты оптимизации как JavaScript-приложений, так и веб-сайтов вообще. В целом, советов много, и почти все, действительно, по делу. Однако, встречается и откровенная реклама Yahoo :) Мои комментарии далее курсивом.

Часть 1. Разработка для высокой производительности



Планируем и проектируем для высокой производительности



  • Ориентируемся на производительность с самого первого дня
  • Тесно работаем с дизайнерами и менеджерами продукта
  • Понимаем рациональность дизайна
  • Объясняем компромиссы между дизайном и производительностью
  • Предлагаем альтернативы и показываем, что еще возможно (на уровне прототипа)
  • Пробуем силы в реализации нетривиального дизайна (нельзя сразу говорит «нет»)
  • Помогаем упростить дизайн и взаимодействие с пользователем (добиваемся компромисса)


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

Information

Rating
Does not participate
Location
Луганск, Луганская обл., Украина
Date of birth
Registered
Activity

Specialization

Specialist
Lead
From 10,800 $
PHP
OOP
Docker
Rust
Linux
Asynchronous programming
MQTT
Geoinformation systems
Machine learning
Computer Science