Pull to refresh
120
0
Илья Зверев @Zverik

User

Send message

Понимание ООП в JavaScript [Часть 1]

Reading time16 min
Views338K
— Прототипное наследование — это прекрасно
JavaScript — это объектно-ориентированный (ОО) язык, уходящий корнями в язык Self, несмотря на то, что внешне он выглядит как Java. Это обстоятельство делает язык действительно мощным благодаря некоторым приятным особенностям.

Одна из таких особенностей — это реализация прототипного наследования. Этот простой концепт является гибким и мощным. Он позволяет сделать наследование и поведение сущностями первого класса, также как и функции являются объектами первого класса в функциональных языках (включая JavaScript).

К счастью, в ECMAScript 5 появилось множество вещей, которые позволили поставить язык на правильный путь (некоторые из них раскрыты в этой статье). Также будет рассказано о недостатках дизайна JavaScript и будет произведено небольшое сравнение с классической моделью прототипного ОО (включая его достоинства и недостатки).
Читать дальше →
Total votes 129: ↑119 and ↓10+109
Comments71

Wi-Fi: неочевидные нюансы (на примере домашней сети)

Reading time14 min
Views1.4M
Сейчас многие покупают точки доступа 802.11n, но хороших скоростей достичь удается не всем. В этом посте поговорим о не очень очевидных мелких нюансах, которые могут ощутимо улучшить (или ухудшить) работу Wi-Fi. Всё описанное ниже применимо как к домашним Wi-Fi-роутерам со стандартными и продвинутыми (DD-WRT & Co.) прошивками, так и к корпоративным железкам и сетям. Поэтому, в качестве примера возьмем «домашнюю» тему, как более родную и близкую к телу. Ибо даже самые администые из админов и инженеристые из инженеров живут в многоквартирных домах (или поселках с достаточной плотностью соседей), и всем хочется быстрого и надежного Wi-Fi.
[!!]: после замечаний касательно публикации первой части привожу текст целиком. Если вы читали первую часть — продолжайте отсюда.
Читать дальше →
Total votes 234: ↑231 and ↓3+228
Comments138

Logy — логгер с человеческим лицом

Reading time4 min
Views3K
Некоторое время назад мне пришла в голову идея сделать логирование в Java более дружелюбным, простым и в тоже время достаточно гибким в настройке. Такие требования справедливы пожалуй, в средних и малых проекта, где можно обойтись без громоздкого log4j. Буквально за неделю, идея переросла в простенькую Java библиотеку с ни менее простым названием — logy.

Использование:
import static logy.Logy.*;

public class Test {
  public void test() {
    String s[] = {"a", "b"};
    warn("Can't find", quote(upper("c")), "in", group(quote(upper(scalar(s)))));
  }
}

Вывод:
29.06.2012 1:19:25 Test.test [WARN] :: Can't find "C" in ["A", "B"]

Как по мне, выглядит очень читабельно, благодаря синтаксическому сахару, DSL-like API и динамическому определению параметров логирования в момент вызова (читай без дополнительных полей public static final Logger logger = ... в классе).
Но и это еще не все.
Total votes 38: ↑27 and ↓11+16
Comments42

Landing page, которая работает

Reading time6 min
Views582K


Знания о том, как сделать хорошую landing page помогут увеличить количество желаемых действий, совершаемых пользователями на Вашем сайте. В статье приводится обзор элементов дизайна хорошей landing page.
Читать дальше →
Total votes 86: ↑79 and ↓7+72
Comments28

Почта. Основы настройки в Linux

Reading time6 min
Views28K
Когда начинающие системные администраторы сталкиваются с необходимостью настройки почтового сервера, они могут испытывать затруднения связанные с пониманием основных принципов работы почтового механизма. Чтобы внести ясность, я подготовил эту статью, основанную на освещении тех моментов, которые были мне в свое время непонятны. Статья подойдет также разработчикам ПО, которым надо быстро поднять почтовый сервер и протестировать свое приложение.
Читать дальше →
Total votes 38: ↑25 and ↓13+12
Comments19

Советы себе в прошлом

Reading time4 min
Views23K
У меня очень мало опыта (суммарно программистом я проработал 16 месяцев), тем не менее, я хотел бы дать несколько советов себе-в-прошлом, ну, или иными словами всем тем, кто сейчас учится в университете и планирует стать разработчиком ПО. Ни в коей мере не претендую на мудрость или опытность. Немного подумав, я понял, что все эти советы как никогда актуальны для меня и сегодня тоже. Первую заметку я опубликовал в своем блоге в прошлом году, а сейчас публикую здесь список, расширенный советами читателей блога.

Все советы автономны и их порядок не имеет значения.
Читать дальше →
Total votes 219: ↑193 and ↓26+167
Comments311

Скринкасты в линуксе, личный опыт

Reading time4 min
Views10K
openshot
Чуть больше года назад я публиковал здесь на хабре скринкасты. Недавно вышел последний и хотелось поделится опытом создания скринкастов под линуксом.
Читать дальше →
Total votes 78: ↑70 and ↓8+62
Comments26

Leaflet — API карт от Cloudmade. Рецензия

Reading time13 min
Views37K
To Mourner — бойся своих желаний, они могут исполниться. Шутка.

Начнём с начала



На главной Leaflet API нас встречает quickstart-пример. С него и начнём.

// create a CloudMade tile layer
var cloudmadeUrl = 'http://{s}.tile.cloudmade.com/YOUR-API-KEY/997/256/{z}/{x}/{y}.png',
    cloudmadeAttribution = 'Map data © 2011 OpenStreetMap contributors, Imagery © 2011 CloudMade',
    cloudmade = new L.TileLayer(cloudmadeUrl, {maxZoom: 18, attribution: cloudmadeAttribution});

// initialize the map on the "map" div
var map = new L.Map('map');

// set the map view to a given center and zoom and add the CloudMade layer
map.setView(new L.LatLng(51.505, -0.09), 13).addLayer(cloudmade);

// create a marker in the given location and add it to the map
var marker = new L.Marker(new L.LatLng(51.5, -0.09));
map.addLayer(marker);

// attach a given HTML content to the marker and immediately open it
marker.bindPopup("A pretty CSS3 popup.<br />Easily customizable.").openPopup();


Пример начинается с создания слоя с тайлами от cloudmade. Само API вроде как тоже «by cloudmade». Внимание, вопрос: а что, для родительского/дружественного проекта нельзя сделать удобный способ добавления слоя тайлов? Типа такого:

var cloudmade = new L.CloudMade.TileLayer(YOUR-API-KEY);
?
Или даже такого:
map.addLayer('cloudmade', { apiKey: YOUR-API-KEY });


Не знаю, какие отношения связывают Leaflet и Cloudmade, но уж сделать удобно клиенту Cloudmade — точно не последняя задача Leaflet API. Заставлять пользователя самостоятельно добавлять копирайт Cloudmade — это какое-то насилие над здравым смыслом.

Чайнинг



Читать дальше →
Total votes 74: ↑67 and ↓7+60
Comments34

Топ-5 самых впечатляющих книг, которые должен прочесть каждый разработчик ПО

Reading time3 min
Views380K
Не так давно промелькнула ссылка на достаточно свежее (осень 2011) англоязычное голосование со скромным названием "самая впечатляющая книга, которую должен прочесть каждый разработчик программного обеспечения" и описанием:

Если бы вы могли вернуться в прошлое, к самому началу своей карьеры разработчика и сказать самому себе: «прочитай именно эту книгу», в самой начале своей карьеры разработчика, какую бы книгу вы рекомендовали?

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

Однако в данном небольшом посте я возьму на себя смелость перечислить ТОП-5 тех самых книг, победивших в голосовании, переведенных на русский язык. И дать небольшие комментарии, ведь книги действительно этого достойны. Да, лично я бы поменял некоторые места, однако положимся на «мнение зала» ресурса Stack Overflow.
Читать дальше →
Total votes 236: ↑219 and ↓17+202
Comments182

Hibernate для самых маленьких и не только

Reading time6 min
Views205K
Доброго всем времени суток! При написании программы, которая так или иначе будет взаимодействовать с базой данных, пользуются разными средствами. Это и старый добрый jdbc, также применяют: EclipseLink,TopLink, iBatis (уже MyBatis), Spring Framework и конечно же герой нашей статьи — Hibernate. Конечно я здесь перечислил не все средства работы с базой данных, но постарался указать самые распространенные. В данной статье будет показано, как при помощи Hibernate вызывать хранимые процедуры, маппить как таблицы, так и запросы к классам. В качестве подопытной базы данных возьмем Oracle.
Читать дальше →
Total votes 43: ↑40 and ↓3+37
Comments26

