Книги для программистов
55.1K subscribers
1.36K photos
283 videos
24 files
1.23K links
Книги по программированию, библиотека электронных книг для разработчиков.


По всем вопросам @evgenycarter

РКН clck.ru/3Ko9cz
Download Telegram
Forwarded from Node JS
Память в браузерах и в Node.js: ограничения, утечки и нестандартные оптимизации

Интро: почему я написал эту статью

Меня зовут Виктор, я разрабатываю страницу результатов поиска Яндекса. Несмотря на внешнюю простоту, поисковая выдача — сложная штука: на каждый запрос генерируется своя уникальная страница, на которой в зависимости от запроса может присутствовать блок Картинок, Карты, Переводчик, видеоплеер и многие другие компоненты. Все они должны запускаться и работать в памяти обычных бюджетных телефонов, которые использует большинство наших пользователей. Браузерам должно хватать ресурсов, чтобы пользователь не видел вот такого.

✍️ @nodejs_lib
👍10💩1
Forwarded from React
React Hooks: useState

Хук useState() предназначен для управления состоянием компонента. Данная функция возвращает пару геттер/сеттер - значение начального состояния и функцию для обновления этого значения. Функцию имеет следующую сигнатуру: const [value, setValue] = useState(defaultValue).

Обновление одного состояния

const UpdateState = () => {
const [age, setAge] = useState(19)

const handleClick = () => setAge(age + 1)

return (
<>
<p>Мне {age} лет.</p>
<button onClick={handleClick}>Стать старше!</button>
</>
)
}



Обновление нескольких состояний

const MultipleStates = () => {
const [age, setAge] = useState(19)
const [num, setNum] = useState(1)

const handleAge = () => setAge(age + 1)
const handleNum = () => setNum(num + 1)

return (
<>
<p>Мне {age} лет.</p>
<p>У меня {num} братьев и сестер.</p>
<button onClick={handleAge}>Стать старше!</button>
<button onClick={handleNum}>Больше братьев и сестер!</button>
</>
)
}



Обновление объекта состояния

const StateObject = () => {
const [state, setState] = useState({ age: 19, num: 1 })

const handleClick = (val) =>
setState({
...state,
[val]: state[val] + 1
})

const { age, num } = state
return (
<>
<p>Мне {age} лет.</p>
<p>У меня {num} братьев и сестер.</p>
<button onClick={() => handleClick('age')}>Стать старше!</button>
<button onClick={() => handleClick('num')}>
Больше братьев и сестер!
</button>
</>
)
}



Счетчик

const CounterState = () => {
const [count, setCount] = useState(0)

return (
<>
<p>Значение счетчика: {count}.</p>
<button onClick={() => setCount(0)}>Сбросить</button>
<button onClick={() => setCount((prevVal) => prevVal + 1)}>
Увеличить (+)
</button>
<button onClick={() => setCount((prevVal) => prevVal - 1)}>
Уменьшить (-)
</button>
</>
)
}



Более сложный пример

const Profile = () => {
const [profile, setProfile] = useState({
firstName: 'Иван',
lastName: 'Петров'
})

const handleChange = ({ target: { value, name } }) => {
setProfile({ ...profile, [name]: value })
}

const { firstName, lastName } = profile
return (
<>
<h1>Профиль</h1>
<form>
<input
type='text'
value={firstName}
onChange={handleChange}
name='firstName'
/> <br />
<input
type='text'
value={lastName}
onChange={handleChange}
name='lastName'
/>
</form>
<p>
Имя: {firstName} <br />
Фамилия: {lastName}
</p>
</>
)
}

✍️ @React_lib
👍14👎1🤯1
Как в С++ обрабатывать ошибки в конструкторах без исключений?

Преимущества использования исключений сомнительны, но мои претензии к ним не в этом. Исключения — экстраординарный инструмент, которые делает код более непонятным и запутанным. А прямую локальную обработку — слишком пространной. Исключения стали для меня худшим средством обработки ошибок. Печально, что создание объектов в С++ основано на их применении. Далее

#cpp #programming

👉 @cpp_lib
👎11👍8
Веб-приложение на Golang для чтения и записи данных в JSON файл

Golang предлагает мощные инструменты для создания веб-серверов.В Golang вы можете создавать веб-серверы, с разными адресами, разными типами запросов и разными типами контента. Для веб-разработки основными пакетами стандартной библиотеки являются net/http и html/template. Используя эти два пакета, вы можете создавать полнофункциональные веб-приложения.

👉 @golang_lib
👍5
Web Security for Developers
Автор: Malcolm McDonald (2020)

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

Во время чтения книги вы:
✔️Изучите защиту от атак с использованием SQL-инъекций, вредоносного кода JavaScript и подделки межсайтовых запросов;
✔️Добавите аутентификацию и контроль доступа к форме для защиты учетных записей;
✔️Сможете блокировать учетные записи пользователей, чтобы предотвратить атаки, основанные на угадывании паролей, краже сеансов и т.д.;
✔️Внедрите шифрование;
✔️Научитесь управлению уязвимостями в устаревшем коде.

Скачать книгу
👍11
Forwarded from React
Пример использования useDeferredValue

Дэн Абрамов поделился примером использования хука useDeferredValue из React 18:

function Form() {
const [state, setState] = useState({ value: "hello" })
const deferredState = useDeferredValue(state)
// ...


Используйте deferredState в компонентах, рендер которых не срочный: например, вычисление сложной логики. Это поведение напоминает debounce. Использовать state напрямую можно в элементах пользовательского ввода, например, input.

✍️ @React_lib
👍7💩3🔥1
Deep Learning Interviews
Автор: Shlomo Kashani, Amir Ivry (2020)

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

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

Скачать книгу
👍61
Forwarded from BigData
This media is not supported in your browser
VIEW IN TELEGRAM
EigenGAN

TensorFlow implementation of EigenGAN: Layer-Wise Eigen-Learning for GANs

Github: https://github.com/LynnHo/EigenGAN-Tensorflow

Paper: https://arxiv.org/abs/2104.12476v1

👉 @bigdata_1
👍7👎2
Forwarded from Node JS
Как мы преобразовали нашу библиотеку Node.js в Deno (с помощью Deno)

https://www.edgedb.com/blog/how-we-converted-our-node-js-library-to-deno-using-deno

✍️ @nodejs_lib
💩3👎2👍1
Forwarded from Node JS
Создание многопользовательской игры с использованием Socket. io при помощи NodeJS и React

Это руководство детально объясняет, как ПРАВИЛЬНО создать пошаговую многопользовательскую игру при помощи Socket. io и React. Здесь будет рассмотрено как создание серверной части проекта при помощи ExpressJS, так и клиентской с помощью ReactJS.

✍️ @nodejs_lib
👍6
Структурированное логирование JSON в приложениях на Golang

Что такое «структурированное логирование»?

Ведение журнала, или логирование — очень важная часть программного обеспечения. Логи нужны для отслеживания того, что происходит в системах, и по мере роста последних важность логов только увеличивается.

Есть много отличных инструментов для парсинга логов. Мне, например, очень нравится ElasticSearch. Но большинство из них рассчитано на структурированные логи, а не на двоичные большие объекты с обычным текстом (и не факт, что эти объекты записаны в нужном формате). Далее

👉 @golang_lib
👍9
This media is not supported in your browser
VIEW IN TELEGRAM
​Pyxel - это игровой движок для Python в стиле ретро.


Благодаря своей простоте, вдохновленной старыми игровыми консолями (например, палитра состоит всего из 16 цветов, и только 4 звука могут быть проиграны одновременно), вы можете легко создавать игры в стиле пиксель-арт.

#GitHub | #Cpp #engine

👉 @Githublib
👍24👎2🔥2
Forwarded from Node JS
События в Node.js

Подавляющее большинство функционала Node.js применяет асинхронную событийную архитектуру, которая использует специальные объекты - эмиттеры для генерации различных событий, которые обрабатываются специальными функциями - обработчиками или слушателями событий. Все объекты, которые генерируют события, представляют экземпляры класса EventEmitter. Далее

✍️ @nodejs_lib
👍8
Introduction to Algorithms
Авторы: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein (2016)

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

В книге рассматриваются такие темы, как:
✔️Деревья ванн Эмде Боаса;
✔️Многопоточные алгоритмы;
✔️Динамическое программирование;
✔️Жадные алгоритмы.
Также в последнем издании было добавлено множество новых упражнений и задач.

Скачать книгу
👍13🤯2
How Computers Really Work: A Hands-On Guide to the Inner Workings of the Machine
Автор: Matthew Justice (2020)

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

Во время чтения книги вы:
✔️Создадите полусумматор, чтобы увидеть, как логические операции могут быть объединены для выполнения полезных функций;
✔️Напишете программу на языке ассемблера, затем проверите полученный машинный код;
✔️Научитесь использовать отладчик, дизассемблировать код и взламывать программу, чтобы изменить ее поведение без изменения исходного кода;
✔️Используете сканер портов, чтобы узнать, какие интернет-порты открыты на вашем компьютере;
✔️Запустите свой собственный сервер и пройдете интенсивный курс о том, как работает интернет.

Скачать книгу
👍162
This media is not supported in your browser
VIEW IN TELEGRAM
Eurorack-cpu – Процессор, реализованный в модульном синтезаторе.

Сам процессор работает в симуляторе VCV Rack eurorack - это виртуальная модульная синтезаторная платформа для Windows/Mac/Linux, которая имитирует модули Eurorack в дополнение к оригинальным модулям, выходящим за рамки аппаратного обеспечения

#GitHub | #Interesting #Processor

👉 @Githublib
🔥7👍4
Python for Marketing Research and Analytics
Авторы: Jason S. Schwarz, Chris Chapman, Elea McDonnell Feit (2020)

В книге представлен практический подход к использованию Python для решения реальных маркетинговых задач, структурированный по ключевым тематическим областям. Авторы предоставили все аналитические материалы в записных книжках Colab, которые включают код, рисунки, таблицы и аннотации в одном файле. Блокноты с кодами для каждой главы можно копировать, адаптировать и повторно использовать в собственном анализе. В книге также рассказывается о работе с моделями машинного обучения с использованием пакета sklearn в контексте маркетинговых исследований.

Скачать книгу
👍9👎3🤩2
This media is not supported in your browser
VIEW IN TELEGRAM
Как заставить интерпретатор Ruby выполнить программу, написанную на естественном языке

Многие языки программирования позиционируют себя как почти естественные. Ruby не отстает и позиционирует себя как "natural to read and easy to write". Однако, первый же гайд по Rails (да, Ruby это всё еще Rails) предложит вам что–то такое:

class UserController < ApplicationController
end


Подробнее

@ruby_lib
👍3👎3
A Common-Sense Guide to Data Structures and Algorithms
Автор: Jay Wengrow (2020)

Алгоритмы и структуры данных - это гораздо больше, чем абстрактные концепции. Их освоение позволяет писать код, который работает быстрее и эффективнее, что особенно важно для современных веб-приложений и мобильных приложений. Данное новое и исправленное издание включает в себя новые главы о рекурсии, динамическом программировании и использовании Big O нотации в повседневной работе.

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

Скачать книгу
👍15