All streams
Search
Write a publication
Pull to refresh
32
0

Разработчик

Send message
$ cat js/*.js build.js

Вероятно, вы имели ввиду:
$ cat js/*.js > build.js
Дискуссия выдалась жаркая, и я её, честно говоря, не осилил целиком. Но хотел бы высказаться.
Я лично никогда не отдавал предпочтение Opera, но всегда считал, что это достаточно самобытный браузер для небольшого круга пользователей, которые точно знают, чего они хотят. Opera была отлична от других браузеров сразу по множеству интересных фич.
Когда было объявлено, что Opera меняет движок, я оставался спокоен, потому как из новости явно следовал следующий посыл: «мы собираемся изменить движок, все UI-фичи останутся». И это, по моему мнению, правильно. Если кто-то выбирает Opera, то он его (браузер) выбирает конкретно из-за весьма определённых фич. Губить эти фичи значит губить Opera в его самобытном виде, взамен запиливая весьма средний «хромированный» браузер с модными фичами.

Касательно фичи «копилка». Лично я не испытываю негатива по поводу этой фичи, и еслиб я пользовался Opera, то эта фича вполне бы укладывалась в мой workflow, НО, почему стоит не добавлять эту фичу, а заменять ей дефолтные закладки? Обсуждение уже показало, что есть множество пользователей, которые предпочитают каталогизированное хранилище закладок. Возможностей копилки для них явно мало.
«У нас было шестнадцать многоточий, десять тройных восклицательных знаков, страница, наполовину забитая капслоком и целое море разномастных связок восклицательных и вопросительных знаков.»
Кстати, есть ещё интересная конструкция, которая позволяет вызывать функцию как конструктор без ключевого слова new (она тоже основана на проверке instanceof).
Быстрым загугливанием нашёл здесь: js-bits.blogspot.ru/2010/08/constructors-without-using-new.html
Может быть и на хабре освещался этот вопрос.

Это своеобразный «иной» подход к той же проблеме: вместо ошибки мы просто позволяем вызывать функцию без слова new с тем же эффектом.
Можно создавать сколько угодно функций с заданным именем.
jsfiddle.net/66Xdu/
Для начала давайте для ясности определимся какая цель была у этого кода.
Я понял его, как желание определить, вызывается ли функция в качестве конструктора. Все три способа так или иначе делают это, но первый полагается на некоторое строковое значение, в то время как второй и третий на ссылку. С моей точки зрения лучше полагаться на объекты выполняемого приложения, доступные по ссылкам, нежели на строки, которые являются данными.

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

Кстати, в вашем примере вот эта строка:
NamedFunction.name = "Good bye";
не сработает, потому как name это readonly-свойство функции.

Это нехорошо:
if (this.constructor.name !== 'Calculator') { throw “No way, buddy!”; }

Если уж так делать, то можно:
function Calculator() {
if (this.constructor !== Calculator) { throw “No way, buddy!”; }

А лучше так:
function Calculator() {
if (! (this instanceof Calculator)) { throw new TypeError(“No way, buddy!”); }
Я — Эндрю Райан, и я пришел, чтобы спросить у вас: разве не имеет права человек на то, что зарабатывает в поте лица своего?
Нет, говорят нам в Вашингтоне. Всё принадлежит бедным.
Нет, говорят в Ватикане. Всё принадлежит богу.
Нет, говорят в Москве. Это принадлежит всем.
Я отверг эти ответы. Вместо них я выбрал нечто иное. Я выбрал невозможное. Я выбрал… Восторг. Город, где художник не боится цензора, где великое не ограничено малым, где учёного не стесняет ханжеская мораль…
Эндрю Райан
Эти понятия используются в системе контроля версий SVN

Эти понятия используются в большинстве СУВ.
Тем более странно слышать об SVN конкретно после строки:
Этакий GitHub с форками от любой прошлой ревизии.

Лучше переписать так:
Эти понятия используется в системах контроля версий (СУВ).

По статье у меня есть вопрос.
Какая разница между прогулкой и революцией не для людей, а для Вселенной?
По-моему, любое действие, пусть даже самое незначительное, способно и будет порождать новый слой мультиверса. Proof me wrong.
Справедливости ради стоит отметить, что LoDash умеет where-предикат на большинстве функций, принимающих коллбек.

Например, представим себе функцию filter (или функцию find, или функцию any).
Каждая из них в прямолинейном варианте принимает коллбек, который должен возвращать истиностное значение, результат проверки.
Но есть также два специальных синтаксиса:
1. Если передать вместо коллбека строку, то будет создан специальный коллбек, который возвращает атрибут передаваемого ему объекта с таким именем (т.н. pluck-стиль, по имени функции, выбирающей атрибуты объектов).
2. Если передать вместо коллбека словарь, то будет производиться сверка его свойств со сверками объекта (т.н. where-стиль). Именно этот случай описан у топикстартера.
Также такой специальный коллбек можно создавать самому.

Преимущество данной либы в возможности задавать оператор (использовать не только равенство). Схожие возможности удобны в ORM. Из знакомых мне, ORM Django позволяет такие фишки.
Именно поэтому -b это всего лишь флаг команды checkout. Странно упрекать команду за наличие удобной дополнительной опции.
Впрочем, Kain_Haart вам достаточно ясно объяснил ситуацию.
Каждый, кто привязывает кредитку к девайсу должен понимать, что такая возможность сделана неслучайно.
Наверно async тоже стоит упомянуть.
Ошибся. После слияния $ git log master..feature-branch работать не будет.
Пользуюсь $ git log --graph.
Можете привести пруф того, что Twisted является родоначальником deferred?
Также буду рад ссылкам на реализации deferred в других фреймворках, дополню статью.
Осмелюсь дополнить.
3. Коммит хранит список своих родителей, их хеши. Никаких строковых ссылок на имена веток нет. Если подмержить ветку и удалить её, то о ней не останется никакого упоминания. В истории мы просто увидим разветвление на «тут были две какие-то ветки».
В коллективной разработке я предпочитаю некоторое время удерживать ссылки на ветки даже после полного мержа. Тогда можно хотя бы достать историю по ветке ($ git log master..feature-branch).
Ещё в git нет бранчей с «разрывами».
12 ...
23

Information

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