Как стать автором
Поиск
Написать публикацию
Обновить
521.2

Веб-разработка *

Делаем веб лучше

Сначала показывать
Период
Уровень сложности

CSS-препроцессор LESS и его интеграция с Ruby on Rails

Время на прочтение3 мин
Количество просмотров5.9K
LESS — новый препроцессор для CSS. Проще говоря, LESS позволяет использовать в вашем CSS-файле переменные, операторы, классы и вложенные конструкции. В этой статье вы узнаете об основных возможностях LESS и о том, как быстро подключить его к популярному фреймворку Ruby on Rails 3.

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

Создание приложений на GTK+ с использованием среды Glade

Время на прочтение10 мин
Количество просмотров48K
Данный пост посвящен созданию приложений с использованием кроссплатформенной библиотеки GTK+. Ориентирован он в основном на новичков? поэтому какие-то вещи возможно для многих покажутся очень простыми и банальными, но я постарался максимально подробнее всё описать, чтобы было понятно для всех.

Немалым достоинством этой библиотеки является то, что она бесплатна для коммерческого использования. В интернете не так много документации и действительно качественных статей по работе с GTK+. В очень многих примерах интерфейс программы пишется «ручками», что порой очень неудобно. Я сам с этим столкнулся и довольно часто больше времени тратил на то, чтобы правильно расположить виджеты (объекты) на форме, в контейнеры, а не сосредоточиться на решении поставленной задачи.

Я продемонстрирую как можно очень быстро создать интерфейс для GTK+ с помощью приложения для визуального создания графических интерфейсов Glade и интегрировать его в вашу программу. Glade не является ни компилятором, ни отладчиком. Он позволяет лишь описать интерфейс и представить его в файлах XML-формата GladeXML.

Базовым интерфейсом для библиотеки GTK+ является язык C. Но я в данном примере буду ипользовать C++. Соответственно появятся небольшие особенности, о которых я обязательно расскажу. Дистрибутив Linux я использую Ubuntu 10.04.

Задача будет такая: написать небольшое приложение состоящее из холста, бокового меню (выбора того, что нарисовать на холсте), главного меню и строки состояния. При этом боковое меню и холст при изменении размера всего окна приложения должны оставаться постоянного размера. Но тот контейнер, в котором находится холст может изменять свой размер в зависмости от увеличения/уменьшения размеров главного окна. И при необходимости должны появляться полосы прокрутки.
Читать дальше →

Генерируем QR-код на PHP

Время на прочтение2 мин
Количество просмотров83K

QR-code, уже давно распространен повсеместно, во всех сферах человеческой жизни. Вроде такая популярная вещь, а нормальной библиотеки (Open Source) на PHP — нет. Товарища deltalab, очень напрягла эта проблема и он решил переписать имеющиеся в наличии С библиотеки ibqrencode от Kentaro Fukuchi, на более привычный ему язык PHP.
Читать дальше →

Application Verifier для программиста: тестирование Windows-приложений

Время на прочтение7 мин
Количество просмотров21K
Возможно в Вашем проекте и не пишут try { /* code */ } catch(...) { } для того чтобы избежать исключений при работе с памятью, умеют закрывать хендлы и знают о виртуализации Windows Vista, а программы никогда не падают по непонятным и редко повторяемым причинам.

Тогда Вам повезло, можете переходить к следующему топику.
Но если это не так...

Что можно ожидать от Луа 5.2?

Время на прочтение8 мин
Количество просмотров5.6K

Опубликована первая превью-версия Луа 5.2


Луа (Lua) — мощный, быстрый, лёгкий, расширяемый и встраиваемый скриптовый язык программирования. Луа удобно использовать для написания бизнес-логики приложений.

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

То, что выложено на публику даже не альфа — это просто снапшот рабочего кода. К релизу может измениться всё, что угодно.

Анонс здесь: http://article.gmane.org/gmane.comp.lang.lua.general/61229

Дополненный список изменений от авторов здесь: http://article.gmane.org/gmane.comp.lang.lua.general/61505

Скачать исходники можно здесь: http://www.lua.org/work/lua-5.2.0-work1.tar.gz

Сборка под Windows здесь: http://article.gmane.org/gmane.comp.lang.lua.general/61528

Посмотреть исходники в онлайне можно, например, здесь.

Update: Выложен 5.2.0-work2, анонс здесь.
То, что написано ниже, скорее всего, будет интересно только людям, близко знакомым с языком.

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

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

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

Стимул к обновлению

Время на прочтение1 мин
Количество просмотров1.3K
Как и многие веб-разработчики, я желаю скорейшей смерти для IE6. Устаревшие версии других браузеров не настолько распространены, и поэтому доставляют меньше хлопот, но и им бы тоже неплохо исчезнуть. Эту задачу могло бы решить автоматическое обновление, но его нередко отключают «администраторы», и часто пользователи даже не подозревают о том, в каком прошлом они живут.

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

