Обновить
0
@Lifehack043read⁠-⁠only

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

Отправить сообщение

Как Греф с программистами боролся

Время на прочтение6 мин
Охват и читатели237K

Наверное многие помнят скандальное заявление Грефа о том, что Сбербанку программисты не нужны: "У нас огромное количество программистов, с которыми мы боремся". Давайте проанализируем откуда такие заявления взялись и чем все это закончилось.


Читать дальше →

Прописываем процедуру экстренного доступа к хостам SSH с аппаратными ключами

Время на прочтение4 мин
Охват и читатели9.8K


В этом посте мы разработаем процедуру для экстренного доступа к хостам SSH, используя аппаратные ключи безопасности в автономном режиме. Это всего лишь один из подходов, и вы можете адаптировать его под себя. Мы будем хранить центр сертификации SSH для наших хостов на аппаратном ключе безопасности. Эта схема будет работать практически на любом OpenSSH, включая SSH с единым входом.

Зачем всё это? Ну, это вариант на крайний случай. Это бэкдор, который позволит вам получить доступ к своему серверу в том случае, когда по какой-то причине больше ничего не помогает.
Читать дальше →

React-разработка: 6 путей к профессиональному росту

Время на прочтение7 мин
Охват и читатели22K
Последние полгода я наблюдал за развитием начинающих React-программистов. За это время они прошли просто невероятный путь. Скорость их обучения, их жажда знаний, их стремление к совершенству — всё это произвело на меня сильнейшее впечатление.

Как им это удалось? Как они превратились из тех, кто не может без посторонней помощи открыть PR, в тех, к кому обращаются за помощью другие? Что сделало людей, просящих советов, людьми, охотно дающих советы другим? Как ученики превратились в учителей?



Я задал им эти вопросы. Вот что они на них ответили.
Читать дальше →

AQO — адаптивная оптимизация запросов в PostgreSQL

Время на прочтение19 мин
Охват и читатели9.9K
При выполнении запросов современные СУБД используют стоимостную модель оптимизации — на основе сохраненных в конфигурационных файлах коэффициентов и собранной статистики высчитывают “цену” получения и объем результирующих наборов строк. При повторном выполнении запросов стоимость и селективность высчитываются заново. Можно выполнить запрос и посмотреть реальные значения этих параметров, однако, в процессе (стандартного) повторного планирования оптимизатор СУБД эту информацию никак не использует.

А что, если бы оптимизатор сохранял реальные значения стоимости, селективности и другие необходимые параметры выполнения запроса и, при повторном его выполнении ориентировался не только на стандартную собранную статистику, но и на сохраненную после предыдущего выполнения?

Это называется адаптивная оптимизация запросов, и данный способ оптимизации является перспективным. В некоторых СУБД такие технологии уже используются.

Компания Postgres Professional уже несколько лет работает над расширением AQO для PostgreSQL, которое реализует (в некотором виде) адаптивную оптимизацию. Работы еще ведутся, но уже есть что потестировать.

Сначала — подробнее рассмотрим предметную область оптимизации запросов.
Читать дальше →

Дайджест свежих материалов из мира фронтенда за последнюю неделю №418 (1 — 7 июня 2020)

Время на прочтение3 мин
Охват и читатели9.5K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.

Читать дальше →

12 советов по внедрению TypeScript в React-приложениях

Время на прочтение9 мин
Охват и читатели37K
TypeScript — стандарт современной фронтенд-разработки. Согласно исследованиям State of JavaScript, TS вызывает явный интерес у программистов. По данным опроса за 2019 год, почти 60% респондентов пробовали TS и продолжают использовать, 22% не пробовали и желают изучить.

Эта статья — сборник советов о том, как внедрить и улучшить использование TypeScript. Первая половина советов общая, касающаяся подходов и инфраструктуры. Вторая — несколько особо полезных фишек языка.


Читать дальше →

Обход графа: поиск в глубину и поиск в ширину простыми словами на примере JavaScript

Время на прочтение5 мин
Охват и читатели280K
Доброго времени суток.

Представляю вашему вниманию перевод статьи «Algorithms on Graphs: Let’s talk Depth-First Search (DFS) and Breadth-First Search (BFS)» автора Try Khov.

Что такое обход графа?


Простыми словами, обход графа — это переход от одной его вершины к другой в поисках свойств связей этих вершин. Связи (линии, соединяющие вершины) называются направлениями, путями, гранями или ребрами графа. Вершины графа также именуются узлами.

Двумя основными алгоритмами обхода графа являются поиск в глубину (Depth-First Search, DFS) и поиск в ширину (Breadth-First Search, BFS).

Несмотря на то, что оба алгоритма используются для обхода графа, они имеют некоторые отличия. Начнем с DFS.
Читать дальше →

Эффект реалистичного перелистывания страниц на JS

Время на прочтение4 мин
Охват и читатели31K
Представляю вашему вниманию — один из возможных вариантов реализации довольно забавного приема, для создания эффекта реалистичного перелистывания страниц.



Демо и документация
Github
Плагин для React

Подобный эффект я реализовывал данным давно, еще в университете и на Delphi. Получилось вполне достойно, правда времени я потратил тогда очень много. Сейчас, во время самоизоляции, стало интересно реализовать что-то подобное на JS, для PC и мобильных устройств.

Признаться честно, я не уверен в практической применимости данного эффекта, и думаю что в большинстве случаев, нет ничего лучше простой смены картинок без всякой анимации. Но это вполне можно использовать, допустим на сайтов ресторанов, для публикации меню (но главное — что бы рядом дублировалось ссылкой!).

Написано все на Typescript. Не использовались ни какие сторонние библиотеки. Зависимостей нет.

Ключевые особенности библиотеки


  • Работает как с простыми изображениями, с отрисовкой на canvas, так и с html блоками — используя css трансформации
  • Довольно гибкая система конфигурации и простое API
  • Поддерживает мобильные устройства
  • Автоматическая смена ориентации между портретным и ландшафтным режимом
Читать дальше →

Программируем прямо в Nginx

Время на прочтение13 мин
Охват и читатели49K


Nginx — великолепный веб-сервер. Все мы привыкли использовать его в связке с бекендами на разных языках программирования. Но оказывается можно писать простые программы прямо внутри конфигурационного файла Nginx. Это можно использовать для балансировки, написания простых API и даже отдавать динамические страницы прямо из конфига.

В статье мы разберем примеры написания простых программ в конфиге nginx.
Читать дальше →

Новшества ES2020, которые мне очень нравятся

Время на прочтение7 мин
Охват и читатели28K
В последние годы JavaScript развивается очень быстро. Особенно это характерно для периода, следующего за выходом стандарта ES6 в 2015 году. С тех пор в языке появилось множество замечательных возможностей. Немало нового было предложено и для включения в стандарт ES2020.



Уже сформирован окончательный список возможностей, появления которых можно ожидать в стандарте после его утверждения. Это — хорошая новость для всех любителей JS. Автор статьи, перевод которой мы сегодня публикуем, говорит, что среди этих возможностей есть такие, которым он особенно рад. До их появления ему, в тех ситуациях, в которых они применимы, было гораздо тяжелее писать код. По его словам, появись они в языке раньше, они сэкономили бы ему много времени и сил.
Читать дальше →

Книга «Рик и Морти. Путеводитель по самому гениальному мультфильму всех галактик»

Время на прочтение19 мин
Охват и читатели14K
image Привет, Хаброжители! «Рик и Морти» — один из самых умных и безумных мультсериалов последнего времени. Гений и по совместительству алкоголик Рик Санчез и его злополучный внучок Морти постоянно влипают в самые пикантные ситуации на просторах огромной Вселенной с параллельными мирами. В каждой серии они используют новейшие достижения науки. Но если заглянуть за пределы лаборатории Рика в гараже, что из показанного нам является правдой и будет реализовано в недалеком будущем?

Из книги вы узнаете, как мы можем использовать темную материю и энергию, что такое биохакинг, возможно ли контролировать нервную систему таракана при помощи языка и многое другое.

Читать дальше →

450 бесплатных курсов от Лиги Плюща

Время на прочтение19 мин
Охват и читатели80K
image


Информационные технологии позволяют получить невероятно крутые образовательные ресурсы в один клик. Бесплатно.

Я сейчас решаю задачу, как из огромной массы жизненно важного контента выбрать тот, который стоит попробовать в первую очередь, как «разметить данные», чтобы нейросеточка у подрастающего поколения обучилась более эффективно. (ontol.org, «Выгорание», «Удаленка», телеграм-канал).

Предлагаю вашему вниманию полную подборку всех бесплатных курсов от Лиги Плюща.

Лига плюща (The Ivy League) — ассоциация восьми частных американских университетов, расположенных в семи штатах на северо-востоке США. В состав лиги входят: Брауновский университет (Brown University), Гарвардский университет (Harvard University), Дартмутский колледж (Dartmouth College), Йельский университет (Yale University), Колумбийский университет (Columbia University), Корнеллский университет (Cornell University), Пенсильванский университет (University of Pennsylvania), Принстонский университет (Princeton University).

