Pull to refresh
179
0
spmbt @spmbt

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

Send message

Найдена старейшая из известных звёзд

Reading time3 min
Views48K
Команда астрономов Австралийского национального университета (Australian National University) нашла звезду, которая, по оценкам измерений, зародилась вскоре после Большого Взрыва, около 13.7 млрд.лет назад. Вывод этого открытия изложен в работе, к которой доступен препринт. Чтобы не плодить множество догадок, что есть слова учёных, а что — популяризация других учёных и интерпретация журналистов, привожу перевод аннотации их работы, а далее толкования данных и выводов из других статей.

Одиночная низкоэнергетическая, бедная железом сверхновая, возможно, была источником материала для звезды SMSS J 031300.36-670839.3

Пропорции химических элементов в 4 маломассивных звёздах и их крайне малая металлизированность показывает, что газ, из которого они образовались, был крайне мало обогащён металлами, и, вероятно, произошёл в результате низкоэнегетического взрыва сверхновой. Такие сверхновые дают большую долю лёгких элементов типа углерода и очень мало железа. Существование сверхновых такого рода необычно, потому что предполагается, что первые звёзды были крайне массивными, и при разрушении из неустойчивого состояния быстро обогащали железом галактики. Долю железа от сверхновой в спектре звезды обнаружить не удалось. Спектр SMSS J031300.36-670839.3 вообще не показывает признаков железа, что [в погрешностях измерений] говорит о его доле менее 10-7.1 [=8*10-8] в сравнении с солнечной концентрацией.
Читать дальше →
Total votes 57: ↑56 and ↓1+55
Comments13

О достоинствах спагетти-методологии

Reading time7 min
Views55K
Недавно к нам в компанию пришёл специалист из дружественной сервисной компании с презентацией классического спагетти-подхода к программированию. Ниже приведён пересказ его лекции. Презентация вызвала живой интерес и обсуждение (среди менеджеров).

В ходе лекции мы узнали, что существует методология проектирования, которая работает в большинстве простых и среднесложных проектов, и только для крупных и растущих рекомендуется её сменить, начав переписывать функции заново на некотором этапе.
Читать дальше →
Total votes 122: ↑88 and ↓34+54
Comments63

Мы потеряли тот Веб

Reading time10 min
Views31K
Кратко: после браузерных войн организация W3C и группы разработчиков, такие как Web Standards Project, долго и упорно работали, чтобы восстановить единый нефрагментированный Веб. Но в последние несколько лет мы, разработчики, взяли, и заново всё зафрагментировали… Наверное, нам надо понять, что мы теряем, прежде чем потеряем этот Веб навсегда.

Ровно год назад патриарх веб-индустрии Anil Dash написал: "Мы потеряли Веб", скорбя по ранней, «досоциальной» блогосфере, до всех этих наших постингов фото, видео и мыслей, находящих последний приют в катакомбах Фейсбука, Твиттера, Инстаграма и Ютуба. Это вызвало отклик у многих, кто застал те дни; многих, кто по иронии судьбы затем ушёл работать в эти катакомбы.
Читать дальше →
Total votes 78: ↑46 and ↓32+14
Comments74

Цветовая пипетка на JS, 399 символов (не строк)

Reading time2 min
Views6.7K
(Если уж делать в 5 строк JS+HTML+CSS, то что-то полезное.)

Так называемый Color Picker предназначен для копирования в буфер обмена HEX-кода одного из 216 цветов «безопасной» веб-палитры одним кликом и Ctrl-C.

Пикер умеет много гитик:
1) показывает код цвета по наведению мыши;
2) предоставляет код для копирования по клику;
3) переформатируется в другое количество цветов и ячеек без изменения объёма кода.