Опыт регистрации ИП для ведения бизнеса связанного с ИТ

Reading time3 min
Views31K
Однажды решив зарегистрироваться как ИП я столкнулся к несколькими неожиданными проблемами, о которых в интернете не могу найти практически никакой информации. Знакомая бухгалтер, консультирующая меня, тоже не слышала о подобных проблемах, поэтому решился на написание данного топика, чтобы помочь коллегам не попасть в подобную ситуацию.
Основные пункты «обязательной программы» регистрации много раз разжеваны в интернете, но пройдемся по ним заново, используя собственный опыт. Я специально не буду давать ссылки на программы, формы бланков и постановления, так как они быстро устаревают и смысла выкладывать их я не вижу. К тому же принятое заявление в Тамбове, могут не принять в другой налоговой и т.д.
Еще в моем случае нет наемных работников, это важно для прохождения «квеста».
Читать дальше →
Total votes 64: ↑60 and ↓4+56
Comments184

Настройка Archlinux на ASUS Eee 1201NL

Reading time7 min
Views9.1K
После того, как я устроился на работу адинистратором одного веб-проекта, появилась необходимость иногда что-то делать, находясь вне дома/офиса. Так как основной задачей в таких ситуациях было зайти на сервер по SSH и в браузере проверить результат действий, то решил остановить выбор на нетбуке. Но очень не хотелось распространённго разрешения 600px по вертикали. И всё-таки хотелось использовать нетбук не только для SSH, но и для прочих приятностей, вроде просмотра фильмов. Естественно, планировалось работать под Linux, поэтому требовалась нормальная поддержка оборудования.

В результате, остановился на «непонятном недоразумении» ASUS Eee PC 1201NL. Это такой своеобразный нетбук. Очень своеобразный.
Во-первых у него диагональ аж 12", что неприлично много для устройств этого класса.
Во-вторых, разрешение экрана 1366x768, что очень неплохо, но мелковато, если не настраивать более крупное значение DPI.
В-третьих он на базе платформы nVidia ION, что даёт хорошую производительность для подобных устройств. Недостатком является малое время работы — часа 4 со включенным bluetooth/wi-fi, если запустить какую-нибудь требовательную программу (например, игру Neverwinter Nights), то время снизится ещё сильнее.

Можно сделать вывод, что, по сути, данное решение является полноценным недорогим маленьким ноутбуком. Хоть и на базе процессора Intel Atom.
Читать дальше →
Total votes 62: ↑49 and ↓13+36
Comments23

Изменение часовых зон в России, Белоруссии и на Украине

Reading time44 min
Views39K
Как вы, наверняка, уже слышали, осенью 2011 сразу несколько государств приняли решение об изменении порядка исчисления времени на своей территории, а также об отмене сезонного перехода на летнее время.
В списке этих государств: Россия, Белоруссия, Украина, частично признанные государства: Абхазия и Южная Осетия, а также непризнанное государство Приднестровье. Т.е. во всех часовых поясах этих стран теперь круглый год будет фиксированный сдвиг относительно UTC, без дополнительных сезонных сдвигов.
(Примечание: Украина сначала приняла решение о переходе на время UTC+3 без летнего времени, но потом отменила принятое ранее решение и пока вернулась к прежнему порядку исчисления времени с сезонными переводами часов. Подробности ниже.)

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

Полагаю, многим системным/прикладным администраторам, а также некоторым разработчикам приложений/сервисов, полезно будет ознакомиться с этим материалом. А потом предлагаю всем заинтересованным обсудить и дополнить эту информацию в комментариях.
Для начала немного общей информации...
Total votes 263: ↑254 and ↓9+245
Comments101

apache+nginx+gzip_static+yuicompressor

Reading time6 min
Views15K
В этой статье я опишу принципиальные различия Apache и Nginx, архитектуру фронтэнд-бэкэнд, установку Apache в качестве бэкэнда и Nginx в качестве фронтэнда. А также опишу технологию, позволяющую ускорить работу веб-сервера: gzip_static+yuicompressor.
Читать дальше →
Total votes 117: ↑109 and ↓8+101
Comments71
12 ...
7

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Date of birth
Registered
Activity