<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علی یوسفی</title>
        <link>https://virgool.io/feed/@aliyousefi</link>
        <description>ادیولوژیست ( شنوایی شناس )  -    توسعه دهنده اندروید    -    جاوا ، کاتلین ،PHP و اندکی C</description>
        <language>fa</language>
        <pubDate>2026-04-15 10:27:59</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/2548966/avatar/UZZJZb.jpg?height=120&amp;width=120</url>
            <title>علی یوسفی</title>
            <link>https://virgool.io/@aliyousefi</link>
        </image>

                    <item>
                <title>و چنین گفت سیلبرشاتس - فصل 1 بخش 1</title>
                <link>https://virgool.io/@aliyousefi/%D9%88-%DA%86%D9%86%DB%8C%D9%86-%DA%AF%D9%81%D8%AA-%D8%B3%DB%8C%D9%84%D8%A8%D8%B1%D8%B4%D8%A7%D8%AA%D8%B3-%D9%81%D8%B5%D9%84-1-%D8%A8%D8%AE%D8%B4-1-lv0bv6sitddf</link>
                <description>بنام سینگل پراسِسِ کرنل موودِ عالممقدمه فصل 1سیستم عامل یه نرم افزاریه که سخت افزار کامپیوتر رو مدیریت میکنه و شرایط رو برای اجرا شدن نرم افزار های دیگه که ما باهاشون کار میکنیم فراهم میکنه ، در واقع سیستم عامل واسطه ای هستش بین اجزای فیزیکی کامپیوتر و کسایی که با اون اجزای فیزیکی میخوان سر و کله بزنن ، یعنی کاربر ها و باقی نرم افزار ها .امروزه سیستم عامل ها رو توی هر سوراخی میتونیم ببینیم ، از موبایل ها و کامپیوتر های شخصیمون گرفته تا ماشین لباسشویی هوشمندی که گوشه آشپزخونه تون داره ایفای نقش میکنه .برای اینکه دقیق بفهمیم سیستم عامل داره چه غلطی میکنه ، اول بهتره اجزای اصلی کامپیوتر که سیسی باهاشون سر و کار داره رو بشناسیم :واحد پردازش مرکزی -&gt; CPUواحد حافظه -&gt; MUواحد ورودی خروجی -&gt; IOUاساسی ترین وظیفه سیسی اینه که این منابع رو بطور مناسب در اختیار برنامه های مختلفی که در حال اجرا هستن قرار بده بدون این که تداخلی بینشون پیش بیاد.از اونجایی که سیستم عامل یه نرم افزار فوق گولاخ هستش ، از قسمت های مختلفی تشکیل میشه و تیکه تیکه میسازن و سر همش میکنن ؛ توی فصل اول کتاب میاد و تک تک این بخش هاش رو واسمون باز میکنه و راجبش توضیح میده.فصل 1 بخش 1 :یک سیستم کامپیوتری رو میتونیم به چهار قسمت تقسیم کنیم : 1 - سخت افزار 2 - سیستم عامل 3 - اپلیکیشن ها 4 - کاربرسیستم عامل در واقع مثل دولت عمل میکنه که خودش کار خاصی انجام نمیده و صرفا فضا رو برای کارکرد مناسب سایرین فراهم میکنه ( دولت ایران رو نمیگه هاااا )در ادامه برای اینکه بهتر متوجه نقش سیسی بشیم ، اون رو از دید کاربر و سیستم بطور جداگانه بررسی میکنیماز دید کاربر :دیدگاه کاربر نسبت به سیسی برمیگرده به اینترفیسی که استفاده میکنه مثلا کاربر های موبایل ، از طریق صفحه نمایش و اسپیکر و ... با سیستم عامل موبایلشون ارتباط برقرار میکنناز این منظر ، وظیفه سیستم عامل اینه که بیشترین خدمت رو در حد اعلا با توجه به سخت افزاری که در اختیار داره قرار بدهیه سری از سیستم عامل ها هم هستند که عملا سر و کاری با کاربر ندارن و کار خودشون رو انجام میدن ، مثلا سیستم عامل مورد استفاده توی سیستم روشنایی خونه های هوشمند ، بدون اینکه بخاد با کاربر تعاملی داشته باشه ، خودش با توجه به اطلاعاتی که از سنسور هاش میکیره ، تصمیم میگیره که لامپ ها رو روشن یا خاموش کنهاز دید سیستم :از نگاه سیستم ، سیسی نرم افزاری هستش که باید با سخت افزار سر و کله بزنه و اون رو به عنوان یه resource allocator میبینه که وظیفه داره اختصاص منابع مختلف سخت افزاری رو مدیریت کنهدر ادامه این قسمت ، کتاب مختصری از تاریخچه سیستم های کامپیوتری میگه که اوایل صرفا برای امور خاصی طراحی میشدن و شرکت های تولیدی مثل آی بی ام ، خودشون نرم افزاری که نیاز بود رو روش نصب میکردن و تمام! و عملا این سخت افزار فقط و فقط یه برنامه رو به یه منظور خاص اجرا میکرد ؛ فک کنید الان برید خدا تومن پول بدید یه آمن بخرید که فقط فیفا 25 روش نصب باشه و تماااام و در ادامه میگه که ظهور سیستم های عامل انقلابی توی این زمینه بود که باعث شد بتونیم از سخت افزار هایی که داریم بیشترین بهره رو ببریم ؛توی این قسمت قانون مور رو هم واسمون توضیح میده که بر اساس اون توی اون برهه زمانی پیش بینی کرده بوده که حدودا هر 18 ماه ، تعداد ترانزیستور های چیپ ست ها و به طبع اون کلاک اسپید کامپیوتر ها دو برابر میشه.23 آبان ماه 1404قبلیبعدی</description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Fri, 14 Nov 2025 00:35:31 +0330</pubDate>
            </item>
                    <item>
                <title>و چنین گفت سیلبرشاتس - قسمت 0</title>
                <link>https://virgool.io/@aliyousefi/%D9%88-%DA%86%D9%86%DB%8C%D9%86-%DA%AF%D9%81%D8%AA-%D8%B3%DB%8C%D9%84%D8%A8%D8%B1%D8%B4%D8%A7%D8%AA%D8%B3-%D9%82%D8%B3%D9%85%D8%AA-0-lkkivovjxxig</link>
                <description>بنام سینگل پراسِسِ کرنل موودِ عالممهم نیس که میخوای مهندس نرم افزار باشی و برنامه سازی کنی یا متخصص شبکه باشی و بخوای سیم کشی کنی ؛ دانشجوی کامپیوتری و داری درسشو میخونی یا فقط عشقشو داری بالا بری پایین بیای باید بفهمی که این جعبه ای که بهش میگیم کامپیوتر چطوری کار میکنه و چطوری میتونیم ازش بیشترین بهره رو ببریم ، یکی از کانسپت هایی که توی این مسیر بهش نیاز داریم اینه که بدونیم سیستم عامل چیه و چطوری کار میکنه و با نحوه تعاملش با سخت افزار و کاربر آشنا بشیم .وقتی اسم سیستم عامل میاد وسط در واقع با دنیای غول ها سر و کار خواهیم داشت ؛ از دنیس ریچی و اندرو تننبام گرفته تا نابغه ای بنام لینوس توروالدز ، این قسمت از علوم رایانه تا دلتون بخاد آدم گنده و خفن داشته و داره .برای این درس توی دانشگاه ها معمولا دو تا سورس بطور تردیشنال ارائه میشه که یکیش کتاب آقاوی تننبام هستش و یکی دیگه هم کتاب حاج آقا سیلبرشاتس ، من جفتشون رو خوندم و الحق و والانصاف که هر دوتاشون عالی ان ولی خودم با کتاب آبراهام سیلبرشاتس راحت تر بودم و تصمیم گرفتم که خلاصه این کتاب رو یه جایی به زبون خودمونی خلاصه اش کنم که هم خودم بتونم راحت تر و سریعتر مرورش کنم هم اینکه شما زیبایان بتونید باهاش مفاهیم رو مرور کنید علل خصوص که این کتاب  همیشه یکی از پایه ثابت های کنکور ارشد هم هستش .اینجا من قصد دارم کتاب رو پاراگراف به پاراگراف خلاصه اش کنم و اگه حس کردم که جایی نیاز به نکته اضافی داره و مجبور شدم که خودم راجبش سرچ کنم ، اینجا هم قرارش میدم .امیدوارم که این یکی مثل کتاب هربرت شیلد نشه و بتونم کامل ارائه اش کنم.  </description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Thu, 13 Nov 2025 23:20:19 +0330</pubDate>
            </item>
                    <item>
                <title>الگوریتم های بازگشتی Recursive</title>
                <link>https://virgool.io/@aliyousefi/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D9%87%D8%A7%DB%8C-%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA%DB%8C-recursive-r8critvngvzw</link>
                <description>بنام زبان آفرینبعد پنج شیش ماه هوس کردم بیام ویرگول یچی بنویسم اونم درست زمانی که سه تا پروژه سنگین دست گرفتم و کار هام مونده ، گفتم چی بنویسم که هم کاربردی باشه هم کوتاه ، رسیدم به موضوع الگوریتم های ریکرسیو که دیشب یه مقاله جوندار در موردش خوندم ، با خودم گفتم بدی نیس ، هم واسه خودم مرور میشه هم یه چیزی نوشتم .توی یه جمله بخوام کلیت الگوریتم های ریکرسیو رو بگم اینه که این مدل الگوریتم ها قابلیت اینو دارن که در بخش هایی از پراسسشون بتونن خودشون رو مجددا و با یه حجم ورودی معولا کمتر ، کال کنن یه نمونه ساده و دم دستی این الگوریتم ها ، الگوریتم محاسبه فاکتوریل هستش کد فانکشنش رو داخل جاوا مینویسم براتون : public int fact (int x){
if(x == 1)  return 1;
return x * fact( x - 1 );
}خب همونطور که میبینید اینجا یه کد خیلی جمع و جور داریم که بطور بازگشتی اونقدر خودش رو کال میکنه که به حالت بیس که همون 1 هست برسه و چرخه فراخوانی بسته بشه ، توی بیان الگوریتم های بازگشتی مشخص کردن نقطه پایان الگوریتم اهمیت خیلی بالایی داره ، که اگه تعریف نشه بلاتردید دچار stack over flow خواهیم شد و پراسس بووم!الگوریتم های بازگشتی درسته خیلی جمع و جور و تر و تمیز هستن ولی از اونجایی که مغز ما فرایند ها رو بطور خطی تحلیل و پردازش میکنه ، معمولا کسی سراغ این مدل الگوریتم نمیره ، علاوه بر تنبلی ما یه دلیل قابل قبول برای این مورد هستش که سراغ این مدل الگوریتم نریم و اونم احتمال بالای وقوع stack over flow هستش ، شما حتی توی مواقعی که الگوریتم رو کاملا درست و بی نقص پیاده کرده باشی هم احتمال سرریز رو بخاطر ذات ریکرسیو الگوریتم داری .یه مدل الگوریتم بازگشتی دیگه هم هستش که بهش میگیم الگوریتم بازگشتی چند گانه که بخوام ساده بگم ، این داداشمون هر دفعه خودش رو چندبار کال میکنه و به مراتب هم طراحیش شخمی تر و سخت تر از اولیه😂یکی از معروف ترین مثال های این الگوریتم هم ، یه الگوریتم سورتینگ هستش که کد اون رو هم براتون این زیر کپی پیست میکنم ( با عرض پوزش )  :private int partition ( int arr[] , int low , int high) {    
 int pivot = arr[high];
int i = (low - 1);
for (int j = low; j &lt;= high - 1; j++) {
    if (arr[j] &lt;= pivot){
        i++; 
        swap(arr[i], arr[j]);}
}     
swap(arr[i + 1], arr[high]);
 return (i + 1);و در نهایت این که اگه نمیخواید ارشد بدید یا امتحانشو ندارید ، بیخیال ایشون بشید که عملا کابرد چندانی نداره :)9 اردیبهشت ماه 1404 - خوابگاه دستغیب شیراز</description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Tue, 29 Apr 2025 00:09:13 +0330</pubDate>
            </item>
                    <item>
                <title>اپ بغلی چه خبره - قسمت 2</title>
                <link>https://virgool.io/@aliyousefi/%D8%A7%D9%BE-%D8%A8%D8%BA%D9%84%DB%8C-%DA%86%D9%87-%D8%AE%D8%A8%D8%B1%D9%87-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-gdqmvx6ywomp</link>
                <description>سلام زیبایان ،میخوام توی این سری مقاله در مورد سرک کشیدن توی اپ های مختلف و خوندن لاگ هاشون با هدف دسترسی به آدرس api هاشون و نهایتا دسترسی به دیتایی که دریافت میکنن صحبت کنم و ببینیم آیا اصلا این کار شدنیه و اگه شدنیه چطور میتونیم مرتکب این عمل قبیح بشیم و در نهایت میگم که چطور میتونیم از اپلیکیشنمون و دیتا های با ارزشش در برابر این مدل سرقت حفاظت کنیم.توی این قسمت که قسمت دوم این مجموعه محسوب میشه قراره root کردن ایمن دستگاهمون رو بطور گام به گام توضیح بدیم.هشدار : از اونجایی که گوشی موبایل شما در مود رووت در آسیب پذیر ترین حالت ممکن قرار میگیره  و حتی ممکنه بفنا بره (یجورایی مثل قضیه پیجر ها توی لبنان) ، توصیه میکنم همینجا بیخیال قضیه بشید و صرفا با یه لایک روانمون رو شاد کنید ؛ بطور کاملا رسمی و از طریق همین تریبون اعلام میکنم که حاجی ما چیزی رو گردن نمیگیریما 😁ریسک های root کردن سیستماول از همه ریسک هایی که توی رووت کردن سیستم باهاشون مواجهیم رو بررسی میکنیم :1 - باطل شدن گارانتی دستگاه و عدم دریافت بروزرسانی ها: اکثر تولید کننده ها و شرکت های وارد کننده ،  گوشی رو بعد از این که رووت بشه ، هیچجوره گردن نمیگیرن و بروزرسانی های نرم افزاری رو هم نخواهید داشت.2  -  بریک شدن : یجورایی میشه بگیم ترسناک ترین مورد ایشون هستن که شاید مجبور بشیم با گوشی نانازمون و خاطراتی که باهاش داشتیم خداحافظی کنیم ؛ با توجه به اهمیتی که داره لازم میدونم این مورد رو یکم بیشتر توضیح بدم :توی این وضعیت دیگه سیستم شما کلا از کار میوفته و عملا بلااستفاده میشه ، که با توجه به دلیل وقوع ،     بریک شدن رو میتونیم به دو دسته تقسیم کنیم 1 - soft break : توی این وضعیت سیستم عامل بالا نمیاد که عمدتا هم مشکل از بووت لودر هستش ، اگه خیلی خوش شانس باشیم گیر این مدل بریک شدن میوفتیم که معمولا مشکلمون با فلش کردن دستگاه حل میشه هر چند باید با خیلی چیزا وداعی سخت داشته باشیم . 2 - Hard break  :  توی این حالت گوشی توی دستتون با دمپایی حمومتون تفاوت چندانی نداره و هیچ مدل ری اکتی نشون نمیده ولی بازم اگه اندکی خوش شانس باشید ، شاید بتونید با هزینه ای معادل قیمت خودش جونش رو در بیارید و اگه نباشید هم که باید محوش کنید ☺یه موردی که با رعایتش میتونید ریسک این مورد رو به شدت پایین بیارید اینه که رووت کردن سیستم رو با باتری صد درصدی انجام بدید.3 - آسیب پذیری امنیتی : اگه احیانا دور و برتون بدافزار مدافزاری باشه ، با رووت کردن سیستم انگاری بهش تعارف زدید که &quot;  ... Come Eat It &quot;4 - پاک شدن اطلاعات : سعی کنید قبلش از دیتا هاتون یه بکاپ بگیرید .چگونگی رووت شدن سیستمدر طول بووت شدن سیستم عامل یه سری ابزار هستن که نوع دسترسی اجزا مختلف رو مشخص میکنن ، اصطلاحا Mount میکنن که ابزار های رووتینگ ، با تغییراتی که در روند کاری این ابزار ها انجام میدن ، دسترسی رووت رو به خودشون اعطا میکنن ( این نوشابه باز کردن برای خودش رو حین پروسه init انجام میده).توی نسخه های قدیمی تر اندروید ، شاهد امنیت بووت لودر به مراتب ضعیف تری نسبت به نسخه های فعلی بودیم و  ابزار هایی مثل KingRoot میتونستن به نرم افزار بوت لودر نفوذ کنن و از این طریق دسترسی سوپروایزر رو بگیرن چیزی که امروزه عملا شده کشک ، بووت لودر اندروید میشه گفت که به خوبی تونسته درز و دورز هاشو ببنده و دیگه نمیشه البختکی بهش نفوذ کرد ، ولی از اونجایی که امنیت صد در صدی جوکی بیش نیست ، آزادی پژوهان این حوزه ، Magisk (مجیسک) رو روو کردن که نه تنها خوب به دروز نفوذ میکنه ، بلکه هربار که اندروید اپدیت میشه ، ایشون رو هم آپدیت میکنن و درز نو ، روزی نو . قدم قدم تا رووت1  - ابتدا firmware  متناسب با مدل گوشی خودتون رو دانلود کنید : از این سایت میتونید دانلود کنید ، مطمئن بشید که دقیقا مال مدل گوشی خودتون رو دانلود کنید که بفنا نرید.فایل زیپی که دانلود کردید رو اکسترکت کنید و دنبال این 3 تا بگردید (boot.img و init_boot.img  و vbmeta.img ) و به حافظه اصلیتون منتقلون کنید.2- برنامه magisk   رو دانلود کنید :از این ( لینک ) magisk را دانلود و نصب کنید. وارد برنامه بشید و از قسمت Select and Patch a File  وارد فضای ذخیره سازی گوشیتون بشین و فایل boot.img رو که بعد اکسترکت firmware کپی کردید رو انتخاب کنید.دکمه lets go رو بفشارید و منتظر پیام !all done  بشید.3- فایل بووت جدید رو منتقل کنید :فایل بووت پچ شده جدیدی که واستون ساخته شد رو به کامپیوترتون منتقل کنید 4-گزینه Developer options دستگاهتون رو فعال کنید :با 7 بار کلیک روی بیلد نامبر ، میتونید Developer options دستگاهتون رو فعال کنید.5- گزینه OEM unlocking رو enable  کنید( از درون زبانه دولوپر آپشن)6 - درایور های ADB (لینک) و FastBoot (لینک) را روی کامپیوتر خود نصب کنید7 - گوشیتون رو با نگه داشتن دکمه پاور و کاهش صدا ، به حالت فست بووت ببرید8 - توی همون حالت فست بووت ، گوشیتون رو به سیستم متصل کنید و دستور( fastboot flashing unlock ) رو داخل cmd ویندوز اجرا کنید.9 - با اجرا شدن این کامند ، یه پجره داخل گوشیتون باز میشه که داخلش گزینه ( Unlock the Bootloader  ) رو انتخاب کنید ( به مک کلید های کاهش و افزایش صدا میتونید بین گزینه ها جا بجا بشید)  10 - فایلی که توی مرحله 3 به سیستمتون منتقل کردید رو داخل محیط ترمینال اجرا کنید و دستورات زیر رو داخلش به ترتیب اجرا کنید :- fastboot flash init_boot magisk_patched_init_boot.img - fastboot flash boot magisk_patched_boot.img- fastboot reboot bootloader11 - در انتها با دستور ( fastboot reboot ) ، گوشیتون رو ریستارت کنیدمعمولا اگه این مراحل رو به ترتیب اجرا کنیم ، الان در حال رووت هستیم ، موارد مختلفی میتونن باعث بشن که این بین به مشکل بخوریم که مهم ترینشون بنظر من ، استفاده از نسخه firmware اشتباهی هستش .خب الان نرم افزار های مختلف در بی دفاع ترین حالت ممکنشون هستن و خیلی راحت میتونیم وارد محیط حافظه اینترنالشون بشیم و به دیتاهاشون دسترسی داشته باشیمتوی قسمت بعدی در این مورد صحبت میکنیم که چطور میتونیم از اپلیکیشن خودمون در برابر این مدل سرقت محافظت کنیم .23 - آذر - 1403قسمت قبلیقسمت بعدی &gt; </description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Fri, 13 Dec 2024 00:13:25 +0330</pubDate>
            </item>
                    <item>
                <title>اپ بغلی چه خبره - قسمت ۱</title>
                <link>https://virgool.io/@aliyousefi/httpsvirgoolioaliyoosefiread-and-use-data1-kzapnpvvwfgw</link>
                <description>سلام زیبایان ،میخوام توی این سری مقاله در  مورد سرک کشیدن توی اپ های مختلف و خوندن لاگ هاشون با هدف دسترسی به آدرس api هاشون و نهایتا دسترسی به دیتایی که دریافت میکنن صحبت کنم و ببینیم آیا اصلا این کار شدنیه و اگه شدنیه چطور میتونیم مرتکب این عمل قبیح بشیم و در نهایت میگم که چطور میتونیم از اپلیکیشنمون و دیتا های با ارزشش در برابر این مدل سرقت حفاظت کنیم.توی این قسمت که قسمت اول این مجموعه محسوب میشه قراره لاگ ها رو واستون تا خصوصی ترین عضوشون تشریح کنیم. اصلا لاگ ( Log ) چیهلاگ ها پیام هایی هستند که سیستم طی وقوع فرایند های مختلف ایجادشون میکنه که این فرایند ها میتونن مستقیما توسط خود سیستم رخ داده باشن یا یه اپلیکیشنی ایجادشون کرده باشه ، از تاچ شدن صفحه گوشی و روشن کردن بلوتوث بگیرید تا خطایی که یه اپلیکیشن حین اجرا باهاش مواجه میشه .این پیام ها که از اینجا به بعد مستقیما &quot; لاگ (Log)&quot; خطابشون میکنیم چند دسته اند  خطا ها (Errors) :      اطلاعاتی در خصوص مشکلاتی که در حین اجرا برنامه رخ داده .  هشدار ها (Warnings)  :     اطلاعاتی در خصوص یه سری سوتی که فعلا مشکلی ایجاد نکردن ولی ممکنه در آینده دردسر ساز بشن .اطلاعات (Information) :     یه سری اطلاعات کلی در خصوص فرایند های مختلف مثل این که آیا درست انجام شده یا نه ، استیت اون   فرایند و یه سری مورد عمومی دیگه که نسبت به باقی لاگ ها اهمیت چندانی ندارن. پیغام های دیباگ (Debugging Messages ) :     این ها لاگ هایی هستند که خودمون تعریفشون میکنیم که بطور اختصاصی در جریان کار فرایند های   مدنظرمون قرار بگیریم ، مثلا از این لاگ ها میتونیم توی بلاک catch برای دریافت پیغام exception استفاده   کنیم (بجای  کثیف کاری هایی مثل  Toast و SOUT  ☺ ) .اگه از لاگ کت درون پروژه تون استفاده میکنید میتونید با این متد ها لاگ های مدنظرتون رو ایجاد کنید :Log.v(tag , message);   for Verbose
