Сегодня мы посмотрим, как маленькие оптимизации в нужных местах приложения могут неплохо повысить его производительность. Убрали создание лишнего итератора в одном месте, избавились от упаковки в другом, а в итоге получается результат, несоизмеримый с правками.
Пользователь
Миру нужны фуллстек-крафтсмены
Спор «фуллстек против узкой специализации» вечный. Но одно дело — спорить в комментах, а совсем другое — создать собственную компанию и проверить экстремальный подход на практике. Антон Кекс пошел по этому пути: стал сооснователем компании Codeborne, где разработкой занимаются исключительно «фуллстек-крафтсмены» и практикуется экстремальное программирование. И по его словам, там командами из 2-4 человек получается сделать то, на что другим требуется человек 50.
Он подробно рассказал об этом на нашей конференции JPoint. Обычно на наших мероприятиях не услышишь слово «agile», потому что о методологиях много пустословия, а мы любим конкретику, код и хардкор. Но поскольку Антон не диванный теоретик, а обладатель большого нестандартного опыта, это как раз хардкор и ценная информация.
Можно не соглашаться с его позицией, но как минимум ознакомиться с ней полезно. И хотя доклад сделан еще пару лет назад, в 2021-м он продолжает собирать просмотры, поэтому мы решили сделать для Хабра текстовую версию. Под катом — и видеозапись, и текстовая расшифровка. Дальше повествование ведется от лица Антона.
Кастомные операторы RxJS

Библиотека RxJS благодаря широкому выбору операторов по праву считается крайне мощным инструментом в арсенале разработчика. В этом посте я хочу представить вам концепцию кастомных операторов RxJS с примерами реализации.
Почему мы предпочитаем CSS(--variable) переменным SASS($variable)?

Вы безумны, остановитесь пока не поздно

Привет Хабр! Всего каких-то пару лет назад на страницах нашего любимого ресурса красовались вдохновляющие статьи успешного успеха, как вчерашний сантехник / таксист / сварщик /
CIFS over SSH штатными средствами Windows 10
Я ленивый и потому люблю когда все организовано удобно, без лишних телодвижений. Иногда перебарываю лень, для того чтобы сделать удобно.
Однажды потребовалось мне организовать доступ к серверу по протоколу SMB и в поиске решения я наткнулся на следующую статью: Mounting your Nikhef home directory using SSH for Windows 8. Это было простое и удобное решение, которое использовало Putty. Чуть позже мне пришлось настраивать это решение на другом компьютере и я понял, что Putty тут лишний с тех пор как в Windows 10 появился встроенный ssh-клиент на основе OpenSSH.
Под катом — идентичная схема, только с использованием OpenSSH под Windows 10.
Immutable Trie: найди то, не знаю что, но быстро, и не мусори

И даже реализаций в коде, в том числе на JavaScript, для него существует немало — от «каноничной» by John Resig и разных оптимизированных версий до серии модулей в NPM.
Зачем же нам понадобилось использовать его для сервиса по сбору и анализу планов PostgreSQL, да еще и «велосипедить» какую-то новую реализацию?..
Переезд инженера в Шанхай: цзябань, фапьяо, загадочные китайцы

Продолжаем рассказывать о популярных направлениях переезда отечественных IT-специалистов. Были Будапешт и Германия, а на повестке дня — Шанхай: один из крупнейших городов материкового Китая, охотно принимающий иммигрантов.
Несмотря на то, что государства Еврозоны и США по-прежнему возглавляют списки «стран мечты» российских разработчиков, все больше программистов обращают свое внимание на Азиатско-Тихоокеанский регион, в частности, на Китай, чей рынок IT развивается быстрыми темпами. Шанхай — экономическая столица страны, привлекает профессионалов со всего света благодаря обилию рабочих мест и лояльному отношению к иностранцам.
Из-за ситуации с пандемией неясно, когда откроют авиасообщение с Китаем. Появились новости, что полеты в Шанхай возобновятся с 1 октября. Пока ждем официального подтверждения — давайте рассмотрим плюсы и минусы переезда в один из крупнейших мегаполисов Поднебесной.
Что умеет Dialogflow?

26 ноября в Москве прошла третья в своей истории Conversations – конференция по разговорному искусственному интеллекту для разработчиков и бизнеса, на которой был представлен новый доклад компании «Аэроклуб ИТ». В прошлый раз речь шла об одном из наших исследовательских проектов, теперь же рассказ был сосредоточен вокруг инструмента, который мы применяем для чат-ботов. Сперва я планировал просто написать статью по мотивам доклада, но получился целый tutorial, так что под катом вас ждёт довольно подробное описание некоторых возможностей Dialogflow, и даже попадутся неочевидные «хаки».
MQTTv5.0: Обзор новых функций. Часть 1
В этой статье я расскажу про, пожалуй, самый популярный протокол передачи данных, используемый в сфере Интернета вещей, — MQTT. А если конкретнее, то про MQTT Version 5.0 (версия, опубликованная 7 марта 2019 года). А если еще конкретнее, — про приятные нововведения версии 5.0 по сравнению с версией 3.1.1.
Кстати, а почему v5.0? Куда делась версия v4.0?
Коренная причина лежит в заголовке пакета CONNECT. Версия протокола или, если быть более точным, уровень версии протокола устанавливается в байте 7.

Типизированные запросы OData в TypeScript
Традиционно запросы OData к данным выражаются в виде простых строк без проверки типов при компиляции или без поддержки IntelliSense, кроме того, разработчику приходится изучать синтаксис языка запросов. Данная статья описывает библиотеку TsToOdata, которая превращает запросы в удобную языковую конструкцию и применяется аналогично классам и методам. Вы создаете типизированные запросы с помощью ключевых слов языка TypeScript и знакомых операторов.
Is Delphi Dying — False
Однако, как всем известно, дыма без огня не бывает, и сейчас, к сожалению, язык испытывает далеко не лучшие времена (в большей степени на это влияет не совсем адекватная ценовая политика Embarcadero), но тем не менее Delphi вполне себе живет, развивается и соответствует текущим трендам разработки ПО.

BTRFS для самых маленьких
Если вы слышали об этой файловой системе, но не знаете, зачем она, интересуетесь подробностями или ищете, с чего начать знакомство с ней — приглашаю под кат.
Подборка датасетов для машинного обучения
Меня зовут Рушан, и я автор Telegram‑канала Нейрон. Не забудьте поделиться с коллегами или просто с теми, кому интересны такие статьи.
Перед тобой статья-путеводитель по открытым наборам данных для машинного обучения. В ней я, для начала, соберу подборку интересных и свежих (относительно) датасетов. А бонусом, в конце статьи, прикреплю полезные ссылки по самостоятельному поиску датасетов.
Меньше слов, больше данных.

Подборка датасетов для машинного обучения:
- Данные смертей и сражений из игры престолов — этот набор данных объединяет три источника данных, каждый из которых основан на информации из серии книг.
- Глобальная база данных терроризма — Более 180 000 террористических атак по всему миру, 1970-2017.
- Биткойн, исторические данные — данные биткойнов с интервалом в 1 минуту с избранных бирж, январь 2012 г. — март 2019 г.
Play Store теперь принимает прогрессивные веб-приложения (PWA)

Дисклеймер: я не связан с Google Play, Chrome или любой упомянутой компанией. Это не официальное заявление. Логотип и названия используются только для иллюстрации.
В Chrome 72 для Android реализована долгожданная функция Trusted Web Activity. Это означает, что теперь мы можем распространять PWA через каталог Google Play и запускать Chrome без UI в автономном режиме для нативных пакетов! Я некоторое время поигрался с этой функцией, копаясь в API, а здесь расскажу, о чём речь, чего ожидать и что доступно уже сегодня.
Индексаторы в C# под капотом: индексируем лучше Доу-Джонса

FAQ: что надо знать путешественнику-гику про прививки перед поездкой