Принцип его работы очень простой: определить браузер пользователя, определить его версию, сравнить с последней известной версией, при необходимости предложить обновиться. Если пользователь отказался, не беспокоить его ещё неделю. Само предложение более-менее замаскировано под штатное системное сообщение в IE — для простоты восприятия.

Я понимаю, что это может быть изобретением велосипеда, но пока что предшественников не нашёл. Буду рад ссылкам на них, чтобы не умножать сущности.

Если кто-то заинтересован в использовании такого скрипта, я наведу на него блеск: минимизирую, переведу на английский, и т.п. Поэтому интересно мнение сообщества об этой инициативе. Что скажете?

PS: пожалуйста, не думайте, что на странице скрипта он работает неправильно — проверка версий там отключена специально, чтобы все могли увидеть скрипт в действии.

Внедрение Flash с помощью SWFObject 2

Время на прочтение16 мин
Количество просмотров48K
Вопрос о внедрении Flash с помощью разметки соответствующей стандартам возникает достаточно часто, между тем у этой проблемы есть достаточно известное решение — SWFObject. SWFObject 2 не только позволяет внедрять Flash динамически, с помощью JavaScript, но и статически, когда для внедрения используется стандартная разметка, а JavaScript только исправляет неразрешимые с помощью разметки проблемы, при этом даже если JavaScript отключен пользователи все равно увидят Flash.
Читать дальше →

Разберемся раз и навсегда: AJAX, «кириллические символы», кодировки, prototype.js, jQuery, JsHttpRequest

Время на прочтение5 мин
Количество просмотров169K
AJAX, — это технология. Одной из часто используемых техник этой технологии является
посылка запросов при помощи объекта класса XMLHttpRequest.


Как же посылать и принимать AJAX запросы в нужной нам кодировке, нужно ли использовать однобайтовые кодировки или не обойтись без UTF-8. На все эти вопросы раз и навсегда ответит эта статья.

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

Никогда не поздравляйте своих пользователей с днем рожденья!

Время на прочтение1 мин
Количество просмотров1.8K
В прошлую субботу я отметил свой день рожденья и в очередной раз пронаблюдал печальный результат работы некоторых веб-программистов. В моем почтовом ящике обнаружилось 27 писем с разных порталов и форумов с поздравлениями. Причем, многие поздравления различались только адресом отправителя, моим регистрационным ником и названием соответсвующего форума (привет phpBB!!!). Яндекс тоже не остался в стороне и прислал поздравительную открытку.
Приятно ли мне было получить все эти сообщения? — Нет! Всё это тут же было приравнено к спаму и удалено из ящика.
Читать дальше →

Что такое WAF и как с ним работать? Показываем на примере уязвимого веб-приложения

Время на прочтение11 мин
Количество просмотров22K

Информационная безопасность веб-приложений за последние несколько лет стала, наверное, одним из ключевых вопросов в IT. Для компаний стабильность работы систем — это репутация и отсутствие лишних издержек. Ежегодная статистика больших ИБ-компаний говорит о росте количества и качества атак.

Ранее в статье я рассказывал о защите веб-приложений с помощью систем класса IDPS. Сегодня — хочу поделиться информацией о том, как работать с WAF. В статье постараюсь оттолкнуться от теории и перейти к вопросу настройки. Будем запускать два сервера, где один будет атаковать, а второй — защищаться с помощью WAF. Надеюсь, текст станет доступным входом для инженеров, которые ранее не задумывались о работе с WAF из-за непонятности этого типа систем. Интересно? Тогда добро пожаловать под кат!
Читать дальше →

Как бы вы реализовали форму аутентификации на сайте? Вопрос для собеседования на Junior/Middle/Senior?

Время на прочтение9 мин
Количество просмотров57K

В свете исследования "Веб-разработчики пишут небезопасный код по умолчанию" мне подумалось, что именно так может звучать один из базовых вопросов на собеседовании с точки зрения проверки знания web-разработчика от уровня Junior до Senior.

Тема с одной стороны в общем-то простая, а с другой - многогранная. Можно сделать “на коленке”, а можно и “по-взрослому” -  зависит от знаний конкретного девелопера и технического задания. Ну и не привязывается к конкретному языку. Что nodejs, что .net, что PHP - на ответы это не влияет. Ну и отлично же! Давайте попробуем.

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

Как бы вы ответили на конкретный вопрос? Попробуйте проверить себя и потратить пару минут на обдумывание прежде чем читать ответ.