<body onload="var H=512,D=51,s='',h=function(a){return a.toString(16).substr(1)},r=256,g,b,v;for(;r<H;r+=D){for(g=256;g<H;g+=D)for(b=256;b<H;b+=D)s+='&lt;b style=&quot;background-color:'+(v=h(r)+h(g)+h(b))+';display:inline-block;width:8px;height:8px;border:1px solid;margin:-1px&quot;onmouseover=this.title=\''+v+'\' onclick=prompt(\'\',\''+v+'\') >&lt;/b>';s+='&lt;br>'}document.body.innerHTML+=s">

Гитхаб-демо (фиддл поддерживать это не умеет)
подробнее
Total votes 43: ↑19 and ↓24-5
Comments13

20 и 1 примочка Javascript, которые я никак не могу запомнить

Reading time8 min
Views21K
Статья описывает особенности Javascript ES3, которые имеют свойство забываться. Одни из них — странности языка, а другие просто свойства, которые, по-моему, труднозапоминаемы. Я постарался собрать здесь не те из них, по которым можно дать просто ссылку на описание языка (как по различиям между apply и call), а о которых мало сказано в руководствах.

Прежде чем начать, хочу уточнить 3 момента, которые я не стараюсь доказать этой статьёй:

1. Я не говорю, что эти особенности забываются всеми или что они такие по сути. Я их нахожу трудными лично для меня (например, забываются детали, если их не освежать в памяти). Они могут быть лёгкими для вас. Тем не менее, думаю, что этот сборник может быть полезен не только мне.
Читать дальше →
Total votes 56: ↑27 and ↓29-2
Comments32

Итератор в шаблонизаторе doT.js по объектам с фильтрацией

Reading time11 min
Views6.4K
Компактный (3.5 Кб) и быстрый шаблонизатор doT.js для браузеров и nodeJS до сих пор (v.1.0.1) имеет итерацию только по массивам. Это не всегда удобно — подгонять управляющий объект под наличие в нём массивов. Лучше подогнать шаблонизатор под наличие в нём итератора по объектам c проверкой условия. Проверять условия в циклах по объектам приходится часто — это и hasOwnProperty(), и проверка на DOM-объект, и взятие части хеша по фильтрации индексов.

Как пишут в шаблоне итерацию по массиву? Примерно так:
{{~it.elemsArray:property:i}} ... {{~}}

Энергетические добавки
Total votes 15: ↑14 and ↓1+13
Comments4

API консоли Javascript

Reading time15 min
Views36K
Разработчикам удобно пользоваться консолью для отладки, но ещё удобнее, если будет оболочка, в которой учтены особенности реализации консоли в различных браузерах, поэтому тема обёрток для консоли устойчиво существует.

Рассмотрим ранее опубликованные решения, затем сделаем обзор методов консоли с помощью перевода недавней статьи Axel Rauschmayer-а, разработчика и консультанта с более чем 15-летним стажем, затем я опубликую некоторые свои решения, которые оказались удачными в процессе эволюции и отладки на ряде проектов.
UPD 2015: обновление таблицы команд до актуального состояния, Github (ru, en; разворачивание на javascript).
ой, сколько букв
Total votes 51: ↑50 and ↓1+49
Comments30

Как я достроил Хабрахабр

Reading time9 min
Views26K
В отличие от "Как я сломал Хабрахабр", известно, что ломать — не строить. Ломка известного ресурса вызывает традиционно большой интерес. То, что все считали, что сделать нельзя, оказалось, что можно. Как же идут дела со строительством? И что вообще можно построить, если всё уже есть из коробки: открыл сайт и пользуешься? Есть некоторые пользователи-разработчики, которые видят, что на сайте можно достроить, но до чего дело не сразу дойдёт, если просто просить администрацию. И они достраивают сами, а затем делятся результатами с сообществом, благодаря чему мы их знаем, и их работа тоже вызывает большой интерес. Давайте для начала вспомним строителей, пусть им инвайтов за улучшения, насколько я знаю, за достройку не дают и премий не выписывают.
Читать дальше →
Total votes 91: ↑71 and ↓20+51
Comments27

