Спустя несколько лет промышленной разработки приложений на javascript, решил вспомнить молодость и сделать небольшой pet-проект, который в полной мере развернул весь процесс разработки подобного рода приложений с использованием фреймворка Angular. В статье делюсь своими впечатлениями, а также пытаюсь понять, стоит ли делать сайты визитки на Angular.
Пользователь
Лямбда-исчисление в 397 байтах
Лямбда-исчисление — это язык программирования с единственным ключевым словом. Это асфальтовая топь Тьюринга, обнаруженная научным руководителем Тьюринга. В этом посте я расскажу о совершенно новой 397-байтной реализации двоичного лямбда-исчисления в виде Linux ELF для x86-64. Также в нём представлены удобно портируемый код на C и собранные двоичные файлы APE для других платформ.
15 отличных Телеграм-каналов для поиска работы на удаленке
С 2005 года спрос на удаленную занятость вырос на 140%. Очевидно, что эта тенденция будет продолжаться. Сегодня вакансии на удаленку можно найти и на job-бордах, и в социальных сетях, но мне ближе Телеграм-каналы. Делюсь с вами своей подборкой. Дополнения в комментариях приветствуются)
Настраиваем профиль IT специалиста в LinkedIn
Данная короткая статья поможет IT коллегам из русскоязычного сегмента интернета заполнить свой профиль в LinkedIn. Заполненный профиль дает возможность в случае необходимости оперативно получить предложения о работе и оставаться в курсе актуальных новостей профессиональной сферы.
Типичное использование Observable объектов в Angular 4
Представляю вашему вниманию типичные варианты использования Observable объектов в компонентах и сервисах Angular 4.
Подписка на параметр роутера и мапинг на другой Observable
Задача: При открытии страницы example.com/#/users/42
, по userId
получить данные пользователя.
Решение: При инициализации компоненты UserDetailsComponent
мы подписываемся на параметры роутера. То есть если userId
будет меняться — будер срабатывать наша подписка. Используя полученный userId
, мы из сервиса userService
получаем Observable
с данными пользователя.
// UserDetailsComponent
ngOnInit() {
this.route.params
.pluck('userId') // получаем userId из параметров
.switchMap(userId => this.userService.getData(userId))
.subscribe(user => this.user = user);
}
Экосистема React в 2022 году
В данной статье мы рассмотрим текущее состояние экосистемы React, а также какие инструменты и библиотеки нам необходимы чтобы покрыть все основные кейсы для успешной разработки приложения.
С широко закрытыми глазами
Мир ИТ-услуг весьма странен.
С одной стороны, вроде все заказчики всё знают: о гарантированно провальных проектах, засилье говнокодеров, непрофессионализме менеджеров и тимлидов, низком качестве продуктов. Невозможно этого не знать, рынок давно сформировался, устоялся и не собирается качественно меняться. По крайней мере, в лучшую сторону.
С другой стороны, продолжают покупать. Это понятно – выбора-то особо нет. Будь на рынке реально крутые, качественно лучшие игроки – законы конкуренции доделали бы остальное.
Непонятно другое – все делают вид, будто никто ничего не знает. Заказчики на полном серьёзе обсуждают предстоящий, непременно успешный проект, а говнокодеров называют «специалистами». ИТ-компании – подыгрывают. Хорошо ещё, большинство встреч проходит онлайн – не приходится продумывать логистику офиса, чтобы просранные клиенты не столкнулись с невинными потенциальными.
Итог всегда один, просто достигается за разное время, кому как повезёт. Кому-то выпадет счастливый билет, и попадётся действительно классный программист или целая команда. Но это лишь продлит агонию – никакой программист, и никакая команда не будет с заказчиком всегда. Штурмовые бригады идут дальше, а на замену приходят охранные войска – ополченцы, грубо говоря. И разочарование заказчика ИТ-миром в целом произойдёт обязательно.
А бывает ли по-другому? Речь не про сказку об очередном мифическом деревенском программисте, который с пинка открыл дверь собственника и всё ему объяснил, нет. Бывает ли так, что не обманываются ожидания?
Конечно. Чтобы не обманывались ожидания, рычага есть два. Первый – соответствовать ожиданиям. Второй – корректировать ожидания. Я сегодня про второй.
Есть у нас команда, которая…. Как бы это выразиться. Странная короче. Они говорят заказчику всё, как есть. И предлагают выбор.
Технология Вялых Проектов
Этот текст – заказной. Знаю, многие из читателей пытались заказать у меня тексты, но я если и пишу для кого-то, то только для друзей. Нетрудно догадаться, что заказчик – мой друг. Зовут его… Пусть Вася. Он так и не решил, называться ли настоящим именем. Потому что так и не решил, зачем ему этот текст.
Итак, Вася – создатель уникального подхода в автоматизации. Надеюсь, процитировал достаточно точно. Вася делает Вялые Проекты.
Все клиенты, которые смогли вынести, дотерпеть, смириться, а то и склониться – обожают Васю и его Вялые Проекты. Возможно, именно большое количество лайков вскружило Васе голову. Я своего мнения высказывать не буду, ибо обещал заказчику – он хочет услышать ваше, непредвзятое мнение.
На всякий случай отмечу, что кроме вышеупомянутой цитаты, ни одной буквы в этом тексте не написано Васей. Он этот текст прочитает одновременно с вами.
Текст длинный, прошу прощения. Но Вася и его подход слишком многогранны, чтобы написать мало букв. Да и у меня день рождения, решил сделать себе подарок – жизнь как-то замотала, некогда длинные статьи писать. А люди просят.
JavaScript: захват медиапотока из DOM элементов
Привет, друзья!
Продолжаю исследовать возможности по работе с медиа, предоставляемые современными браузерами, и в этой статье хочу рассказать вам о возможности захвата и записи медиаданных в процессе воспроизведения аудио и видеофайлов.
Мы разработаем простое приложение для сведения аудио и видео со следующим функционалом:
- пользователь выбирает одно видео и несколько аудио, хранящихся в его файловой системе;
- когда пользователь нажимает на кнопку для начала записи, запускается воспроизведение выбранных файлов, захватываются их медиапотоки;
- захваченные потоки объединяются в один и передаются для записи;
- в процессе записи пользователь может менять источник аудиоданных;
- пользователь может приостанавливать (например, для изменения источника аудиоданных) и продолжать запись;
- по окончанию записи генерируется видеофайл в формате
WebM
— превью сведенного контента и ссылка для его скачивания.
В качестве фреймворка для фронтенда я буду использовать React
, однако все функции по работе с медиа будут автономными (сигнатура этих функций будет framework agnostic), так что вы можете использовать любой другой фреймворк или ограничиться чистым JavaScript
.
О том, как разработать приложение для создания аудиозаметок, можно прочитать в этой статье, а о том, как разработать приложение для захвата и записи экрана — в этой.
Если вам это интересно, прошу под кат.
Как научиться чему угодно с помощью техники Фейнмана
Ричард Фейнман был физиком, удостоенным Нобелевской премии, который внёс значительный вклад в такие области, как квантовая механика и физика частиц. Он также стал пионером квантовых вычислений и ввел понятие нанотехнологии. Он был известным лектором, преподавал в Корнелльском университете и Калифорнийском технологическом институте.
Несмотря на все свои достижения, Фейнман считал себя «обычным человеком, который много учился». Он считал, что любой человек способен при достаточных усилиях изучить даже такие сложные предметы, как квантовая механика и электромагнитные поля.
Нет никаких чудо-людей. Просто случилось так, что они заинтересовались чем-то и выучили все про это. Ричард Фейнман
Ричарда Фейнмана Ричардом Фейнманом (по крайней мере, по мнению Ричарда Фейнмана) сделал не врождённый интеллект, а систематический способ, с помощью которого он выявлял то, чего не знал, а затем бросался постигать это.
На протяжении всей своей работы и жизни, Фейнман с элегантностью и простотой давал представление о своём процессе рассмотрения сложных концепций в мире физики и изложения знаний/идей. Многие из этих наблюдений о его процессе обучения были собраны в то, что мы сейчас называем «техникой Фейнмана».
Техника Фейнмана — это концепция обучения, которую вы можете использовать для понимания практически всего.
Чтобы постоянно расширять свой набор навыков и достигать мастерства в освоении новых и сложных концепций, крайне важно иметь основу для решения сложных задач, начиная от информатики и дизайна продуктов и заканчивая психологией и эволюционной биологией.
В этой статье будет представлен обзор техники Фейнмана и того, как вы можете применять её для постоянного расширения своих знаний и навыков. Короче говоря, Фейнман научит вас не только тому, как учиться, но и тому, как по-настоящему понимать.
Базовые подходы к парсингу
Вступление
У меня бывают ситуации на проектах, когда нужна база данных какой-то статической информации. Но увы, пошарив в интернетах, какого то публичного хранилища найти не удалось, но тем не менее, я вижу кучу ресурсов, которые это используют.
В моем случае мне понадобилась база данных пород кошек, но среди этих примеров может быть что угодно, от базы данных имен, названия городов, областей и т.д. Эта статья о базовых подходах и практиках парсинга данных с веб ресурсов.
Хочу подметить, что хоть в моих жилах течет дотнет, в этом примере я буду использовать Node JS, потому что так быстрее, и удобнее в плане парсинга. Чем именно удобней - я расскажу позже в статье.
Можем ли мы спарсить?
Да, к сожалению (или счастью) веб - он не однообразен, и каждый ресурс может быть уникален по своему, но в нашем деле, ключевым моментом будет то, есть ли на этом ресурсе Server-Side Rendering (SSR), или там Client-Side Rendering и важная для нас информация подтягивается позже с помощью JS.
К примеру, нативные апки на React или тот же Angular by default есть CSR. И что бы прикрутить там SSR нужно порой очень сильно попотеть.Тем не менее, большинство сайтов с топ серч результатов любой поисковой системы будут поддерживать именно SSR, потому что таков мир SEO-оптимизаций.
Синглтон (Перевод с английского главы «Singleton» из книги «Pro Objective-C Design Patterns for iOS» Carlo Chung)
CLLocationManager
из фреймворка CoreLocation предоставляет единственную точку входа ко всем сервисам GPS-модуля. Кто-нибудь может подумать: если можно сделать копию CLLocationManager
, можно ли получить дополнительный набор GPS-сервисов для своего приложения? Это звучит, как фантастика – вы создали два программных GPS по цене одного аппаратного. Но в реальности вы все равно получаете только один GPS единовременно, так как в iPhone есть только один GPS, который создает настоящие соединения со спутниками. Так что, если вы думаете, что создали супер-приложение, которое может манипулировать двумя отдельными GPS-соединениями одновременно, и хотите похвастаться этим перед друзьями, подумайте дважды.Класс синглтона в объектно-ориентированном приложении всегда возвращает один и тот же экземпляр самого себя. Он обеспечивает глобальную точку доступа для ресурсов, которые предоставляет объект класса. Паттерн с такой функциональностью называется Синглтон.
В этой главе мы изучим возможности реализации и использования паттерна Синглтон в Objective-C и фреймворке Cocoa Touch на iOS.
Декоратор (Перевод с английского главы «Decorator» из книги «Pro Objective-C Design Patterns for iOS» Carlo Chung)
В объектно-ориентированном программировании заимствовали похожую идею добавления поведения к другим объектам без потери их исходных особенностей, т. е. расширенный объект будет улучшенной версией того же самого класса (фото в рамке). Любое «улучшение» (рамка) может быть наложено и снято динамически. Мы называем этот паттерн проектирования Декоратором, так как декоратор может добавляться к другому декоратору или исходному объекту для расширения его свойств, оставив исходное поведение нетронутым.
Стратегия (Перевод с английского главы «Strategy» из книги «Pro Objective-C Design Patterns for iOS» Carlo Chung)
CGFloat
, NSString
, NSInteger
и прочее). Каждый из типов данных требует различных алгоритмов проверки. Если бы вы могли инкапсулировать каждый алгоритм в виде объекта, то можно было бы не использовать группу операторов if-else / switch-case для проверки данных и определения, какой из алгоритмов нужен.Исчерпывающее руководство Getting Things Done (GTD) метода с примерами
Я и сама не понаслышке знаю, как сложно перейти от мыслей и планирования к реальным действиям, как не только организовать первостепенные задачи, но и не упустить из вида ценные детали информации.
Я подробно разберу на практике все шаги Getting Things Done метода и вы получите четкую инструкцию к действию (Как привести дела в порядок). Вы сможете не только эффективно организовать свои дела, но и найти больше возможностей для создания новых идей, применяя данную инструкцию на практике.
Swift. Class && Struct (классы и структуры) ч.1
Обычно, в учебных пособиях, книгах и прочих источниках информации, class'ы объясняют примерно так «class это - описание объекта, а объект это экземпляр класса и бла бла бла», в принципе, это частично отражает суть конструкции, но называть class в рамках языка Swift, описанием объекта, будет не совсем корректно т.к. он же еще и представляет собой тип данных и вообще можно использовать классы как независимые, самодостаточные сущности, которые не требуют инициализации. Поэтому начинать со слов «Возьмем объект животного, пускай это будет кот...» я конечно же не буде. И вообще, давайте не будем о "сложном" т.к. материал рассчитан все же на новичков, а новички могут и не знать, что такое, эти ваши объекты и инициализации. В общем я считаю подобное (я про формулировку) не достаточно информативным, поэтому будем разбирать все на примерах с переходом от простого к более сложному. Попутно к ознакомлению с классами, мы будем так же рассматривать и другие возможности языка, но обо всем по порядку.
Swift. Class && Struct (классы и структуры) ч.2
Данная публикация является второй частью ранее опубликованного материала и рассчитана на ознакомление с ним. Ссылка на первую часть - Тыц
Вторая часть базового введения в классы и структуры языка Swift, для новичков в разработке под iOS. В публикации разобраны особенности типов, некоторые нюансы и отличия. Примеры составлены очень просто, доступно и таким образом, чтобы появилось больше мотиваций углубляться в язык. Параллельно освещаются другие возможности языка.
Удаленная отладка приложений Kubernetes с использованием Visual Studio Code
Отладка в контейнерной среде – дело не самое простое, поэтому разработчики зачастую прибегают к неэффективным методам локализации ошибок на этапе развертывания. Быстрее и красивее будет использовать отладчик на удаленном сервере, задав точки останова для поиска причин неполадок.
Именно этот вариант мы рассмотрим сегодня и покажем, как запускать отладчик на кластере Kubernetes через IDE-среду Visual Studio Code (VS Code). В качестве приложения у нас будет программа на Go, но всё изложенное вполне применимо и к другим языкам программирования и отладчикам.
Руководство разработкой: beginner's survival guide
Привет! Меня зовут Наташа, я руковожу разработкой бэкенда страницы yandex.ru. Сейчас у нас в команде больше двадцати человек, которые входят в отдельные группы разработки. Три года назад я впервые стала «тимлидом» маленькой группы из четырёх человек, накопив к этому времени десяток лет опыта в разработке и эксплуатации. Я не стесняюсь сказать, что переход от разработчика к тимлиду дался мне тяжело — и это нормально!
Мне нравится помогать людям в их жизненном пути и ко мне часто приходят начинающие руководители для получения опыта. Работа с людьми показала, что все проходят одинаковый путь с одинаковыми проблемами. Эта статья — мой способ наглядно показать начинающим руководителям происходящее с ними и дать очень простые инструменты, облегчающие первый переход от исполнителя к руководителю.
Осваиваем кросс-компиляцию с помощью Clang и LLVM
Каждый, кто когда-либо пробовал собрать программу на C/C++ через кросс-компиляцию знает, насколько болезненным может быть этот процесс. Главными причинами столь печального положения вещей являются недружелюбность систем сборки при конфигурации кросс-компиляции, а также запутанность процесса настройки набора утилит (тулчейна).
Одним из основных виновников этих проблем, по моему опыту, является тулчейн GNU — древний мамонт, на котором много десятилетий строится весь мир POSIX. Подобно многим компиляторам былых времён, семейство GCC и binutils
никогда не ориентировалось на поддержку множества различных целей сборки в одной установке, и единственным способом хоть как-то добиться желаемого была настройка полной кросс-билд-системы для каждой целевой платформы на каждом хосте.
Информация
- В рейтинге
- Не участвует
- Откуда
- Нижегородская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность