Pull to refresh
222
0
Павло @TheShock

Senior JS Developer

Send message

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

Reading time3 min
Views91K

Этот топик — ответ на топик "Пора завязывать использовать символы табуляции в коде".
Я хотел было ответить к комментариях, но в силу объема и желания независимости от исходного топика решил создать новый топик.

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

Читать дальше →
Total votes 513: ↑389.5 and ↓123.5+266
Comments407

Магия JavaScript: arguments

Reading time3 min
Views67K
arguments — очень специфическая штука, о которой новички и даже любители знают только то, что это «вроде массив, но какой-то неправильный». На самом деле, у него есть ряд интересных особенностей. Предлагаю в топике пофантазировать на тему TypeHinting, аргументов по-умолчанию и всякого другого.
(function (foo, bar) {
	console.log(typeof arguments); // ?
	
	arguments[0] = 42;
	console.log(foo); // ?
})(10, 20);


А также покажу интересную идею-библиотеку
function test (foo, bar) {
    Args(arguments).defaults(100, 100);

    return [foo, bar];
};

test(      ); // 100, 100
test(15    ); //  15, 100
test(21, 42); //  21,  42

Читать дальше →
Total votes 99: ↑93 and ↓6+87
Comments37

Кроссбраузерные аксессоры в JavaScript

Reading time4 min
Views6.8K

В своём фреймворке AtomJS я активно использую аксессоры — геттеры и сеттеры:

Foo = atom.Class({
    get bar () {
        return this._bar;
    },
    set bar (bar) {
        this._bar = bar;
    }
});


Я уже описывал теорию, но в топике я расскажу о том, как заставить их работать во всех современных браузерах, а именно — как разрулить ситацию с тем, что Internet Explorer 9 ничего не знает о __defineSetter__ и подобных методах.

Читать дальше →
Total votes 57: ↑50 and ↓7+43
Comments31

Three.js — 3d движок на Javascript

Reading time1 min
Views89K

Есть javascript-гурру, mr.doob, даже на Хабре уже всплывали его работы.
В общем, у него есть очень мощный Javascript 3d-фреймворк с названием

Three.js


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

Меня особо затянул полет между шариков и порадовал панорамный движок.
А у кого работает WebGL — так вообще не нарадуется — там вам и Minecraft и всё, что хотите)

Читать дальше →
Total votes 82: ↑79 and ↓3+76
Comments34

Twitter отказался от 10 миллиардов долларов Google

Reading time1 min
Views1.1K

Jessi Hempel из Fortune сообщил, что Twitter отказались от 2 миллиардов долларов, которые предложил им Facebook и от 10 миллиардов долларов, которые предложил им Google. Также, говорят, Microsoft тоже предлагал Twitter продаться.

Сейчас в Твиттере зарегистрировано около 200 миллионов пользователей, но активных среди них — менее двадцати миллионов, а текущий доход Twitter — десятки миллионов долларов.

10 млрд. долларов — это огромная сумма денег — почти вдвое больше текущей стоимости компании. Видимо Google очень хочет купить Twitter)

Менеджерам Twitter'а лучше хорошенько обдумать это предложение и, если Ларри Пейдж не передумал, то поскорее продаться и расслабиться.
Total votes 126: ↑109 and ↓17+92
Comments183

IE9 — ещё одна головная боль веб-разработчика

Reading time1 min
Views8.8K
Сразу после окончательного релиза 14 марта сырого Internet Explorer 9 в Твиттере появился аккаунт ie9bugs, в котором собираются значительные для веб-девелопера баги. И хотя есть баг-трекер Микрософта, но там чёрт ногу сломит, а тут в одном месте достаточно кратко описаны и даны ссылки на интересные нюансы. Нам скоро придётся вступить в это говно работать с передовым браузером от Microsoft, потому, имхо, вполне полезно знать все эти грабли. Особенно, зная, с какими темпами Микрософт их закрывает. Предлагаю присоединиться к этому сообществу, рассказать интересные моменты, которые у вас уже есть и прочитать то, что они уже открыли. Из того, что «порадовало» меня больше всего:
  • IE9 понимает не больше 4095 селекторов в одном CSS-файле
  • Можно подключить не более 31 CSS-файла
  • События не цепляются к элементам, у которых background:transparent;


Особо радует первый баг, теперь большие таблицы стилей не объединишь в один файл) Микрософт нам, верстальщикам и JavaScript-программистам, приготовил ещё огромное количество работы, костылей и головной боли, выпустив IE9, радуемся)

Ну и много ещё чего найдено за две недели, читайте сами.

UPD:
A reliable exploit for Internet Explorer 9 on Win7 SP1 is now available for our Gov customers. Unpatched vuln + ASLR/DEP/Sandbox bypass

Читать дальше →
Total votes 289: ↑237 and ↓52+185
Comments322

Делаем консоль чуточку удобнее

Reading time4 min
Views7.1K
Практически все Javascript-программисты пользуются консолью в браузерах. Консоль встроена в Хром, Оперу, IE и устанавливается с Firebug в Фоксе.
Но у неё есть пару неудобств, которые можно очень легко исправить. Это:
  • Ошибки, когда консоль не определена
  • Невозможность использовать вне контекста
  • Невозможность отключить во время production
  • некроссбраузерность