Восклицательным знаком ⚠ помечены вопросы, на которых можно "засыпаться" и оставить плохое впечатление о себе у интервьюера. Так же я позволил себе добавить еще пункты, которые подразумевают "Регистрацию", но по касательной. Многие ответы обрамил ссылками, которые помогут разобраться чуть глубже в конкретном вопросе, думаю будет полезно.

Итак, за вёсла!

Читать далее

PHP Дайджест № 206 (15 – 29 июня 2021)

Время на прочтение4 мин
Количество просмотров11K
Фото: Иван Ганцев.

Подборка свежих новостей и материалов из мира PHP. В выпуске: вторая альфа PHP 8.1.0 и обзор того, что еще может войти в релиз; новый RFC с предложением добавить механизм защиты от инъекций. А также порция полезных инструментов, статьи, видео и подкасты.

Приятного чтения!

Ближайшие события

PHP Дайджест № 205 (1 – 15 июня 2021)

Время на прочтение5 мин
Количество просмотров12K


Подборка свежих новостей и материалов из мира PHP. В выпуске: первая альфа PHP 8.1.0, Composer 2.1, Symfony 5.3 и другие релизы. Обзор новых предложений для PHP 8.1: Partial Function Application, pipe оператор, readonly свойства. А также порция полезных инструментов, статьи, видео и подкасты.

Приятного чтения!

Кто, где, когда: система компонентов для разделения зон ответственности команды

Время на прочтение7 мин
Количество просмотров6.3K

Меня зовут Евгений Тупиков, я ведущий PHP-разработчик в Badoo и Bumble. У нас в команде более 200 бэкенд-разработчиков, которые работают над сотнями модулей и отдельных сервисов в наших приложениях. Но поначалу всё было не так масштабно. В 2006 году это был один проект, над которым работала небольшая команда. Каждый разработчик хорошо понимал, как всё устроено: легко ориентировался в коде, знал, какие есть сервисы и как они взаимодействуют между собой. Однако по мере роста проекта всё больше времени занимал поиск «хранителей знаний» — тех, кто отвечает за ту или иную функциональность и к кому можно обратиться с вопросом или предложением. 

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

Читать далее

JavaScript-классы — это не просто «синтаксический сахар»

Время на прочтение6 мин
Количество просмотров30K
После того, как я прочитал очередную статью, где говорится о том, что JS-классы — это всего лишь «синтаксический сахар» для прототипного наследования, я решил написать материал, призванный (в который раз!) прояснить вопрос о том, почему данное утверждение неверно. Тут я, надеюсь, смогу объяснить разницу между JS-классами и прототипным наследованием, и смогу рассказать о том, почему важно понимать эту разницу.


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

Google удалил расширение ClearURLs из Chrome Web Store

Время на прочтение2 мин
Количество просмотров54K

Google по каким-то причинам удалил популярное расширение ClearURLs из Интернет-магазина Chrome.

Разработчик подал апелляцию в Google против блокировки расширения и получил ответ: в копии электронного письма, предоставленного разработчиком, Google утверждает, что описание расширения «слишком подробное» и нарушает правила интернет-магазина Chrome.

Читать далее

Как создатель node.js сам разочаровался в нем

Время на прочтение8 мин
Количество просмотров53K

Несколько лет назад на JSConf 2018 выступил Райан Даль, создатель Node.js. Его доклад вызвал сенсацию, он затронул много актуальных проблем и поднял громкий хайп, не оставив равнодушным практически никого, кто связан с серверным программированием. В его обсуждении бэкэнд программисты разделились на два лагеря: одни отстаивали Node.js, другие прочили ему скорую смерть. 

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

PHP-Дайджест № 194 (1 – 14 декабря 2020)

Время на прочтение7 мин
Количество просмотров14K

Свежая подборка со ссылками на новости и материалы. В выпуске: Enum в PHP 8.1, удаление Serializable и ограничение $GLOBALS, а также другие новости из PHP Internals, PhpStorm 2020.3, Symfony UX, порция полезных инструментов, видео, и первый PHP Дайджест Стрим.

Приятного чтения!


Стилизация старого доброго элемента button

Время на прочтение17 мин
Количество просмотров241K
Кнопка — это один из тех элементов, которые чаще всего используются на веб-страницах. Тег <button></button> может быть применён для запуска некоего процесса вроде вывода данных, открытия модального окна, отправки формы и так далее. В материале, перевод которого мы публикуем, речь пойдёт о тонкостях стилизации элемента button и о том, как оформлять кнопки с учётом того, чтобы они хорошо работали бы в любых браузерах. Кроме того, тут будет рассмотрено большинство часто используемых стилей кнопок. Поговорим мы здесь и о некоторых сложностях, которые возникают при работе с кнопками.


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

Вклад авторов