Search
Write a publication
Pull to refresh
80
0
Валентин Шергин @shergin

User

Send message

Создание расширения для Google Chrome

Reading time8 min
Views119K
Тема создания расширений достаточно хорошо раскрыта в сети, есть множество статей, документации на эту тему. Но я не нашел ни одного ресурса, который бы описал процесс создания расширения от начала до конца. Я собираюсь исправить эту ситуацию, и рассказать о том как создать расширение, как хранить, читать настройки, как добавить поддержку нескольких языков.

Для работы с расширениями вам понадобится переключить канал обновлений на Dev или Beta.
Читать дальше →

Getters & Setters в IE5+

Reading time2 min
Views2.4K
Вот этим навеяло habrahabr.ru/blogs/javascript/66242

Вопреки расхожему мнению ИЕ все таки умеет назначать аксессоры, правда только в VB, чего для некоторых задач вполне достаточно.

<script language="vbscript">
' Объявляем класс, экземпляр которого в последствии будем использовать из яваскрипта
Class Accessor
  Public Property Let hook(val)  ' объявляем сеттер для свойства hook класса Accessor
   MsgBox val
  End Property
End Class

Dim access ' объявление переменных в VB обязательно
Set access = New Accessor  ' создаем экземпляр класса Accessor
</script>

<script language="jscript">
// т.к. у VB и JS общее пространство имен, можно вполне использовать созданный ранее access
access.hook = 'ololo';
</script>


* This source code was highlighted with Source Code Highlighter.


Другими словами аксессоры есть в VB, VB есть во всех IE и пространство имен VB и JS общее, можно пользовать.
Кроссбраузерный пример

Особенности настройки git под windows

Reading time3 min
Views109K
Проблемы с русскими символами в git

Когда вы начнете работать с версией git под windows в командной строке, вы столкнётесь со следующей проблемой — все сообщения git, в которых фигурируют русские символы будут нечитаемы. Имена файлов, на русском языке, будут выглядеть так — "\362\345\361\362", а тексты коммитов примерно так — <C8><ED><E8><F6><E8><E0><EB><E8><E7><E0><F6><E8><FF> <EF><F0><EE><E5><EA><F2><E0>. Т.е. исходная строка преобразуется в utf8 в соответствии с кодировкой latin1.

далее...

Фиксим png в IE6 с помощью expression, одним классом и без использования однопиксельного gif'а

Reading time6 min
Views860
Это давно известная проблема. У этой проблемы существуют 1000 решений, правда все они используют в конечном счёте один и тот же, проверенный AlphaImageLoader. Я, скорее всего, не открою Америку, а лишь хочу рассказать вам об expression'е, которым с недавних пор пользуюсь и которого достаточно в 99% случаев, а также объясню как, почему и зачем я его написал.
Читать дальше →

Пишем кроссбраузерный UserJS. Пример №1: меняем логотип Яндексу

Reading time2 min
Views5K
Firefox, Opera, Safari и Chrome поддерживают UserJS. Все по разному. Я планирую написать серию статей про то как писать скрипты для этих браузеров. В день по одной.

Сегодня мы поменяем логотип Яндекса на Гугловый. Такой вот бесполезный скрипт.

Yandex with Google logo

yandex-with-google-logo.user.js:

// ==UserScript==
// @name      Google logo on yandex.ru
// @include   http://www.yandex.ru/*
// ==/UserScript==

var logo = document.querySelector("img[src$='logo.png']");
if (logo) {
  logo.src = 'http://www.google.com/intl/en_ALL/images/logo.gif';
  logo.removeAttribute('height');
}


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

Обновление тем для линукс систем

Reading time1 min
Views545
Обновление тем для Firefox 3.7
image

* Использование таких же кнопок вперед/назад как и на других платформах.
* Кнопки vs иконки: переход на кнопки+glyph style для элементов панели инструментов.
* Более округлые вкладки, наподобие тех что в windows и Mac OS, но сохраняя свою текстуру и цвет.
* Удаление разделителей для упрощения визуального восприятия.
Читать дальше →

1001-ый способ вертикального выравнивания

Reading time2 min
Views128K
О вертикальном выравнивании блока неизвестной высоты по центру или низу родителя сказано много. Есть способы, основанные на display:table-cell для хороших браузеров (без кавычек) и expression для IE, способы, основанные на относительном позиционировании (могут плохо работать при переполнении). В этой заметке будет описан способ, работающий на особенностях такого мощного отображения, как встроенный блок (display:inline-block).
Читать дальше →