Исправим эти проблемы легко и быстро!

Читать дальше →
Total votes 97: ↑92 and ↓5+87
Comments35

Мутулз теперь немножко роднее

Reading time2 min
Views4.2K

Йохохо, ребята! Наконец-то свершилось то, чего все так ждали! MooTools стал ближе ко всем людям, плохо знающим английский! Авторы локализовали его на множество языков и вы можете использовать любой из них, который вам ближе.

Уверен, это великий шаг в будущее. Порог вхождения в JavaScript-программирование существенно снизился.

Теперь можно писать на итальянском:

Element.impostaStile('colore', 'rosso');


Использовать британский английский вместо американского (а вы путались, как писать — 'colour' или 'color'? по-моему, это совершенно уберет неразбериху)

Element.setStyle('colour', 'red');


И, что самое главное, я теперь могу программировать на рідній мові!

Element.встановитиСтиль('колір', 'червоний')


Ниже есть расширенные примеры, а по ссылке вы обнаружите, что они работают просто прекрасно и это действительно то, чего мы так долго ждали. Просто нажмите play:

Читать дальше →
Total votes 50: ↑35 and ↓15+20
Comments31

Порядок выполнения тернарного оператора

Reading time3 min
Views36K
В php есть интересная особенность тернарного оператора — специфический и уникальный порядок выполнения.

$ python -c "print 1 if true else 2 if true else 3 if true else 4 if true else 5"
 1

$ node   -e "      true ? 1 : true ? 2 : true ? 3 : true ? 4 : 5"
 1

$ perl   -e "print true ? 1 : true ? 2 : true ? 3 : true ? 4 : 5"
 1

$ ruby   -e "print true ? 1 : true ? 2 : true ? 3 : true ? 4 : 5"
 1

$ php    -r "print true ? 1 : true ? 2 : true ? 3 : true ? 4 : 5;"
 4
Java и C++ тоже вернут 1

Читать дальше →
Total votes 90: ↑70 and ↓20+50
Comments110

IpHoster.ru? НЕТ

Reading time7 min
Views7.5K


Админы делятся на тех, кто не делает бекапы и на тех, кто уже делает

Привет, читатель! Скажи, было ли у тебя такое, чтобы по какой-то глупой причине ты не успел заплатить за хостинг и просрочил оплату на два дня? Думаю, у всякого такое бывало. Наверное, вам хостер вынес предупреждение или, даже, заблокировал сайт? Да, неприятно, но не смертельно (если, конечно, у вас не сверхпосещаемый портал). Вот и у меня такое случилось — впервые за год использования выделенного сервера я задержал оплату на два дня. Но сотрудники бравого хостинга решили, что простой блокировки — недостаточно. iphoster.ru решили наказать меня максимально, по всем пунктам, как только могли.

Читать дальше →
Total votes 211: ↑184 and ↓27+157
Comments234

Имена для метапеременных

Reading time2 min
Views21K
Метапеременные — это слова-заменители, которые применяются в технических текстах для обозначения чего-либо, что может стоять на их месте, метапеременные часто используются в программировании.

Есть две легендарных метапеременных — это foo и bar. Они прекрасны — короткие, одинаковой длины, отличаются друг от друга, легко произносятся. А вот если нам необходимо больше метапеременных? Тут уже нету чётких правил. Обычно используются baz и bat. Но они имеют существенный недостаток — очень схожее написание с bar. И еще более схожее звучание (при выступлениях глухие буквы в конце часто съедаются и получается «ба» вместо «бар» и«бат»)
var foo = 'fooValue',
    bar = 'barValue',
    baz = 'bazValue',
    bat = 'batValue';


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

Читать дальше →
Total votes 24: ↑12 and ↓120
Comments14

Что нам сулит новая модель развития html5

Reading time5 min
Views3.3K

Думаю, многие из вас уже знают, что WHATWG перешёл к безверсионной модели развития.
В комментах началась паника по поводу «что теперь будет?». Паника — необоснованная, а решение — очень логичное и учитывающее современные реалии.
Я постараюсь объяснить, что всё это сулит. Доступно и кратко.

Читать дальше →
Total votes 175: ↑159 and ↓16+143
Comments90

Обёртки для создания классов: зло или добро?

Reading time4 min
Views23K
Раз за разом я читаю, что удобные библиотеки для создания классов на Javascript, видите ли, не соответствуют идеологии языка и тем, кто их использует просто необходимо учить язык. Такое говорят невежды, которые и сами толком не разобрались ни в самом языке ни в библиотеках, которые они критикуют. И так часто говорят, что я решил написать этот топик и просто давать ссылку
var Foo = new Class({
	Extends: Bar,
	initialize: function(firstname, lastname) {
		this.parent(firstname);
		this.lastname = lastname;
	},
	sayHello: function(){
		alert(this.lastname || this.firstname);
	}
});

Читать дальше →
Total votes 77: ↑67 and ↓10+57
Comments113

