Обновить
0
0

Пользователь

Отправить сообщение

Object.defineProperty или как сделать код капельку лучше

Время на прочтение3 мин
Охват и читатели35K
Этот краткий пост-заметку или температурный бред (в Одессе похолодало, да) хочу посвятить такой прекрасной функции, как Object.defineProperty (и Object.defineProperties). Активно использую её уже около двух месяцев, так как поддержка старых браузеров (в том числе и IE8) в проекте, который я сейчас реализую, не требуется (завидуйте).

Как положено статье на хабре, приведу краткое описание того, что она делает. Object.defineProperty добавляет новое свойство, обладающее неким нестандартным для обычного свойства поведением, и принимает три аргумента:
  • Объект, который мы модифицируем, добавляя новое свойство
  • Свойство (строка), которое, собственно, хотим добавить
  • Дескриптор: объект, содержащий «настройки» нового свойства, например аццессоры (геттер, сеттер)

Дескриптор может содержать следующие свойства:
  • value (любое значение: строка, функция...) — значение, которое получит определяемое свойство объекта (геттер и сеттер в данном случае определить нельзя)
  • writable (true/false) — можно ли перезаписать значение свойства (аццессоры тоже не доступны)
  • get (функция) — геттер (value и writable определить нельзя)
  • set (функция) — сеттер (value и writable определить нельзя)
  • configurable (true/false) — можно ли переопределить дескриптор (использовать Object.defineProperty над тем же свойством)
  • enumerable (true/false) — будет ли свойство перечисляться через for..in и доступно в Object.keys (плохая формулировка)

Пример
Содержимое
// Код сперт с MDN
var o = {};
Object.defineProperty(o, "a", {value : 37,
                               writable : true,
                               enumerable : true,
                               configurable : true});

 
var bValue;
Object.defineProperty(o, "b", {get : function(){ return bValue; },
                               set : function(newValue){ bValue = newValue; },
                               enumerable : true,
                               configurable : true});


Лучше меня объяснит MDN Object/defineProperty. Благо, даже английский знать не надо, и так всё понятно.

Если нужно определить сразу несколько свойств, можно использовать Object.defineProperties, который принимает два аргумента: объект, требующий изменений и объект с определяемыми ключами.
MDN: Object/defineProperties.

Пример
Содержимое
// Код сперт с MDN
Object.defineProperties(obj, {
  "property1": {
    value: true,
    writable: true
  },
  "property2": {
    value: "Hello",
    writable: false
  }
  // etc. etc.
});



Теперь соль. Чего я вообще решил это запостить?
Читать дальше →

Vanilla JS — очень мощный javascript-фреймворк

Время на прочтение4 мин
Охват и читатели203K
Как ни странно, на Хабре упоминание этого мощнейшего фреймворка нашлось лишь в одном комментарии от апреля 2012 года.

Вступление


Для меня эта тема особенно актуальна, ведь последнее время на Хабре упоминается огромное количество js-фреймворков. Какие-то из них авторы различных проектов находят в Сети, какие-то — пишут сами, не очень понимая зачем. Кто-то просто пишет свои велосипеды.

Моё же мнение — надо стремиться к отсутствию избыточного кода, к максимальному минимализму, простите за тавтологию.
Если на весь сайт вам нужно только выбирать html-элементы по их id — глупо подключать jQuery.

Если вам на Node.js проекте надо собрать пачку js-файлов и сжать их — глупо писать или подключать тяжёлые фреймворки с кучей настроек, параметров, дополнений и методов, ведь простейший скрипт, склеивающий файлы и прогоняющий их через Кроукфордский jsmin будет намного быстрее, надёжнее и проще.

Чем больше кода — тем больше ошибок. Чем больше стороннего кода — тем сложнее поддерживать проект. Ведь когда вы берёте чужой код, вы берёте на себя и ответственность за его поддержку. Нельзя будет сказать «этот баг не мой, а вон из той библиотеки».