Node.js и новый фронтенд в вебе

Reading time5 min
Views46K
(Дата оригинала — 7.10.2013. У оригинала — очень оживлённая дискуссия в комментариях)

Фронтенд-разработчики имеют довольно долгую и сложную историю в программировании. Долгое время отправляемое в браузер было так легко отобразить, что не было настоящей потребности в этой специализации. Многие считали, что они были просто графическими дизайнерами с немного другими выразительными средствами. Мысль о том, что они могли в один прекрасный день специализироваться в веб-технологиях, HTML, CSS, Javascript — была смехотворной; в лучшем случае — пользовательский интерфейс их удел или, в конце концов, кто-то мог специализироваться на том и другом и иметь эту работу.
Читать дальше →
Total votes 75: ↑59 and ↓16+43
Comments40

Случайный генератор буквоцифр и его варианты

Reading time9 min
Views95K
Обратиться к теме написания случайных генераторов букв навела мысль о том, что в JS существует нетипичная нативная функция преобразования строки в n-ичное число, где n = 2..36. 36 в стандарте языка придумано не случайно — это сумма количества цифр и малых английских букв, из которых предлагается писать такие числа. Это значит, что парой нативных функций уже можно построить полезный генератор небольших строк из буквоцифр.

Math.random().toString(36) //даст числа вида 0.816cwugw2ky, 0.opgqwav8w1m, 0.f0w4ejtq8wk, ...

Это значит, что для некоторых задач можно не писать относительно честные генераторы на основе унылых строк вида «abcdefghijklmno...».
Сделаем несколько полезных функций
Total votes 28: ↑21 and ↓7+14
Comments19

Сетевая файловая система Хабра на 1.5 МБ

Reading time4 min
Views16K
Возможно, не все знают, но Хабр не отстаёт от лидеров рынка в предоставлении хранилища данных на своих серверах всем зарегистрированным пользователям. Оно не такое большое, как у Гугла или Яндекса, всего лишь мегабайты, но позволит хранить десяток черновиков статей и другие данные, привязанные к сайту, чтобы использовать их вместе с материалами сайта без кроссдоменного доступа в скриптах. Будем считать, что на все нужды нам достаточно 1 МБ символов Unicode. Что предлагает система?

Предоставляемые типы и объёмы:

1) В виде черновиков статей (видимы только автору). Каждый черновик хранит не менее 100 тыс. символов. Черновиков — условно неограниченное количество.
а ещё?
Total votes 63: ↑47 and ↓16+31
Comments21

Краудсорсинг-дизайн: делаем расширение браузера для быстрой публикации картинок на Хабре

Reading time7 min
Views4.4K
Попробуем сделать расширение для загрузки картинок в HabrAjax, начав от дизайна и юзабилити.
Идея расширения: Все, кто что-то пишет на Х., рано или поздно публикуют картинки. Совсем недавно админ-ия своими действиями подтвердила, что считает habrastorage.org полноценным хостингом картинок для абсолютно любых публикаций. Кратко — теперь все без исключения картинки кешируются на habrastorage.org. Это значит, что даже картинки-приколы в комментариях рекомендуется публиковать через этот сервис, иначе всё равно они там будут.

Настало время полноценно использовать «сторадж». Для этого не хватает одного — удобного интерфейса. Конечно, можно открыть его в новом окне, грузить файлы кнопками через флеш, копировать руками теги в статью или комментарии. (И испытывать неудобство от закрывания этой страницы, потому что в ней нет даже запоминания последних загруженных файлов.) Но зачем, если браузеры давно умеют делать это в одно перетаскивание?
Предлагается сделать...
Total votes 24: ↑19 and ↓5+14
Comments10

Фраза «перезалил на habrastorage» теряет смысл

