Как стать автором
Обновить
14
0

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

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

DataStore — CRUD (Create Read Update Delete)

Время на прочтение11 мин
Количество просмотров7.3K

Прощай Redux, MobX, Apollo! Грань между бэкендом и фронтендом сломана! Инновационый шаг эволюции стейт менеджеров.


Одна из самых сложных задачах при разработке веб и мобильных приложений — это синхронизация данных между устройствами и выполнение автономных операции. В идеале, когда устройство находится в автономном режиме, ваши клиенты должны иметь возможность продолжать использовать ваше приложение не только для доступа к данным, но также для их создания и изменения. Когда устройство возвращается в оперативный режим, приложение должно повторно подключиться к бэкэнду, синхронизировать данные и разрешить конфликты, если таковые имеются. Для правильной обработки всех крайних случаев требуется много недифференцированного кода, даже при использовании кэша AWS AppSync SDK на устройстве с автономными мутациями и дельта-синхронизацией.


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


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


Вы можете использовать Amplify DataStore для автономного использования в режиме «только локальный» без учетной записи AWS или предоставить весь бэкэнд с помощью AWS AppSync и Amazon DynamoDB.


DataStore включает в себя Delta Sync с использованием вашего бэкенда GraphQL и несколько стратегий разрешения конфликтов.

Читать дальше →
Всего голосов 12: ↑5 и ↓7-2
Комментарии39

История одного байта

Время на прочтение15 мин
Количество просмотров54K
Предисловие.
Этот рассказ имеет свою длинную историю. Для многих это, возможно, будет махровый баян, но мне кажется он стоит того, что бы его прочитали новые люди.
Во всех источниках, где я встречал его сведения об авторе были просты и незатейливы: Dmitry Galuscenko. Если кто-то может указать сайт или e-mail — напишите в комментариях, я с удовольствием добавлю.
Итак, начнем.


Мне не хватало байта. Всего одного. Да, да. Того самого, что из восьми бит состоит. Что? Hет, я не псих, хотя одному богу известно, сколь тонкой была граница отделявшая меня от этого состояния.
Hо все по порядку
Всего голосов 140: ↑121 и ↓19+102
Комментарии120

Начало работы с MongoDB и Redis на Rust

Время на прочтение13 мин
Количество просмотров11K

В этой статье будет показано как создать Rust бэкэнд, который использует MongoDB, документо-ориентированную БД, для хранения данных и Redis для кэширования, ограничения количества HTTP запросов и нотификаций пользователя. Для большей наглядности созданное приложение также будет предоставлять REST API. В итоге будет получена следующая архитектура:


architecture


MongoDB является хранилищем, в то время как Redis используется для следующего:


Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии13

Пол Грэм: Как работать усердно

Время на прочтение10 мин
Количество просмотров15K
image


к/ф «Одержимость»

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

Я знаю одно: если вы хотите делать великие дела, вам придется очень много работать. В детстве я не был в этом уверен. Школьные задания различались по сложности; не всегда нужно очень много работать, чтобы преуспеть. А кое-что из того, что делали известные взрослые, казалось, делалось почти без усилий. Может быть, есть какой-то способ избежать тяжелой работы с помощью чистого таланта? Теперь я знаю ответ на этот вопрос. Нет.

Причина, по которой некоторые предметы казались мне легкими, заключалась в том, что в моей школе были низкие стандарты. И причина, по которой известные взрослые, казалось, делали что-то легко, — это годы практики. Благодаря годам практики кажется, что мастер выполняет работу легко.
Читать дальше →
Всего голосов 17: ↑11 и ↓6+5
Комментарии20

Ваш язык программирования — отстой

Время на прочтение54 мин
Количество просмотров139K
1 Почему JavaScript отстой
• 1.1 Плохая конструкция
• 1.2 Система типов
• 1.3 Плохие функции
• 1.4 Отсутствующие функции
• 1.5 DOM
2 Почему Lua отстой
3 Почему PHP отстой
• 3.1 Исправлено в поддерживаемых в настоящее время версиях
4 Почему Perl 5 отстой
5 Почему Python отстой
• 5.1 Исправлено в Python 3
6 Почему Ruby отстой
7 Почему Flex/ActionScript отстой
8 Почему скриптовые языки отстой
9 Почему C отстой
10 Почему C++ отстой
11 Почему .NET отстой
12 Почему C# отстой
13 Почему VB.NET отстой
15 Почему Objective-C отстой
16 Почему Java отстой
• 16.1 Синтаксис
• 16.2 Исправлено в Java 7 (2011)
• 16.3 Модель
• 16.4 Библиотека
• 16.5 Обсуждение
17 Почему Backbase отстой
18 Почему XML отстой
19 Почему отстой XSLT/XPath
20 Почему CSS отстой
• 20.1 Исправлено в CSS3
21 Почему Scala отстой
22 Почему Haskell отстой
23 Почему Closure отстой
24 Почему Go отстой
• 24.1 Базовые средства программирования (базовый язык)
• 24.2 Взаимосовместимость
• 24.3 Стандартная библиотека
• 24.4 Набор инструментальных средств
• 24.5 Сообщество
25 Почему Rust отстой
• 25.1 Безопасность
• 25.2 Синтаксис
• 25.3 Конструкция API и система типов
• 25.4 Сообщество
• 25.5 Набор инструментальных средств