Способ вертикального выравнивания блока с помощью настоящего vertical-align

Reading time4 min
Views70K
Сегодня, верстая один макет, я, кажется, изобрел очередной небезынтересный способ вертикального выравнивания блока относительно родительского. Он не основан на превращении блоков в ячейки таблицы и не использует css-свойство position.

Требования

— Должна быть известна начальная высота родительского блока;
— Дочерний блок может иметь произвольный размер как по высоте, так и по ширине.

Возможности

— Работает в IE6+, O9+, FF2+, webkit;
— Тру vertical-align выравнивание со всеми допустимыми значениями;
— Одинаковое поведение во всех браузерах (незначительные отклонение при некоторых условиях в ие6 будут оговорены ниже);
— При вырастании дочернего блока выше «папочки», родительский блок расширяется;
— Ни грамма JavaScript.
Читать дальше →

Реализация интерфейса ElementTraversal

Reading time8 min
Views2.2K
Достаточно много браузеров (Opera 9.6, Google Chrome 2, Safari 4, Firefox 3.5) обзавелись поддержкой весьма удобного интерфейса ElementTraversal, который позволяет перемещаться по DOM-дереву, игнорируя текстовые узлы. В этих браузерах для каждого элемента стал доступен следующий набор новых getter'ов:
  • firstElementChild — первый дочерний элемент;
  • lastElementChild — последний дочерний элемент;
  • nextElementSibling — следующий соседний элемент;
  • previousElementSibling — предыдущий соседний элемент;
  • childElementCount — количество дочерних элементов.
Читать дальше →

Использование V8

Reading time9 min
Views28K
V8 — это движок JavaScript от Google, который используется в браузере Chrome. Он быстрый и доступен в исходных кодах (С++) для Linux (точнее для gcc) и под Windows.

В свете роста популярности использования V8 я решил поделиться своим (годичным) опытом его использования на платформе Windows в качестве серверного скриптового движка.

Часть 1. Введение и простейшая программа, использующая V8.

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

Подводные камни при использовании кэширования в nginx

Reading time10 min
Views58K
В web-сервер и reverse-proxy nginx встроены очень мощные возможности по кэшированию HTTP-ответов. Однако в ряде случаев документации и примеров не хватает, в результате не все получается так легко и просто, как хотелось бы. Например, мои конфиги nginx-а местами написаны кровью. Этой статьей я попробую немного улучшить ситуацию.

В этой статье: а) подводные камни при полностраничном кэшировании; б) кэширование с ротацией; в) создание динамического «окна» в закэшированной странице.

Я буду предполагать, что вы используете связку nginx+fastcgi_php. Если вы применяете nginx+apache+mod_php, просто замените имена директив с fastcgi_cache* на proxy_cache*

Если выбирать, кэшировать ли страницу на стороне PHP или на стороне nginx, я выбираю nginx. Во-первых, это позволяет отдавать 5-10 тыс. запросов в секунду без каких-либо сложностей и без умных разговоров о «высокой нагрузке». Во-вторых, nginx самостоятельно следит за размером кэша и чистит его как при устаревании, так и при вытеснении нечасто используемых данных.

Кэширование всей страницы целиком


Если на вашем сайте главная страница хоть и генерируется динамически, но меняется достаточно редко, можно сильно снизить нагрузку на сервер, закэшировав ее в nginx. При высокой посещаемости даже кэширование на короткий срок (5 минут и меньше) уже дает огромный прирост в производительности, ведь кэш работает очень быстро. Даже закэшировав страницу всего на 30 секунд, вы все равно добьетесь значительной разгрузки сервера, сохранив при этом динамичность обновления данных (во многих случаях обновления раз в 30 секунд вполне достаточно).
Читать дальше →

Капча? Не надо!

Reading time2 min
Views6.4K
Многие разработчики сайтов считают использование капчи чуть ли не признаком хорошего тона, чуть ли не проявлением уважения к пользователю. Изобретение нового способа затруднить роботу отправить данные из формы ввода на сервер — весьма популярное занятие среди скучающих программистов. Способы становятся все более изощренными; капчи с искаженными буквами — уже прошлый век, им на смену идут капча-поверни-меня-вверх-головой, капча-реши-задачку-по-высшей-математике и капча-составь-китайский-иероглиф. Бесспорно, люди их придумывающие — молодцы. Только вот используются эти капчи далеко не всегда уместно.
Читать дальше