Reading time3 min
Views22K
Пока разработчики сайта скромно молчат, занятые тестированием новой функциональности, сообщу о незаметном, но важном деле размножения интернетов на отдельном сайте. Об этом уже писали на Хабре 10 дней назад: habrahabr.ru/post/188436, но более явно пояснить нововведение заставила фраза в одной из свежих статей: "перезалил на habrastorage". Всё было бы хорошо, но теперь в этом нет смысла.

Если раньше годами сайт Хабра пользовался сторонними сервисами показа изображений, в связи с чем изображения умерших сервисов искажали вид и иногда смысл старых статей, сейчас дошли руки и возможности до того, чтобы сайту уже не зависеть от произвола случайных хостингов — все изображения роботы автоматически переписывают на habrastorage.org. Над комментариями эта незаметная работа началась раньше, в июле, над содержанием статей — недавно, в начале августа (2013). Примеров даже приводить не надо — посмотрите исходный код HTML любых недавних статей — в них вы уже не найдёте доменов с «левыми» картинками. Или лучше посмотрите на код, где автор достоверно пользовался сторонним хостингом картинок: habrahabr.ru/post/189474, потому что большая часть авторов добровольно пользуется habrastorage.org.
Как это различать и какие последствия
Total votes 100: ↑66 and ↓34+32
Comments31

Понимание ООП на джаваскрипте (ES5), часть 2

Reading time12 min
Views44K


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

Для полноты статьи и единого стиля, перевод начинается с вопросов наследования, несмотря на то, что они уже были упомянуты в конце первой части. Далее рассматриваются разнообразные задачи наследования так, как их рассмотрел автор. Надо сказать, что автор широко использует новые конструкции ES5 (объяснив это в конце), которые работают не во всех браузерах и заслоняют от понимания реализацию их на низком уровне языка, на котором они изначально применялись. Для настоящего понимания наследования следует обратиться к более глубокому разбору реализаций или к реализациям методов-обёрток из ES5: Object.create, Object.defineProperty, Function.bind, get и set literals, Object.getOwnPropertyNames, Object.defineProperty, Object.getOwnPropertyDescriptor, Object.getPrototypeOf. Часть их разбирается в статье (Object.create, get и set, Object.defineProperty, bind), но не всегда в порядке появления. Таким образом, статья стремится преподнести не реализацию наследования вообще, а ту реализацию, которую успели формализовать в рабочем черновике стандарта EcmaScript 5. Это лучше, чем ничего, но несколько меньше, чем полное понимание реализаций наследования.

Зато, данная часть статьи в нескольких (4) крупных примерах кода демонстрирует чистейшее прототипное наследование, которому не требуется привлекать понятие конструктора (хотя он там, в .create(), незримо присутствует), о котором много говорят и которое исключительно редко в чистом виде встречается.
Краткое содержание первой части
1. Объекты
  1.1 Что есть объекты? (список свойств)
  1.2 Создание свойств (Object.defineProperty)
  1.3 Описатели свойств (Object.defineProperty)
  1.4 Разбор синтаксиса (bracket notation: object['property'])
  1.5 Доступ к свойствам (через скобочную нотацию)
  1.6 Удаление свойств (оператор delete)
  1.7 Геттеры и сеттеры (методы доступа и записи)
  1.8 Списки свойств (getOwnPropertyNames, keys)
  1.9 Литералы (базовые операторы) объекта
2. Методы
  2.1 Динамический this
  2.2 Как реализован this
    2.2.1 Если вызывается как метод объекта
    2.2.2 При обычном вызове функции (this === global)
    2.2.3 При явном указании контекста (.apply, .call)
  2.3 Привязывание методов к контексту (.bind)
Cодержание части 2
3. Прототипное наследование
  3.1 Прототипы
  3.2 Как работает [[Prototype]]
  3.3 Переопределение свойства
  3.4 Миксины (примеси)
  3.5 Доступ к экранированным ('перезаписанным') свойствам