Эти университеты выпустили около 500 онлайн-курсов, 450 из которых сейчас доступны.

Оглавление


Computer Science (37)
Data Science (18)
Программирование (8)
Гуманитарные науки (80)
Бизнес (72)
Art & Design (20)
Наука (32)
Социальные науки (74)
Здоровье и медицина (32)
Инженерия (15)
Образование и преподавание (21)
Математика (14)
Личностное развитие (7)

Читать дальше →

Проверяем уровень защищённости Linux с помощью утилиты Lynis

Время на прочтение8 мин
Охват и читатели62K
Разбираемся, как использовать одну из самых мощных свободно распространяемых утилит для аудита Linux-систем.


Вы когда-нибудь задумывались о том, насколько безопасна ваша Linux-система? Существует множество дистрибутивов Linux (каждый со своими настройками по умолчанию), на которых вы запускаете десятки программных пакетов с разными номерами версий. Кроме того, на вашей ОС в фоновом режиме работает множество сервисов, о которых вы порой не знаете или не думаете.

Чтобы получить информацию о системе, то есть проверить общее состояние программного обеспечения, сети и служб, работающих на вашем компьютере с установленной ОС Linux, достаточно выполнить несколько команд. Но что теперь делать с полученной информацией? Как в ней разобраться? Ведь объём данных, которые вам нужно проанализировать, огромен.
Читать дальше →

Лучшие ИТ-работодатели России 2019: рейтинг по качествам компаний

Время на прочтение12 мин
Охват и читатели71K


В феврале этого года мы выпустили рейтинг Лучшие ИТ-работодатели России 2019. Из 190 компаний, получивших оценку от своих сотрудников на Хабр Карьере в прошлом году, мы представили только 15, вошедших в тройку лучших по средней оценке.

Сегодня же мы построим другой рейтинг, сравнив компании по 12 качествам работодателя. Новым рейтингом мы хотим показать, что компании бывают очень разные, каждая со своим уникальным набором лучших качеств. И даже если средняя оценка компании невысока, в каких-то отдельных качествах она всё равно может иметь высокую оценку, выгодно отличающую её от других компаний.

В итоге у нас получилось 87 компаний, получивших хотя бы одну номинацию.
Читать дальше →

Go: десериализация JSON с неправильной типизацией, или как обходить ошибки разработчиков API

Время на прочтение9 мин
Охват и читатели71K
image

Недавно мне довелось разрабатывать на Go http-клиент для сервиса, предоставляющего REST API с json-ом в роли формата кодирования. Стандартная задача, но в ходе работы мне пришлось столкнуться с нестандартной проблемой. Рассказываю в чем суть.

Как известно, формат json имеет типы данных. Четыре примитивных: строка, число, логический, null; и два структурных типа: объект и массив. В данном случае нас интересуют примитивные типы. Вот пример json кода с четырьмя полями разных типов:

{
	"name":"qwerty",
	"price":258.25,
	"active":true,
	"description":null,
}

Как видно в примере, строковое значение заключается в кавычки. Числовое — не имеет кавычек. Логический тип может иметь только одно из двух значений: true или false (без кавычек). И тип null соответственно имеет значение null (также без кавычек).

А теперь собственно сама проблема. В какой-то момент, при детальном рассмотрении получаемого от стороннего сервиса json-кода, я обнаружил, что одно из полей (назовем его price) помимо числового значения периодически имеет строковое значение (число в кавычках). Т. е. один и тот же запрос с разными параметрами может вернуть число в виде числа, а может вернуть это же число в виде строки. Ума не приложу, как на том конце организован код, возвращающий такие результаты, но видимо, это связано с тем, что сервис сам является агрегатором и тянет данные из разных источников, а разработчики не привели json ответа сервера к единому формату. Тем не менее, надо работать с тем что есть.

Но далее меня ждало еще большее удивление. Логическое поле (назовем его active), помимо значений true и false, возвращало строковые значения «true», «false», и даже числовые 1 и 0 (истина и ложь соответственно).
Читать дальше →

Шаблон backend сервера на Golang — часть 2 (REST API)

Время на прочтение32 мин
Охват и читатели35K

UPD. Ссылка на новый репозиторий проекта с поддержкой развертывания в Kubernetes


Представленный ниже шаблон сервера на Golang был подготовлен для передачи знаний внутри нашей команды. Основная цель шаблона, кроме обучения — это снизить время на прототипирование небольших серверных задач на Go.


Первая часть шаблона посвящена HTTP серверу:


  • настройка HTTP сервера через командную строку и конфигурационный файл
  • настройка параметров TLS HTTP сервера
  • настройка роутера и регистрация HTTP и prof-обработчиков
  • настройка логирования HTTP трафика, логирования ошибок в HTTP
  • HTTP Basic и MS AD аутентификация, JSON Web Token
  • запуск сервера с ожиданием возврата в канал ошибок
  • использование контекста для корректной остановки сервера и связанных сервисов
  • настройка кастомной обработки ошибок и кастомного логирования
  • сборка кода с внедрением версии, даты сборки и commit

Вторая часть шаблона посвящена прототипированию REST API.
Ссылка на репозиторий проекта осталась прежней.


Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).


Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.


Архитектура шаблона REST API


В ходе тестирования шаблона на стенде были получены следующие результаты.

Читать дальше →

10 расширений для VS Code, без которых я не могу программировать

Время на прочтение3 мин
Охват и читатели184K
VS Code — мой любимый редактор кода. Это — самый популярный из существующих редакторов, возможности которого можно расширять практически до бесконечности. И, что удивительно, разработала его компания Microsoft. Я полагаю, что ни один из других редакторов и ни одна из других IDE не может дать разработчику хотя бы половину того, что способен дать ему VS Code. Одна из сильных сторон VS Code — это система расширений. Она позволяет создавать расширения буквально на все случаи жизни. Хочу рассказать вам о моём топ-10 расширений для VS Code.


Читать дальше →

Краш-курс: Как менеджерская революция Boeing породила катастрофу 737 MAX

Время на прочтение34 мин
Охват и читатели124K
На Хабре уже есть материалы, углубляющиеся в некоторые технические стороны крушений последнего самолета Boeing. Эта драматическая статья рассказывает, что к этим крушениям привело.


Фото: Getty

Почти за два десятка лет до того, как система MCAS компании Boeing погубила два новых самолета 737 MAX, Стэн Соршер знал, что все более токсичная обстановка в его компании приведет к какой-то катастрофе. «Культура безопасности», которая долго была предметом гордости, стремительно вытеснялась, по его словам, «культурой финансовой херни, культурой группового мышления».

Соршер, физик, проработавший в компании Boeing более двух десятилетий и возглавлявший там переговоры о создании профсоюза инженеров, стал одержим культурой управления. Он сказал, что ранее не представлял, что смелая новая управленческая каста Boeing создаст такую глупую и вопиюще очевидную проблему, как MCAS (Maneuvering Characteristics Augmentation System; система улучшения характеристик маневрирования, как ее окрестила горстка разработчиков ПО). В основном его беспокоило, что сокращение доли рынка будет уменьшать продажи и численность сотрудников, то есть то, что не дает спать по ночам постиндустриальным американским профсоюзным лидерам. В какой-то степени, однако, он все это предвидел; он даже показал, как убытки от запрета полетов самолета перекроют краткосрочные экономии от аутсорсинга в одном из своих докладов, который никто не читал, еще в 2002 году.
Читать дальше →

Observable сервисы в Angular

Время на прочтение7 мин
Охват и читатели18K

Всем привет, меня зовут Владимир. Я занимаюсь фронтенд разработкой в Tinkoff.ru.


В Ангуляре для передачи данных внутри приложения или для инкапсуляции бизнес-логики мы привыкли использовать сервисы. Для управления асинхронными потоками отлично подходит RxJS.


Ангуляр в сочетании с RxJS позволяет писать в декларативном стиле, коротко и ясно. Но иногда мы сталкиваемся со сторонними библиотеками или API, которые используют коллбэки, промисы, тем самым подталкивают нас отступить от привычного стиля и писать императивно.


Цель статьи — показать на примере подобных API, как с помощью RxJS их можно без проблем обернуть в Observable-сервисы. Это поможет достичь удобства использования в Ангуляре. Начнем с Geolocation API.


Читать дальше →

Отложенные ретраи силами RabbitMQ

Время на прочтение7 мин
Охват и читатели38K

Меня зовут Алексей Казаков, я техлид команды Клиентских коммуникаций в ДомКлике. В этой статье я хочу поделиться с вами «рецептом», который позволил нам реализовать отложенные ретраи при использовании брокера сообщений RabbitMQ


rabbit_retry
Читать дальше →

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность