«Minimum Viable Architecture»
A presentation by Randy Soup, Chief Architect at Ebay, introducing this idea based on his experiences and evolutions of famous technology giants such as Amazon, Google and so on.
Watch This Presentation at YouTube
#SoftwareArchitect
#Microservices
#AgileDevelopment
@embedded
A presentation by Randy Soup, Chief Architect at Ebay, introducing this idea based on his experiences and evolutions of famous technology giants such as Amazon, Google and so on.
Watch This Presentation at YouTube
#SoftwareArchitect
#Microservices
#AgileDevelopment
@embedded
Embedded Academy
📊 #نمودار؛ ✅ هزینه رفع باگ در مراحل مختلف چرخه توسعه محصول + درصد تولید باگ در مراحل مختلف - همونطور که پیداست هزینه رفع باگ در مرحله release (تحویل به مشتری) ۶۴۰ برابر مرحله #coding هست. /کدنویس وظیفه #Debugging @embedded
Gall's Law
A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.
قانون گال:
یک سیستم پیچیده که کار میکند، تکامل یافته سیستم ساده است که کار میکرده. سیستم پیچیدهای که از ابتدا طراحی شود، هیچگاه کار نمیکند و نمیتوان عیبیابی کرد. شما مجبورید با سیستم ساده کارا شروع کنید.
from Gall's book Systemantics: How Systems Really Work and How They Fail
#SystemDesign
@embedded
A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.
قانون گال:
یک سیستم پیچیده که کار میکند، تکامل یافته سیستم ساده است که کار میکرده. سیستم پیچیدهای که از ابتدا طراحی شود، هیچگاه کار نمیکند و نمیتوان عیبیابی کرد. شما مجبورید با سیستم ساده کارا شروع کنید.
from Gall's book Systemantics: How Systems Really Work and How They Fail
#SystemDesign
@embedded
Forwarded from Nira Admin
🤔 خیلیا میپرسن بهترین آموزشگاه که تضمینی آموزش میده کجاس ؟
🔘ما نیرا سیستم رو به شما معرفی می کنیم :
@nirasystem
‼️ بهترین دوره ها و کارگاه های آموزشی برق الکترونیک
🔸 آموزش مهارت های مورد نیاز بازارکار
🔹 آموزش کاملا عملی و پروژه محور
🔸کارآموزی در واحدهای فنی نیرا
🔹معرفی به واحدهای صنعتی برای استخدام
🎯 آینده را اکنون بساز|نیراسیستم
عضویت 👇👇👇
@nirasystem
مشاهده دوره های آموزشی:
www.nirasystem.com
🔘ما نیرا سیستم رو به شما معرفی می کنیم :
@nirasystem
‼️ بهترین دوره ها و کارگاه های آموزشی برق الکترونیک
🔸 آموزش مهارت های مورد نیاز بازارکار
🔹 آموزش کاملا عملی و پروژه محور
🔸کارآموزی در واحدهای فنی نیرا
🔹معرفی به واحدهای صنعتی برای استخدام
🎯 آینده را اکنون بساز|نیراسیستم
عضویت 👇👇👇
@nirasystem
مشاهده دوره های آموزشی:
www.nirasystem.com
Forwarded from Embedded Academy
✅ Where Complexity Fails Us
✍ Jack Ganssle
Engineering is about numbers. Do you specify a ±5% resistor or ±1%? Do the math! Will all of the signals arrive at the latch at the proper time? A proper analysis will reveal the truth. How hot will that part get? Crunch the numbers and pick the proper heat sink.
Alas, software engineering has been somewhat resistant to such analysis. Software development fads seem more prominent than any sort of careful analysis. Certainly, in the popular press "coding"1 is depicted as an arcane art practiced by gurus using ideas unfathomable to "normal" people. Measure stuff? Do engineering analysis? No, that will crowd our style, eliminate creativity, and demystify our work.
I do think, though, that in too many cases we've abdicated our responsibility as engineers to use numbers where we can. There are things we can and must measure.
One example is complexity, most commonly expressed via the McCabe Cyclomatic Complexity metric. A fancy term, it merely means the number of paths through a function. One that consists of nothing more than 20 assignment statements can be traversed exactly one way, so has a complexity of one. Add a simple if and there are now two directions the code can flow, so the complexity is two.
There are many reasons to measure complexity, not the least is to get a numerical view of the function's risk (spoiler: under 10 is considered low risk. Over 50: untestable.)
To me, a more important fallout is that complexity tells us, in a provably-correct manner, the minimum number of tests we must perform on a function to guarantee that it works. Run five tests against a function with a complexity of ten, and, for sure, the code is not completely tested. You haven't done your job.
What a stunning result! Instead of testing to exhaustion or boredom we can quantify our tests.
Alas, though, it only gives us the minimum number of required tests. The max could be a much bigger number.
Consider:
if ((a && b) (c && d) (e && f))...
Given that there's only two paths (the if is taken or not taken) this statement has a complexity of 2. But it is composed of a lot of elements, each of which will affect the outcome. A proper test suite needs a lot more than two tests. Here, complexity has let us down; the metric tells us nothing about how many tests to run.
Thus, we need additional strategies. One of the most effective is modified condition/decision coverage (MC/DC). Another fancy term, it means making sure every possible element in a statement is tested to ensure it has an affect on the outcome.
Today some tools offer code coverage: they monitor the execution of your program and tag every statement that has been executed, so you can evaluate your testing. The best offer MC/DC coverage testing. It's required by the most stringent of the avionics standards (DO-178C Level A), which is partly why airplanes, which are basically flying computers, aren't raining out of the sky.
Use complexity metrics to quantify your code's quality and testing, but recognize its limitations. Augment it with coverage tools.
Footnotes:
1 I despise the word "coding." Historically coding was the most dreary of all activities: the replacement of plain text by encrypted cipher. Low-level functionaries, or even machines, did the work. Maybe "coding" is an appropriate term for script kiddies or HTML taggers. If we are coders you can be certain that in very short order some AI will replace us. No, we in the firmware world practice2 software engineering: implementing complex ideas in software using the precepts of careful engineering. These include analysis, design, negotiating with customers, implementation and measurements of our implementations.
2 Bob Dylan got it right: "he not busy being born is busy dying". We should be forever practicing software engineering. Practice: "perform (an activity) or exercise (a skill) repeatedly or regularly in order to improve or maintain one's proficiency." Unless we're constantly striving to improve we'll be dinosaurs awaiting the comet of our destruction.
@embedded
✍ Jack Ganssle
Engineering is about numbers. Do you specify a ±5% resistor or ±1%? Do the math! Will all of the signals arrive at the latch at the proper time? A proper analysis will reveal the truth. How hot will that part get? Crunch the numbers and pick the proper heat sink.
Alas, software engineering has been somewhat resistant to such analysis. Software development fads seem more prominent than any sort of careful analysis. Certainly, in the popular press "coding"1 is depicted as an arcane art practiced by gurus using ideas unfathomable to "normal" people. Measure stuff? Do engineering analysis? No, that will crowd our style, eliminate creativity, and demystify our work.
I do think, though, that in too many cases we've abdicated our responsibility as engineers to use numbers where we can. There are things we can and must measure.
One example is complexity, most commonly expressed via the McCabe Cyclomatic Complexity metric. A fancy term, it merely means the number of paths through a function. One that consists of nothing more than 20 assignment statements can be traversed exactly one way, so has a complexity of one. Add a simple if and there are now two directions the code can flow, so the complexity is two.
There are many reasons to measure complexity, not the least is to get a numerical view of the function's risk (spoiler: under 10 is considered low risk. Over 50: untestable.)
To me, a more important fallout is that complexity tells us, in a provably-correct manner, the minimum number of tests we must perform on a function to guarantee that it works. Run five tests against a function with a complexity of ten, and, for sure, the code is not completely tested. You haven't done your job.
What a stunning result! Instead of testing to exhaustion or boredom we can quantify our tests.
Alas, though, it only gives us the minimum number of required tests. The max could be a much bigger number.
Consider:
if ((a && b)
Given that there's only two paths (the if is taken or not taken) this statement has a complexity of 2. But it is composed of a lot of elements, each of which will affect the outcome. A proper test suite needs a lot more than two tests. Here, complexity has let us down; the metric tells us nothing about how many tests to run.
Thus, we need additional strategies. One of the most effective is modified condition/decision coverage (MC/DC). Another fancy term, it means making sure every possible element in a statement is tested to ensure it has an affect on the outcome.
Today some tools offer code coverage: they monitor the execution of your program and tag every statement that has been executed, so you can evaluate your testing. The best offer MC/DC coverage testing. It's required by the most stringent of the avionics standards (DO-178C Level A), which is partly why airplanes, which are basically flying computers, aren't raining out of the sky.
Use complexity metrics to quantify your code's quality and testing, but recognize its limitations. Augment it with coverage tools.
Footnotes:
1 I despise the word "coding." Historically coding was the most dreary of all activities: the replacement of plain text by encrypted cipher. Low-level functionaries, or even machines, did the work. Maybe "coding" is an appropriate term for script kiddies or HTML taggers. If we are coders you can be certain that in very short order some AI will replace us. No, we in the firmware world practice2 software engineering: implementing complex ideas in software using the precepts of careful engineering. These include analysis, design, negotiating with customers, implementation and measurements of our implementations.
2 Bob Dylan got it right: "he not busy being born is busy dying". We should be forever practicing software engineering. Practice: "perform (an activity) or exercise (a skill) repeatedly or regularly in order to improve or maintain one's proficiency." Unless we're constantly striving to improve we'll be dinosaurs awaiting the comet of our destruction.
@embedded
Embedded Academy pinned «📌 Embedded DevOps ✅ استفاده از DevOps در توسعه سامانه نهفته در تعریف عملیات توسعه (DevOps) میتوان گفت یک “چرخه عمر توسعه عملیات قابل اعتماد” است. این فرایند شامل ادغام توسعه و چندین فعالیت پس از توسعه مانند امنیت و کنترل، تضمین کیفیت (آزمایش) و استقرار عملیات…»
Embedded Academy
🔸 #تازه_ها ؛ محققان Google AI ، با استفاده از #یادگیری_عمیق قادر خواهند بود با استفاده از اسکن رتینا (قسمتی از چشم) حمله قلبی را پیش بینی کنند. www.nature.com/articles/s41551-018-0195-0 @embedded
Media is too big
VIEW IN TELEGRAM
Introducing Pika 1.0, the idea-to-video platform that brings your creativity to life.
Create and edit your videos with AI.
پلتفرم هوش مصنوعی تبدیل ایده به انیمیشن/ویدیو Pika1.0
پیش از این که توان فنی یا مالی برای تبدیل داستانهای ایرانی نظیر شاهنامه به انیمیشن نبود، امیدواریم با این ابزارها بشود روزی تمام شاهنامه را انیمیشن جذاب تبدیل کرد.
یه جایی تو تیزر، ویدیوی سیاه/سفید مرد اسب سوار رو نشون میده که بد نیست بدونید اون ویدیوی سمبلیک، اولین ویدیوی ضبط شده است.
pika.art/waitlist
#AI
@embedded
Create and edit your videos with AI.
پلتفرم هوش مصنوعی تبدیل ایده به انیمیشن/ویدیو Pika1.0
پیش از این که توان فنی یا مالی برای تبدیل داستانهای ایرانی نظیر شاهنامه به انیمیشن نبود، امیدواریم با این ابزارها بشود روزی تمام شاهنامه را انیمیشن جذاب تبدیل کرد.
یه جایی تو تیزر، ویدیوی سیاه/سفید مرد اسب سوار رو نشون میده که بد نیست بدونید اون ویدیوی سمبلیک، اولین ویدیوی ضبط شده است.
pika.art/waitlist
#AI
@embedded
Embedded Academy
#camera_tutorial; #ToF_Camera:Time-of-Flight (ToF) is a highly accurate distance mapping and 3D imaging technology. -This Video introduces #Basler ToF Camera. 💎 @EmbeddedVision
Automated optical inspection (AOI) is a quality-control process used by manufacturers to detect and identify defects in products. It plays a crucial role in enhancing the efficiency and accuracy of quality control, reducing the likelihood of defects reaching the end consumer.
In this picture shown parts of an AOI System
#MachineVision
@embedded
In this picture shown parts of an AOI System
#MachineVision
@embedded
Embedded Academy
✅ مقایسه الگوریتمهای مرتب سازی 👈 این نمودارها نشان میدهد که #دانش چگونه میتواند سرعت را افزایش و هزینه را کاهش دهد. 🔸 در این نمودارها دادهها بر اساس الگوریتمهای مختلف (Insertion، selection، bubble، ...) مرتبسازی میشوند که از جمله فرآیندهای مهم و پایهای…
📚 grokking algorithms
📖 An illustrated guide for
programmers and other curious people
✏️Aditya Y. Bhargava
This book uses Visualization technique to teach algorithms in an easy way for understanding and keeping in mind for programmers.
آگاهی از الگوریتم خصوصا در برنامهنویسی سیستمهای نهفته و آشنایی با شیوه محاسبه پیچیدگی ضروریاست. الگوریتم و مباحثی نظیر محاسبه هزینه و پیچیدگی از جمله مباحثی است که بسیاری از متخصصان و فعالین این حوزه که عمدتا از رشتههای برق و الکترونیک هستند در دانشگاه درس مرتبط نگذارندهاند.
#Algorithms
@embedded
📖 An illustrated guide for
programmers and other curious people
✏️Aditya Y. Bhargava
This book uses Visualization technique to teach algorithms in an easy way for understanding and keeping in mind for programmers.
آگاهی از الگوریتم خصوصا در برنامهنویسی سیستمهای نهفته و آشنایی با شیوه محاسبه پیچیدگی ضروریاست. الگوریتم و مباحثی نظیر محاسبه هزینه و پیچیدگی از جمله مباحثی است که بسیاری از متخصصان و فعالین این حوزه که عمدتا از رشتههای برق و الکترونیک هستند در دانشگاه درس مرتبط نگذارندهاند.
#Algorithms
@embedded
Embedded Academy
📚 grokking algorithms 📖 An illustrated guide for programmers and other curious people ✏️Aditya Y. Bhargava This book uses Visualization technique to teach algorithms in an easy way for understanding and keeping in mind for programmers. آگاهی از الگوریتم…
@embeddedGrokking_Algorithms_An_illustrated_guide_for_programmers.pdf
24.8 MB
Forwarded from Taksuntech.ir (Sina Asadiyan)
ثبت نام وبینار شرکت اینتل برای معرفی بخش FPGA آن که قرار است از اینتل جدا شود و یک شرکت مستقل به نام PSG Altera تشکیل شود. شرکت آلترا سازنده ی تراشه و نرم افزارهای FPGA چند سال قبل به اینتل پیوسته بود :
Intel has announced its intent to operate its Programmable Solutions Group (PSG) as a standalone business.
Learn about PSG’s transformation into an independent FPGA company and how it will accelerate industry innovation. We’ll unveil new enablement tools and show demos developed to address performance, power, and flexibility challenges for next-generation designs across many markets. We’ll also showcase how Intel Agilex® FPGAs solve AI challenges.
لینک ثبت نام
@Taksuntec
Intel has announced its intent to operate its Programmable Solutions Group (PSG) as a standalone business.
Learn about PSG’s transformation into an independent FPGA company and how it will accelerate industry innovation. We’ll unveil new enablement tools and show demos developed to address performance, power, and flexibility challenges for next-generation designs across many markets. We’ll also showcase how Intel Agilex® FPGAs solve AI challenges.
لینک ثبت نام
@Taksuntec
Embedded Academy
🔺 One-third of all software faults take more than 5000 execution-years to fail. Thus, testing is an inadequate way to insure correctness. 👉 Adams, N.E "Optimizing preventive service of software products", IBM Journal of Research and Development, 28(1), p.…
Please open Telegram to view this post
VIEW IN TELEGRAM
دومین دورهمی گروه کاربران لینوکس تعبیه شده (E-LUG)
🔴موضوع نشست : آشنایی و دانش افزایی در حوزه امبدد لینوکس
🗓️تاریخ : سه شنبه 28 فروردین ماه 1403
🕖 ساعت : 19:00 الی 20:30
📍مکان : تهران، میدان آزادی، اتوبان لشگری، بعد از ایستگاه مترو بیمه، کارخانه نوآوری آزادی، سوله هفتوهشت
حضور برای عموم رایگان میباشد.
❕ظرفیت محدود
ثبت نام رایگان و اطلاعات بیشتر:
https://evnd.co/3mGnO
کانال آپارات:
https://www.aparat.com/E_LUG_IRAN
وب سایت گیتهاب :
https://github.com/elugiran
لینکدین:
www.linkedin.com/in/elugiran
گروه تلگرام:
https://www.tg-me.com/+zPRUDuFxMsNjZmY0
ایمیل E-LUG:
[email protected]
🔴موضوع نشست : آشنایی و دانش افزایی در حوزه امبدد لینوکس
🗓️تاریخ : سه شنبه 28 فروردین ماه 1403
🕖 ساعت : 19:00 الی 20:30
📍مکان : تهران، میدان آزادی، اتوبان لشگری، بعد از ایستگاه مترو بیمه، کارخانه نوآوری آزادی، سوله هفتوهشت
حضور برای عموم رایگان میباشد.
❕ظرفیت محدود
ثبت نام رایگان و اطلاعات بیشتر:
https://evnd.co/3mGnO
کانال آپارات:
https://www.aparat.com/E_LUG_IRAN
وب سایت گیتهاب :
https://github.com/elugiran
لینکدین:
www.linkedin.com/in/elugiran
گروه تلگرام:
https://www.tg-me.com/+zPRUDuFxMsNjZmY0
ایمیل E-LUG:
[email protected]
Embedded Academy
🔺Comparision of C++ and Posix Threads ✍️ B4b4k What is the difference between using the C++ std threads and POSIX threads? API: The API for C++ std threads and POSIX threads are different, with different function names and parameters. The C++ std thread…
One line down, more efficient: Tail Recursion
📌 B4b4k
Recursive functions are known for programmers, but it uses the call stack and has stack overflow risk. but simple change results in a big difference. this change is called "tail recursive". The tail recursion is that kind of recursion in which the recursive call is made at the end of the function.
Consider this formal recursion:
Can Change to the Tail-recursion version as follows:
Note in this version there is no statement after the recursive call.
While computers execute recursive with the help of stacks By using tail recursive instead of formal or head recursive, compilers (such as GCC) can transform this to loop and eliminates stack overflow risk and decrease space complexity from O(n) to O(1).
#Tips #Algorithms #Cpp
@embedded
📌 B4b4k
Recursive functions are known for programmers, but it uses the call stack and has stack overflow risk. but simple change results in a big difference. this change is called "tail recursive". The tail recursion is that kind of recursion in which the recursive call is made at the end of the function.
Consider this formal recursion:
unsigned int fact(unsigned int n)
{
if (n <= 0)
return 1;
return n * fact(n - 1);
}
Can Change to the Tail-recursion version as follows:
unsigned int factTail(unsigned int n, unsigned int a)
{
if (n == 1)
return a;
return factTail(n - 1, n * a);
}
unsigned int fact(unsigned int n) { return factTail(n, 1); }
Note in this version there is no statement after the recursive call.
While computers execute recursive with the help of stacks By using tail recursive instead of formal or head recursive, compilers (such as GCC) can transform this to loop and eliminates stack overflow risk and decrease space complexity from O(n) to O(1).
#Tips #Algorithms #Cpp
@embedded
Embedded Academy
✅ #تاریخچه "سیستم نهفته" ق ۲۷ 📆1972 🎯 فناوری پردازنده ها شرکت #Intel واحد پردازنده مرکزی (#CPU) مدل Intel 8008 را معرفی کرد. 🖼 #تصویر: جلد راهنمای این پردازنده چاپ نوامبر ۱۹۷۳ #History @embedded
Embedded Academy
🔦 #راهکار موقعیت یابی هنگام حوادث هوایی و ... استفاده و تعبیه سیستم هایی نظیر #ELT می باشد نه استفاده از GPS گوشی همراه مسافران! Emergency Locator Transmitter سیستم ارسال موقعیت اضطراری @embedded
رییسجمهور گم شده؟ هلیکوپتر حاملش گم شده؟
پس #ELT کجاست؟
پس #ELT کجاست؟
Telegram
Embedded Academy
🔦 #راهکار موقعیت یابی هنگام حوادث هوایی و ... استفاده و تعبیه سیستم هایی نظیر #ELT می باشد نه استفاده از GPS گوشی همراه مسافران!
Emergency Locator Transmitter
سیستم ارسال موقعیت اضطراری
@embedded
Emergency Locator Transmitter
سیستم ارسال موقعیت اضطراری
@embedded
Forwarded from Embedded Academy
📖 #دانلود_کتاب
🔸 سی پلاس پلاس بلادرنگ!
👈 راهنمای عملی برنامه نویسی بلادرنگ سیستمهای نهفته مبتنی بر میکروکنترلر به زبان ++C با تکیه بر دو ویژگی شی گرایی و Template
📇 #Springer
#embedded
#CPP #Microcontroller
🔸 #دانلود_کتاب های مرتبط با #مهندسی_نهفته را دنبال کنید.👇
@embedded
🔸 سی پلاس پلاس بلادرنگ!
👈 راهنمای عملی برنامه نویسی بلادرنگ سیستمهای نهفته مبتنی بر میکروکنترلر به زبان ++C با تکیه بر دو ویژگی شی گرایی و Template
📇 #Springer
#embedded
#CPP #Microcontroller
🔸 #دانلود_کتاب های مرتبط با #مهندسی_نهفته را دنبال کنید.👇
@embedded
Forwarded from Embedded Academy
@embeddedReal_Time_C_Efficient_Object_Oriented_and_Template_Microcontroller.pdf
4.3 MB
📖 #دانلود_کتاب
🔸 سی پلاس پلاس بلادرنگ!
👈 راهنمای عملی برنامه نویسی بلادرنگ سیستمهای نهفته مبتنی بر میکروکنترلر به زبان ++C با تکیه بر دو ویژگی شی گرایی و Template
📇 #Springer
#embedded
#CPP #Microcontroller
🔸 #دانلود_کتاب های مرتبط با #مهندسی_نهفته را دنبال کنید.👇
@embedded
🔸 سی پلاس پلاس بلادرنگ!
👈 راهنمای عملی برنامه نویسی بلادرنگ سیستمهای نهفته مبتنی بر میکروکنترلر به زبان ++C با تکیه بر دو ویژگی شی گرایی و Template
📇 #Springer
#embedded
#CPP #Microcontroller
🔸 #دانلود_کتاب های مرتبط با #مهندسی_نهفته را دنبال کنید.👇
@embedded