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

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

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

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)

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

Про SSH Agent

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

Введение


SSH-agent является частью OpenSSH. В этом посте я объясню, что такое агент, как его использовать и как он работает, чтобы сохранить ваши ключи в безопасности. Я также опишу переадресацию агента и то, как она работает. Я помогу вам снизить риск при использовании переадресации агента и поделюсь альтернативой переадресации агента, которую вы можете использовать при доступе к своим внутренним хостам через bastion’ы.

Что такое SSH-agent


ssh-agent — это менеджер ключей для SSH. Он хранит ваши ключи и сертификаты в памяти, незашифрованные и готовые к использованию ssh. Это избавляет вас от необходимости вводить пароль каждый раз, когда вы подключаетесь к серверу. Он работает в фоновом режиме в вашей системе, отдельно от ssh, и обычно запускается при первом запуске ssh.

Агент SSH хранит секретные ключи в безопасности из-за того, что он не делает:

  • Он не записывает никакой информации о ключах на диск.
  • Он не позволяет экспортировать ваши личные ключи.

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

Но если агент может только подписывать сообщения, как SSH шифрует и расшифровывает трафик?

При первом изучении открытых и закрытых ключей SSH естественно предположить, что SSH использует эти пары ключей для шифрования и дешифрования трафика. Именно так я и думал. Но это не тот случай. Пара ключей SSH используется только для аутентификации во время первоначального соединения.
Читать дальше →

Какое главное отличие Dependency Injection от Service Locator?

Время на прочтение5 мин
Охват и читатели71K
Ха, какая изящная маскировка Service Locator-а под DI. Даже может показаться, что это DI! :-)

Это первый коммент к моей предыдущей публикации "Dependency Injection, JavaScript и ES6-модули". Спасибо коллеге symbix 'у за этот коммент, т.к. именно он стало причиной погружения в тонкости отличия одного от другого. Под катом мой ответ на вопрос в заголовке.


image


(КДПВ особого смысла не имеет и предназначена в первую очередь для визуального опознания этой публикации в ряду других)

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

Оформляем README-файл профиля на GitHub

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

Летом 2020 года GitHub позволила пользователям создавать персональные README-файлы и с их помощью кастомизировать свои профили. Сама платформа при создании подобного файла предлагает уже готовый шаблон, в который можно вписать свои данные. Но о какой кастомизации может идти речь, если у всех будут одинаково оформленные профили? За почти два года сообщество придумало множество различных способов выделиться и особенно оформить свою страницу на GitHub.

Читать далее

Я решил 500 задач на LeetCode — и они действительно меня чему-то научили

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

Много кто знает, что такое Leetcode. Это своего рода решебник — задачи, которые дают на технических собеседованиях в крупных компаниях (в том числе и из FAANG) и их решения.

Такие задания, заточенные на знание структур данных и алгоритмов, все чаще встречаются и на собеседованиях в небольших компаниях. Многим кандидатам это не нравится — они утверждают, что навыки «литкодинга» ничего не говорят о том, как человек справится с реальной работой. Согласен. Если вы не можете слёту решать задачи c LeetCode, это не значит, что вы плохой разработчик. Возможно, вам в реальной работе вообще никогда не понадобится, скажем, инвертировать бинарное дерево. Однако глупо отрицать, что на LeetCode можно изучить массу подходов и инструментов, которые окажутся полезными. В этой статье я расскажу о том, что вынес для себя из работы с платформой.

Уроки Литкода

From Zero to Hero: определите ваш уровень решения LeetCode задач от 1 до 5

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

В этой статье я хочу написать про мой опыт взаимодействия с платформой LeetCode, и описать свою подготовку к интервью в FAANG подобные компании путем разбиения ее на уровни.

А какой у вас уровень?

Читать далее

5 вещей, о которых должен знать любой разработчик Apache Kafka

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


Apache Kafka — это платформа потоковой обработки событий, которую используют 30% компаний из Fortune 500. У Kafka много функций, благодаря которым платформа задает стандарт обработки событий, и здесь мы поговорим о пяти самых важных аспектах, которые должны быть известны любому, кто работает с Kafka.


Некоторые аспекты связаны с производительностью, другие — с архитектурой. Надеюсь, к концу этого поста вы лучше поймете, как работает Kafka, и освоите пару новых трюков.

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

Stream API & ForkJoinPool

Время на прочтение7 мин
Охват и читатели43K
Продолжаем серию полезностей, которыми мы делимся с вами. Теперь уже вновь по Java.

Если вы уже знакомы со Stream API и использовали его, то знаете, что это удобный способ обработки данных. С помощью различных встроенных операций, таких как map, filter, sort и других можно преобразовать входящие данные и получить результат. До появления стримов разработчик был вынужден императивно описывать процесс обработки, то есть создавать цикл for по элементам, затем сравнивать, анализировать и сортировать при необходимости. Stream API позволяет декларативно описать, что требуется получить без необходимости описывать, как это делать. Чем-то это напоминает SQL при работе с базами данных.