Линус Торвальдс о GIT на Google Talks [видеоперевод 8 частей]

Reading time1 min
Views4.2K
Два года назад Линус Торвальдс рассказал представителям Google об использовании GIT (распределённой системы контроля версий) для ядра Linux. Посчитав, что многие могут пропустить эту интересную лекцию по причине незнания языка, я осмелился озвучить её по-русски.



а так же плейлист целиком.
пояснения...

Всё ли сделал? А молоко — купил?

Reading time2 min
Views881
Почему такой странный заголовок? При чём тут молоко? Дело в том, что в сервисе голосового доступа Вселисделал появилась поддержка веб-приложения Remember the Milk. Фанатов сервиса я прошу подождать следующего поста, там мы расскажем подробно обо всех возможностях добавления записей голосом в РТМ. Этот пост посвящается тем, кто ещё не очень хорошо знает, что такое Remember the Milk.


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

Индексы в MySQL: многоколоночные индексы против комбинированных индексов

Reading time9 min
Views121K
Я часто вижу ошибки, связанные с созданием индексов в MySQL. Многие разработчики (и не только новички в MySQL) создают много индексов на тех колонках, которые будут использовать в выборках, и считают это оптимальной стратегией. Например, если мне нужно выполнить запрос типа AGE=18 AND STATE='CA', то многие люди просто создадут 2 отдельных индекса на колонках AGE и STATE.

Намного лучшей (здесь и далее прим. переводчика: а обычно и единственной верной) стратегией является создание комбинированного индекса вида (AGE,STATE). Давайте рассмотрим почему это так.

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

Google Chrome Frame — HTML5 для пользователей IE

Reading time1 min
Views7K
Если вам надоело разрабатывать специальные хитрые решения для пользователей IE6, попробуйте этот таг:

<meta http-equiv="X-UA-Compatible" content="chrome=1">

Он позволит пользователям IE, у которых установлен плагин Google Chrome Frame, использовать рендерер WebKit и JS-движок V8.

Подробный блогпост на английском здесь.

Пост от разработчиков Google Wave, показывает пример, как предложить пользователям IE установить этот плагин.

Официальное видео

Google Chrome Frame ориентирован в первую очередь на веб-разработчиков, которые смогут благодаря ему создавать более сложные и современные веб-сервисы. А пользователи, предпочитающие интерфейс IE, смогут наслаждаться скоростными приложениями, как Google Wave.

Радио без батареек

Reading time3 min
Views144K
Может ли радиоприемник состоять менее чем из 10 деталей и работать без батареек?

Да, может: детекторные радиоприемники очень просты и могут работать, получая питание только от радиоволн. В этой статье я опишу, как можно сделать такую штуку своими руками, потратив на всю работу не более часа! ;)

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

Хранение даты в mysql с учетом часового пояса

Reading time2 min
Views37K
image
Статья о том, как избежать путаницы с датами, хранимыми в mysql.
Эти путаницы возникают по двум причинам:
1. Разные территории нашей планеты имеют разный сдвиг времени.
2. Некоторые страны переходят на летнее время и обратно(карта со странами, переходящими на летнее время).

Многие решают эти проблемы по-разному. Кто-то делает сдвиг даты в SQL запросах, кто-то в php. Кто-то хранит даты в TIMESTAMP, кто-то в DATETIME. Я переискал много источников, но нигде не нашел верного решения данной проблемы на русском. В родной документации по mysql нашел информацию о том, как добиться корректной автоматической конвертации TIMESTAMP в локальное время, но тут тоже свои подводные камни.

Если в php настройка временной зоны делается просто, в mysql возникают сложности, особенно, если доступ к mysql серверу вам ограничен и там еще не установлены некоторые таблицы.
Читать дальше →

Календарные типы данных в MySQL: особенности использования

Reading time6 min
Views83K
В MySQL 5 есть несколько типов данных для хранения даты и времени. Это TIMESTAMP, DATE, DATETIME, TIME и YEAR. Все они обладают своими особенностями, и выбор в пользу того или иного календарного типа должен производиться отдельно в каждой конкретной ситуации. Я хотел бы поделиться с вами результатом моего сегодняшнего миниисследования этих типов, в том числе в аспекте работы с временными зонами.


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

Information

Rating
Does not participate
Location
Россия
Works in
Date of birth
Registered
Activity