Forwarded from addmeto (Grigory Bakunov)
Боже, это просто чудесная утренняя история: исследователь безопасности заметил в статье сотрудника PayPal упоминание нескольких внутренних пакетов, в т.ч. analytics-paypal. И для эксперимента разместил пакет с таким же названием в публичном репозитории. И что вы думаете, конечно же часть внутреннего софта от PayPal собралась с использованием его пакета, который "стучал на землю" ему в сервера.
Как следствие исследователь провернул совершенно аналогичную атаку на почти все крупные айти компании-гиганты. И если подумать, я знаю где у меня совершенно такие же проблемы, пойду чинить https://www.bleepingcomputer.com/news/security/researcher-hacks-microsoft-apple-more-in-novel-supply-chain-attack/
Как следствие исследователь провернул совершенно аналогичную атаку на почти все крупные айти компании-гиганты. И если подумать, я знаю где у меня совершенно такие же проблемы, пойду чинить https://www.bleepingcomputer.com/news/security/researcher-hacks-microsoft-apple-more-in-novel-supply-chain-attack/
BleepingComputer
Researcher hacks over 35 tech firms in novel supply chain attack
A researcher managed to hack systems of over 35 major tech companies including Microsoft, Apple, PayPal, Shopify, Netflix, Tesla, Yelp, Tesla, and Uber in a novel software supply chain attack. For his ethical hacking research efforts, the researcher has been…
Forwarded from Протестировал
В свежих сборках Chrome появилась возможность записывать сценарии действий пользователя в скрипты на Javasript. То есть открываете нужную страницу в бразере, в DevTools включаете запись действий и делаете что-то на странице обычным образом. По мере выполнения действий браузер генерирует Javascript код, описывающий через API Puppeteer все ваши действия. После этого запись можно остановить, и сохранить полученный код.
https://developers.google.com/web/updates/2021/01/devtools#record
P.S. За конкуренцией в области сокращения расходов на автоматизацию тестирования WebUI становится интересно следить. Помимо встроенной в Chrome поддержки записи сценариев ещё есть: Selenium IDE, который не так давно реанимировали после длительного анабиоза, есть коммерческие сервисы, призванные снизить порог вхождения в автоматизацию тестирования Web UI (например малоизвестные у нас стартапы testRigor или Virtuoso QA) и у них тоже есть расширения для записи сценариев. Про Cucumber и прочие BDD-like решения я даже и не говорю.
https://developers.google.com/web/updates/2021/01/devtools#record
P.S. За конкуренцией в области сокращения расходов на автоматизацию тестирования WebUI становится интересно следить. Помимо встроенной в Chrome поддержки записи сценариев ещё есть: Selenium IDE, который не так давно реанимировали после длительного анабиоза, есть коммерческие сервисы, призванные снизить порог вхождения в автоматизацию тестирования Web UI (например малоизвестные у нас стартапы testRigor или Virtuoso QA) и у них тоже есть расширения для записи сценариев. Про Cucumber и прочие BDD-like решения я даже и не говорю.
Наткнулся сегодня на интересный продукт по анализу данных apache Superset. С первого взгляда, мне показалось что продукт очень похож на Zeppelin, про который я раньше писал, но при этом даёт больше интерактивности при работе с данными..
Как только появиться время ознакомлюсь по подробней и напишу обзорчик
#analitycs #bi #python #olap
https://github.com/apache/superset
Как только появиться время ознакомлюсь по подробней и напишу обзорчик
#analitycs #bi #python #olap
https://github.com/apache/superset
GitHub
GitHub - apache/superset: Apache Superset is a Data Visualization and Data Exploration Platform
Apache Superset is a Data Visualization and Data Exploration Platform - apache/superset
Howto по использованию новую директиву go:embed, с помощью которой можно упаковывать файлы ресурсов в бинарник Go и появится она в Go 1.16.
#go #goembed
https://blog.carlmjohnson.net/post/2021/how-to-use-go-embed/
#go #goembed
https://blog.carlmjohnson.net/post/2021/how-to-use-go-embed/
blog.carlana.net
How to Use //go:embed
A how-to for embedding files and directories in Go applications
Верхнеуровневое введение во flatter и его архитектуру для новичков и тех кто хочет познакомиться в общих чертах с эти фреймворком
#flatter #desktop #mobile #crossplatform
https://thedailyprateek.hashnode.dev/developing-cross-platform-applications-using-flutter
#flatter #desktop #mobile #crossplatform
https://thedailyprateek.hashnode.dev/developing-cross-platform-applications-using-flutter
Forwarded from emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Хорошее руководство для тех, кому предстоит изменять структуру базы данных PostgreSQL с большими массивами данных без downtime:
"PostgreSQL at Scale: Database Schema Changes Without Downtime" by James Coleman
https://medium.com/braintree-product-technology/postgresql-at-scale-database-schema-changes-without-downtime-20d3749ed680
#Database #PostgreSQL
"PostgreSQL at Scale: Database Schema Changes Without Downtime" by James Coleman
https://medium.com/braintree-product-technology/postgresql-at-scale-database-schema-changes-without-downtime-20d3749ed680
#Database #PostgreSQL
Medium
PostgreSQL at Scale: Database Schema Changes Without Downtime
Braintree Payments uses PostgreSQL as its primary datastore. We rely heavily on the data safety and consistency guarantees a traditional…
Forwarded from SDCast
SDCast #129: в гостях Игорь Кузнецов, тимлид в компании «GOST GROUP»
Встречайте 129-й выпуск подкаста. У меня в гостях Игорь Кузнецов, тимлид в компании «GOST GROUP». В этом выпуске мы говорим про консалтинг и продуктовую разработку, как давать первичную оценку проектам по трудозатратам и срокам. Обсуждаем повседневные задачи тимлида, выбор техонологий и стэка, собеседования и текучку кадров. Подискутировали на тему: когда и надо ли брать Open…
https://sdcast.ksdaemon.ru/2021/02/sdcast-129/
Встречайте 129-й выпуск подкаста. У меня в гостях Игорь Кузнецов, тимлид в компании «GOST GROUP». В этом выпуске мы говорим про консалтинг и продуктовую разработку, как давать первичную оценку проектам по трудозатратам и срокам. Обсуждаем повседневные задачи тимлида, выбор техонологий и стэка, собеседования и текучку кадров. Подискутировали на тему: когда и надо ли брать Open…
https://sdcast.ksdaemon.ru/2021/02/sdcast-129/
SDCast
SDCast #129: в гостях Игорь Кузнецов, тимлид в компании «GOST GROUP»
Встречайте 129-й выпуск подкаста. У меня в гостях Игорь Кузнецов, тимлид в компании «GOST GROUP». В этом выпуске мы говорим про консалтинг и продуктовую разработку, как давать первичную оценку проектам по трудозатратам и срокам. Обсуждаем повседневные задачи…
Forwarded from emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
> в любой команде есть какие-то законы, которые придуманы фиг пойми для чего
Вот это основная суть статьи. Это - самая главная проблема в разработке. И это касается не только правил, но и кода:
📝 "A six-month study conducted by IBM found that maintenance programmers “most often said that understanding the original programmer’s intent was the most difficult problem”" - Fjelstad and Hamlen
Самая главная проблема, с которой сталкиваются разработчики - это неясность намерений автора читаемого кода. И именно на устранение этой проблемы должны быть направлены правила. И вопрос не совсем в "читабельности" кода, а, скорее, в управлении сложностью. Кстати, именно поэтому, главное правило - это хорошее именование. К классу с хорошим именем никакая "грязь не прилипнет". Классы с неудачными именами всегда разбухают, потому что никто не понимает зачем они.
Классический пример - из-за неудачного названия микросервиса логика размазывается и дублируется. Из-за дубликатов и плохих названий становится непонятно, в каком именно микросервисе наращивать логику, куда "поселить" новый инкремент логики.
Но даже когда намерения автора понятны, должна быть возможность выполнить задачу в существующем коде, т.е. изменить код автора. Если код представлен лапшой, то придется изменять много кода, изменения будут лавинообразными. По этому поводу хорошо рассуждал Kent Beck: https://xn--r1a.website/emacsway_log/188
Чтобы код не был лапшой, нужно изолировать изменения. Поэтому, второе самое важное правило Software Design - это принцип "Low Coupling & High Cohesion" ( http://wiki.c2.com/?CouplingAndCohesion ), сформированный еще в 1974 году. Главное правило рыбака - не дать запутаться леске. Главное правило программиста - тоже не запутаться в коде.
И, наконец, третье важное правило - чтобы что-то изменить, нужно понять, как оно работает сейчас. А для этого нужно иметь возможность рассмотреть фрагмент программы изолированно, чтобы сложность рассматриваемого фрагмента не превысила ограниченные возможности краткосрочной памяти человека.
https://ru.m.wikipedia.org/wiki/%D0%9C%D0%B0%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE_%D1%81%D0%B5%D0%BC%D1%8C_%D0%BF%D0%BB%D1%8E%D1%81-%D0%BC%D0%B8%D0%BD%D1%83%D1%81_%D0%B4%D0%B2%D0%B0
Именно поэтому Гради Буч и сказал, что архитектура - это многоуровневая система абстракций. Где назначение абстракции - управление сложностью.
> От навязанных необоснованных ограничений мы получаем выгорание.
Тут он говорит то же самое. Объектом критики выступают не сами правила, а отсутствие понимания причин этих правил. Именно поэтому, одной из самых ключевых практик Agile-разработки является Collaborative Development (т.е. методики распространения знаний). Понимание - единственная причина, позволяющая гарантировать соблюдение правил.
Таким образом, цель правил должна сводиться не к "читабельности", а к сохранению линейного (асимптотического) характера роста стоимости изменения кода, чтобы не позволить ему свалиться в экспоненту. И на достижение этой цели должно быть направлено Code Review.
#SoftwareDesing
Вот это основная суть статьи. Это - самая главная проблема в разработке. И это касается не только правил, но и кода:
📝 "A six-month study conducted by IBM found that maintenance programmers “most often said that understanding the original programmer’s intent was the most difficult problem”" - Fjelstad and Hamlen
Самая главная проблема, с которой сталкиваются разработчики - это неясность намерений автора читаемого кода. И именно на устранение этой проблемы должны быть направлены правила. И вопрос не совсем в "читабельности" кода, а, скорее, в управлении сложностью. Кстати, именно поэтому, главное правило - это хорошее именование. К классу с хорошим именем никакая "грязь не прилипнет". Классы с неудачными именами всегда разбухают, потому что никто не понимает зачем они.
Классический пример - из-за неудачного названия микросервиса логика размазывается и дублируется. Из-за дубликатов и плохих названий становится непонятно, в каком именно микросервисе наращивать логику, куда "поселить" новый инкремент логики.
Но даже когда намерения автора понятны, должна быть возможность выполнить задачу в существующем коде, т.е. изменить код автора. Если код представлен лапшой, то придется изменять много кода, изменения будут лавинообразными. По этому поводу хорошо рассуждал Kent Beck: https://xn--r1a.website/emacsway_log/188
Чтобы код не был лапшой, нужно изолировать изменения. Поэтому, второе самое важное правило Software Design - это принцип "Low Coupling & High Cohesion" ( http://wiki.c2.com/?CouplingAndCohesion ), сформированный еще в 1974 году. Главное правило рыбака - не дать запутаться леске. Главное правило программиста - тоже не запутаться в коде.
И, наконец, третье важное правило - чтобы что-то изменить, нужно понять, как оно работает сейчас. А для этого нужно иметь возможность рассмотреть фрагмент программы изолированно, чтобы сложность рассматриваемого фрагмента не превысила ограниченные возможности краткосрочной памяти человека.
https://ru.m.wikipedia.org/wiki/%D0%9C%D0%B0%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE_%D1%81%D0%B5%D0%BC%D1%8C_%D0%BF%D0%BB%D1%8E%D1%81-%D0%BC%D0%B8%D0%BD%D1%83%D1%81_%D0%B4%D0%B2%D0%B0
Именно поэтому Гради Буч и сказал, что архитектура - это многоуровневая система абстракций. Где назначение абстракции - управление сложностью.
> От навязанных необоснованных ограничений мы получаем выгорание.
Тут он говорит то же самое. Объектом критики выступают не сами правила, а отсутствие понимания причин этих правил. Именно поэтому, одной из самых ключевых практик Agile-разработки является Collaborative Development (т.е. методики распространения знаний). Понимание - единственная причина, позволяющая гарантировать соблюдение правил.
Таким образом, цель правил должна сводиться не к "читабельности", а к сохранению линейного (асимптотического) характера роста стоимости изменения кода, чтобы не позволить ему свалиться в экспоненту. И на достижение этой цели должно быть направлено Code Review.
#SoftwareDesing
Telegram
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Это нужно выделить отдельно. Более простого объяснения более важных вещей в IT-индустрии я пока еще не встречал:
📝 "These were elucidated in the mid-70s by Yourdon & Constantine in "Structured Design" https://amzn.to/2GsuXvQ and haven’t changed.
Their argument…
📝 "These were elucidated in the mid-70s by Yourdon & Constantine in "Structured Design" https://amzn.to/2GsuXvQ and haven’t changed.
Their argument…
Forwarded from addmeto (Grigory Bakunov)
Что бы вы понимали, какие последствия бывают у недостатков софта: из-за бага (точнее из-за недоделки) системы сотни осужденных продолжают оставаться за решеткой в Аризонской тюрьме. Невероятно поучительная история https://kjzz.org/content/1660988/whistleblowers-software-bug-keeping-hundreds-inmates-arizona-prisons-beyond-release
KJZZ
Whistleblowers: Software bug keeping hundreds of inmates in Arizona prisons beyond release dates
According to Arizona Department of Corrections whistleblowers, hundreds of incarcerated people who should be eligible for release are being held in prison because the inmate management software cannot interpret current sentencing laws.→ More Arizona Prison…
Статья в которой неплохое сравнение sql и nosql бд с описанием их плюсов и минусов и в каких случаях что лучше использовать... В целом я согласен с описанным в статье
#sql #nosql #mongodb #postgresql
https://m-cacm.acm.org/blogs/blog-cacm/250843-nosql-vs-sql/fulltext
#sql #nosql #mongodb #postgresql
https://m-cacm.acm.org/blogs/blog-cacm/250843-nosql-vs-sql/fulltext
cacm.acm.org
NoSQL vs. SQL
Broadly, NoSQL has an absence of strict schemas for entities/attributes, while SQL rigidly relates/regulates the two.
Хороший обзор базовых retry патnернов, с примерами на питоне
#patterns #retry
https://engineering.mercari.com/en/blog/entry/20210126-retry-pattern-in-microservices/
#patterns #retry
https://engineering.mercari.com/en/blog/entry/20210126-retry-pattern-in-microservices/
Mercari
Retry pattern in microservices
If at first you don’t succeed, try, try again. Then quit. No use being a damn fool about it— W.C. FieldsHi,
Forwarded from emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Один из лучших моих товарищей, широко известный в архитекторских кругах Москвы, запустил новый проект. Я хотел бы обратить внимание на информацию от коллектива проекта:
Мы убеждены, что единица продуктивности - это команда, а не отдельные люди. Мы видим ценность в командах и хотим предложить площадку для команд разработки.
На площадке http://topteams.ru команды публикуют контактную информацию, обезличенные резюме, портфолио, и технологии, на которых специализируются. Мы уже начали привлекать корпоративных заказчиков, которым требуются слаженные команды разработчиков. Сейчас вы можете создать профиль команды и делиться ссылкой с партнерами. Сервис TopTeams бесплатный для команд.
Будем рады видеть вас на площадке TopTeams.
Мы убеждены, что единица продуктивности - это команда, а не отдельные люди. Мы видим ценность в командах и хотим предложить площадку для команд разработки.
На площадке http://topteams.ru команды публикуют контактную информацию, обезличенные резюме, портфолио, и технологии, на которых специализируются. Мы уже начали привлекать корпоративных заказчиков, которым требуются слаженные команды разработчиков. Сейчас вы можете создать профиль команды и делиться ссылкой с партнерами. Сервис TopTeams бесплатный для команд.
Будем рады видеть вас на площадке TopTeams.
Сегодня вышел flutter 2.0 и это прям большое событие, потому что null safety, flutter web и flutter desktop теперь официально в stable.
#flutter
https://medium.com/flutter/whats-new-in-flutter-2-0-fe8e95ecc65
#flutter
https://medium.com/flutter/whats-new-in-flutter-2-0-fe8e95ecc65
Medium
What’s New in Flutter 2.0
Flutter web and Null Safety move to stable, Flutter desktop moves to beta and so much more!
Интересное решение сделать встраиваемую NoSQL бд (на подобии MongoDB) недавно как раз думал над ним для использования в небольших сервисах, а оказывается уже есть...
#NoSQL #MongoDB #golang
https://github.com/256dpi/lungo
#NoSQL #MongoDB #golang
https://github.com/256dpi/lungo
GitHub
GitHub - 256dpi/lungo: A MongoDB compatible embeddable database and toolkit for Go.
A MongoDB compatible embeddable database and toolkit for Go. - 256dpi/lungo
SWE notes
Если вы любитель CLI и часто работаете с json вам может быть полезна следующая статья https://sequoia.makes.software/parsing-json-at-the-cli-a-practical-introduction-to-jq-and-more/ #json #bash #cli #python #jq
Еще одна полезная находка для тех кто часто работает с различными форматами данных и любит CLI. Утилита позволяет делать запросы по структурированным документам таким как XML, CSV, JSON, а также конвертировать их между собой. Кроме того поддерживается работа с БД
#sq #golang #bash #csv #json
https://sq.io
#sq #golang #bash #csv #json
https://sq.io
Не знаю зачем так делать, но вдруг кому-то пригодится работать с Pandas (такая библиотека для работы с данными на python) внутри PostgreSQL
#postgresql #pandas #python
https://blog.crunchydata.com/blog/recommendation_engine_in_postgres_with_pandas_and_python
#postgresql #pandas #python
https://blog.crunchydata.com/blog/recommendation_engine_in_postgres_with_pandas_and_python
Crunchy Data
Building a recommendation engine inside Postgres with Python and Pandas | Crunchy Data Blog
Learn how you can leverage Python and Pandas from directly inside PostgreSQL to build your own recommendation engine.
Для тех кто считает что jsonb в postgresql может заменить монгу, очень рекомендую ознакомиться со статьёй ниже об особенностях его работы и хранения
#postgresql #jsonb
https://scalegrid.io/blog/using-jsonb-in-postgresql-how-to-effectively-store-index-json-data-in-postgresql/
#postgresql #jsonb
https://scalegrid.io/blog/using-jsonb-in-postgresql-how-to-effectively-store-index-json-data-in-postgresql/
ScaleGrid
JSONB PostgreSQL: How To Store & Index JSON Data
In this post, we are going to show you tips and techniques on how to effectively store and index JSON data in PostgreSQL. Learn more about JSONB in Postgres.
Интересная статья на счёт многими любимого SOLID с которой я более согласен, чем нет...
#solid #programming #theory
https://dannorth.net/2021/03/16/cupid-the-back-story/
И в последнем выпуске РАДИО-Т было интересное обсуждение её
https://radio-t.com/p/2021/03/20/podcast-746/
#solid #programming #theory
https://dannorth.net/2021/03/16/cupid-the-back-story/
И в последнем выпуске РАДИО-Т было интересное обсуждение её
https://radio-t.com/p/2021/03/20/podcast-746/
Dan North & Associates Ltd
CUPID—the back story
“If you had to offer some principles for modern software development, which would you choose?” At a recent Extreme Tuesday Club (XTC) virtual meet-up, we were discussing whether the SOLID principles are outdated. A while ago I gave a tongue-in-cheek talk…
Есть такой сервис airtable (https://airtable.com), который представляет из себя облачную бд (читай Excel), так вот теперь появилась вот сегодня нактунался на его self-hosted альтернативу baserow (https://baserow.io)
#airtable #python #selfhosted
#airtable #python #selfhosted
Airtable
Airtable: Build Enterprise-ready AI Workflows, Apps & Agents - Airtable
500,000+ brands use Airtable to enable real-time collaboration, automate repetitive tasks & manual work, and streamline business processes in minutes. Join them.