Стримы сделали Java-код компактнее и читаемее. Еще одной идеей при создании Stream API было предоставить разработчику простой способ распараллеливания задач, чтобы можно было получить выигрыш в производительности на многоядерных машинах. При этом нужно было избежать сложности, присущей многопоточному программированию. И это удалось сделать, в Stream API есть методы BaseStream::parallel и Collection.parallelStream(), которые возвращают параллельный стрим.
Читать дальше →

Мутационное тестирование

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

Юнит тесты помогают нам удостовериться, что код работает так, как мы этого хотим. Одной из метрик тестов является процент покрытия строк кода (Line Code Coverage).


Но насколько корректен данный показатель? Имеет ли он практический смысл и можем ли мы ему доверять? Ведь если мы удалим все assert строки из тестов, или просто заменим их на assertSame(1, 1), то по-прежнему будем иметь 100% Code Coverage, при этом тесты ровным счетом не будут тестировать ничего.


Насколько вы уверены в своих тестах? Покрывают ли они все ветки выполнения ваших функций? Тестируют ли они вообще хоть что-нибудь?


Ответ на этот вопрос даёт мутационное тестирование.

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

Оптимизация запросов. Основы EXPLAIN в PostgreSQL

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

Почему запрос выполняется так долго? Почему не используются индексы?
Наверное, все слышали об EXPLAIN в PostgreSQL. Но не так много тех, кто понимает, как его использовать. Сам длительное время не мог найти доступного для понимания учебника (плохо искал?).
Надеюсь, эта статья поможет желающим разобраться с этим замечательным инструментом.
Читать дальше →

Apache Kafka — скоро без ZooKeeper

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

image


В основе Apache Kafka находится лог — простая структура данных, которая использует последовательные операции, работающие в симбиозе с оборудованием. Эффективное использование дискового буфера и кэша процессора, prefetch, передача данных zero-copy и много других радостей — все это благодаря построенной на логе структуре, которая славится своей эффективностью и пропускной способностью. Обычно эти преимущества, а еще базовая реализация в виде лога коммитов, — первое, что люди узнают о Kafka.


Код самого лога составляет относительно малую часть всей системы. Гораздо больше занимает код, который отвечает за организацию партиций (т. е. логов) на множестве брокеров в кластере — назначает лидеров, обрабатывает сбои и т. д. Этот код и делает Kafka надежной распределенной системой.


Раньше важной частью работы распределенного кода был Apache ZooKeeper. Он хранил самые важные метаданные системы: где находятся партиции, кто из реплик лидер и т. д.

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

JSONB запросы в PostgreSQL

Время на прочтение7 мин
Охват и читатели339K
Ранее я писал, как включить поддержку jsonb в postgres/psycopg2. Сегодня экспериментировал с тем, как запрашивать данные в колонках типа JSON.
На эту тему есть документация, но мне было не совсем понятно, как работают различные операции:

CREATE TABLE json_test (
  id serial primary key,
  data jsonb
);

INSERT INTO json_test (data) VALUES 
  ('{}'),
  ('{"a": 1}'),
  ('{"a": 2, "b": ["c", "d"]}'),
  ('{"a": 1, "b": {"c": "d", "e": true}}'),
  ('{"b": 2}');

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

Как я потратил 1 000 000$, чтобы сделать свой переводчик. Часть 3

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели12K

Неделю назад исполнилось 6 лет, как я открыл фирму, чтобы заниматься машинным переводом. За это время многое произошло. Сейчас в команде 40 человек, 120 серверов и более миллиона пользователей. Но так было не всегда. Помню те времена, когда нас было двое. Мы сидели в маленькой комнате без вентиляции, и каждый час нужно было открывать окна, чтобы совсем не задохнуться. Мы были полны надежд, идей и большого желания создать переводчик, который сможет конкурировать с Google.

В 2017 году у нас был прототип под Linux, который уже что‑то переводил. Под iOS собрать тоже удалось. А вот с Windows оказалось не все так просто. Клиенты хотели установку под эту ОС, и нужно было действовать. Для этого пришлось бы перекомпилировать много библиотек с кучей зависимостей, но у меня не было такого опыта. Когда я пошёл на сайты фриланса и разместил несколько объявлений, откликнулось всего нескольких заявок. Cтало ясно, что задача не такая простая, какой кажется.

В интернете было много предложений от аутсорс компаний о разработке проектов любой сложности. Так как я по образованию инженер‑программист, то заявление о любой сложности вызывало удивление, но в то же время и интерес. Было решено попробовать! Cо стороны всё выглядело серьёзно, общение велось от имени юридического лица. Наша компания хочет заказать разработку, но сначала требуется получить оценку того, как долго эта задача будет решаться.

