Software engineer
Советы по написанию библиотек на Rust
Перевод статьи Pascal Hertleif "Good Practices for Writing Rust Libraries" (2015.10.24).
Прошел примерно год, как меня заинтересовал Rust, язык программирования от Mozilla Research, сосредоточенный на решении трёх задач: безопасность, скорость и параллелизм. Он такой же низкоуровневый, как Си или C++, имеет хорошую систему типов (с обобщениями (generics) и типажами (traits)), дружелюбный компилятор и отличный менеджер пакетов Cargo.
С выпуска Rust 1.0 прошло уже полгода (май 2015): многие библиотеки (пакеты, crates), включая некоторые мои, были опубликованы в центральном регистре crates.io. Вот неплохие практики (еще рановато называть их "лучшими"), которые помогут другим людям находить, использовать и дополнять вашу библиотеку.
Один разработчик чуть не «сломал» пакетный менеджер NPM
Программист отказался, тогда юрист обратился напрямую в NPM, и администрация проекта удовлетворила его требование, сменив владельца kik без разрешения автора.
Азер Кочулу был крайне недоволен этим. Настолько недоволен, что решил в ответ «освободить» (то есть отозвать) все свои модули — более 250 модулей NPM. К сожалению, среди них оказался и left-pad — маленький модуль из 11 строк кода на JavaScript. Он используется при установке зависимостей между пакетами через NPM, в том числе в Node.js, JavaScript-транскомпиляторе Babel и огромном количестве других билдов. Только за прошлый месяц left-pad скачали 2 486 696 с сервера NPM, по их статистике.
«ES7» — неправильное название для планов по развитию JavaScript

Я не первый и не последний, кто вам об этом скажет, но стандарт ES2016 (или ES7) уже утвержден, и не включает в себя те функции, про которые говорят — «Будет в ES7».
Пора закончить упоминать ES7 в смысле “разные, предложенные сообществом функции, которые возможно когда-нибудь будут внесены в стандарт”.
Кризис ожирения сайтов

Перед началом тирады я хотел бы обратить внимание на то, что прекрасные сайты бывают любых форм и размеров. И я здесь не собираюсь кого-то пристыживать за количество использованных бит, объём использованных ресурсов и так далее. Я люблю большие сочные галереи изображений, мне нравятся огромные эксперименты на JavaScript, я смотрю онлайн-видео в высоком разрешении, как и все вы. Я считаю, что подобное замечательно.
Выступление совсем не об этом. Я хотел бы поговорить об этом общественном кризисе здоровья, этом ожирении сайтов. Отличные дизайнеры, которые задумываются о вебе как я или даже больше, почему-то делают страницы, которые становятся больше. Речь пойдёт о текстовых в своей основе сайтах, которые по каким-то непостижимым причинам с каждым годом становятся всё больше и больше.
Байки «инженерного спецназа», ну или просто наша весёлая работа

Шли по трассе от Магадана на Якутск, везли комплектующие для одного дата-центра. Холода в этих краях стоят такие, что машины не глушат. Потому что до весны уже не заведёшь. Машины надо ставить в тёплые гаражи или ангары. Мы уже под вечер как раз нашли такой ангар и стали стучать. Открывает сильно поддатый хозяин, такой простой сибирский мужик в ватнике и ушанке:
— Здравствуйте, можно у вас машину поставить?
— Не. Идите отсюда, я вас не знаю!
— Да ладно тебе, мужик, мы же тебе денег дадим.
Мужик вынимает из кармана котлету пятитысячных сантиметров пять толщиной и сообщает:
— Да я те, ик, сам денег дам ща! Вот бухнёшь со мной — тогда поставим.
Обязательства по госконтракту для этого дата-центра мы тогда выполнили.
А вы заходите внутрь, буду дальше рассказывать наши байки. Кстати, да, кто беспокоился за нашу крысу (ещё живую на фотографии в прошлом посте) — хоть ей и прилетело 380 В, но она оклемалась и начала немного ходить. Мы её отпоили сладким чаем и отпустили, убегала она уже весело. Правда, что с ней было дальше, не знаем.
Немного о Kotlin

На днях JetBrains после пятилетней работы выпустила первый релиз языка Kotlin. Давайте посмотрим, что же это за язык, попробуем разобраться зачем и для кого он, какие имеет функциональные особенности. Скорее всего в статью затесались и личные впечатления от языка, но я старался, чтобы они не влияли на изложение полезной информации. Если вы еще ничего или почти ничего не знаете о Kotlin, то я завидую вам, ибо по моему ощущению почитать про инструмент, который ты долго ждал, сродни распаковке новогоднего подарка. Впрочем судите сами.
Сервис «Kimono» закрывается

После двух лет активной разработки и бурного роста пользовательской базы (свыше 125 тыс. клиентов) команда облачного сервиса Kimono радостно сообщает о своём присоединении к Palantir — частной американской компании-разработчику программного обеспечения анализа данных для организаций. Событие это радостное, но не во всём.
Роутер для Matreshka.js 2
tl;dr
Плагин включает синхронизацию свойств объекта и куска урла.
Matreshka.initRouter(object, '/a/b/c/');
object.a = 'foo';
object.b = 'bar';
object.c = 'baz'
// location.hash теперь #!/foo/bar/baz/
Для использования History API вместо location.hash
, нужно передать строку "history"
вторым аргументом.
Matreshka.initRouter(object, '/a/b/c/', 'history');
Импорт CJS модуля:
const initRouter = require('matreshka-router');
initRouter(object, '/a/b/c/', 'history');
Сколько котов на хабре?
На написание скрипта, который распознаёт, что изображено на аватарке хабропользователя и грепает всех кошачьих, ушло несколько минут, на обновление дампа до актуального и распознавание картинок ушло несколько дней, и теперь я могу утверждать, что на хабрахабре по меньшей мере 748 котов.
Под хаброкатом можно прочитать чуть больше подробностей и посмотреть на всех котов.

Слухи подтвердились — Opera Software продаётся в Китай

Несколько дней ходили слухи о том, что норвежская компания Opera Software ищет покупателя. Сегодня слухи превратились в реальность — Opera Software пришла к соглашению с китайским инвестиционным фондом Golden Brick Silk Road о продаже 100% акций норвежской компании за $1,2 млрд. Соответствующий анонс опубликован в биржевых новостях Oslo Børs.
Мониторинг выполнения задач в IPython Notebook
def log_progress(sequence, every=10):
for index, item in enumerate(sequence):
if index % every == 0:
print >>sys.stderr, index,
yield item

Эта функция прекрасна, больше года она кочевала у меня из задачи в задачу. Но недавно я заметил в стандартной поставке Jupyter виджет IntProgress и понял, что пора что-то менять:

Что новенького предлагает Git 2.7
Полноценный набор команд git worktree
Команда git worktree появилась в Git 2.5, она позволяет выгружать и одновременно работать со многими ветками репозитория в отдельных папках. Например, если нужно сделать срочную правку, но при этом не хочется трогать текущую рабочую копию, можно просто выгрузить нужную ветку в новую папку с помощью команды:
$ git worktree add -b hotfix/BB-1234 ../hotfix/BB-1234
Preparing ../hotfix/BB-1234 (identifier BB-1234)
HEAD is now at 886e0ba Merged in bedwards/BB-13430-api-merge-pr (pull request #7822)
Chakra официально принят Node.js
Элон Маск отказался продавать клиенту Model X после критики в свой адрес

Тайм-менеджмент — сложная штука. Особенно, если ты — известный человек и у тебя очень много дел. Вот, Владимир Путин как-то раз припозднился на встречу с Папой Римским на целый час. Или другой пример: в сентябре 2015 года Элон Маск опоздал на Model X Launch Event почти на два часа, заставив ожидать несколько тысяч приглашённых гостей (в основном, заказчиков Model X).
Один из этих гостей, известный венчурный инвестор Стюарт Алсоп, позже написал по этому поводу гневный пост в своём блоге. Алсоп остался недоволен мероприятием в целом — и скучной презентацией на тему безопасности, и отсутствием готовых автомобилей, но в первую очередь — опозданием Маска (и отсутствием каких бы то ни было извинений на этот счёт).
Два дня назад история получила неожиданное продолжение: Маск позвонил Алсопу… но не для того, чтобы извиниться. Вместо этого Маск высказал Стюарту свое недовольство его постом, его отношением к Tesla как к компании и в заключение сообщил, что отменил заказ Алсопа на красную Model X, поскольку не хотел бы, чтобы такой человек обладал автомобилем Tesla.
#Маленькая приятная новость

Визуализация concurrency в Go с WebGL
Конечно, задумывались. Все мы, так или иначе, мыслим визуальными образами. Если я попрошу вас о чём-то, что включает числа «от 1 до 100», вы мгновенно их «увидите» в своей голове в той или иной форме, вероятно даже не отдавая себе в этом отчёт. Я, к примеру, ряд от 1 до 100 вижу как линия с числами уходящая от меня, поворачивающая на 90 градусов вправо на числе 20 и продолжающая до 1000+. И, покопавшись в памяти, я вспоминаю, что в самом первом детском саду в раздевалке вдоль стены были написаны номерки, и число 20 было как-раз в углу. У вас же, вероятно, какое-то свое представление. Или вот, другой частый пример — представьте круглый год и 4 сезона года — кто-то их видит как квадрат, каждая грань которого принадлежит сезону, кто-то — как круг, кто-то ещё как-то.
Так или иначе, позвольте мне показать мою попытку визуализировать основные паттерны concurrency с помощью Go и WebGL. Эти интерактивные визуализации более-менее отражают то, как я вижу это в своей голове. Интересно будет услышать, насколько это отличается от визуализаций читателей.

С-вызовы в Go: принцип работы и производительность

Язык Go в последнее время неоднократно обсуждался на хабре — его и критиковали , и хвалили. Мы в Intel любим Go и участвуем в open-source разработке этого проекта. Если вы тоже используете Go, интересуетесь его внутренним строением и вопросами наиболее эффективного программирования на этом замечательном языке, то добро пожаловать под кат. Статья будет о том, каким образом в Go реализован механизм внешних вызовов, и насколько быстро он работает.
Простейшие клеточные автоматы и их практическое применение
Чтобы хоть как-то его познавать и при этом не съехать с катушек, нам, людишкам, с нашими жалкими мозгами приходится задумчиво смотреть на происходящее, анализировать увиденное и строить модели — абстракции, с помощью которых мы с некоторой точностью кое-что иногда можем предсказывать и даже наивно полагать, что понимаем, что же на самом деле происходит.
И знаете, что удивительно? Этот подход замечательно работает. Ну, почти всегда. По крайней мере, ничего лучше мы до сих пор не придумали.
Но вообще-то я не об этом. Я хочу рассказать об одной чрезвычайно интересной как с эстетической, так и с математической точки зрения категории этих самых моделей.

Да, я о клеточных автоматах, а именно — об их подмножестве, простейших клеточных автоматах (Elementary cellular automaton). В этой статье я поведаю, что это такое, какие они бывают, какими свойствами обладают, а также отвечу на главный, на мой взгляд, и совершенно правильный вопрос, который часто несправедливо игнорируется в подобных статьях. Звучит он так: А это всё вообще зачем?
Забегая вперед, скажу, что простейшие клеточные автоматы используются в криптографии, моделировании физических процессов, поведения людей, в биологии, и в целой куче других важных и интересных штук. И вообще: во-первых, это красиво.
Я искренне надеюсь, что после прочтения статьи вы сами захотите поиграться с ними, и на этот случай у меня припасен собранный из JS и палок генератор.
Oracle прекращает поддержку плагина Java для веб-браузеров

Нужно отметить, что такие популярные веб-браузеры как Google Chrome и Microsoft Edge уже отказались от использования интерфейса NPAPI, который необходим для работы проигрывателя Java. Такой же шаг предусмотрен и для Mozilla Firefox в этом году. Плагин для проигрывания содержимого Java не раз критиковался исследователями по безопасности за присутствие там большого количества уязвимостей, которые ранее использовались атакующими для удаленной установки вредоносных программ.
Information
- Rating
- Does not participate
- Date of birth
- Registered
- Activity