Vanilla JS


Итак, начнём обзор этого мощнейшего и самого популярного в мире JS-фреймворка.

Дайджест интересных новостей и материалов из мира айти за последнюю неделю №20 (25 — 31 августа 2012)

Время на прочтение5 мин
Охват и читатели22K
Предлагаем вашему вниманию очередную подборку с ссылками на новости, интересные материалы и полезные ресурсы.

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

Почему важно делать эскизы, прежде чем переходить к прототипу

Время на прочтение5 мин
Охват и читатели57K
Вольный перевод статьи о том, почему важно делать эскизы-зарисовки, прежде чем приступать к проектированию интерфейсов. Мне, как менеджеру проектов и, частично, проектировщику интерфейсов — статья показалась очень полезной. Крайне рекомендуется к прочтению всем участникам проектных команд.



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

Перехват видео в браузере или TCP сниффер под Windows на коленке (часть первая)

Время на прочтение19 мин
Охват и читатели42K
Однажды, не очень давно, мне порекомендовали фоновую качалку потокового видео под названием Jaksta, которая позволяет записывать потоковое видео на диск прямо во время просмотра YouTube, Facebook видео, GoogleVideo и так далее. В результате ее установки я получил стойкий BSOD при каждой загрузке Windows. Переключившись в Safe Mode я снес нафиг это творение, но возникли вопросы.
Краткое изучение софтины показало что она устанавливет NDIS Miniport драйвер, который конкретно в моей системе стал умирать при загрузке. «Нафига такие сложности?», подумал я и решил поэкспериментировать с реализацией перехвата потокового видео из браузера без всяких драйверов.
Читать дальше →

Завершён перевод книги «Pro Git»

Время на прочтение1 мин
Охват и читатели202K
Что может быть лучшим подарком на день знаний для программиста? Конечно, полезная книга ;) Поэтому команда переводчиков «Pro Git» поднапряглась и доделала перевод книги на русский язык.

«Pro Git» — это довольно обширная обучающая книга о Git от Скотта Шакона — активного участника разработки проектов Git и GitHub. Автор рассматривает в тексте всевозможные аспекты работы с Git'ом, начиная с установки программы и базовых принципов работы децентрализованных систем контроля версий, и заканчивая рассмотрением внутреннего устройства Git'а и созданием валидных объектов в базе Git'а собственными руками. Несмотря на довольно обширный материал и затрагивание довольно специфических тем, книга написана довольно простым языком, содержит массу примеров и иллюстраций, и поэтому должна быть понятна и новичкам, только начинающим знакомиться с системами контроля версий.

Последняя версия перевода книги доступна в форматах pdf, epub, mobi.
Также доступна онлайн-версия перевода, но она, к сожалению, не обновлялась с мая.
Читать дальше →

Работа с ssh в Python

Время на прочтение3 мин
Охват и читатели229K
Всем добрый день.

Хочу рассказать про paramiko — модуль для работы с ssh в python.
С его помощью можно написать скрипт, который получит доступ к удаленному серверу (или многим) и что-то на нем сделает.

Кому интересно — прошу под кат.
Читать дальше →

Учим Python качественно

Время на прочтение4 мин
Охват и читатели1.4M
Здравствуйте всем!

Решил поделиться методом обучения сего мощного, но в одно и тоже время лёгкого языка программирования. Он действительно лёгкий. Вам не надо будет запоминать и вводить лишних символов, которые Вы можете встретить в Си-подобных языках.

Удобочитаемый синтаксис, прост в обучении, высокоуровневый язык, Объектно-Ориентированый язык программирования (ООП), мощный, интерактивный режим, масса библиотек. Множество иных плюсов… И это всё в одном языке.
Для начала окунёмся в возможности и узнаем, что же умеет Python?
Читать дальше →

Выбор TechCrunch: 10 лучших стартапов с демо-дня Y Combinator S12