План части 3
4. Конструкторы
  4.1 Магия оператора new
  4.2 Наследование с конструкторами
5. Соглашения и совместимость
  5.1 Создание объектов
  5.2 Определение свойств
  5.3 Списки свойств
  5.4 Методы связывания
  5.5 Получение [⁣[Prototype]⁣]
  5.6 Библиотеки обратной совместимости
6. Синтаксические обёртки
7. Что читать дальше
8. Благодарности
Примечания

3. Прототипное наследование


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

Далее в игру вступает наследование. Оно лучше разделяет понятия, когда объекты наделяются своими методами на основе методов других объектов.

Прототипное наследование идёт дальше и может избирательно расширять методы, описывать общее поведение и использовать другие занятные приёмы, которых мы коснёмся. Печалит лишь то, что модель наследования в JS немного ограничена, и для обхода трудностей эти приёмы будут временами избыточны выносить мозг.
дальше
Total votes 54: ↑48 and ↓6+42
Comments22

Почему QA всё ещё не Stackoverflow?

Reading time5 min
Views23K
Позвольте предоставить субботние диванные рассуждения на тему «Как нам обустроить...» именно в виде статьи, а не вопроса, потому что статью прочтут в 10 раз больше читателей, а ориентирована она на всех читателей Хабра, а не только на читателей его вопросов.

В статье есть также одно простое предложение о том, как поправить дела с QA. Оно звучит так: давайте откроем доступ в QA всем, включая ReadOnly. Плюс парочка мелких замечаний к нему. Думаю, что после этого там пойдут дела на поправку. А ниже — подробности о том, что там происходило с момента рождения раздела, что происходит, и почему я считаю, что там дела идут плохо (не так, как на StackOverflow).
Читать дальше →
Total votes 85: ↑76 and ↓9+67
Comments100

Читатели статьи про Оперу используют браузер Опера в 4 раза чаще

Reading time12 min
Views31K
Британские учёные недавно установили примечательный факт, что, несмотря на низкую популярность браузера Опера в последние дни, статьи с помощью него читают, и тем чаще, чем больше упоминается фактов про Оперу в этих статьях. Учёные пока затрудняются с объяснением сего феномена, упоминая лишь существование пословицы «Беда не приходит одна». Аналогично и здесь, родственные слова притягиваются, и браузер Опера появляется чаще всего там, где про него говорят.

Оставив в стороне напряжённую работу учёных умов над недавно открытой загадкой природы, займёмся задачей более простой и приземлённой — посмотрим, какими инструментами получены эти поразительные результаты. Возможно, посмотрев на их работу, нас тоже впереди ждут удивительные открытия.
Читать дальше →
Total votes 37: ↑21 and ↓16+5
Comments14

Время подключать исходники. Введение в Source Maps

Reading time19 min
Views55K
В современной разработке ваш код сильно отличается от кода на «боевом» сервере (production) после компиляции, минификации, объединения и разных оптимизаций. Тут-то и вступают в игру карты кода (source maps), показывая точное соответствие элементов готового рабочего кода проекта и вашего кода разработки. В этом вводном уроке мы возьмём простой проект и запустим его с помощью различных компиляторов JavaScript с целью посмотреть работу карт кода в браузере.
Читать дальше →
Total votes 28: ↑24 and ↓4+20
Comments3

Переводы, привязанные к источнику

Reading time6 min
Views4.5K
Как выглядят переводы? Это документ, оформленный на другом сайте, других страницах, но который повторяет последовательность мыслей автора и структуру его текста. Бывает, что авторский текст меняется, особенно часто это случается в документации — основном профессиональном применении переводов, с которыми приходится встречаться программистам и другим пользователям технической продукции. Если привязать перевод к исходному коду статьи, документации или книги так, чтобы скрипт показа перевода следовал по структуре, проверял изменения и отмечал непереведённое, то становится очень легко следить за изменениями текстов и переводить изменения. Новые версии текстов не становятся слишком отличными от старых и прежние переводы остаются частично работать. Перевод сам будет следить за своей актуальностью. Все прочие тексты будут представлять собой просто слепки, имеющие меньшую ценность, чем созданный и поддерживаемый таким способом перевод. Да, за их состоянием скрипт или сервер может следить, чтобы вовремя сообщить держателям слепков об устаревании. Слепки полезны не только как источник контента владельцам сторонних ресурсов, но нужны пользователям для работы в оффлайне или в составе пользовательских программ. Но более ценным будет всё же перевод, привязанный к структуре и оформлению оригинала. Он же поможет следить не за копией сайта, а за самим оригинальным сайтом в случае работы с документацией.
Читать дальше →
Total votes 9: ↑5 and ↓4+1
Comments1

Установить 3 системы на 1 диск с общим загрузчиком

Reading time8 min
Views89K
Этот рассказ — частный случай того, через какие дебри знаний приходится пробираться при желании свободно работать с несколькими ОС на одном диске. Факты показывают, что порядка в этой дисциплине нет, и новые комплектующие привносят, вероятно свои новые проблемы в порядок установки операционных систем. Возможно, это даст энтузиастам, не имевшим такого опыта, общий взгляд на то, что установка ОС не всегда окажется простой и однозначной. Впрочем, драматизма в этом деле меньше, чем в случаях с телекомами, ОпСОСами, ПР и Сбербанком. Всё так или иначе, но решается.

Здесь нет набора инструкций, как сделать установку — все они есть, уже написанные и разбросанные по форумам и блогам. По ключевым словам и ссылкам можно будет найти всё необходимое. Суть в том, что чётких инструкций нет. Есть основополагающие правила строения разделов на дисках компьютера, стандартизированные ещё в 90-х. В зависимости от новизны биоса и системы в известный порядок всегда внесутся свои проблемы, и важно уметь искать решения, примерно зная общее положение дел. С таким подходом и были даны ссылки, а главное — как же нечётко это всё настраивается!

Случилось так, что на субноутбук Acer Aspire One 756 (Sandy Bridge Celeron 887), приобретённый изначально почти без ОС (установлена Linpus без иксов), были установлены операционные системы (в порядке установки):
1) WinXP 32 bit — из сборки размером примерно 720 MБ;
2) Win7 64 bit — из некоторой сборки размером около 2 ГБ;
3) Xubuntu 13.04 64 bit — из свежего дистрибутива на 800 МБ;
Читать дальше →
Total votes 7: ↑1 and ↓6-5
Comments11

Редактирование своей статьи на Хабре через выделение цитаты в HabrAjax; поддержка Iceweasel

Reading time6 min
Views3.9K
В скрипте HabrAjax (113.2013.04.20) добавлено удобное редактирование исправлений в собственных статьях. Достаточно просто выделить уникальный участок текста и среди контекстных кнопок выбрать кнопку <E>. В фрейме половинной высоты откроется поле ввода с выделением именно на том месте, которое было выделено.

Также, обеспечена поддержка браузеров Iceweasel (на основе Fx3.6) в Дебиане и возвращена поддержка Firefox 3.6 в остальных ОС (но там будет иметься проблема установки старой версии Greasemonkey, актуальной для 3.6). Потенциальная аудитория — 1% от остальных пользователей Firefox.

Аудитория пользователей HabrAjax и направленность статьи


Среднее число пользователей скрипта — 40-60 человек. Поэтому, если статью прочитает 3000 человек, то практический интерес она может иметь только для 1.5% читателей. Пусть, ещё 10% будут иметь желание попробовать скрипт. Но не более. Потому что скриптами вообще пользуются немного людей. Остальным — достаточно узнать, что функции, сделанные для удобства пользования, имеются в том или ином скрипте.
теперь подробнее
Total votes 23: ↑9 and ↓14-5
Comments19

Information

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