Log.d(tag , message);   for Debug
Log.i(tag , message);   for Info
Log.w(tag , message);   for Warning
Log.e(tag , message);   for Errorلاگ ها چه کاربرد هایی دارن ؟از اونجایی که این سوال طنزی بیش نیس ، صرفا کاربرد هاش رو واستون لیست میکنم :Debugging and TroubleshootingMonitoring Application BehaviorAudit Trails ( امنیت اپلیکیشن و مدیریت رفتار کاربر ها )Performance AnalysisAlerts and Notificationsسلسله مراتب اهمیتی لاگ هالاگ ها هم مثل ما انسان ها ( بهتره بگیم آدم ها ... )  ، بنا به مسئولیتی که به عهده دارن ، توی رده های مختلفی قرار میگیرن که میتونیم با تعریف فیلتر فقط گروه خاصی رو مانیتور کنیم سلسله مراتب لاگ ها به ترتیب اولویت : 1 - FATAL2 - ERROR3 - WARN4 - INFO5 - DEBUG6 - TRACEمحتویات هر لاگلاگ ها معمولا بطور پیشفرض  شامل این دیتا ها هستند : زمان وقوعمرتبه اهمیتی لاگاطلاعاتی از منبع یا ماژولی که لاگ رو ایجاد کردهپیغام لاگکه میتونیم مشخص کنیم که کدوما رو بهمون نمایش بده و همچنین با تعریف فیلتر بر اساس همین اجزا میتونیم لاگ هامون رو دسته بندی کنیم.ابزار های کارخب دیگه فکر کنم چیزی از لاگ ها نموند که نگفته باشم ( سوادم بیشتر قد نمیده ) ، توی این بخش یه لیست واستون آماده کردم از ابزار هایی که میتونیم باهاشون لاگ های سیستم رو بخونیم و مدیریتشون کنیم  به همراه  لینک دانلود :Android Studio Logcat (  دانلود  )ADB (Android Debug Bridge) (  دانلود  )MatLog (  دانلود  )Log Viewer (  دانلود  )Timber (  دانلود  )  #گیت هابFirebase Crashlytics (  دانلود  )  #پلاگینLogDNA (  دانلود  )  # گیت هابSentry (  دانلود  )توی قسمت بعدی مجموعه در مورد root کردن موبایل و دسترسی به لاگ ها اپلیکیشن های مختلف صحبت میکنیم .29 - آبان - 1403قسمت بعدی &amp;gt; </description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Tue, 19 Nov 2024 23:34:33 +0330</pubDate>
            </item>
                    <item>
                <title>گذر  از  Applet ها - قسمت 6</title>
                <link>https://virgool.io/@aliyousefi/%DA%AF%D8%B0%D8%B1-%D8%A7%D8%B2-applet-%D9%87%D8%A7-%D9%82%D8%B3%D9%85%D8%AA-%D8%B4%D8%B4%D9%85-khrkhfipil7m</link>
                <description>بنام یگانه دولوپر عالمتوی این سری از مقالات قصد داریم که دل و روده زبان جاوا رو بکشیم بیرون و در مورد همه قابلیت های این لعنتی جذاب و همیشه ترند صحبت کنیم.منبع این سلسله مقالات ، کتاب آقای هربرت شیلد هستش (لینک دانلود) که الحق ولانصاف که خفن تر و کامل ترش رو نداریم.با ما همراه باشید (صفحه رو دنبال کنید) که قراره همه مطالبی که ایشون توی کتابشون مطرح کردند رو بطور کامل و به زبون کاملا ساده کوچه بازاری بیان کنیم.همین الانی که در خدمت شماییم ، حدود 2 دهه از انتشار اولین نسخه جاوا میگذره و توی این سال ها هر چی پیش رفتیم شاهد تغییرات مختلفی توی ساختار و قابلیت های جاوا بوده ایم ،در زمان شروع به کار جاوا به عنوان یک زبان برنامه نویسی ، شرایط به نحوی بود که اینترنت تازه پا گرفته بود و ترند تکنولوژی روز بود ( مثل شرایط هوش مصنوعی در حال حاضر ) و مرورگر ها با سرعت چشمگیری در حال پیشرفت بودن و میتازوندن ، اون زمان تلفن های هوشمند هنوز اختراع نشده بودن .با در نظر گرفتن تغییراتی به این حجم در دنیای تکنولوژی و انتظارات کاربران ، این که شاهد یه سری تغییرات در ساختار زبان های برنامه نویسی به عنوان زیربنای نرم افزار ها کاملا منطقی و قابل انتظار هستش و ما این تغییر رو توی جاوا ، با تغییراتی که واسه اپلت ها اتفاق افتاد میتونیم به وضوح ببینیم .همونطور که توی قسمت های قبلی هم اشاره کردیم ، اپلت ها برگه برنده مهمی واسه جاوا بودن و از دست دادنشون ضرر بزرگی به محبوبیت این زبان وارد میکرد ولی مشکلی که وجود داشت این بود که اپلت ها روی مرورگر ها اجرا میشدن و نیاز داشتن که مرورگر های هدف از اونها پشتیبانی کنن ولی  طی حرکتی ناجوانمردانه و به دور از مردونگی ، مرورگر ها به مرور دیگه  پلاگین هایی که برای اجرای اپلت ها نیاز بود رو ارایه نکردن و جاوا یه جورایی مجبور شد از این جگرگوشش دل بکنه و بدین ترتیب ، از JDK 9 به بعد شاهد deprecate شدن و آغاز روند خروج اپلت ها بودیم و متاسفانه توی نسخه JDK 17 کلا هیچ خبری از اپلت ها و پشتیبانی شون نبود :(پیش از این هم مشابه اتفاقی که واسه اپلت ها افتاد رو داشتیم ، ( Java Web Start ) ها ، این قابلیت هم این امکان رو میداد که برنامه هایی داشته باشیم که بطور خودکار دانلود بشن و توی سیستم کابر قابل اجرا باشن که خب این قابلیت هم چندان عمری نکرد و مثل اپلت ها ناکام موند و در حال حاضر توی نسخه های مدرن جاوا خبری از هیچکدوم از این دو قابلیت که یه روزی گل مجلس بودن نیست &quot; آرره دایی جان زندگی همینه گهی زین به پشت گهی زین به ....&quot;.17 -مردادماه - 1403پایان قسمت ششمقسمت قبلیقسمت بعدی</description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Wed, 07 Aug 2024 00:13:31 +0330</pubDate>
            </item>
                    <item>
                <title>اپلیکیشن وب ویو</title>
                <link>https://virgool.io/@aliyousefi/%D8%A7%D9%BE%D9%84%DB%8C%DA%A9%DB%8C%D8%B4%D9%86-%D9%88%D8%A8-%D9%88%DB%8C%D9%88-on45kjnugodf</link>
                <description>بنام حضرت دوستاپلیکیشن وب ویو برای بسیاری از افرادی که دارای وب‌سایت هستند امکانات و مزیت‌های فوق‌العاده بالایی دارد. افرادی که قصد تبدیل وب‌سایت به اپلیکیشن وب ویو اندروید و یا ios را دارند به ‌راحتی و با استفاده از امکانات خاصی که در این مدل اپلیکیشن وجود دارد می‌توانند این کار را انجام دهند، ما ایجا قراره در مورد این مدل اپلیکیشن صحبت کنیماپ وب ویو چیه؟اپلیکیشن وب ویو نرم افزاری هستش که با داشتن قابلیت‌ها و ویژگی‌های مختلف و کاربردی موجب شده  تا امکان نمایش یک صفحه‌ی سایت، به عنوان یه قسمت از اپلیکیشن اصلیمون قابل انجام باشه و عملکردش مثل یه مرورگره  و باعث می‌شود تا که بتونیم یه نسخه اندرویدی یا ios از وبسایتمون داشته باشیم و اینطوری اکوسیستممون رو گسترش بدیممزیتی که وب ویو داره اینه که میتونیم اون قسمت از اپلیکیشنمون رو به صورت کاملا ریسپانسیو در بیاریم و محتوا و ساختارش رو به راحتی تغییر بدیم مثل کاری که با یه سایت معمول میتونیم انجام بدیمفرقی هم نمیکنه که بک گراند سایتتون رو با چی نوشته باشید ، صرف اینکه سایتمون روی سرور آپلود شده باشه کافیه چون اینجا فقط با url صفحه مدنظرمون کار داریمیه مزیت دیگه ای که این مدل اپلیکیشن ها دارن ، هزینه تولیدشون هست که خیلی پایینه و صاحب وب‌سایت نیازی نیست که بخاد به اندازه ای که واسه سایتش هزینه کرده اینجا هم پول بدهمعایب وب ویواگه بخوایم از ایشون ایراد بگیریم میتونیم بگیم این آقا مثل شترمرغیه که وقت سواری دادن مرغه وقت تخم گذاشتن شتره😂نه میتونیم به چشم یه اپ موبایلی بهش نگاه کنیم نه یه وب‌سایت،  ولی خوب ، خووب چیزیه اگه سایت دارید اینم بزنید بغل دستش میارزهامروزه برنامه های ترند روز مثل اینستاگرام و کست باکس و ... همشون از این قابلیت وب ویو دارن استفاده می‌کنن و حالشو میبرن.2 - تیرماه - 1403کانال تلگراممون رو دوست داشتید دنبال کنین🌼@geekland_ir</description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Sat, 22 Jun 2024 23:44:36 +0330</pubDate>
            </item>
                    <item>
                <title>بایت کد و JVM -   قسمت 5</title>
                <link>https://virgool.io/codenevis/%D9%85%D8%AA%D8%AE%D8%B5%D8%B5-%D8%AC%D8%A7%D9%88%D8%A7-%D9%82%D8%B3%D9%85%D8%AA-5-%D8%A8%D8%A7%DB%8C%D8%AA-%DA%A9%D8%AF-%D9%88-jvm-zen4qhpp2xu2</link>
                <description>بنام یگانه دولوپر عالمتوی این سری از مقالات قصد داریم که دل و روده زبان جاوا رو بکشیم بیرون و در مورد همه قابلیت های این لعنتی جذاب و همیشه ترند صحبت کنیم.منبع این سلسله مقالات ، کتاب آقای هربرت شیلد هستش (لینک دانلود) که الحق ولانصاف که خفن تر و کامل ترش رو نداریم.با ما همراه باشید (صفحه رو دنبال کنید) که قراره همه مطالبی که ایشون توی کتابشون مطرح کردند رو بطور کامل و به زبون کاملا ساده کوچه بازاری بیان کنیم.بایت کد ، جادوی جاواچیزی که باعث شد که جاوا بطور همزمان پاسخگوی امنیت و قابلیت حمل پذیری برنامه ها باشد ، این بود که کامپایلر جاوا بجای اینکه خروجی قابل اجرا ( executable ) بهمون بده ، خروجی از جنس بایت کد بهمون میده .بایت  کد ها مجموعه ای از محتوایی هستند که قابلیت اجرا روی ماشین مجازی جاوا ( JVM) رو دارن  در واقع JVM به این منظور طراحی شده که ابزاری باشه برای تفسیر بایت کد های جاوا توی سیستم های مختلف.این که خروجی های جاوا برای اجرا شدن به یه واسطه ای نیاز دارن یه قدری موجب کاهش پرفورمنس میشه ولی این جناب بایت کد بقدری تر و تمیز پیاده شده و به قدری با JVM هماهنگ و داداچی اند که این کاهش پرفورمنس به حداقل مقدار ممکنش میرسه ، هر چند رفع دو چالشی که با هاش مواجه بودیم اینقدر ارزشمند هست که دیگه کسی به این ریزه میزه ها توجهی نداشته باشه.تبدیل شدن کد های جاوا به بایت کد ، از این جهت کار ما رو واسه portable بودن برنامه هامون ساده تر میکنه که دیگه نیازی نیست که بخوایم واسه هر پلتفرم و هر سیستمی یه برنامه جداگونه بنویسیم ، اینجا فقط کافیه که اون سیستم هدف ، JVM مخصوص به خودش رو نصب داشته باشه ، که بطور معمول بطور پیشفرض رو همه پلتفرم های امروزی نصب هستش.امنیت با sandboxیکی دیگه از چالش هایی که داشتیم امنیت بودش که همین اجرا شدن برنامه ها با واسطه گری JVM باعث میشه که روند اجرا شدن نرم افازر های مختلف تحت کنترل باشه ، JVM یه محیط محدود وکنترل شده بنام sandbox  رو برای اجرا شدن در اختیار برنامه ها قرار میده که توی این محیط دسترسی های حساس اپلیکیشن ها رو محدود میکنه و دیگه نمیتونن هر بلابی که دلشون میخواد رو سر سیستم کاربر بیارن  و این مدلی ، امنیت کاربرای گوگولی مگولی فضای اینترنت هم تامین میشه.به یاد گذشتگان ، JIT Compilerجاوا به عنوان یه زبان مفسری شناخته میشه ولی اصلا خودش رو به این مورد محدود نمیکنه توی یه سری موارد به زبان نیتیو پلتفرم هدفش تبدیل میکنه و میزنه توی جاده اجرای کامپایلری که اینکارش باعث افزایش پرفورمنس وسرعت و نیاز کمتر به منابع سیستمی در زمان اجرا میشه.برای این منظور ، تکنولوژی ارایه شد بنام HotSpot که قابلیت JIT Compiling رو واسه بایت کد های جاوا فراهم میکرد . JIT Compiler ، بخشی از JVM هست که باعث میشه قسمت های تکراری برنامه ، بجای اینکه در هربار اجرا بخان از اول تفسیر بشن ، یکبار بطور کامل کامپایل بشن ( مستقیما به کد ماشین تبدیل بشن)  و هربار که بهشون نیاز داشتیم ، مستقیما اجرا بشن ، البته اینطور هم نیست که کل برنامه قرار باشه تبدیل به فایل اجرایی بشه هاا ، نه - فقط اون بخش هایی که بطور مکرر بهشون نیاز پیدا میکنیم.مدل های مختلف کامپایلر رو هم توی نسخه های مختلف جاوا داشتیم مثل ahead-of-time compiler که اگه خودتون دوست داشتید در موردش مطالعه کنید یا بگید که خودم در موردشون مفصل بنویسم واستون. ( برای اینکه بهتر متوجه بشید که زبان مفسری و کامپایلری چیه چه تفاوت هایی موقع اجرا دارن این مقاله رو مطالعه کنید)30 - خردادماه - 1403پایان قسمت پنجمقسمت قبلیقسمت بعدی</description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Wed, 19 Jun 2024 01:39:55 +0330</pubDate>
            </item>
                    <item>
                <title>تاریخچه زبان جاوا - قسمت 4</title>
                <link>https://virgool.io/codenevis/%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE%DA%86%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%AC%D8%A7%D9%88%D8%A7-%D9%82%D8%B3%D9%85%D8%AA-4-aorubuun6r43</link>
                <description>بنام یگانه دولوپر عالمتوی این سری از مقالات قصد داریم که دل و روده زبان جاوا رو بکشیم بیرون و در مورد همه قابلیت های این لعنتی جذاب و همیشه ترند صحبت کنیم.منبع این سلسله مقالات ، کتاب آقای هربرت شیلد هستش (لینک دانلود) که الحق ولانصاف که خفن تر و کامل ترش رو نداریم.با ما همراه باشید (صفحه رو دنبال کنید) که قراره همه مطالبی که ایشون توی کتابشون مطرح کردند رو بطور کامل و به زبون کاملا ساده کوچه بازاری بیان کنیم.جاوا ، الگوی موفقیتقدرت و تاثیرگذاری زبان جاوا توی دنیای کامپیوتر کاملا مشهود هستش ، یکی از نمونه های این تاثیرگذاری زبان #C هستش (نمونه کد) که توسط شرکت فخیمه مایکروسافت به منظور پشتیبانی از فریمورک NET. ساخته شده.سینتکس و مدل شی گرایی که توی سی شارپ استفاده شده شباهت خیلی زیادی به جاوا داره ، در واقع یه جورایی از جاوا الگو برداری کرده (مثل همون کاری که جاوا در مواجه با  ++C و  C کرد) .این تاثیری که جاوا توی پروسه تولید سی شارپ داشته این مفهوم رو میرسونه که جاوا یه خط فکری جدید رو توی دنیا کامپیوتر به وجود آورده.جاوا در تعاملی سازنده با اینترنتچالش برنامه نویسی برای فضای اینترنت موجب شده جاوا به صدر جدول زبان های موجود برسه ، جاوا علاوه بر اینکه موجب سهولت برنامه نویسی وب میشد ، یه قابلیت جذاب رو ارایه میکرد و اون برنامه های اینترنتی جدیدی بودند بنام Applet  ها  همچنین جاوا دو چالش عمده این فضا رو هم حل کرد  portability  , security . در ادامه به بررسی جداگونه هر کدوم از این قابلیت های جذاب میپردازیم.قابلیتی انقلابی ، Java Appletsیکی از جذابیت های نسخه های اولیه جاوا این قابلیت بود که به موجب اون میتونستیم اپلیکیشن هایی طراحی کنیم که داخل مرورگر های قابلیت اجرا داشته باشند . با کلیک کردن لینکی که حاوی اپلت بود ، این برنامه دانلود و اجرا میشد ، اپلت ها معمولا برنامه های سبک و کم حجمی بودند و یه سری کار های ساده و دم دستی مثل دریافت اطلاعات کاربر و ماشین حساب و ... رو انجام میدادند.اپلت ها برای اولین بار موجب شدند که بتونیم وبسایت ها داینامیک رو بصورت خیلی ساده پیاده سازی کنیم.اوایل کار جاوا به شدت پز این اپلتش رو میداد و حسابی توو بورس بود ولی به مرور و با به وجود اومدن ابزر های مشابه و به شدت خفن تر ، اپلت ها جذابیت خودشون رو از دست دادن و نهایتا توی JDK 9 به کلی کنار گذاشته شدند و امروزه کسی ازشون سراغی نمیگگیره.(  هعی یالان دونیا :(   )ایمن و قابل حملداینامیک بودن و پویایی برنامه های تحت وب همون قدر که جذاب بود ، از لحاظ امنیتی ترسناک و چالش برانگیز بود . اپلت هایی که با یه کلیک کاربر دانلود و اجرا میشدن دوتا چالش همراه خودشون داشتند :نباید میتونستند هر کاری که دلشون میخاد بتونن بخورن روی انواع سیستم های مقصد قابل اجرا باشندجاوا جفت این چالش ها رو با ارایه یه چیز به شدت جدید ، ضربه فنی کرد ماشین مجازی جاوا (JVM) و JavaByteCode  برگه برنده ای بود که جیمزگاسلینگ و داداشیاش کوبیدن رو میزایشالا اون رو فردا شب مینویسم ( فردا امتحان دارم :)  ) 26 - خردادماه - 1403پایان قسمت چهارمقسمت قبلیقسمت بعدی</description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Sun, 16 Jun 2024 00:19:10 +0330</pubDate>
            </item>
                    <item>
                <title>تاریخچه زبان جاوا - قسمت 3</title>
                <link>https://virgool.io/codenevis/%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE%DA%86%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%AC%D8%A7%D9%88%D8%A7-%D9%82%D8%B3%D9%85%D8%AA-3-r6b49sxbmztv</link>
                <description>بنام یگانه دولوپر عالمتوی این سری از مقالات قصد داریم که دل و روده زبان جاوا رو بکشیم بیرون و در مورد همه قابلیت های این لعنتی جذاب و همیشه ترند صحبت کنیم.منبع این سلسله مقالات ، کتاب آقای هربرت شیلد هستش (لینک دانلود) که الحق ولانصاف که خفن تر و کامل ترش رو نداریم.با ما همراه باشید (صفحه رو دنبال کنید) که قراره همه مطالبی که ایشون توی کتابشون مطرح کردند رو بطور کامل و به زبون کاملا ساده کوچه بازاری بیان کنیم.صحنه را برای ورود جاوا آماده کنید !در اواخر دهه 1980 و اوایل دهه 1990، ملت همیشه در صحنه ، حسابی با ++C و برنامه نویسی شی گرا حال کرده بودند و میتازوندن که یهو :موجودی جدید به نام شبکه جهانی ( وب ) روی کار اومده بود و حجم سیستم هایی که روز به روز  بهش اضافه می شدند بطور وحشتناکی در حال رشد بود و متاسفانه ++C  هم خیلی زود به بن بست خورد و صحنه رو ترک کرد ، نیاز جامعه برنامه نویسی چیزی فراتر از نظمی بود که  ++C تامین میکرد.تولد گل پسری جذاب  ، جاوا !جاوا رو جیمز گاسلینگ، و رفقاش  توی سال 1991  درون شرکت سان مایکروسیستمز  طراحی کردند.ساخت اولین نسخه جاوا که واقعا بتونه کار کنه چیزی حدود 18 ماه طول کشید (بله عزیزم ، اگه اپی که ساختی توی شیش ماه میلیاردی فروش نرفت ، نا امید نشو!).این زبان اول کاری &quot;Oak&quot;  به معنی بلوط نام گذاری شد، اما نامش رو در سال 1995 به &quot;Java&quot; تغییر دادند (خدا امواتشون رو بیامرزه).بین انتشار نسخه اولیه Oak توی پاییز  سال 1992 و انتشار عمومی جاوا توی بهار 1995، افراد زیادی روی تکامل جاوا کار کردن .هر چند اون روز بحث داغ و ترند دنیای تکنولوژی اینترنت بود ، ولی هدف طراحی جاوا هم راستا با شبکه وب نبود ، جیمز گاسلینگ و بروبچ سان ، همه همم و غمشون این بود که یه زبانی بسازن که بتونه مستقل از بستر (کراس پلتفرم خودمون) کار کنه و نیاز نباشه که یه برنامه واحد رو برای سیستم عامل های مختلف جداگونه بنویسن و طراحی کنن ، چیزی که پاشنه آشیل برنامه نویسی با C  و  ++C بود.برنامه هایی که با نوشته میشدند نیاز داشتند که همون اول کار بطور کامل برای کار روی یه سیستم از قبل مشخص کامپایل بشن که با توجه به تنوع و گوناگونی سیستم ها یه امتیاز فوق منفی محسوب  میشد مثلا شما تصور کنید که قراره یه اپلیکیشن آموزش زبان تولید کنید و مجبور باشید واسه گوشی های سامسونگ یه برنامه بنویسید واسه شیائومی ها یکی واسه نوکیا نفتی ها یکی و … تازه به این حجم کار این رو هم اضافه کنید که مدل  های مختلف یه برند هم قرار نیست همگی از یه معماری و ساختار مشابه استفاده کنن ، بخوام خلاصه اش کنم اینکه آقا دهن مهن برنامه نویسا اون موقع سرویس بوده واسه این که توو بیوی اینستاش بزنه پروگرمممر ، پدرش در میومده.این ویژگی مستقل از پلتفرم بودن جاوا یجورایی همون چیزی هم بود که توی شبکه وب بهش نیاز داشتیم ، این شبکه مثل دریایی بود که انواع و اقسام سیستم ها با CPU ها و سیستم عامل های مختلف رو داخلش داشتیم و میطلبید محصولی که تولید میکنیم بتونه روی همه این دستگاه ها به خوبی کار کنه .جاوا سینتکس خودش رو از C و شی گرایی رو از ++C الهام گرفته و به قابلیت های کاربردی این دو تا زبان ، ویژگی های جدید منحصر به خودش رو هم اضافه کرده.جاوا زبانی هستش که دسترسی و آزادی بیشتری رو به برنامه نویس ها میده و شما هر چقدر برنامه نویس خفن تر و مسط تری باشید برنامه تون هم بهتر از آب در میاد.24  -  خردادماه  -  1403پایان قسمت سومقسمت قبلی قسمت بعدی</description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Thu, 13 Jun 2024 22:56:03 +0330</pubDate>
            </item>
                    <item>
                <title>تاریخچه زبان جاوا - قسمت 2</title>
                <link>https://virgool.io/codenevis/%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE%DA%86%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%AC%D8%A7%D9%88%D8%A7-%D9%82%D8%B3%D9%85%D8%AA-2-jcwxsmf6pvip</link>
                <description>بنام یگانه دولوپر عالمتوی این سری از مقالات قصد داریم که دل و روده زبان جاوا رو بکشیم بیرون و در مورد همه قابلیت های این لعنتی جذاب و همیشه ترند صحبت کنیم.منبع این سلسله مقالات ، کتاب آقای هربرت شیلد هستش (لینک دانلود) که الحق ولانصاف که خفن تر و کامل ترش رو نداریم.با ما همراه باشید (صفحه رو دنبال کنید) که قراره همه مطالبی که ایشون توی کتابشون مطرح کردند رو بطور کامل و به زبون کاملا ساده کوچه بازاری بیان کنیم.اختراع C توسط دنیس ریچی ، در ادامه روند توسعه زبانی بود تحت عنوان BCPL (نمونه کد) که قبل تر توسط مارتین ریچارد توسعه یافته بود . در روند توسعه ای زبان قبل از اختراع زبان C ، شاهد اختراع زبان B (نمونه کد)توسط کن تامسون بودیم که اختراع اون هم مثل C تحت تاثیر BCPL بوده.دنیس ریچی برای اولین بار زبان سی رو روی یه سیستم از مدل DEC PDP-11 که سیستم عامل یونیکس رو داشت پیاده سازی و  اجرا کرد که طی چند سال بعد از اختراع هم زبان C فقط با سیستم عامل یونیکس قابل دسترسی بود.سیستم عامل یونیکس رو هم همین جناب آقای دنیس ریچی و کن تامسون توسعه دادند که یه جورایی پدر جد سیستم عامل های ترند مروزی محسوب میشهزبان سی در سال 1989 بطور رسمی در سازمان ANSI  ( سازمان استاندارد آمریکا ) ثبت شد.یه سری ها معتقدند که اختراع سی ، شروع عصر برنامه نویسی مدرن بود دلیل این ادعایی که دارند اینه که سی کاری کرده کارستون و اون این بوده که برای اولین بار یک سری ویژگی ها و کارکرد ها رو بطور همزمان پیاده سازی کرده که توی زبان های قبلی مجبور بودن یکی رو قربانی اون یکی کنن مثلا قدرت و پرفورمنس زبان رو قربانی سهولت سینتکس میکردن( توی BASIC ).یه مورد دیگه ای که موجب محبوبیت عجیب غریب سی شده بود  این بود که این اولین زبانی بود که توسط یه برنامه نویس باحال و خفن طراحی میشد نه توسط یه سری آکادمی و استاد عصا قورت داده و خود خفن پندار ، سی اون روزا یه جورایی مثل یه زبان خودمونی و کوچه بازاری بود که همه باهاش حال کردند و یه عده هم هنوز که هنوزه دارن تعصبشو میکشن ( این اتفاق واسه جاوای خودمون هم صادقه)قدمی رو به جلو ++Cبا توجه به رشد وحشتناکی که توی سال های 1970 تا 1980 توی حوزه کامپیوتریجات داشتیم ، برنامه هایی که مورد نیاز و تقاضای بازار بودند هم پیچیده تر میشدند مثلا اوایل کار مش قربون فقط یه سایتی میخواست که شماره موبایل و آدرس مغازه اش رو توش بزاره و توی چهار خط توضیح بده که آقاجان ما چیپس و بفک و تمثالهم رو میفروشیم ولی یکم که پیشرفت به سرش زد که سفارش مشتری هاش رو اینترنتی بگیره و محصول رو ببره دم در خونشون . خیلی هم عالی 🙂حالا اینور قضیه ما دهن برنامه نویس ها رو داشتیم که برای پیاده سازی این همه قابلیت جدید قرار بود سرویس بشه ، عمده مشکل برنامه نویس ها نظم و ترتیب پروژه هایی بود که داشتند ، چیزی که عملا با ساختار و رویکرد Procedural کد ها توی زبان سی همخونی نداشت و عملا نیاز به یه مدل پیاده سازی جدید بود.اینجای کار بودیم که یه شخصی بنام  ( بی‌یارنه استراس‌تروپ 🙂) شروع کرد به کرم ریزی سر سی کهنتیجه این انگولک کردن ها این شد که رویکرد شی گرایی رو توی سی پیاده سازی کرد.اول کار  اسم زبون جدیدی که ساخته بود رو گذاشت ( سی با کلاس ها 😎) ولی بعد تغییرش داد به ++C .برنامه نویسی با رویکرد شی گرا دقیقا همون چیزی بود که برنامه نویس های اون روز برای نظم دادن به پروژه هاون نیاز داشتند ، پس زدند و حالشو بردند 😀23  -  خردادماه  -  1403پایان قسمت دومقسمت قبلیقسمت بعدی</description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Thu, 13 Jun 2024 01:58:34 +0330</pubDate>
            </item>
                    <item>
                <title>تاریخچه زبان جاوا - قسمت 1</title>
                <link>https://virgool.io/codenevis/%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE%DA%86%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%AC%D8%A7%D9%88%D8%A7-%D9%82%D8%B3%D9%85%D8%AA-1-mmqy152c5kb7</link>
                <description>بنام یگانه دولوپر عالمتوی این سری از مقالات قصد داریم که دل و روده زبان جاوا رو بکشیم بیرون و در مورد همه قابلیت های این لعنتی جذاب و همیشه ترند صحبت کنیم. منبع این سلسله مقالات ، کتاب آقای هربرت شیلد هستش  (لینک دانلود) که الحق ولانصاف که خفن تر و کامل ترش رو نداریم.با ما همراه باشید (صفحه رو دنبال کنید) که قراره همه مطالبی که ایشون توی کتابشون مطرح کردند رو بطور کامل و به زبون کاملا ساده کوچه بازاری بیان کنیم.تاریخچه زبان جاوا - بخش نخستبرای درک کامل جاوا، باید اول از بفهیم که جاوا رو به چه دلیلی و برای حل چه مشکلاتی ایجاد کرده اند.مانند زبان‌های کامپیوتری موفقی که قبلاً معرفی شدند، جاوا ترکیبی از بهترین ویژگی ها و قابلیت های زبان های برنامه نویسی قبل از خودش  و مفاهیم نوآورانه مورد نیاز برای حل چالش های جدید زمان است.اجداد و اصل و نسب جناب جاواجاوا با ++C  در ارتباط است که بطور مستقیم از  C نشات گرفته است.جاوا  بیشتر خصوصیات خود را از این دو زبان به ارث برده است.جاوا syntax خود را از C و بسیاری از ویژگی های شی گرایی خود را از ++C به ارث برده است.جاوا قابلیت های جدید منحصر به فردی هم دارد که در واقع راه حلی هستند واسه بن بست هایی که زبان های قبلی باهاش مواجه بودن.تولد  C ، شروع عصر برنامه نویسی مدرنزبان C دنیای کامپیوتر و برنامه نویسی را تکان داد و موجب تغییر روش برنامه نویسی و نوع تفکر در مورد آن شد.تولید C نتیجه نیازمندی به یک زبان ساختاریافته ، کارآمد و سطح بالا بود که بتواند جایگزین کد های اسمبلی در برای ایجاد برنامه های سیستمی شود.زمانی که یک زبان کامپیوتری طراحی می شود، باید یک سری توازن و تعادل را رعایت کند، مانند موارد زیر:• سهولت استفاده در مقابل قدرت• ایمنی در مقابل کارایی• انسجام در مقابل انبساط پذیریقبل از C، برنامه نویسان معمولاً مجبور بودند بین زبان هایی که یک مجموعه از ویژگی ها را بهینه و سایر ویژگی ها را قربانی میکردند ، یکی را انتخاب کنند.برای  مثال در حالی که یادگیری BASIC آسان بود، به اندازه کافی قدرتمند نبود، و عدم ساختارمندی و نظم درونی آن، مفید بودنش را برای برنامه ها و پروژه های بزرگ را زیر سوال می برد.از زبان اسمبلی می توان برای تولید برنامه هایی با پرفورمنس فوق العاده استفاده کرد ولی یادگیری اون به شدت سخت و زمانبر هست (نمونه کد) علاوه بر این، اشکال زدایی( debugging) کد اسمبلی به مراتب سخت تر از سایر زبان هاست.یکی دیگر از مشکلات زبان های اولیه کامپیوتری مانند BASIC، COBOL و FORTRAN این بود که بر اساس اصول ساختاری منظمی طراحی نشده بودند. در عوض، بر اصل GOTO به عنوان ابزار اصلی کنترل برنامه ها تکیه داشتند. در نتیجه، برنامه‌هایی که با استفاده از این زبان‌ها نوشته می‌شد،به شدت درهم برهم و غیر قابل خوندن و توسعه بود به اصطلاح (اسپاگتی کد) داشتیم .در اوایل دهه 1970، انقلابی در دنیای کامپیوتر در حال شکل گیری بود و تقاضا برای نرم افزارها از توانایی برنامه نویسان برای تولید آن پیشی گرفت (از بس که تولید برنامه دوشواری داشته) اینجا بود که سر و کله یه آدم عجیب و غریب به اسم دنیس ریچی به میون میاد.21 - خردادماه - 1403پایان قسمت اولقسمت بعدی</description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Mon, 10 Jun 2024 17:54:40 +0330</pubDate>
            </item>
                    <item>
                <title>معماری sorted program</title>
                <link>https://virgool.io/@aliyousefi/%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-sorted-program-fzpn9i9jpmjm</link>
                <description>بنام اوخب اول بزارین یه مفهومی رو روشنش کنیم و اون اینه که سیستم های کامپیوتری فقط این گوگولی هایی نیستن که در قالب لپ تاپ و کامپیوتر های رو میزی داریم و باهاشون حال میکنیمسیستم های کامپیوتری طیف وسیعی از دیوایس ها رو در بر میگیرند از ابرکامپیوتر هایی که برای مقاصد علمی و نظامی استفاده میشه تا این پک های ریزه میزه که توی هوشمند سازی اشیاء داره بکار میره.هر سیستم کامپیوتری بنا بر مقاصدی که براش طراحی شده از یه معماری توی چیدمان  اجزائش بهره میبره و همینجور الا بختکی دم دستگاهش رو سرهم نکردن.توی این مقاله مدنظر داریم که به معماری sorted program که توسط داوشمون  جان فون نیومن  طراحی شده بپردازیم با ما همراه بگردید ?خب توی این مدل معماری ، کل سیستم به سه قسمت تقسیم میشه و سخت افزار های مختلف بنا به اهداف کاریشون توی سیستم ، توی یکدوم از این قسمت ها قرار می‌گیرند. و اما این سه قسمت: ۱ - Central Processing Unit [CPU] : واحد پردازش مرکزی این قسمت توی سیستم های کامپیوتری تحت این معماری ، وظیفه پردازش و تفسیر داده ها رو بر عهده دارن ؛ چیزی که در مورد این قسمت مهمه اینه که بدونیم کل این بخش الزاما اون قطعه گرون قیمتی نیس که خمیرمالیش میکنیم و خیلی لطیفه ، اوشون میکروپروسسور نام دارن ولی از اونجایی که اکثر سیستم های کامپیوتری واحد CPU شون توی یدونه از اونها خلاصه شده به این نام شناخته میشن .این قسمت میتونه شامل ده تا میکروپروسسور غول باشه توی سیستم های سروری ، یا چهار تا IC  درب داغون توی چیپ های دم دستی.۲ - Memory Unit  [MU] : این قسمت وظیفه فراهم سازی داده و ایضا بهینه سازی محل کار قسمت CPU رو بر عهده داره ،یجورایی کارگر دم دست اوساس. حافظه های RAM و حافظه Cache میکروپروسسور  جزو این قسمت محسوب می‌شوند.۳ - Input Output Unit [IOU] : این قسمت شامل یه سری کنترلر هست که معمولا روی مادربرد قرار گرفتن و قابلیت ارتباط سیستم با محیط خارج رو فراهم میکنن ؛ مثلا کنترلر شبکه ، کنترلر گرافیکی و ...  دقت بکنید که سخت افزار هایی مثل کیبورد ، موس ، کارت گرافیک(جدیدا) ، حتی حافظه  های ثانویه مثل HDD , SSD ،جزوه سیستم محسوب نمیشن و در واقع همون اجزا خارجی اند که از طریق قسمت IOU با سیستم در ارتباط اندخب مقاله پربارمون به اتمام رسید  تا فرداشب خدانگهدار?</description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Sat, 28 Oct 2023 01:19:28 +0330</pubDate>
            </item>
                    <item>
                <title>پوشه assets و raw در اندرویداستدیو</title>
                <link>https://virgool.io/@aliyousefi/%D9%BE%D9%88%D8%B4%D9%87-assets-%D9%88-raw-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%B3%D8%AA%D8%AF%DB%8C%D9%88-pgehvvhzichk</link>
                <description>بنام هستی بخشخب ما توی اندروید استدیو واسه ذخیره کردن فایل هایی مثل فایل های صوتی و ویدیویی و ... دو تا دایرکتوری اختصاصی داریم یکی جناب assets  و اون یکی هم raw حالا هر کدوم از این دو بزرگوار یه سری مزایا دارن و تبعا یه سری هم معایب دارن که ما بر حسب نیازمون تشخیص میدیم که از کدومشون استفاده کنیم و فایل هامون رو توی کدومشون قرار بدیمشیوه نام گذاری : توی پوشه assets خیلی دستمون واسه نام گذاری بازه و محدودیتی توی استفاده از کارکتر ها نخواهیم داشت ولی توی پوشه raw باید قوانین نام گذاری فایل های xml رو رعایت کنیم مثلا نمیتونم از فاصله یا حروف بزرگ و... استفاده کنیم.ساخت ساب فولدر : توی پوشه assets  مجازیم که بینهایت پوشه تو در تو و هم رده بسازیم ولی توی raw خبری از پوشه موشه نیس هر چی داری رو باس فله ای بریزی کف پوشه اصلیدسترسی از طریق فایل xml : اگه نیاز داشته باشیم که به فایل مدنظرمون از درون فایل های xml دسترسی داشته باشیم ،نمیتونیم از پوشه assets استفاده کنیم و فقط باید بریم سراغ  raw نحوه دسترسیش هم این مدلیه &quot;@raw/filename&quot;دسترسی به لیست فایل های موجود : اگه نیاز باشه که لیست فایل های موجود رو در اختیار داشته باشیم و بتونیم از متد getLists استفاده کنیم باید فایل هامون رو توی پوشه assets  قرار بدیمسهولت دسترسی : برای دسترسی با فایل ها توی خر کدوم که باشن باید از filestream ها استفاده کنیم ولی دسترسی به فایل در صورتی که توی assets باشه یه نمه آسون تره: (توی raw) : resources.openRawResource(R.raw.filename)(توی assets) : assets. open(filename)توجه خروجی هر دو تای اینا InputStram هستشخب این مقاله پربار در اینجا ب پایان رسید حالا شما خودتون ببنید کدوم پوشه مناسب کارتونه از اون استفاده کنید?</description>
                <category>علی یوسفی</category>
                <author>علی یوسفی</author>
                <pubDate>Mon, 14 Aug 2023 17:33:27 +0330</pubDate>
            </item>
            </channel>
</rss>