Почему JavaScript отстой


Учтите, что некоторые положения относятся не к самому JavaScript, а к программным интерфейсам веб-приложений (https://developer.mozilla.org/en/docs/Web/API).

Плохая конструкция

• Каждый скрипт исполняется в едином глобальном пространстве имён, доступ в которое возможен в браузерах с оконным объектом.
• Camel-регистр никуда не годится:

XMLHttpRequest
HTMLHRElement

Читать дальше →
Всего голосов 314: ↑167 и ↓147+20
Комментарии353

1 CPU 1 Гб – а я хочу мониторинг, как у больших дядей

Время на прочтение14 мин
Количество просмотров54K


Я обожаю читать на хабре статьи про то, как устроены системы больших интернет-компаний. Кластеры SQL-серверов, монг и редисов. Тут у нас кластер ELK собирает трейсинг, там – сборка логов, здесь балансер выдает входящим запросам traceID и можно отслеживать, как запрос ходит по всем нашим микросервисам. Класс. Но, допустим, у вас совсем маленький проект и вы можете себе позволить лишь VPS минимальной конфигурации. Реально ли на ней сделать мониторинг не хуже, чем у больших проектов? Я решил – надо попробовать.
Читать дальше →
Всего голосов 82: ↑80 и ↓2+78
Комментарии82

8 учебных проектов

Время на прочтение3 мин
Количество просмотров144K
«Мастер совершает больше ошибок, чем новичок — попыток»

Предлагаем 8 вариантов проектов, которые можно сделать «по фану», дабы получить реальный опыт разработки.

Проект 1. Клон Trello


image


Клон Trello от Indrek Lasn .

Что вы освоите:

  • Организация маршрутов обработки запросов (Routing).
  • Drag and drop.
  • Как создавать новые объекты (доски, списки, карточки).
  • Обработка и проверка входных данных.
  • Со стороны клиента: как использовать локальное хранилище, как сохранять данные в локальном хранилище, как читать данные из локального хранилища.
  • Со стороны сервера: как использовать базы данных, как сохранять данных в базе, как читать данные из базы.

Тут пример репозитория, сделанного на React+Redux.
Читать дальше →
Всего голосов 36: ↑30 и ↓6+24
Комментарии18

7 вопросов про замыкания в JavaScript

Время на прочтение6 мин
Количество просмотров12K

Каждый разработчик JavaScript должен знать, что такое замыкание (closure). Во время собеседования по кодированию JavaScript есть большая вероятность, что вас спросят о концепции замыкания.

Я составил список из 7 интересных и наиболее сложных вопросов по замыканиям в JavaScript.

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

Развлекайтесь!

Если вам нужно освежить свои знания о замыкании, я рекомендую ознакомится с публикацией A Simple Explanation of JavaScript Closures (Простое объяснение замыканиям в JavaScript).

Содержание

Вопрос 1: Замыкания развязывают твои руки 

Вопрос 2: Утерянные параметры

Вопрос 3: Кто есть кто

Вопрос 4: Хитроумное замыкание

Вопрос 5: Правильное или неправильное сообщение

Вопрос 6: Восстановление инкапсуляции (Restore encapsulation)

Вопрос 7: Умное перемножение

Резюме

Читать далее
Всего голосов 11: ↑7 и ↓4+3
Комментарии2

Новый взгляд на изучение и документирование исходного кода

Время на прочтение3 мин
Количество просмотров27K
TL;DR Привет. Меня зовут Богдан и я изучаю проблемы чтения кода. Я только что закочнил первую рабочую версию «codecrumbs» — визуального инструмента для изучения исходного кода с помощью «хлебных крошек». Гитхаб репозиторий можно посмотреть тут.

image

Проблема


Недавно я проводил опрос о главных проблемах с которыми мы сталкиваемся когда начинаем изучать исходный код большого проекта (если вы ещё не участвовали, то пройти опрос всё ещё можно тут).
Читать дальше →
Всего голосов 74: ↑70 и ↓4+66
Комментарии35

Книга «Предметно-ориентированное проектирование: паттерны, принципы и методы»

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

Предметно-ориентированное проектирование (Domain-Driven Design, DDD) — это процесс тесной увязки программного кода с реалиями предметной области.Благодаря ему добавление в программный продукт новых возможностей по мере его развития становится таким же простым, как и при создании программы с нуля. Эта книга в полной мере соответствует философии DDD и позволяет разработчикам перейти от философских рассуждений к решению практических задач.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии10

21 извлеченный урок за 21 год программирования

Время на прочтение7 мин
Количество просмотров47K


Доброго времени суток, друзья!

7 апреля 2020 года. Сегодня для меня очень важный день. Сегодня исполняется ровно 21 год с того момента, как я начал писать код (делать это профессионально, зарабатывать этим себе на хлеб).

Кажется, что это было только вчера… сегодня я — человек среднего возраста с 21-летним опытом программирования, который прошел через множество перипетий вероломного мира разработки программного обеспечения.

Совершать ошибки — неотъемлемая часть процесса обучения. Часто это выступает критерием успеха. Стремление избегать повторения ошибок должно находиться на первом месте в списке приоритетов разработчика.

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

Карьера разработчика — увлекательное путешествие по освоению удивительного искусства. На этом пути вас ждет множество вызовов, в одних случаях вы будете правы, в других — будете ошибаться. Эта статья посвящена урокам, которые я извлек за довольно продолжительный период. Надеюсь, она пойдет вам на пользу.
Читать дальше →
Всего голосов 69: ↑55 и ↓14+41
Комментарии76

Визуализация промисов и Async/Await

Время на прочтение8 мин
Количество просмотров39K


Доброго времени суток, друзья!

Представляю вашему вниманию перевод статьи «JavaScript Visualized: Promises & Async/Await» автора Lydia Hallie.

Приходилось ли вам сталкиваться с JavaScript кодом, который… работает не так, как ожидается? Когда функции выполняются в произвольном, непредсказуемом порядке, или выполняются с задержкой. Одна из главных задач промисов — упорядочение выполнения функций.

Мое ненасытное любопытство и бессонные ночи окупились сполна — благодаря им я создала несколько анимаций. Пришло время поговорить о промисах: как они работают, почему их следует использовать и как это делается.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии5

Политика общего происхождения и CORS: визуальное руководство

Время на прочтение5 мин
Количество просмотров16K


Доброго времени суток, друзья!

Представляю вашему вниманию перевод статьи «CS Visualized: CORS» автора Lydia Hallie.

Каждому разработчику приходилось сталкиваться с ошибкой Access to fetched has been blocked by CORS policy. Существует несколько способов быстрого решения данной проблемы. Однако, давайте не будем спешить и подробно рассмотрим, что из себя представляет политика CORS.

У нас часто возникает необходимость отобразить данные, находящиеся в другом месте. Прежде чем мы сможем это сделать, браузер должен отправить запрос на сервер, чтобы получить эти данные.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии4

Скрапинг Avito без headless-браузера

Время на прочтение2 мин
Количество просмотров38K

Недавно на хабре вышла статья Скрапинг современных веб-сайтов без headless-браузеров, и в комментариях было высказано мнение, что без headless-браузера не выйдет получить номер телефона из объявления на "авито" или "юле". Хочу это опровергнуть, ниже скрипт на python размером менее 100 строк кода, который успешно парсит "авито" успешно парсит "авито"!

Читать далее
Всего голосов 19: ↑17 и ↓2+15
Комментарии45

Создание самодокументирующегося сервера на Node.JS

Время на прочтение3 мин
Количество просмотров16K

В этой статье описан рецепт по настройке самодокументирующегося сервера на joi, swagger и typescript. Бонусом приведен Gulp-скрипт, который на основе Joi-объектов будет генерировать нам интерфейсы.

Читать далее
Всего голосов 11: ↑10 и ↓1+9
Комментарии10

Сети для начинающего IT-специалиста. Обязательная база

Время на прочтение12 мин
Количество просмотров446K

Примерно 80% из нас, кто заканчивает университет с какой-либо IT-специальностью, в итоге не становится программистом. Многие устраиваются в техническую поддержку, системными администраторами, мастерами по наладке компьютерных устройств, консультантами-продавцами цифровой техники, менеджерами в it-сферу и так далее.


Эта статья как раз для таких 80%, кто только закончил университет с какой-либо IT-специальностью и уже начал мониторить вакансии, например, на должность системного администратора или его помощника, либо выездного инженера в аутсорсинговую фирму, либо в техническую поддержку 1-й/2-й линии.


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


За время своей трудовой деятельности в сфере IT я столкнулся с такой проблемой, что в университетах не дают самую основную базу касательно сетей. С этим я столкнулся сначала сам, когда, после окончания университета, ходил по собеседованиям в 2016 году и не мог ответить на простые (как мне сейчас кажется) вопросы. Тогда мне конечно показалось, что это я прохалтурил и не доучил в университете. Но как оказалось дело в образовательной программе. Так как сейчас, я также сталкиваюсь с данным пробелом знаний, когда обучаю новых сотрудников.


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


Именно поэтому я решил собрать основные темы в одну статью и объяснить их как можно проще «на пальцах».

Читать дальше →
Всего голосов 77: ↑66 и ↓11+55
Комментарии99

Архитектура приложения React Redux

Время на прочтение5 мин
Количество просмотров30K

Предисловие


Это мой первый пост на Хабре, поэтому не судите сильно строго (ну или судите, но конструктивно).

Хотелось бы отметить, что в этом подходе основным преимуществом для меня стало то, что мы четко разграничиваем и делегируем бизнес логику по модулям. Один модуль отвечает за что-то одно и за что-то весьма конкретное. То есть, при таком подходе, в процессе разработки не возникает мысли: «а где мне лучше (правильнее) будет сделать вот это вот?». При таком подходе сразу ясно, где конкретно должна решаться задача/проблема
Читать дальше →
Всего голосов 8: ↑6 и ↓2+4
Комментарии62

«Обратные интервью» или Как вовремя перевернуть доску

Время на прочтение4 мин
Количество просмотров22K

Когда я собеседую на руководящие позиции, я часто применяю "обратные интервью": прошу кандидатов рассказать, что бы они сами спросили на моем месте. Это дает мне полезную информацию и приятно разнообразит процесс. Этот пост о том, как и почему я это делаю.


Что спрашивают маленькие девочки у чеширских котов?

Читать дальше →
Всего голосов 81: ↑75 и ↓6+69
Комментарии141

Как работают IT-архитекторы – наши примеры и задачи

Время на прочтение6 мин
Количество просмотров39K
Архитектор – незаменимый специалист при создании или аудите сложных IT-решений. Его задачи – заложить фундамент проекта, обеспечить гибкость и снизить риски, а в конечном итоге – обеспечить бизнесу быструю разработку и независимость в дальнейшем выборе подрядчиков.

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

Мы в SimbirSoft развиваем собственный архитектурный комитет – в нем уже 54 опытных разработчика. Делимся опытом, чем у нас занимаются архитекторы и на каких проектах они нужны.

Читать дальше →
Всего голосов 11: ↑5 и ↓6-1
Комментарии10

Интуиция как инструмент инженера, или чему нас учит опыт покорителей Севера

Время на прочтение27 мин
Количество просмотров24K
image

Авторские права на фотографию принадлежат "Russian Travel Geek".

«Чтобы попасть на Территорию, вы должны сесть в самолет. Правда, летом вы можете добраться сюда и на пароходе — месячное плавание среди льда и тумана, когда кажется, что мир исчез и существуют лишь железная палуба, перекличка сирен каравана и ваша каюта. Через несколько дней именно в каюте вы и будете проводить почти всё свое время, ибо вам быстро осточертеет блеклая полярная вода, низкое небо и слово „навигация“, которое произносится тысячу раз на дню.… Рейс ваш окончится не на той планете, с которой начался. Вас ожидает прохладный и влажный воздух, черный и желтый пейзаж, если вы прилетели летом, и некая суровая снежная обнаженность, которую трудно передать словами, если вас затащило туда зимой.»
Олег Куваев, роман «Территория», 1978 г.

Чтобы поехать строить свою карьеру на Север, нужно быть сильным. Инфраструктура там и сейчас-то развита не очень, а лет 70 назад путь из Чукотки до Москвы даже на самолёте занимал четверо суток.
Читать дальше →
Всего голосов 52: ↑50 и ↓2+48
Комментарии26

Информация

В рейтинге
Не участвует
Откуда
Краснодарский край, Россия
Зарегистрирован
Активность