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.
Ну и еще одно self-hosted решение Focalboard (https://www.focalboard.com/), которое является альтернативой для таких продуктов как Trello и Asana
#go #trello #selfhosted
#go #trello #selfhosted
В последнее время я увлёкся изучение вопроса ИБ и чтобы лучше разобраться в теме инжекта кода написал статью о том как это сделать в Linux.
#go #c #security #ld_preload
https://www.swe-notes.ru/post/ld-preload-golang/
#go #c #security #ld_preload
https://www.swe-notes.ru/post/ld-preload-golang/
www.swe-notes.ru
Замещение функций через LD_PRELOAD · Заметки разработчика
В статье описан способ замещения функций в готовых библиотеках c помощью С или Go
Forwarded from Кавычка (Bo0oM)
Вчера в официальном репозитории PHP на Github появилось два бэкдора, позволяющие выполнять произвольный код.
Что произошло - неясно. Однако разработчики сообщают о возможной компрометации git.php.net.
Дело точно не во взломанных аккунтах разработчиков. А user-agent “zerodium” и “sold to zerodium, mid 2017”, кагбе, намекает
Что произошло - неясно. Однако разработчики сообщают о возможной компрометации git.php.net.
Дело точно не во взломанных аккунтах разработчиков. А user-agent “zerodium” и “sold to zerodium, mid 2017”, кагбе, намекает
Forwarded from addmeto (Grigory Bakunov)
Допрыгались. Zoom больше не продаёт свои услуги российским государственным предприятиям. В первую очередь пострадают образовательные учреждения конечно. // Подписаться на канал «42 секунды» можно через @fortytwo_Invite_bot
Forwarded from Cybersecgame (Oleg)
По техническим причинам ассортимент сырного отдела уменьшен. Приносим извинения за доставленные неудобства
Ransomware через уязвимость в Exchange пробрался в сеть логистической компании Bakker, и крупнейшая голландская сеть супермаркетов Albert Heijn осталась... без сыра. То есть вообще — уже десять дней там пустые полки. Хотя, вроде, наконец проблема решилась, и сыр скоро снова поступит.
Ransomware через уязвимость в Exchange пробрался в сеть логистической компании Bakker, и крупнейшая голландская сеть супермаркетов Albert Heijn осталась... без сыра. То есть вообще — уже десять дней там пустые полки. Хотя, вроде, наконец проблема решилась, и сыр скоро снова поступит.
Forwarded from Maxim Smirnov
Закипает рынок ИТ-труда. В FB-ке об этом пишут, да и вот здесь: https://www.forbes.ru/karera-i-svoy-biznes/426519-idet-zhestkiy-hanting-pochemu-v-rossii-rezko-vyrosli-spros-na-it
Forbes.ru
«Идет жесткий хантинг»: почему в России резко выросли спрос на IT-специалистов и их зарплаты
В начале 2021 года в IT-индустрии возник явный дисбаланс спроса и предложения на рынке труда. Разработчики, дата-аналитики и интернет-маркетологи стали гораздо востребованнее в результате пандемии, когда бизнес стал массово мигрировать в онлайн. Forbes рассказывает…
Неплохая статья про то, что такое CORS и как это работает. Будет полезно для новичков.
#cors #web #security
https://ieftimov.com/post/deep-dive-cors-history-how-it-works-best-practices/
#cors #web #security
https://ieftimov.com/post/deep-dive-cors-history-how-it-works-best-practices/
Ilija Eftimov 👨🚀
Deep dive in CORS: History, how it works, and best practices
Learn the history and evolution of same-origin policy and CORS, understand CORS and the different types of cross-origin access in depth, and learn (some) best practices.
Хорошее описание набора уязвимостей Bluetooth в ядре Linux, которые могут позволить выполнить произвольный код с привелегиями ядра.
#security #linux #bluetooth #rce
https://google.github.io/security-research/pocs/linux/bleedingtooth/writeup.html
#security #linux #bluetooth #rce
https://google.github.io/security-research/pocs/linux/bleedingtooth/writeup.html
security-research
BleedingTooth: Linux Bluetooth Zero-Click Remote Code Execution
This project hosts security advisories and their accompanying proof-of-concepts related to research conducted at Google which impact non-Google owned code.