Любая борьба организма с инфекционным заболеванием — это попытки распознать сигнатуру угрозы и выработать контрмеры. В общем случае этот процесс ведётся до полного результата, то есть до выздоровления. Однако могут быть инфекции, которые:
- Убивают носителя быстрее, чем будет выработан иммунный ответ.
- Меняются быстрее, чем иммунная система сможет «распознать» патогены.
- Маскируются и прячутся в местах, где очень сложно получить доступ к патогену.
Поэтому в некоторых случаях лучше заранее устроить учения. Это и есть вакцины. Взрослый житель города привит от самых опасных инфекций в детстве. При вспышках инфекций или при помещении человека в опасную среду имеет смысл делать профилактические прививки. Путешествия относятся к таким ситуациям.
Давайте сначала разберёмся с ликбезом, потом перейдём к путешествиям и списку действий.
Почему путешествия опасны?
Предположим, вы летите в Африку. Там есть повышенный риск жёлтой лихорадки. Простая вакцина обойдётся вам примерно в 1 500 рублей вместе с приёмом терапевта и услугами процедурного кабинета, вакцина более высокого уровня — в 3 000 рублей. Вылечиться от жёлтой лихорадки специализированными медикаментами нельзя (то есть можно только поддерживать ресурсы организма, пока он сам не справится), заболеть легко, летальность — около 10%, основной вектор — комары. Побочных эффектов у вакцины почти нет. Стоит вакцинация того? Наверное, да. Но решать вам.
Основы реактивного программирования с использованием RxJS. Часть 2. Операторы и пайпы

В предыдущей статье мы рассмотрели, что такое потоки и с чем их едят. В новой части мы познакомимся с тем, какие методы RxJS предоставляет для создания потоков, что такое операторы, пайпы(pipes) и как с ними работать.
Серия статей «Основы реактивного программирования с использованием RxJS»:
RxJS обладает богатейшим API. В документации описано более ста методов. Чтобы немного познакомиться с ними, мы напишем простое приложение и на практике посмотрим, как выглядит реактивный код. Вы увидите, что одни и те же задачи, которые раньше казались рутинными и требовали написания большого количества кода, имеют элегантное решение, если смотреть на них сквозь призму реактивности. Но прежде чем мы перейдем к практике, рассмотрим, как потоки можно представить графически, и познакомимся с удобными методами для их создания и обработки.
Google Drive как хранилище для веб-приложения
Предисловие
Мое веб-приложение хранит данные в
localStorage
. Это было удобно, пока не захотелось, чтобы пользователь, заходя на сайт с разных устройств, видел одно и то же. То есть, понадобилось удаленное хранилище.Но приложение «хостится» на GitHub Pages и не имеет серверной части. Я решил не делать сервер, а данные хранить у третьей стороны. Это дает существенные преимущества:
- Не нужно платить за сервер, не болит голова о его стабильности и доступности.
- Меньше кода, меньше ошибок.
- Пользователю не нужно регистрироваться в моем приложении (это многих раздражает).
- Приватность выше, и пользователь знает, что его данные хранятся в месте, которому он, скорее всего, доверяет больше, чем мне.
Сначала выбор пал на remoteStorage.js. Они предлагают открытый протокол обмена данными, достаточно приятное API, возможность интеграции с Google Drive и Dropbox, а также свои сервера. Но этот путь оказался тупиковым (почему — отдельная история).
В итоге решил использовать Google Drive напрямую, и Google API Client Library (далее GAPI) как библиотеку для доступа к нему.
К сожалению, документация Google разочаровывает, а библиотека GAPI выглядит недоработанной, к тому же имеет несколько версий, и не всегда понятно, о какой из них идет речь. Поэтому решение моих задач пришлось собирать по кусочкам из документации, вопросов и ответов на StackOverflow и случайных постов в интернете.
Надеюсь, данная статья сэкономит вам время, если вы решите использовать Google Drive в вашем приложении.
Как сделать расширение на PHP7 сложнее, чем «hello, world», и не стать красноглазиком. Часть 1
Зачем?
Я пишу эту статью для того, чтобы путь, который у меня занял в общей сложности не меньше года, читатель смог пройти за пару часов. Как показал мой личный опыт, просто программировать на Си несколько легче, чем заставить работать серьезное расширение для PHP. Здесь я максимально подробно расскажу вам о том, как сделать расширение на примере библиотеки libtrie, реализующей префиксное дерево, более известное как trie. Я буду писать и параллельно выполнять описываемые действия на свежеустановленной системе Lubuntu 18.04.
Начнем.
Information
- Rating
- Does not participate
- Location
- Киев, Киевская обл., Украина
- Date of birth
- Registered
- Activity