Время на прочтение7 мин
Охват и читатели11K
image
Примечание
Это перевод статьи, написанной Джошем Констином, в которой представлены 10 лучших стартапов по версии TechCrunch, которые прошли очередной сезон, без преувеличения сказать, лучшего на сегодняшний день бизнес акселератора в Кремниевой долине YCombinator, основанного Полом Грэмом.


75 стартапов сегодня питчили что есть мочи на пятнадцатом демо-дне Y Combinator. Мы увидели достаточно уверенные молодые компании, готовые делать рискованные большие ставки, и, после сбора мнений от участников YCS12 и ведущих венчурных фондов, TechCrunch представляет Топ-10.
Читать дальше →

RabbitMQ tutorial 2 — Очередь задач

Время на прочтение7 мин
Охват и читатели232K


В продолжение первого урока по изучению азов RabbitMQ публикую перевод второго урока с официального сайта. Все примеры, как и ранее, на python, но по-прежнему их можно реализовать на большинстве популярных ЯП.
Читать дальше →

Результаты Djangodash 2012

Время на прочтение1 мин
Охват и читатели1.5K
Итак, оглашены результаты Djangodash 2012. 48 активных команд, 48 часов и 6873 коммита, а победителями стали:

Первое место команда BUSI-TEC Industries с проектом Busitizer (демо). Приложение добавляет Гэри Бьюзи в фотографии в Facebook.

Второе место команда UFO с проектом EasyNotice (демо). Приложение выводит фотки из instagram, flickr и google картинок существующих чудес свет в сгруппированном виде.

Третье место — WebRiders с проектом Lemidora (демо). Приложения для того, чтобы делиться фотками с друзьями, можно накидать фотки на рабочий стол приложения и отправить ссылку на него друзьям.

Полная таблица результатов — djangodash.com/judging/2012/results

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

Привязка контекста (this) к функции в javascript и частичное применение функций

Время на прочтение6 мин
Охват и читатели83K
В предыдущем посте я описал, что this в javascript не привязывается к объекту, а зависит от контекста вызова. На практике же часто возникает необходимость в том, чтобы this внутри функции всегда ссылался на конкретный объект.
В данной статье мы рассмотрим два подхода для решения данной задачи.
1. jQuery.proxy — подход с использованием популярной библиотеки jQuery
2. Function.prototype.bind — подход, добавленный в JavaScript 1.8.5. Рассмотрим также его применение для карринга (частичного применения функции) и некоторые тонкости работы, о которых знают единицы.

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

Игра на QuickTiGame2d в Appcelerator Titanium. Часть 1

Время на прочтение4 мин
Охват и читатели4.9K
В настоящее время весьма перспективным направлением в программировании является кроссплатформенная разработка. Познакомившись с различными средствами (Appcelerator Titanium, PhoneGap, moSync), я, всё же, отдаю свои предпочтения Appcelerator Titanium.

Titanium позволяет создавать Android и iOS приложения на JavaScript. В настоящее время официальный сайт утверждает, что количество разработчиков на данной платформе достигает 300 000.

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

Я бы хотела обратить ваше внимание на двухмерный модуль игрового движка для Titanium Mobile — QuickTiGame2d, основанный на OpenGL ES, который в настоящее время поддерживает разработку для Android и iOS. В данной статье мы рассмотрим процесс установки, а также основные моменты данного движка, а в следующей уже будет непосредственно описано создание небольшой кроссплатформенной игры.
Читать дальше →

Сетки без заморочек

Время на прочтение4 мин
Охват и читатели80K
Подавляющее большинство сайтов создано с использованием сеточных макетов. Они могут не использовать их в явном виде, но если на сайте присутствует блок с основным контентом, расположенный справа, и боковой блок (сайдбар), расположенный слева, то это и есть простейшая сетка.

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