AtomJS — миниатюрный JavaScript фреймворк

Reading time3 min
Views15K

Всем привет! Вторая часть про миниатюрный javascript фреймворк Atom (бывший Nano).
Теперь из Core убрано всё лишнее, вес — 1 кб.
Как и прежде — полный отказ от устаревших браузеров.
Dom, Class, Ajax и т.п. — подключаются как плагины.
Поменялся адрес репозитария: github.com/theshock/atomjs
Под катом — расскажу, что нового и опишу, как создавать плагины
Читать дальше →
Total votes 62: ↑57 and ↓5+52
Comments75

Нарушение интеллектуальной собственности — это изнасилование

Reading time3 min
Views9.6K
Пиратство — это горячая тема последнее время. Есть люди, которые считают, что это хорошо, есть Михалков люди, которые считают, что это плохо. Я не буду в этом топике высказывать аргументов ни в сторону одной, ни в сторону другой позиции. И сам занимаю двоякую позицию (вижу как плохие стороны, так и хорошие). Я хотел бы покритиковать распространённую практику копирастов называть вещи не своими именами, а именно нарушение авторских прав — воровством. Это ничто иное, как демагогия, подмена понятий для того, чтобы привлечь необразованные массы на свою сторону, хотя у этих понятий общего очень мало. В любом споре вещи необходимо называть своими именами и называть пиратство воровством — это всё-равно, что заявлять:
Пиратство — это изнасилование и убийство двух или более женщин, не достигших совершенолетия (детей!!), заведомо для виновного находящихся в состоянии беременности совершённое с особой жестокостью общеопасным способом группой лиц, группой лиц по предварительному сговору или организованной группой по мотиву национальной, расовой, религиозной ненависти или вражды либо по мотивам ненависти или вражды в отношении какой-либо социальной группы.
Самое обыкновенное. Все мы понимаем, насколько это тяжкое и ужасное преступление, так почему многие страны закрывают глаза на интеллектуальных пиратов и позволяют им убивать наших женщин, детей, стариков, рушить наше здоровье и образование, устраивать саботаж и подрубать на корню шанс на счастливое существование нашей нации?

Под катом объяснение и пруф
Total votes 186: ↑143 and ↓43+100
Comments208

Nano — миниатюрный JavaScript фреймворк

Reading time3 min
Views6.1K
Привет, читатель. Есть много прекрасных и мощных JavaScript-фреймворков. JQuery, MooTools, ExtJS, и множество других. Они кроссбраузерны и громадны. И пользоваться ими — одно удовольствие.

Но иногда, бывает, хочется написать какой-нибудь небольшой скриптик на 5 килобайт и как-то совесть мучает подключать JQuery, который весит в сжатом виде 75 килобайт. И каждый раз начинаешь писать свой мини-фреймворк:
var dom = {
	id  : function (id)  { return document.getElementById(id); },
	tag : function (tag) { return document.getElementsByTagName(tag); },
};


Вроде бы, больше для начала и не надо. А потом вспоминаешь про createElement, легкий способ присвоить CSS, наследование, расширение прототип. И в общем каждый раз пишешь свой велосипед.
В этот раз я решил написать миниатюрный фреймворк, который можно было бы без зазрений совести подключать даже к самым маленьким проектам. В сжатом виде он весит всего 4 килобайта (в 20 раз меньше JQuery).
И в нём есть еще одно преимущество по сравнению со всеми современными фреймворками — полный отказ от устаревших браузеров, за счёт чего в эти 4 килобайта вместилася половина JQuery.

Итак, приветствуйте, JavaScript-фреймворк Nano

Читайте актуальную вторую часть!



Читать дальше →
Total votes 82: ↑72 and ↓10+62
Comments158

JavaScript Performance Best Practices

Reading time4 min
Views11K

Наткнулся на интересный документ в Твиттере.

JavaScript Performance Best Practices


В заголовке указана категория WRT (Nokia Web Runtime or Widget for S60), то есть конкретная Нокиевская платформа, но, думаю, многим интересно будет почитать, возможно найдёте для себя что-то новое. Есть действительно полезные советы, но есть и вредные, особенно в свете современной разработки _под все браузеры_.
Сначала думал оформить как топик-ссылку, но под катом я обращу внимание на некоторые проблемы этой статьи. Статью прочитать стоит но ни в коем случае не относитесь к ней, как к истине в последней инстанции.

Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments32

Вышел Netbeans 7.0 beta

Reading time2 min
Views2K
Introducing Netbeans IDE 7.0 Beta

Скачать Netbeans 7.0 beta


NetBeans IDE 7.0 включает поддержку JDK 7, интеграцию с Oracle WebLogic server, а также Oracle Database и GlassFish 3.1
Дополнительные характеристики включают Maven 3 и поддержку редактирования HTML5, новый GridBagLayout дизайнер для улучшенной Swing GUI разработки, расширенную поддержку для выполнения и отладки автономных Java EE приложений и усовершенствования редактора Java.

Все нововведения списком
Total votes 71: ↑62 and ↓9+53
Comments76

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity