Node.js разработчики, запускайте команду `npm install` на свой страх и риск и помните, что само-распространяющийся червь свободно гуляет по экосистеме.
Никогда нельзя полагать, что скачанный из интернета файл является безопасным. Это справедливо и для NPM, стандартного менеджера пакетов Node.js. Уязвимость при установке скриптов позволяет атакующему создать само-распространяющегося червя, который может проходить сквозь NPM пакеты. Читать полностью »
Да, да, доброго времени суток!
Давненько я не садился за баранку этого пылесоса… Это я про написание статей на Хабр. Да, срок моего отсутствия уже серьезный, и меня иногда начинают упрекать, что я совсем пропал. Но, я не пропал, я похоже погрузился совсем основательно и дела пусть и не так стремительно, как хотелось бы, но идут и даже приносят прибыль, что на данном этапе проекта становится своеобразным маслом на хлебушек не только для меня. А система продолжает развиваться и планы строятся уже так, что я понимаю, что их сложно будет реализовать даже небольшой командой. Но, обо всем по-порядку… Читать полностью »
Прошел примерно год, как меня заинтересовал Rust, язык программирования от Mozilla Research, сосредоточенный на решении трёх задач: безопасность, скорость и параллелизм. Он такой же низкоуровневый, как Си или C++, имеет хорошую систему типов (с обобщениями (generics) и типажами (traits)), дружелюбный компилятор и отличный менеджер пакетов Cargo.
С выпуска Rust 1.0 прошло уже пол года (май 2015): многие библиотеки (пакеты, crates), включая некоторые мои, были опубликованы в центральном регистре crates.io. Вот неплохие практики (еще рановато называть их "лучшими"), которые помогут другим людям находить, использовать и дополнять вашу библиотеку.Читать полностью »
Каждый год на JPoint эксперты выступают с хардкорными докладами о производительности Java. И ни разу не было скучно — вопрос сохраняет актуальность на протяжении многих лет. О том, откуда растут ноги у мифов, что делает JVM, как измерять производительность, при чём тут бизнес-требования заказчика и как обойти часть граблей мы поговорили с экспертами, для которых Java performance — не проблема, а работа. Читать полностью »
"The joy of coding Python should be in seeing short, concise, readable classes that express a lot of action in a small amount of clear code — not in reams of trivial code that bores the reader to death."
Guido van Rossum
Python — язык программирования, на котором приятно писать и который приятно читать. Мы предлагаем тринадцать лекций осеннего курса CS центра, чтобы посмотреть вглубь языка и попробовать понять, как пользоваться всеми его возможностями. Лекции читает Сергей Лебедев, разработчик в компании JetBrains и преподаватель в Computer Science Center.
Мало освоить синтаксис, чтобы узнать язык программирования: нужно осознать идиомы языка и научиться их применять. В течение курса Сергей знакомит слушателей с идиомами и возможностями языка Python.
Фотография сделана осенью 2014 года в Страсбурге, за две недели до начала первого прочтения этого курса. Читать полностью »
Аудио конференции бывают разные, как и задачи, которые они решают: централизованные (на сервере), клиентские, распределенные. В нашем случае мы рассмотрим первые два варианта — централизованные на стороне облака VoxImplant и клиентские, сделанные прямо в браузере с использованием WebAudio и WebRTC (да-да, и такое уже стало возможно!). У обоих вариантов есть свои плюсы и минусы, которые мы рассмотрим подробнее под катом, а также расскажем о том как их использовать и о подводных камнях (куда же без них!).Читать полностью »
Насколько объектно Go ориентирован многократно и эмоционально обсуждалось. Попробуем теперь оценить насколько он функционален. Заметим сразу, оптимизацию хвостовой рекурсии компилятор не делает. Почему бы? «Это не нужно в языке с циклами. Когда программист пишет рекурсивный код, он хочет представлять стек вызовов или он пишет цикл.» — замечает в переписке Russ Cox. В языке зато есть полноценные lambda, closure, рекурсивные типы и ряд особенностей. Попробуем их применить функциональным манером. Примеры покажутся синтетическими оттого, что во первых написаны немедленно исполняемыми в песочнице и написаны на процедурном все же языке во вторых. Предполагается знакомство как с Go так и с функциональным программированием, разъяснений мало но код комментирован. Читать полностью »
Мы в Хекслете делаем не только практические курсы по программированию, но и готовим людей к карьере программиста. Например, недавно запустили полную программу обучения «Профессия PHP-программист», куда входят основы программирования, частично книга СИКП, веб, базы данных, деплой, управление конфигурацией и многое другое, что мы считаем важным для настоящего разработчика. По завершению учебной программы мы помогаем людям получить первый опыт и устроиться на работу.
Важный аспект последнего шага это подготовка к собеседованиям. Мы знаем, что собеседования могут быть пугающими и сложными, поэтому решили предложить нашему активному сообществу (которое живет, в основном, в большом слак-чате) идею: публичные собеседования в прямом эфире!
Сразу нашлось несколько кандидатов, и наш технический директор Кирилл toxicmt Мокевнин провел три собеседования в прямом эфире. Сегодня публикуем видеозаписи этих собеседований. Все кандидаты претендуют на позицию джуниор-программиста.
В том году мне посчастливилось получить для экспериментов набор от Амперки Технокуб (бесплатно, то есть даром), время шло, но попробовать его собрать времени всё не находилось… Набор увидел коллега по работе — и заинтересовался. Я с радостью отдал ему для экспериментов. И вот, что получилось (совместная статья):
Некоторое время назад меня заинтересовала платформа Ардуино как способ попробовать реализовать свои идеи. Ранее до этого был опыт сборки сурового аналогового сигнализатора в качестве курсового проекта по электронике. И волею судеб — коллега из местного хакспейса MakeItLab одолжил набор от Амперки Технокуб.
Про сборку и программирование простейшей системы индикации освещения на базе Технокуба и будет данная статья. Читать полностью »
Многозадачность — это то, что реализовано в Go по настоящему хорошо, хоть и не идеально. Приятный синтаксис с терпким послевкусием, простые и мощные абстракции, подкупают своим изяществом по сравнению с остальными императивными языками. А попробовав лучшее, уже так не хочется скатываться к посредственности. Поэтому, если и переходить на другой язык, то он должен быть ещё более выразителен и с не менее толковой реализацией многозадачности.
Если вы уже наигрались с Go, устали от копипасты, ручного жонглирования мьютексами и всерьёз подумываете о приобретении протезов для рук, то позвольте предложить вашему вниманию перевод Tour of the Go с эквивалентным кодом на D и краткими пояснениями.