В этой статье я расскажу вам, как я верстаю сеточный макет. Это не так уж и сложно. И даже сделать резиновые сетки не составит большого труда.
Читать дальше →

Обзор JS-фреймворков. Путешествие через джунгли JavaScript MVC. Ч. 2

Время на прочтение15 мин
Охват и читатели125K
(Окончание перевода статьи Эдди Османи о сравнении и выборе библиотеки для проекта со значительной ролью JS на клиенте.)
Содержание первой части:

■ Что такое MVC или, лучше сказать, MV*?
■ Когда нам нужен MV*-фреймворк JS?
■ Где же мы будем нуждаться в MV*, а где нет?
■ Проблема выбора: слишком много вариантов?
■ TodoMVC: общее приложение для обучения и сравнения
■ Предложенные нами критерии выбора фреймворка
■ Dojo и усложнение фреймворков на JavaScript
■ Коллекция TodoMVC (фреймворки, на которых сделаны реализации тестового приложения Todo)
Читать дальше →

DVelum – платформа разработки на PHP + ExtJS4

Время на прочтение5 мин
Охват и читатели14K
Хочу познакомить Вас с проектом, который позволит по-новому взглянуть на процесс разработки приложений с web-интерфейсом.
Это не очередная cms или framework, это платформа разработки высокопроизводительных приложений, система управления данными.
При создании были использованы нестандартные интересные подходы. Ничего сверх революционного, реализованы очевидные вещи, которых сильно не хватает во фреймворках и cms.
Подробности

СRM vs lead-management

Время на прочтение5 мин
Охват и читатели19K
Так получилось не случайно, для этого есть предпосылки, термин «CRM» в России понимают превратно и применяют для обозначения двух важнейших процессов, структурирующих продажи. Эти процессы – отделены друг от друга, каждый из них имеет свое назначение, свою методологию, свой инструментарий и, следовательно, свой термин для обозначения:

Lead-management — термин, который определяет цикл продажи;

СRM – система отношений с текущими клиентами, а точнее – с покупателями (customer).

«СRM» по-русски — это перепутанные, срощенные между собой 2 процесса: процесс управления лидами (контактами) и процесс работы с текущими клиентами.

История вопроса

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

Полноценное Python приложение на Android

Время на прочтение4 мин
Охват и читатели209K


В этой статье я хотел бы рассказать о том, как создать полноценное приложение на Python для Android. Нет, это не очередной мануал для создания скрипта для sl4a, это мануал по созданию полноценного приложения с UI, возможностью собрать apk и выложить на Android Market. Заодно я хотел бы похвалиться своим первым приложением на google.play, это не hello world, а полезное приложение для фотографов, хотя и узко специализированное.
Читать дальше →

Вышел Twitter Bootstrap 2.1.0

Время на прочтение1 мин
Охват и читатели26K
image

Думаю расписывать о том, что из себя представляет данный фреймворк не надо, все и так знают.
Исправлено куча багов, добавлены новые компоненты и плагины.
Почитать документацию по нововедениям и увидеть их в действии можно тут.
По этой ссылке можно забрать релиз 2.1.0 в zip-архиве(только js и css с иконками).
Еще можно посетить официальный блог проекта и почитать о нововведениях.
Читать дальше →

Взгляд рядового программиста на вектор изменения оболочек и что делать дальше

Время на прочтение5 мин
Охват и читатели33K
imageLinux на моём компьютере уже 5 лет стоит как основная операционная система. Пришлось проходить через всякое: ставить разные дистрибутивы, как для фана, так и для работы. Почти все шесть лет я сидел на Gnome 2, и сейчас бы сидел, если бы не новый ноутбук, нормально работающий только на третьем ядре из-за каких-то драйверов. А с новым ядром пришла новая проблема: новые оболочки. В этом топике я просто опишу свои мысли насчет оболочек, чем они удобны или не удобны лично для меня. Так что, можете сразу ставить после каждого предложения ИМХО.
Подробности

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность