Academy and Foundation unixmens | Your skills, Your future
2.29K subscribers
6.66K photos
1.37K videos
1.24K files
6.07K links
@unixmens_support
@yashar_esm
[email protected]
یک کانال علمی تکنولوژی
فلسفه متن باز-گنو/لینوکس-امنیت - اقتصاد
دیجیتال
Technology-driven -بیزینس های مبتنی بر تکنولوژی
Enterprise open source
ارایه دهنده راهکارهای ارتقای سازمانی - فردی - تیمی
Download Telegram
به این ترتیب درواقع ما کد اصلی را مانند قطعات پارل کنار هم قرار می دهیم. هر کدام از این قطعات تست شده اند و احتمال وقوع باگ را در ادامه کار کاهش می دهند. شاید در ابتدا اینگونه به نظر برسد که نوشتن تست برای کد سرعت توسعه را کاهش می دهد شاید در ابتدای کار این حرف درست باشد اما هر چقدر که کار جلوتر می رود دیگر مانند قبل در باتلاقی که توصیف کردم فرو نمی روید و با سرعتی تقریبا ثابت به کار ادامه می دهید. چیزی که در این روش توسعه به شدت محسوس است کاهش میزان debug کردن در حین کار است.
نقش jenkins در این داستان کجاست ؟

حال که نقش تست نرم افزار را درک کردید به سراغ یکی از ابزارهای معروف برای continuous integration به نام jenkins می رویم. این برنامه برای کار تیمی روی یک پروژه درست شده است و بطور اتوماتیک خودش با یک اتفاق خاص (مثلا هر ۲۰ دقیقه یکبار یا با هر بار push کردن کد) تست هایی که برایش به عنوان یک کار (job) تعریف کردیم را اجرا کند و بلافاصله نتیجه را نشان میدهد اگر تست ها fail شدند تمام اطلاعات ذخیره شده و معلوم میشود که با کدام commit بوده که تست fail شده و مشکل را میتوان سریعتر حل کرد مثلا مدیر پروژه میتواند این موضوع را سریعا دیده و اطلاع دهد تا مشکل قبل از بزرگتر شدن حل شود.
نصب jenkins

برای نصب jenkins می توانید به آدرس jenkins.io رفته و متناسب با سیستم عامل خود installer موردنظر خود را دانلود و نصب کنید. همچنین اگر java runtime برروی سیستم شما نصب است می توانید فایل نصب war. را دانلود کنید و با دستور زیر آنرا اجرا کنید:

java -jar <name of file>.war

در دستور بالا به جای <name of the file> نام فایلی را که دانلود کرده اید قرار دهید. (مثلا jenkins.war) بعد از اجرای این دستور در log هایی که در اجرای دستور می آیند شماره پورتی که سرور روی آن اجرا می شوند نمایش داده میشود (معمولا این عدد ۸۰۸۰ است) بعد از اینکه سرور آماده برای کار شد میتوانید در مرورگر ip و port ای که دارید را وارد کنید (اگر local هستید این آدرس localhost:port و اگر برروی سرور این عملیات را انجام دادید server_ip:port را وارد کنید.) پس از انجام مراحل نصب باید چیزی شبیه به تصویر زیر ببینید
این وب اپلیکیشن قسمت های مختلفی دارد مثلا بخش people در منوی سمت چپ افرادی که در سیستم حضور دارند و پروژه های مرتبط با آنها را نمایش می دهد. بخش دیگر new item نام دارد که یکی از اصلی ترین بخش های این نرم افزار است. این بخش برای ایجاد job جدید درست شده. job ها معمولا همان کارهایی هستند که قرار است برای تست کدهای اصلی مان انجام دهیم. مثلا یک job میتواند این باشد که به ازای هر بار push به سرور یک سری تست برروی کدها انجام شود تا اگر تستی fail شد سریعا مشخص شود و سریعا برطرف شود یا حتی میتوان اگر تستی fail شد اجازه push به کاربر داده نشود تا مجبور شود تست ها را pass کند. البته نتیجه این کار را زمانی میتوان مشاهده کرد که تست ها کامل و خوب نوشته شده باشند اگر تست ها ناقص باشند باز هم احتمال وقوع باتلاقی که در ابتدای بحث کردیم وجود دارد !
یک مثال ساده از continuous integration با استفاده از jenkins