Стоит отметить, что компании, с которыми я говорил, были разными по размеру. Одна из них — известный бренд и лидер в Восточной Европе. Я написал менеджеру по продажам, и со мной обещали связаться. В течение недели я не получил ответа, написал им еще раз, и мне еще раз ответили, что точно со мной свяжутся. Не связались. Ну и ладно!

Читать далее

Загрузка классов в Java. Теория

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


Одной из основных особенностей платформы Java является модель динамической загрузки классов, которая позволяет загружать исполняемый код в JRE не перезагружая основое приложение. Такая особенность широко используется в серверах приложений, получивших последнее время высокую популярность.

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

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

Выполнение запланированных заданий в Spring Boot

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

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

В этой статье мы покажем, как настраивать и запускать запланированные задания в приложениях Spring Boot.

Читать далее

Обзор Spring-компонентов. Часть 2 – Spring Cloud

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

В обзоре собраны краткие описания каждого компонента экосистемы, чтобы дать понимание – как выглядит мир Spring, и ориентиры – что из этого стоит изучить глубже и применять в проекте.

Читать далее

Всё о Keycloak: зачем нужен, кому подходит и какие преимущества даёт

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

14 марта в Слёрм стартует курс «Безопасность проекта: аутентификация в Keycloak». Мы пообщались с его автором Виктором Поповым, техлидом DevOps-команды дирекции больших данных в X5 Group. Он рассказал, какие задачи помогает решать инструмент и кто его выбирает — стартапы или энтерпрайз. А также поделился мнением о перспективах Keycloak и о том, даёт ли умение работать с ним карьерные преимущества.

Читать далее

Lombok. Полное руководство

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

Здесь изложен необходимый минимум информацию, которую нужно изучить, если хочешь приступить к использованию проекта Lombok. Рассмотрим, как интегрировать его в вашу IDE и использовать, чтобы сократить объем шаблонного кода.  

Java – отличный язык, только многословный. Возможно, вам придется писать много кода, чтобы достичь даже самых простых целей. Кроме того, в Java определенно присутствует повторяющийся код, например, геттеры и сеттеры. Поэтому у вас получаются огромные объемы повторяющегося и необязательного кода. Мало того, что такой код не добавляет ничего нового в бизнес-логику вашего приложения, так и писать его долго и скучно. Именно поэтому следует переходить к использованию библиотек и инструментов – они помогают повысить продуктивность и избежать этой рутины. Именно здесь в игру вступает Lombok!

Это библиотека Java, в которой предоставляется ряд аннотаций, направленных на исключение именно того кода Java, о котором известно, что он часто становится повторяющимся и/или шаблонным. Проект Lombok включается прямо в процесс сборки. Затем Lombok автоматически сгенерирует для Java байт-код, который вставляет в файлы .class, необходимые для реализации желаемого поведения, в зависимости от используемых вами аннотаций. Следовательно, каждая аннотация, предлагаемая в проекте Lombok, позволяет частично обойтись без написания методов и логики, без которых вы хотели бы обойтись. Речь о конструкторах, равенствах и функциях хеш-кода. Так вы сможете сэкономить массу времени и сосредоточиться на бизнес-логике вашего проекта. Кроме того, вы сможете держать базу кода сравнительно компактной, чистой, удобной для чтения и поддержки.

Читать далее

Тюрьма, состоящая из одиноких мужчин

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели36K

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

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

Для обсуждения мужского одиночества, я пригласил в себе в студию Никсель – яркую представительницу феминистического движения. Но не ту, настоящую Никсель, известную своей защитой прав женщин и сексуальных меньшинств, а Никсель вымышленную, персонажа собственного фантастического романа «Записки I-тетрамино».

Читать далее

Как физические упражнения улучшают когнитивные способности и здоровье мозга в целом

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


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

Также, вероятно, никто не будет спорить с тем, что регулярно упражняя мозг, мы повышаем его когнитивный резерв, формируем новые и упрочняем старые нейронные связи.

Однако поскольку мозг является неотъемлемой частью человеческого организма, физические упражнения также улучшают его когнитивные способности. Пользу упражнений для мозга можно конкретизировать, и разбить на пять категорий:

  1. Улучшение работы мозга и памяти.
  2. Улучшение и защита мыслительных процессов.
  3. Повышение концентрации.
  4. Уменьшение стресса, депрессии и беспокойства.
  5. Улучшение качества сна.


Физические упражнения несут в себе физиологические преимущества как для тела, так и для мозга. Упражнения укрепляют память и улучшают качество мыслительных процессов – как прямо, так и косвенно.
Читать дальше →

Информация

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

Специализация

Бэкенд разработчик