🥳بالاخره Go 1.21.0 منتشر شد!
تغییرات مهم این نسخه:
. اضافه شدن دو تابع جدید min و max
. اضافه شدن تابع جدید clear برای خالی کردن map و یا صفر کردن عناصر slice
.پکیج هایی که import میشه بر اساس path هاشون مرتب میشوند
.بهینه سازی های زیادی توی مصرف کم تر سی پیو و رم انجام شده و عملکرد garbage collectors بهینه تر شده
.پکیج های داخلی جدیدی مثل slog و slogtest که توی نمایش لاگ های بهتر و بهینه تر به شما کمک میکنند اضافه شدند
و...
میتونید لیست کامل تغییرات رو از اینجا ببینید:
https://go.dev/doc/go1.21
@MdDaily
تغییرات مهم این نسخه:
. اضافه شدن دو تابع جدید min و max
. اضافه شدن تابع جدید clear برای خالی کردن map و یا صفر کردن عناصر slice
.پکیج هایی که import میشه بر اساس path هاشون مرتب میشوند
.بهینه سازی های زیادی توی مصرف کم تر سی پیو و رم انجام شده و عملکرد garbage collectors بهینه تر شده
.پکیج های داخلی جدیدی مثل slog و slogtest که توی نمایش لاگ های بهتر و بهینه تر به شما کمک میکنند اضافه شدند
و...
میتونید لیست کامل تغییرات رو از اینجا ببینید:
https://go.dev/doc/go1.21
@MdDaily
❤2
#معرفی
برای تبدیل کد ها به عکس ابزار ها و اکستن شن های زیادی هست . یکی از این ابزار ها با کلی قابلیت سفارشی سازی https://ray.so/ هستش که میتونید پس زمینه، تم و پدینگ تصویر را تغییر بدید
گیت هاب پروژه:
https://github.com/raycast
@MdDaily
برای تبدیل کد ها به عکس ابزار ها و اکستن شن های زیادی هست . یکی از این ابزار ها با کلی قابلیت سفارشی سازی https://ray.so/ هستش که میتونید پس زمینه، تم و پدینگ تصویر را تغییر بدید
گیت هاب پروژه:
https://github.com/raycast
@MdDaily
دولت و وزارت دفاع هند تصمیم گرفتند سیستم های دفاتر خود را با لینوکس جایگزین کنند .
به خاطر حجم گسترده ی حملات و مالویر هایی که آلودشون میکرده
اما خود همین جایگزینی چالش هایی رو هم به همراه داره. یکی از چالش ها رابط کاربری سیستم عامل هستش
برای همین یه توزیع جدید رو بنام Maya برای این کار ساختند که بر پایه ubuntu هست.
رابط کاربریش تا جای ممکن شبیه ویندوز طراحی شده که کارمندا برای کار با این سیستم جدید به مشکل نخورند .
همچنین این توزیع مجهز به یه ابزاری بنام Chakravyuh هست که یه پروتوکل محافظتیه و جزئیات بیشتری ازش منتشر نشده .
تا ۱۵ آگوست یا همون ۲۴ مرداد خودمونم به وزارت دفاع هند فرصت دادند که تمام سیستم های خودش را به Maya تغییر بده
لینک مقاله:
https://news.itsfoss.com/indian-govt-linux-windows/
@MdDaily
به خاطر حجم گسترده ی حملات و مالویر هایی که آلودشون میکرده
اما خود همین جایگزینی چالش هایی رو هم به همراه داره. یکی از چالش ها رابط کاربری سیستم عامل هستش
برای همین یه توزیع جدید رو بنام Maya برای این کار ساختند که بر پایه ubuntu هست.
رابط کاربریش تا جای ممکن شبیه ویندوز طراحی شده که کارمندا برای کار با این سیستم جدید به مشکل نخورند .
همچنین این توزیع مجهز به یه ابزاری بنام Chakravyuh هست که یه پروتوکل محافظتیه و جزئیات بیشتری ازش منتشر نشده .
تا ۱۵ آگوست یا همون ۲۴ مرداد خودمونم به وزارت دفاع هند فرصت دادند که تمام سیستم های خودش را به Maya تغییر بده
لینک مقاله:
https://news.itsfoss.com/indian-govt-linux-windows/
@MdDaily
چند وقت پیش یه مجموعه پست راجب الگوریتم و فلوچارت نوشتم
اگه دوست داشتید:
https://news.1rj.ru/str/MdDaily/21
@MdDaily
اگه دوست داشتید:
https://news.1rj.ru/str/MdDaily/21
@MdDaily
Telegram
Md Daily
یکی از مباحثی که تو دوره های مختلف برنامه نویسی کمتر بهش پرداخته و اشاره شده .
الگوریتم و فلو چارت است
اما ما چرا باید الگوریتم یاد بگیریم و چه کاربردی داره؟
@MdDaily
الگوریتم و فلو چارت است
اما ما چرا باید الگوریتم یاد بگیریم و چه کاربردی داره؟
@MdDaily
بعنوان برنامه نویس شاید برای شماهم جذاب باشه که بدونید شرکتای بزرگ چطور نرم افزارهاشون رو تولید میکنن؟
با چالشایی مثل Scale, performance, availability و..چیکار میکنن و اصلا ساختار تیماشون به چه شکله؟
این ریپازیتوری منبع خوبیه بابت خوندن درخصوص این مسائل:
https://github.com/binhnguyennus/awesome-scalability
<Reza>
@MdDaily
با چالشایی مثل Scale, performance, availability و..چیکار میکنن و اصلا ساختار تیماشون به چه شکله؟
این ریپازیتوری منبع خوبیه بابت خوندن درخصوص این مسائل:
https://github.com/binhnguyennus/awesome-scalability
<Reza>
@MdDaily
GitHub
GitHub - binhnguyennus/awesome-scalability: The Patterns of Scalable, Reliable, and Performant Large-Scale Systems
The Patterns of Scalable, Reliable, and Performant Large-Scale Systems - binhnguyennus/awesome-scalability
#privacy
https://PrivacyTools.io
تو این سایت کلی ابزار و نرم افزار معرفی کرده که با استفاده ازشون میتونید privacy بیشتری داشته باشید
@MdDaily
https://PrivacyTools.io
تو این سایت کلی ابزار و نرم افزار معرفی کرده که با استفاده ازشون میتونید privacy بیشتری داشته باشید
@MdDaily
👍1
یه حرف خیلی خوبی که Andrew Chen، پارتنر a16z (یکی از بزرگترین VCهای دنیا) میزنه، اینه:
خلاقیت در شروع استارتاپ مهم نیست! بیشتر استارتاپهای موفق، به جای اینکه بیان روی یه ایدههای بدون مشابه کار کنن، اتفاقا میان روی ایدههایی کار میکنن که بازارشون اثبات شده.
استارتاپهای موفق، میان یک ایده اثبات شده رو کپی میکنن و بعدش سعی میکنن یک قسمتشو خیلی بهتر کنن. خلاقیت رو معطوف میکنن به بهتر کردن یک ایده، نه خلق یک ایده کاملا جدید.
در واقع این میانبری هست برای رسیدن به product/market fit. بعد از اون وقتی که استارتاپ جون گرفت و تو مرحله رشد قرار گرفت، حالا وقتش هست که شروع کنه به زیاد کردن خلاقیت و تست فرضیههایی که شاید رشدش رو نمایی کنه، شایدم کار نکنه.
ریسک کردن زیاد هنگام شروع یک استارتاپ و چسبیدن به فرضیههایی که قبلا اثبات نشده، معمولا کار درستی نیست و باعث شکست استارتاپ میشه.
<Farokh>
@MdDaily
خلاقیت در شروع استارتاپ مهم نیست! بیشتر استارتاپهای موفق، به جای اینکه بیان روی یه ایدههای بدون مشابه کار کنن، اتفاقا میان روی ایدههایی کار میکنن که بازارشون اثبات شده.
استارتاپهای موفق، میان یک ایده اثبات شده رو کپی میکنن و بعدش سعی میکنن یک قسمتشو خیلی بهتر کنن. خلاقیت رو معطوف میکنن به بهتر کردن یک ایده، نه خلق یک ایده کاملا جدید.
در واقع این میانبری هست برای رسیدن به product/market fit. بعد از اون وقتی که استارتاپ جون گرفت و تو مرحله رشد قرار گرفت، حالا وقتش هست که شروع کنه به زیاد کردن خلاقیت و تست فرضیههایی که شاید رشدش رو نمایی کنه، شایدم کار نکنه.
ریسک کردن زیاد هنگام شروع یک استارتاپ و چسبیدن به فرضیههایی که قبلا اثبات نشده، معمولا کار درستی نیست و باعث شکست استارتاپ میشه.
<Farokh>
@MdDaily
🔸ساموئل جانسون معتقده که برای انجام دادن کارهای بزرگ بهجای قدرت به ثبات و تداوم نیازه دارن. اما این جمله یعنی چی؟
🔹فرض کنین اضافه وزن دارین و میخواین برای بهتر شدنتون ورزش رو شروع کنین. اگه تو هفته بهصورت افراطی و خیلی شدید ورزش کنین بهنظرتون چه اتفاقی میافته؟ سریعتر به وزن دلخواهتون میرسین؟
🔸جواب این سؤال قطعا نه هست و حتی ممکنه آسیب ببینین و دیگه نتونین ورزش کنین. اما اگه با توجه به آمادگی جسمانیتون تو مدت مثلاً ۶ ماه ورزش کنین چطور؟ چقدر نتیجهاش فرق میکنه؟
🔹این موضوع نشون میده که وقتی میخوایم کارهای مهم و بزرگی رو انجام بدیم باید صبر داشته باشیم و بتونیم توی انجام دادنشون ثبات داشته باشیم.
<TechRasa>
@MdDaily
🔹فرض کنین اضافه وزن دارین و میخواین برای بهتر شدنتون ورزش رو شروع کنین. اگه تو هفته بهصورت افراطی و خیلی شدید ورزش کنین بهنظرتون چه اتفاقی میافته؟ سریعتر به وزن دلخواهتون میرسین؟
🔸جواب این سؤال قطعا نه هست و حتی ممکنه آسیب ببینین و دیگه نتونین ورزش کنین. اما اگه با توجه به آمادگی جسمانیتون تو مدت مثلاً ۶ ماه ورزش کنین چطور؟ چقدر نتیجهاش فرق میکنه؟
🔹این موضوع نشون میده که وقتی میخوایم کارهای مهم و بزرگی رو انجام بدیم باید صبر داشته باشیم و بتونیم توی انجام دادنشون ثبات داشته باشیم.
<TechRasa>
@MdDaily
👍1
نوشتن گیت هاب اکشن در پایتون
گیت هاب به توسعه دهندگان اجازه میده از سه طریق اکشن های مبتنی بر داکر، جاوا اسکریپت و کامپوزیت اکشن های سفارشی بنویسند. اما اگر نیاز باشه ما این کار را در پایتون انجام بدیم چی؟
صدرا تویه یک مقاله ابزاری را به نام PyAction معرفی کرده که با استفاده از این ابزار شما میتونید گیت هاب اکشن ها را در پایتون بنویسید :)
تویه پست زیر مقاله را ترجمه کردم و خلاصش را براتون آماده کردم
🆔 @MdDaily
گیت هاب به توسعه دهندگان اجازه میده از سه طریق اکشن های مبتنی بر داکر، جاوا اسکریپت و کامپوزیت اکشن های سفارشی بنویسند. اما اگر نیاز باشه ما این کار را در پایتون انجام بدیم چی؟
صدرا تویه یک مقاله ابزاری را به نام PyAction معرفی کرده که با استفاده از این ابزار شما میتونید گیت هاب اکشن ها را در پایتون بنویسید :)
تویه پست زیر مقاله را ترجمه کردم و خلاصش را براتون آماده کردم
🆔 @MdDaily
⚡2
چطوری با ابزار PyAction کار کنیم ؟
خب قبل از همه باید یه اکشن بسازیم . به دلیل اینکه PyAction از cookiecutter برای تولید تمپلیت استفاده میکنه. پس اول از همه باید cookiecutter را نصب کنیم با استفاده از دستور زیر:
Action name: نام اکشن شما
Project slug : آدرس فولدر یا ریپو
Python version: نسخه ی پایتون
Include dependencies: دپندسی های مورد نیاز
Branding Icon: Feather icons (وارد سایت بشید و اسم آیکون مورد نظر را توی این فیلد بنویسید. این آیکون را گیت هاب نشون میده)
Branding color: رنگ آیکون
> اگه قصد دارید اکشنتون رو توی GitHub Marketplace منتشر کنید مطمئن بشید که Action name ای وارد نکنید که تکراری باشه
بعد از اینکه به سوالات جواب دادید . یه فولدر جدیدی به نام چیزی که توی Project slug بهش دادید براتون میسازه .
تنها چیزی که باید تغییر بدیم فایل های action.yml، main.py و README.md هستند.
بعد از اینکه کار ستاپمون رو تموم کردیم وقت اینکه اولین اکشن خودمون رو بسازیم :)
توی این گیت هاب اکشن ما میخوایم به کاربر ها این امکان رو بدیم که متغیری بنام
ادامه پست بعدی:
🆔 @MdDaily
خب قبل از همه باید یه اکشن بسازیم . به دلیل اینکه PyAction از cookiecutter برای تولید تمپلیت استفاده میکنه. پس اول از همه باید cookiecutter را نصب کنیم با استفاده از دستور زیر:
pip install -U cookiecutterبعد از نصب برای اینکه مطمئن بشید درست نصب شده دستور زیر را اجرا کنید:
cookiecutter -Vتوی مرحله ی بعدی به فولدری که میخواین تمپلیت توش قراره بگیره برید و این دستور را اجرا کنید :
cookiecutter gh:lnxpy/cookiecutter-pyactionبعد از اجرای این دستور یه سری سوالاتی از شما میپرسه .
Action name: نام اکشن شما
Project slug : آدرس فولدر یا ریپو
Python version: نسخه ی پایتون
Include dependencies: دپندسی های مورد نیاز
Branding Icon: Feather icons (وارد سایت بشید و اسم آیکون مورد نظر را توی این فیلد بنویسید. این آیکون را گیت هاب نشون میده)
Branding color: رنگ آیکون
> اگه قصد دارید اکشنتون رو توی GitHub Marketplace منتشر کنید مطمئن بشید که Action name ای وارد نکنید که تکراری باشه
بعد از اینکه به سوالات جواب دادید . یه فولدر جدیدی به نام چیزی که توی Project slug بهش دادید براتون میسازه .
تنها چیزی که باید تغییر بدیم فایل های action.yml، main.py و README.md هستند.
بعد از اینکه کار ستاپمون رو تموم کردیم وقت اینکه اولین اکشن خودمون رو بسازیم :)
توی این گیت هاب اکشن ما میخوایم به کاربر ها این امکان رو بدیم که متغیری بنام
name را به workflow ما بفرستند و و پیامی با محتوای : Hello {name}
را ببینندادامه پست بعدی:
🆔 @MdDaily
⚡3
برای این کار فایل
و اما میریم سراغ main.py :
بعد از ذخیره میتونید به تب Actions ریپوی گیت هابتون برید روی Run Workflow کلیک کنید و تا تموم شدن بیلد اکشن منتظر بمونید.
توی لاگ های build میتونید بخش Echo phrase را باز کنید و خروجی echo و پیام مورد نظر را ببینید.
لینک های مفید:
https://github.com/lnxpy/cookiecutter-pyaction
https://github.com/lnxpy/pyaction-hello-world
https://haya14busa.github.io/github-action-brandings/
🆔 @MdDaily
action.yml ما باید دو بخش inputs و outputs را ویرایش کنیم:...با این روش کاربر ها میتونند موقع استفاده از اکشن ما مقدار
# == inputs and outputs ==
inputs:
name:
required: false
denoscription: the person/thing you want to greet
default: World
outputs:
phrase:
denoscription: output message
name را تنظیم کنند و بعدش از طریق متغیر phrase خروجی پیام را ببینه. و اما میریم سراغ main.py :
import osکارما تقریبا تمومه و الان وقت تسته . برای تست فقط کافیه توی ریپوی گیت هابتون یه workflow بسازید . محتوای فایل main.yml:
import sys
from typing import List
from actions import io
def main(args: List[str]) -> None:
"""main function
Args:
args: STDIN arguments
"""
# reading the name variable from `with`
name = os.environ["INPUT_NAME"]
# writing to the buffer
io.write_to_output({"phrase": f"Hello {name}"})
# now, people can echo `phrase`
if __name__ == "__main__":
main(sys.argv)
# .github/workflows/main.ymlو تمام :)
name: Testing My hello-world Action
on: workflow_dispatch
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- id: greetings
name: Using نام اکشن شما
# use the action that's inside the same repository
uses: ./
with:
name: @MdDaily
- name: Echo phrase
run: |
echo ${{ steps.greetings.outputs.phrase }}
بعد از ذخیره میتونید به تب Actions ریپوی گیت هابتون برید روی Run Workflow کلیک کنید و تا تموم شدن بیلد اکشن منتظر بمونید.
توی لاگ های build میتونید بخش Echo phrase را باز کنید و خروجی echo و پیام مورد نظر را ببینید.
لینک های مفید:
https://github.com/lnxpy/cookiecutter-pyaction
https://github.com/lnxpy/pyaction-hello-world
https://haya14busa.github.io/github-action-brandings/
🆔 @MdDaily
⚡4
سلام دوستان :)
خیلی ممنون که کانال MD Daily رو حمایت می کنید و با شما خانوادمون بزرگ تر شده 🫶🏻
می خواهم یک آموزش با موضوع انتخابی شما در کانال بذارم و آموزش به صورت متنی و تصویری هست. تا جای ممکن ساده و قابل فهم برای همه هستش و بدون ترس از یادگیری قراره باهم پیش بریم :)
اگه استقبال خوبی شد بازم آموزش ها را ادامه میدیم .
موضوعاتی که انتخاب کردم تئوری نیستند . مثلا قرار نیست آموزش پایتون بذاریم در عوض قراره یه پروژه ی باحال با پایتون انجام بدیم .
توی پست بعدی موضوعات رو در قالب نظر سنجی میذارم.
🆔 @MdDaily
خیلی ممنون که کانال MD Daily رو حمایت می کنید و با شما خانوادمون بزرگ تر شده 🫶🏻
می خواهم یک آموزش با موضوع انتخابی شما در کانال بذارم و آموزش به صورت متنی و تصویری هست. تا جای ممکن ساده و قابل فهم برای همه هستش و بدون ترس از یادگیری قراره باهم پیش بریم :)
اگه استقبال خوبی شد بازم آموزش ها را ادامه میدیم .
موضوعاتی که انتخاب کردم تئوری نیستند . مثلا قرار نیست آموزش پایتون بذاریم در عوض قراره یه پروژه ی باحال با پایتون انجام بدیم .
توی پست بعدی موضوعات رو در قالب نظر سنجی میذارم.
🆔 @MdDaily
⚡3👨💻1👀1🆒1
Md Daily
موضوعات آموزش:
با تشکر از تمام عزیزانی که توی نظر سنجی شرکت کردند.
توی ۵ هفته ی متوالی قراره باهم به ترتیب موضوعاتی که بیشترین رای را آوردند، آموزش هاشون را قرار بدم.
آموزش ها در 3 روز متوالی چهارشنبه و پنجشنبه و جمعه منتشر میشوند و شما میتونید با هشتگ #ام_دی_کورس اون ها را توی کانال پیدا کنید.
@MdDaily
توی ۵ هفته ی متوالی قراره باهم به ترتیب موضوعاتی که بیشترین رای را آوردند، آموزش هاشون را قرار بدم.
آموزش ها در 3 روز متوالی چهارشنبه و پنجشنبه و جمعه منتشر میشوند و شما میتونید با هشتگ #ام_دی_کورس اون ها را توی کانال پیدا کنید.
@MdDaily
🔥3🌭1
#ام_دی_کورس
دانش پایه Exif Data و سعی در ادیت کردن Exif Byte Order عکس با Golang
خب قبل از اینکه بریم سراغ کد نویسی و کاری که میخوایم انجام بدیم باید با یک سری مفاهیم آشنا بشیم :)
💡خب اول از همه Exif data توی عکس ها چی هستند؟
فایلهای EXIF (فرمت فایل تصویری قابل تعویض) دادههای مهم عکسها را ذخیره میکنند. تقریباً همه دوربینهای دیجیتال هر بار که یک عکس جدید میگیرید، این فایلهای داده را ایجاد میکنند. یک فایل EXIF تمام اطلاعات مربوط به خود تصویر را در خود نگه میدارد - مانند سطح نوردهی، جایی که عکس را گرفتهاید و تنظیماتی که استفاده کردهاید.
🪄ما قراره Exif Byte Order را تغییرش بدیم که:
در متا دیتا های عکس مقدار Exif Byte Order دو حالت میتونه باشه: Little-endian و Big-endian که اگر عکس با گوشی اندرویدی گرفته شده باشه احتمالا Little-endian خواهد بود و اگر با گوشی آیفون گرفته شده باشه Big-endian هستش.
📄 تعریف little-endian: یک روش برای ذخیره سازی دادهها در رایانه است که در آن دادهها با توجه به کوچکترین بخش آنها مرتب میشوند. به عبارتی در این روش، بیتهای کم ارزش داده در مقابل بیتهای با ارزش قرار میگیرند. 🔄
برای مثال، عدد ۳۰۰ با فرمت little-endian به این صورت ذخیره میشود: ۰۴۷۶
📄 تعریف big-endian: یک روش برای ذخیره سازی دادهها در رایانه است که در آن دادهها با توجه به بزرگترین بخش آنها مرتب میشوند. به عبارتی در این روش، بیتهای باارزش داده در مقابل بیتهای کمارزش قرار میگیرند. 🔄
برای مثال، عدد ۳۰۰ با فرمت big-endian به این صورت ذخیره میشود: ۷۶۰۴
💎 اما دقیقا endian ها چی هستند و چه کاربردی دارند؟
✨ کاربرد اصلی endian ها در ذخیره سازی اعداد بیشتر برای پردازش رایانهای است. وقتی دادهها به درستی بر اساس endian باشند، برنامهها و سیستمها میتوانند آنها را به درستی تفسیر کنند.
✅ برخی از کاربردهای endian شامل:
- ارتباط بین سیستمهای مختلف: وجود استانداردهای انتقال داده که مشخص میکنند که در رابطه با endian چه روشی استفاده شود، تضمین میکند که اطلاعات به درستی تفسیر میشوند.
- پردازش تصویر و صدا: در برخی فرمتهای تصویری و صوتی، endian میتواند تأثیری در نحوه تفسیر دادهها و کیفیت آنها داشته باشد.
به طور خلاصه با استفاده از endian، سیستمها و برنامهها میتوانند به درستی با یکدیگر ارتباط برقرار کنند و دادهها را به درستی تفسیر کنند.
ادامه در پست بعدی...
🆔 @MdDaily
دانش پایه Exif Data و سعی در ادیت کردن Exif Byte Order عکس با Golang
خب قبل از اینکه بریم سراغ کد نویسی و کاری که میخوایم انجام بدیم باید با یک سری مفاهیم آشنا بشیم :)
💡خب اول از همه Exif data توی عکس ها چی هستند؟
فایلهای EXIF (فرمت فایل تصویری قابل تعویض) دادههای مهم عکسها را ذخیره میکنند. تقریباً همه دوربینهای دیجیتال هر بار که یک عکس جدید میگیرید، این فایلهای داده را ایجاد میکنند. یک فایل EXIF تمام اطلاعات مربوط به خود تصویر را در خود نگه میدارد - مانند سطح نوردهی، جایی که عکس را گرفتهاید و تنظیماتی که استفاده کردهاید.
🪄ما قراره Exif Byte Order را تغییرش بدیم که:
در متا دیتا های عکس مقدار Exif Byte Order دو حالت میتونه باشه: Little-endian و Big-endian که اگر عکس با گوشی اندرویدی گرفته شده باشه احتمالا Little-endian خواهد بود و اگر با گوشی آیفون گرفته شده باشه Big-endian هستش.
📄 تعریف little-endian: یک روش برای ذخیره سازی دادهها در رایانه است که در آن دادهها با توجه به کوچکترین بخش آنها مرتب میشوند. به عبارتی در این روش، بیتهای کم ارزش داده در مقابل بیتهای با ارزش قرار میگیرند. 🔄
برای مثال، عدد ۳۰۰ با فرمت little-endian به این صورت ذخیره میشود: ۰۴۷۶
📄 تعریف big-endian: یک روش برای ذخیره سازی دادهها در رایانه است که در آن دادهها با توجه به بزرگترین بخش آنها مرتب میشوند. به عبارتی در این روش، بیتهای باارزش داده در مقابل بیتهای کمارزش قرار میگیرند. 🔄
برای مثال، عدد ۳۰۰ با فرمت big-endian به این صورت ذخیره میشود: ۷۶۰۴
💎 اما دقیقا endian ها چی هستند و چه کاربردی دارند؟
✨ کاربرد اصلی endian ها در ذخیره سازی اعداد بیشتر برای پردازش رایانهای است. وقتی دادهها به درستی بر اساس endian باشند، برنامهها و سیستمها میتوانند آنها را به درستی تفسیر کنند.
✅ برخی از کاربردهای endian شامل:
- ارتباط بین سیستمهای مختلف: وجود استانداردهای انتقال داده که مشخص میکنند که در رابطه با endian چه روشی استفاده شود، تضمین میکند که اطلاعات به درستی تفسیر میشوند.
- پردازش تصویر و صدا: در برخی فرمتهای تصویری و صوتی، endian میتواند تأثیری در نحوه تفسیر دادهها و کیفیت آنها داشته باشد.
به طور خلاصه با استفاده از endian، سیستمها و برنامهها میتوانند به درستی با یکدیگر ارتباط برقرار کنند و دادهها را به درستی تفسیر کنند.
ادامه در پست بعدی...
🆔 @MdDaily
⚡2
Md Daily
#ام_دی_کورس دانش پایه Exif Data و سعی در ادیت کردن Exif Byte Order عکس با Golang خب قبل از اینکه بریم سراغ کد نویسی و کاری که میخوایم انجام بدیم باید با یک سری مفاهیم آشنا بشیم :) 💡خب اول از همه Exif data توی عکس ها چی هستند؟ فایلهای EXIF (فرمت فایل…
#ام_دی_کورس
خب از بخش تئوری که رد بشیم بریم این مفاهیم را توی عمل ببینیم :)
قبل از هر چیزی ما نیاز به یه عکس داریم که متادیتا هاش رو ببینیم . شما میتونید با گوشیتون یک عکس بگیرید و اون را زیپ کنید بفرستید روی دسکتاپ متا دیتا هاش رو ببینید یا هم راه ساده تر اینکه از ریپوی exif-samples که کلی عکس با فرمت های مختلف گذاشته یه عکس نمونه را به دلخواه دانلود کنید. من از عکس sanyo-vpcg250.jpg استفاده میکنم.
وارد سایت metadata2go.com میشیم و برای دیدن متا دیتا فایلمون رو توش آپلود میکنیم که اینجا من فایل sanyo-vpcg250.jpg را توش آپلود کردم .
همانطور که در تصویر بالا می بینید مقدار exif_byte_order برابر با Little-endian هستش که ما قراره تبدیل به Big-endian اش کنیم
همچنین میتونیم بجای وبسایت از ابزار exiftool استفاده کنیم:
🆔 @MdDaily
خب از بخش تئوری که رد بشیم بریم این مفاهیم را توی عمل ببینیم :)
قبل از هر چیزی ما نیاز به یه عکس داریم که متادیتا هاش رو ببینیم . شما میتونید با گوشیتون یک عکس بگیرید و اون را زیپ کنید بفرستید روی دسکتاپ متا دیتا هاش رو ببینید یا هم راه ساده تر اینکه از ریپوی exif-samples که کلی عکس با فرمت های مختلف گذاشته یه عکس نمونه را به دلخواه دانلود کنید. من از عکس sanyo-vpcg250.jpg استفاده میکنم.
وارد سایت metadata2go.com میشیم و برای دیدن متا دیتا فایلمون رو توش آپلود میکنیم که اینجا من فایل sanyo-vpcg250.jpg را توش آپلود کردم .
همانطور که در تصویر بالا می بینید مقدار exif_byte_order برابر با Little-endian هستش که ما قراره تبدیل به Big-endian اش کنیم
همچنین میتونیم بجای وبسایت از ابزار exiftool استفاده کنیم:
exiftool MYFILE.JPG | grep "Exif Byte Order"که خروجیش میشه :
Exif Byte Order: Little-endian (Intel, II)ادامه در پست بعدی...
🆔 @MdDaily
👨💻2
Md Daily
#ام_دی_کورس خب از بخش تئوری که رد بشیم بریم این مفاهیم را توی عمل ببینیم :) قبل از هر چیزی ما نیاز به یه عکس داریم که متادیتا هاش رو ببینیم . شما میتونید با گوشیتون یک عکس بگیرید و اون را زیپ کنید بفرستید روی دسکتاپ متا دیتا هاش رو ببینید یا هم راه ساده…
#ام_دی_کورس
خب ما تا اینجا با مفهوم little-endian و big-endian آشنا شدیم و میدونیم چطوری کار میکنند.
حالا وقتشه یه نقشه ی راه از کاری که قراره بکنیم داشته باشیم.
> پست های مربوط به الگوریتم رو میتونید از اینجا بخونید
تسک های ما :
۱. یک پیام به کاربر نشون بدیم و ازش بخوایم مسیر تصویر مدنظرش را بهمون بده
۲. چک کنیم که اون عکس یک عکس ولید هستش یا نه
۳. بایت های عکس را بخونیم
۴- یک حلقه بنویسیم و در بایت ها دنبال Exif باشیم
۵- مقدار byte order را تغییر بدیم
۶. عکس جدید را ذخیره کنیم
۷. با exiftool یا وبسایت متا دیتا های عکس را بررسی کنیم که از درست کار کردن برنامه مطمئن بشم
ادامه در پست بعدی...
🆔 @MdDaily
خب ما تا اینجا با مفهوم little-endian و big-endian آشنا شدیم و میدونیم چطوری کار میکنند.
حالا وقتشه یه نقشه ی راه از کاری که قراره بکنیم داشته باشیم.
> پست های مربوط به الگوریتم رو میتونید از اینجا بخونید
تسک های ما :
۱. یک پیام به کاربر نشون بدیم و ازش بخوایم مسیر تصویر مدنظرش را بهمون بده
۲. چک کنیم که اون عکس یک عکس ولید هستش یا نه
۳. بایت های عکس را بخونیم
۴- یک حلقه بنویسیم و در بایت ها دنبال Exif باشیم
۵- مقدار byte order را تغییر بدیم
۶. عکس جدید را ذخیره کنیم
۷. با exiftool یا وبسایت متا دیتا های عکس را بررسی کنیم که از درست کار کردن برنامه مطمئن بشم
ادامه در پست بعدی...
🆔 @MdDaily
👍1
Md Daily
#ام_دی_کورس خب ما تا اینجا با مفهوم little-endian و big-endian آشنا شدیم و میدونیم چطوری کار میکنند. حالا وقتشه یه نقشه ی راه از کاری که قراره بکنیم داشته باشیم. > پست های مربوط به الگوریتم رو میتونید از اینجا بخونید تسک های ما : ۱. یک پیام به کاربر…
#ام_دی_کورس
💡 اگر ما فایل تصویرمون را با یک Hex editor باز کنیم (اینجا من از xxd استفاده کردم یعنی :
👨🏻💻پس بریم که توی پست بعدی برنامش رو بنویسیم :)
⚠️پی نوشت :
هدف این آموزش آشنایی شما با نحوه ی کار با binary در گولنگ و مفاهیم است و برای تغییر کامل metadata ها و انجام تبدیل endian ها ابزار های زیادی مثل exiftool وجود داره . اگر فایل مهمی دارید این کد را روی اون فایل اجرا نکنید چون ممکنه باعث خرابی فایل بشه.
🆔 @MdDaily
💡 اگر ما فایل تصویرمون را با یک Hex editor باز کنیم (اینجا من از xxd استفاده کردم یعنی :
xxd filename.jpg ) . اگر exif byte order ما little-endian باشه با همچین چیزی مواجه هستیم :0000000: 4949 2a00 0800 0600 ffff 0000 0000 ffff II*.............و اگر big-endian باشه با این مقدار :
0000000: 4d4d 002a 0006 0008 ffff 0000 0000 ffff MM.*............برای تغییر byte order از little-endian به big-endian و برعکس یکی از کار هایی که میتونیم انجام بدیم اینکه II رو به MM و یا MM را به II تغییر بدیم.
👨🏻💻پس بریم که توی پست بعدی برنامش رو بنویسیم :)
⚠️پی نوشت :
هدف این آموزش آشنایی شما با نحوه ی کار با binary در گولنگ و مفاهیم است و برای تغییر کامل metadata ها و انجام تبدیل endian ها ابزار های زیادی مثل exiftool وجود داره . اگر فایل مهمی دارید این کد را روی اون فایل اجرا نکنید چون ممکنه باعث خرابی فایل بشه.
🆔 @MdDaily
❤1