برای این که با طرز کار jenkins بهتر آشنا شوید با یک مثال ساده از یک پروژه django بحث را ادامه می دهیم. django یک فریمورک برای ساخت وب سایت است که با زبان برنامه نویسی پایتون (python) نوشته شده است. معمولا وقتی حرف از تست نرم افزار به میان می آید اکثر اوقات منظور unit testing است. به زبان ساده Unit test یعنی تست کردن جزء به جزء سیستم بطور مجزا مثلا یعنی ابنکه به توابع سیستم ورودی های مختلف بدهیم و چک کنیم آیا خروجی های آن با چیزی که انتظار داریم یکسان است یا خیر. در django هم میتوانیم از Unit test ای که خود فریمورک در اختیار ما قرار داده استفاده کنیم تا برنامه خود را تست کنیم. در این مثال میخواهیم کاری کنیم تا بعد از هر بار تغییر در کد هنگام push یکبار تست هایی که برای وب اپلیکیشن نوشتیم اجرا شود و نتیجه را به ما نشان دهد.دقت کنید که مراحل برای تقریبا تمام پروژه های دیگر با هرزبان برنامه نویسی و فریمورکی قابل اجراست ما فقط برای اینکه نتیجه را ملموس تر نشان دهیم با یک پروژه ساده شروع کردیم. مراحل زیر را دنبال کنید:

ابتدا در ضحه اصلی بر روی new item کلیک کنید.
سپس یک نام برای item‌ جدید انتخاب کرده و گزینه free style project را انتخاب کنید و برروی ok کلیک کنید.
در صفحه جدیدی که ایجاد میشود در قسمت Source Code Management گزینه git را انتخاب کنید و تنظیمات مربوط به repository خود را که میخواهید با هر بار push تغییراتش را چک کنید وارد کنید
در قسمت build همین تنظیمات general کدی را که میخواهید به ازای هر بار Push شدن اجرا شود وارد کنید (در django برای اجرای unit test ها باید دستور python manage.py test را اجرا کرد که میتوان در همین قسمت وارد کرد)
پس از ذخیره کردن تنظیمات با هر بار تغییر در کدهای اصلی و push کردن به سرور jenkins کدهای جدید را تست میکند و نتیجه را اعلام میکند که میتوان در صفحه مربوط به item ایجاد شده آن را مشاهده کرد.
ادغام مداوم مهمترین بخش DevOps است که برای ادغام مراحل مختلف DevOps استفاده می شود. Jenkins معروفترین ابزار ادغام مداوم است. Jenkins بر روی سروری نصب می شود که ساخت مرکزی در آن انجام خواهد شد.

گاهی در کنار Jenkins از Hudson نیز نام برده می شود. Hudson ابزار ادغام مداوم مبتنی بر جاوا و متن باز است که توسط Sun Microsystems توسعه یافته و سپس به دست Oracle افتاده است. Oracle پس از مالکیت Sun، یک انشعاب از کد منبع Hudson به نام Jenkins معرفی شد.

ادغام مداوم چیست؟

در واقع Continuous Integration یا ادغام مداوم یک عمل توسعه است که نیاز به توسعه دهندگان دارد تا کد را در یک مخزن مشترک در فواصل منظم ادغام و یکپارچه کنند. این مفهوم به این معنی بود که مشکل پیدا کردن وقایع بعدی در چرخه عمر ساخت را حل کند. یکپارچه سازی مداوم به توسعه دهندگان نیاز دارد تا ساخت های مکرر داشته باشند. هر زمان که یک کد رخ می دهد، یک ساختار باید فعال شود.

ابزار Jenkins چیست؟

در واقع Jenkins یک ابزار نرم افزاری ادغام مداوم است که در زبان برنامه نویسی جاوا برای تست و گزارش دهی بر روی تغییرات جداگانه در یک code base بزرگتر در زمان واقعی نوشته شده است.

این نرم افزار به توسعه دهندگان اجازه می دهد تا به سرعت نقص های موجود در کد پایه را پیدا و رفع کند و تست ساخت آنها را خودکارسازی کند.

در واقع Jenkins برای ساخت و تست پروژه های نرم افزاری استفاده می شود و کار را برای توسعه دهندگان جهت ادغام و یکپارچه سازی مداوم تغییرات در پروژه و ایجاد ساخت برای کاربران را آسان می سازد.

با Jenkins، سازمان ها می توانند فرایند توسعه نرم افزار را از طریق اتوماسیون به سرعت افزایش دهند. Jenkins ادغام فرآیندهای چرخه عمر توسعه هر نوعی را که شامل انواع ساخت، سند، تست، بسته، مرحله، استقرار، تجزیه و تحلیل استاتیک و غیره می شود انجام می دهد.

در واقع Jenkins ادغام مداوم را به کمک پلاگین ها انجام می دهد. اگر می خواهید یک ابزار خاص را ادغام کنید، باید پلاگین هایی برای این ابزار نصب کنید. به عنوان مثال: Git، Maven 2 project، Amazon EC2، HTML publisher و غیره.

مزایای Jenkins

متن باز و جامعه ای بزرگ برای پشتیبانی
نصب آسان
دارای بیش از 1000 پلاگین برای آسان سازی کارها
اگر پلاگینی وجود نداشته باشد، میتوانید آن را کدنویسی کنید و با جامعه به اشتراک بگذارید.
رایگان
ساخته شده با با جاوا
Media is too big
VIEW IN TELEGRAM
How to install and configure Oracle Webcenter Content 12c - #oracle @unixmens
آیا می دانستید Serverها در حالت Idle حداقل به اندازه 50 درصد زمانی که Full Load هستند برق مصرف می کنند؟ !
نشت اطلاعات ۲ میلیون نفر از کاربران T-Mobile

#security @unixmens
نشت اطلاعات ۲ میلیون نفر از کاربران T-Mobile

⭕️شرکت مخابراتی T-Mobile تایید کرده است که نقض امنیتی در سرورهایش ممکن است باعث نشت 2 میلیون از اطلاعات شخصی کاربران این شرکت شده باشد. این اطلاعات شامل نام مشتری، کد پستی، شماره تلفن، آدرس ایمیل، شماره حساب و ...می­باشد.

⛔️هیچ اطلاعات مالی مانند شماره کارت اعتباری، شماره های امنیت اجتماعی یا گذرواژه‌ها در این نقض امنیتی به خطر نیافتاده است. این شرکت اعلام کرده است از طریق پیام کوتاه،ایمیل و یا تماس تلفنی کاربران آسیب دیده را در جریان قرار می­دهد.
💻 ساخت رابط مغز و کامپیوتر برای حرکت #بازوهای_روباتیک 💻
#bci #eeg @unixmens
پژوهشگران نانوروباتی ساختند که می‌تواند برای خنثی کردن نوعی سم اعصاب استفاده شود. این نانوروبات نقش نانوحامل را ایفا کرد تا ترکیبات مورد نظر را به محل از پیش‌تعیین شده منتقل کند.

محققان دانشگاه ایالتی پنسیلوانیا موفق به ساخت نانوروباتی شدند که قادر است ترکیبات سمی نرون‌ها را از بین ببرد. این نانوروبات با استفاده از آنزیم‌های طبیعی ساخته شده است.

این گروه تحقیقاتی دریافتند که آنزیم‌ها در حین واکنش‌های کاتالیستی می‌توانند حرکت کنند. دانشمندان اقدام به اتصال این آنزیم‌ها به سطح کرده و از آن برای حرکت استفاده کردند به‌طوری که تحت شرایط ویژه‌ای و با وجود برخی ترکیبات، سطح مورد نظر با استفاده از این آنزیم‌ها می‌تواند در محیط سیال حرکت کند.

قرار است از این نانوربات برای خنثی کردن برخی سم‌های عصبی موسوم به اورگانوفسفات استفاده شود، ترکیباتی که می‌توانند منجر به آسیب‌های دائمی به اعصاب شوند.

خنثی کردن ترکیبات اورگانوفسفات با استفاده از آنزیم اندیرولاز اسید اورگانوفسفات امکان‌پذیر است. از این رو محققان اقدام به تثبیت این آنزیم روی یک ژل کرده تا با استفاده از آن بتوانند ترکیبات اورگانوفسفات را خنثی کنند. این ژل درون نانوروبات پمپ می‌شود تا بتواند در محل مورد نظر، ترکیبات اورگانوفسفات را از بین ببرد.

آیوسمان سن از محققان این پروژه می‌گوید: « این آنزیم به‌صورت فعال به ترکیبات اورگانوفسفات وارد شده و آنها را از بین می‌برد.»

این گروه تحقیقاتی نتایج یافته‌های خود را در 256th National Meeting & Exposition of the American Chemical Society (ACS) منتشر کردند.

در آینده، محققان امیدوارند که بتوانند از این نانوروبات برای محافظت از لباس نظامیان استفاده کنند. این گروه در حال بررسی دیگر کاربردهای این نانوروبات بوده تا از آن برای حوزه‌هایی نظیر تزریق انسولین به بیماران دیابتی استفاده کنند. این فناوری قابلیت رهایش دارو را نیز دارد.

منبع
Forwarded from Academy and Foundation unixmens | Your skills, Your future (yashar esmaildokht 🐧)
عزیزان موضوعی هست که دوست داشتم در میان بگذارم // اگر علاقه مند بودن دوستان خو ب هست روی آن وقت بگذارید // چرا که ضعف بسیار بزرگی در کشور در این حوزه داریم // و دوستان متن باز به نظرم خوب هست روی اون سرمایه گذاری کنن //
بحث این مفهوم روی Neurofeedback و Biofeedback هست .
و اما این مباحث چی هستند
نوروفیدبک در اصل نوعی بیوفیدبک است که با استفاده از ثبت امواج الکتریکی مغز و دادن بازخورد به فرد تلاش می‌کند که نوعی خودتنظیمی را به آزمودنی آموزش دهد. بازخورد به طور معمول از راه صدا یا تصویر به فرد ارائه می‌شود و از این طریق فرد متوجه می‌شود که آیا تغییر مناسبی را در فعالیت امواج مغزی خود ایجاد کرده است یا خیر.
س‌خوراند زیستی یا بیوفیدبک (به انگلیسی: Biofeedback) شیوه‌ای تکمیل کننده و جایگزین برای دارو درمانی است که در آن می‌آموزیم عملکردهای بدن از جمله ضربان قلب را با کمک ذهن کنترل نماییم.

در بیوفیدبک به حسگرهای الکتریکی وصل می‌شوید که به شما کمک می‌کند اطلاعاتی درباره بدن خود را دریافت و اندازه گیری نمایید، حسگرهای بیوفیدبک به شما می‌آموزد که چگونه تغییرات ظریف و ماهرانه‌ای در بدن خود، مثلاً آرام کردن برخی ماهیچه‌ها را بتدریج انجام دهید تا به آنچه می‌خواهید، برای مثال کاهش تنش، برسید.

در اصل بیوفیدبک وضعیت سلامت و عملکرد فیزیکی، به فرد قدرت استفاده از افکار برای کنترل بدن را می‌دهد. بیوفیدبک اغلب به عنوان یک شیوه آرمیدگی بکار می‌رود.
ما تو این حوزه نرم افزار های اپن سورس زیادی داریم :
Openeeg
OpenViBE
NeuroServer
ElectricGuru
BWView
Brainathalon
و ...
#biocomputing #eeg @unixmens
Forwarded from yashar esmaildokht 🐧
neuroserver
Forwarded from Academy and Foundation unixmens | Your skills, Your future (yashar esmaildokht 🐧)
کتابی که در مورد openstreetmap نوشتم تقدیم عزیزان , جامعه متن باز نیازمند مشارکت همگان جهت بهبود و توسعه نقشه های باز هست , در این راه به یکدیگر و خودمان کمک کنیم , نقشه باز کاربردهای گسترده و بسیار زیاد دارد , هرگونه انتقاد و پیشنهاد را در مورد کتاب پذیرا هستم
با تشکرات فراوان
یاشار اسمعیل دخت