کاربردهای مورد استفاده از Cintoo
که به عنوان یه ابزار برای Digital Twin شناخته میشه
البته یکم زیادی خفنه این دیگه:))
لینک ۱
لینک ۲
لینک ۳
که به عنوان یه ابزار برای Digital Twin شناخته میشه
البته یکم زیادی خفنه این دیگه:))
لینک ۱
لینک ۲
لینک ۳
YouTube
Cintoo Cloud - Bridging the Gap between Reality Capture and Digital Twins
We are pleased to announce our recent collaboration with Cintoo, a leading provider of cutting-edge cloud-based solutions for collaborating, sharing and distributing point clouds and models. This partnership marks a significant milestone for us as UPG becomes…
#proxmox
#linux
#network
#id
some DHCP servers are using client ID, not MAC address to assign IP addresses. You will need to reset the machine id before cloning. I used the commands below and it worked for me:
the option 61 is the "client-ID" or client identifier
Two main options are used in this case: the vendor class identifier (option 60) and the client identifier (option 61). Client identifier is unique and helps the DHCP server to manage its clients and leases, it is generally set to the MAC address of the network interface on a local network. The vendor class identifier is more interesting, as it identifies the vendor type and configuration of a DHCP client in a simple character string. The format is open and can be interpreted by the server in order to adjust the answer options and content.
ref
ورژن دستی کامندای بالا:))
#linux
#network
#id
some DHCP servers are using client ID, not MAC address to assign IP addresses. You will need to reset the machine id before cloning. I used the commands below and it worked for me:
the option 61 is the "client-ID" or client identifier
Two main options are used in this case: the vendor class identifier (option 60) and the client identifier (option 61). Client identifier is unique and helps the DHCP server to manage its clients and leases, it is generally set to the MAC address of the network interface on a local network. The vendor class identifier is more interesting, as it identifies the vendor type and configuration of a DHCP client in a simple character string. The format is open and can be interpreted by the server in order to adjust the answer options and content.
ref
echo -n >/etc/machine-id
rm /var/lib/dbus/machine-id
ln -s /etc/machine-id /var/lib/dbus/machine-id
ورژن دستی کامندای بالا:))
uuidgen | tr -d - > /etc/machine-id
Proxmox Support Forum
Cloned VM has same ip address as original
I have a VM running ubuntu server 22.04. When I clone it, the new vm has the same internal ip, however they have a different macaddress in the network device in my vm's hardware. Even following...
Forwarded from مشورت کامپیوتریها (Navid)
#database
#sql
#oracle
#index
خب توی این پست میخوایم با چند تا از اصطلاحهایی که توی دیتابیسهای sql ای به گوش میخوره مخصوصا indexها(با محوریت Oracle البته)، آشنا بشیم. از موارد ساده شروع میکنیم تا ...
توی دیتابیسهای sql، ما یه table داریم که توی اون table تعدادی column با type مشخص ایجاد میشه که میتونیم دادههامون رو به صورت rowدر اون table ذخیره کنیم. این مقدمه ریز رو گفتم تا بتونیم بهتر index رو تعریف کنیم. index یه ساختمان داده آپشنال هست که اگه بخوایم، میشه روی یک یا چند ستون از جدولا تعریف کرد. ما وقتی روی یکسری ستونها، index تعریف میکنیم، میتونیم با پرفورمنس بالایی، اون دیتاها رو از دیتابیس واکشی کنیم. تعریف index زمانی برای ما مفید میشه که برای یه کاربرد خاص، تعداد درخواستهای نسبتا زیادی بر روی یکسری دادهها داریم، در این صورت میتونیم سرعت کل برنامه رو به کمک indexها افزایش بدیم.
نکته قابل توجهش اینه که تعریف index ها کاملا مستقل از داده اصلی هست و صرفا با استفاده از ساختمانداده مناسب، دسترسی به دادههای index شده رو افزایش میده. گفتم ساختماندادههای مناسب، بخوام یه اشارهای بکنم، توی Oracle یکی از ساختمان دادههایی که برای این منظور استفاده میشه، B-Tree هست. (احتمالا جزو اون درختایی بوده که توی درس ساختمانداده خوندین و با خودتون گفتین خب به چه دردی میخوره🙂) همچنین متدهای Reverse key indexes، Bitmap indexes و Function-based indexes هم در Oracle قابل استفاده هستند که برای مطالعه بیشتر میتونین به این لینک یه سر بزنین:)
یکی دیگه از دلایلی که استفاده از indexباعث افزایش سرعت واکشی میشه، اینه که باعث میشه دسترسی کمتری به بلوکهای حافظه و I/O disk داشتهباشه و این دسترسی رو به لطف همون ساختماندادهها، به حداقل میرسونه.
در آخر هم درخواست ساختن index رو صرفا برای اینکه بفهمیم چقدر سادس(!) ببینیم:
و در نهایت:)
برای اینکه اطلاعات بیشتر درباره indexها و نوعهاش و چگونگی کارکردش بدونین خوندن بخش Indexes and Index-Organized Tables از این داکیومنت که مال Oracle هست پیشنهاد میشه:)
#sql
#oracle
#index
خب توی این پست میخوایم با چند تا از اصطلاحهایی که توی دیتابیسهای sql ای به گوش میخوره مخصوصا indexها(با محوریت Oracle البته)، آشنا بشیم. از موارد ساده شروع میکنیم تا ...
توی دیتابیسهای sql، ما یه table داریم که توی اون table تعدادی column با type مشخص ایجاد میشه که میتونیم دادههامون رو به صورت rowدر اون table ذخیره کنیم. این مقدمه ریز رو گفتم تا بتونیم بهتر index رو تعریف کنیم. index یه ساختمان داده آپشنال هست که اگه بخوایم، میشه روی یک یا چند ستون از جدولا تعریف کرد. ما وقتی روی یکسری ستونها، index تعریف میکنیم، میتونیم با پرفورمنس بالایی، اون دیتاها رو از دیتابیس واکشی کنیم. تعریف index زمانی برای ما مفید میشه که برای یه کاربرد خاص، تعداد درخواستهای نسبتا زیادی بر روی یکسری دادهها داریم، در این صورت میتونیم سرعت کل برنامه رو به کمک indexها افزایش بدیم.
نکته قابل توجهش اینه که تعریف index ها کاملا مستقل از داده اصلی هست و صرفا با استفاده از ساختمانداده مناسب، دسترسی به دادههای index شده رو افزایش میده. گفتم ساختماندادههای مناسب، بخوام یه اشارهای بکنم، توی Oracle یکی از ساختمان دادههایی که برای این منظور استفاده میشه، B-Tree هست. (احتمالا جزو اون درختایی بوده که توی درس ساختمانداده خوندین و با خودتون گفتین خب به چه دردی میخوره🙂) همچنین متدهای Reverse key indexes، Bitmap indexes و Function-based indexes هم در Oracle قابل استفاده هستند که برای مطالعه بیشتر میتونین به این لینک یه سر بزنین:)
یکی دیگه از دلایلی که استفاده از indexباعث افزایش سرعت واکشی میشه، اینه که باعث میشه دسترسی کمتری به بلوکهای حافظه و I/O disk داشتهباشه و این دسترسی رو به لطف همون ساختماندادهها، به حداقل میرسونه.
در آخر هم درخواست ساختن index رو صرفا برای اینکه بفهمیم چقدر سادس(!) ببینیم:
CREATE INDEX index_name
ON table_name (column1, column2, ...columnN);
و در نهایت:)
برای اینکه اطلاعات بیشتر درباره indexها و نوعهاش و چگونگی کارکردش بدونین خوندن بخش Indexes and Index-Organized Tables از این داکیومنت که مال Oracle هست پیشنهاد میشه:)
#linux
#storage
#LVM
Logical Volume Manager (LVM)
Let’s start with LVM itself. The Logical Volume Manager is the software layer responsible for managing the logical volume infrastructure. It provides tools and utilities to create, resize, and manage logical volumes, volume groups, and physical volumes. LVM facilitates dynamic allocation and resizing of storage resources without requiring downtime.
Physical Volume (PV)
A physical volume refers to a physical storage device or LVM partition, such as a hard disk drive (HDD) or solid-state drive (SSD). LVM utilizes these physical volumes as building blocks for logical volume management.
Volume Group (VG)
A volume group is a collection of one or more physical volumes that are combined to form a single storage pool. It acts as a container for logical volumes and provides a higher level of abstraction for storage management. Within a volume group, available physical extents are pooled together.
Physical Extent (PE)
A physical extent is the smallest unit of allocation within a volume group. It represents a fixed-size block of storage space, typically a few megabytes in size, and is used for allocating logical volumes. The physical extents from different physical volumes are combined to form a single pool of available extents within a volume group.
Advantages of LVM:
Dynamic Storage Allocation
Logical Volume Snapshots
Striping and Mirroring
Volume Group Aggregation
Online Data Relocation
Backup and Restore Flexibility
#storage
#LVM
Logical Volume Manager (LVM)
Let’s start with LVM itself. The Logical Volume Manager is the software layer responsible for managing the logical volume infrastructure. It provides tools and utilities to create, resize, and manage logical volumes, volume groups, and physical volumes. LVM facilitates dynamic allocation and resizing of storage resources without requiring downtime.
Physical Volume (PV)
A physical volume refers to a physical storage device or LVM partition, such as a hard disk drive (HDD) or solid-state drive (SSD). LVM utilizes these physical volumes as building blocks for logical volume management.
Volume Group (VG)
A volume group is a collection of one or more physical volumes that are combined to form a single storage pool. It acts as a container for logical volumes and provides a higher level of abstraction for storage management. Within a volume group, available physical extents are pooled together.
Physical Extent (PE)
A physical extent is the smallest unit of allocation within a volume group. It represents a fixed-size block of storage space, typically a few megabytes in size, and is used for allocating logical volumes. The physical extents from different physical volumes are combined to form a single pool of available extents within a volume group.
Advantages of LVM:
Dynamic Storage Allocation
Logical Volume Snapshots
Striping and Mirroring
Volume Group Aggregation
Online Data Relocation
Backup and Restore Flexibility
pvcreate /dev/sdX
vgcreate myvg /dev/sdX
lvcreate -L 10G -n mylv myvg
#database
#partitioning
#oracle
بریم سراغ یکی از قابلیتهای دیتابیسها که تو حجم بالای داده، خیلی به دردمون میخوره. پارتیشنینگ. پارتیشنینگ میاد برامون جدولها و ایندکس های خیلی بزرگ رو میشکنه به قسمتهای کوچیکتر تا بتونیم مدیریت بهتری روشون داشته باشیم و کارایی رو ببریم بالا.
با یه مثال ادامه بدیم. فرض کنین مدیر یه کتابخونه هستین و تعداد زیاااادی کتاب زیر دستتون هست که باید با سرعت بالایی کتاب مورد نظرتون رو پیدا کنین و بدین به درخواست کننده. خب برای این کار یکی از راههاش اینه که یه قفسه بزررررگ داشته باشین که همه کتابها توی اون قفسه باشه و هر بار که میخواین یه کتابی رو پیدا کنین از اول تا آخر بگردین که بتونین اون کتاب رو پیدا کنین و برش دارین. ولی خب همونطور که دیدین هیچ کتابدار عاقلی این حرکت رو نمیزنه!:) یکی از راههایی که میتونیم این کار رو به صورت بهینه تر انجام بدیم و بهمون کمک میکنه که بتونیم مدیریت بهتری روی کتابها داشته باشیم، اینه که بیایم اون قفسه بزررررگ رو به قفسههای کوچکتری بشکنیم و توی هر قفسه یه سری کتاب خاص رو قرار بدیم که وقتی نیاز داشتیم به اون نوع کتابهای خاص بدونیم باید بریم سراغ کدوم قفسه. مثلا بیایم کتابها رو بر اساس سال چاپ بذاریم توی قفسههای مختلف. یا اینکه بر اساس موضوع بذاریم توی قفسههای مختلف یا ... . به این کار کتابدار توی دیتابیس میگن پارتیشنینگ. حالا همین چطوری جدا کردن این قفسهها خودش میتونه روشهای مختلفی داشته باشه که باعث میشه پارتیشنینگهای مختلفی داشته باشیم:
Range Partitioning
Interval Partitioning
List Partitioning
Hash Partitioning
Refrence Partitioning
Composite Partitioning
قبل از اینکه این موارد رو یه توضیح مختصری بدیم نیازه که با Partition Key آشنا بشیم. Partition Key یک یا مجموعهای از ستونها هست که با توجه به اون ها تصمیم گرفته میشه که یه ردیف از داده، توی کدوم پارتیشن قرار بگیره. هر ردیف داده، به صورت یکتا توی یک پارتیشن قرار میگیره.
#partitioning
#oracle
بریم سراغ یکی از قابلیتهای دیتابیسها که تو حجم بالای داده، خیلی به دردمون میخوره. پارتیشنینگ. پارتیشنینگ میاد برامون جدولها و ایندکس های خیلی بزرگ رو میشکنه به قسمتهای کوچیکتر تا بتونیم مدیریت بهتری روشون داشته باشیم و کارایی رو ببریم بالا.
با یه مثال ادامه بدیم. فرض کنین مدیر یه کتابخونه هستین و تعداد زیاااادی کتاب زیر دستتون هست که باید با سرعت بالایی کتاب مورد نظرتون رو پیدا کنین و بدین به درخواست کننده. خب برای این کار یکی از راههاش اینه که یه قفسه بزررررگ داشته باشین که همه کتابها توی اون قفسه باشه و هر بار که میخواین یه کتابی رو پیدا کنین از اول تا آخر بگردین که بتونین اون کتاب رو پیدا کنین و برش دارین. ولی خب همونطور که دیدین هیچ کتابدار عاقلی این حرکت رو نمیزنه!:) یکی از راههایی که میتونیم این کار رو به صورت بهینه تر انجام بدیم و بهمون کمک میکنه که بتونیم مدیریت بهتری روی کتابها داشته باشیم، اینه که بیایم اون قفسه بزررررگ رو به قفسههای کوچکتری بشکنیم و توی هر قفسه یه سری کتاب خاص رو قرار بدیم که وقتی نیاز داشتیم به اون نوع کتابهای خاص بدونیم باید بریم سراغ کدوم قفسه. مثلا بیایم کتابها رو بر اساس سال چاپ بذاریم توی قفسههای مختلف. یا اینکه بر اساس موضوع بذاریم توی قفسههای مختلف یا ... . به این کار کتابدار توی دیتابیس میگن پارتیشنینگ. حالا همین چطوری جدا کردن این قفسهها خودش میتونه روشهای مختلفی داشته باشه که باعث میشه پارتیشنینگهای مختلفی داشته باشیم:
Range Partitioning
Interval Partitioning
List Partitioning
Hash Partitioning
Refrence Partitioning
Composite Partitioning
قبل از اینکه این موارد رو یه توضیح مختصری بدیم نیازه که با Partition Key آشنا بشیم. Partition Key یک یا مجموعهای از ستونها هست که با توجه به اون ها تصمیم گرفته میشه که یه ردیف از داده، توی کدوم پارتیشن قرار بگیره. هر ردیف داده، به صورت یکتا توی یک پارتیشن قرار میگیره.
خب بریم سراغ این انواع پارتیشنها:
Range Partitioning:
توی این دسته، دیتابیس ردیفهای داده رو بر اساس یه رنجی از مقدار Partitioning Key به پارتیشنها میده که ذخیره کنند. این دسته معمولا بر اساس تاریخ و زمان هست. مثلا پارتیشنینگ بر اساس سال ایجاد اون سطر داده، انجام بشه و همه دادههای سال ۲۰۲۰ توی یه پارتیشن و ۲۰۲۱ توی یه پارتیشن و ... باشه.
Interval Partitioning:
این مدل از پارتیشنینگ، یه اکستنشن از Range Partitioning هست که ما رو از مشخص کردن دقیق رنج پارتیشنها معاف میکنه. یعنی نیاز نیست که حتما همه رینجهایی که نیاز داریم رو تعریف کنیم، بلکه با تعریف یکسری Range و یک Interval، در صورتی که داده مورد نظر، توی اون Range نبود، دیتابیس خودش بر اساس اون Interval، یک پارتیشن ایجاد میکنه و داده رو در اون قرار میده.
List Partitioning:
توی این دسته، برای هر پارتیشن، یک لیستی از مقادیر برای هر پارتیشن، مشخص میشه که بر اساس مقدار Partitioning Key دادهها، در اون پارتیشن قرار میگیره یا نه. مثلا میتونیم بگیم نوع محصولات خوراکی رو بریز توی یه پارتیشن و نوع محصول پوشیدنی رو بریز توی یه پارتیشن دیگه.
Hash Partitioning:
توی این دسته، دیتابیس به کمک یک تابع Hash داخلی، تصمیم میگیره که داده رو بین پارتیشنها تقسیم کنه. تو این مورد ما نمیتونیم بگیم که کدوم دادهها رو توی کدوم پارتیشنها ذخیره کن بلکه فقط میگیم که دادهها رو توی چند تا پارتیشن قرار بده. دیگه دیتابیس خودش میدونه و مقدار خروجی تابع Hashش.:)
Refrence Partitioning:
این روش Partitioning داره میگه که هر استراتژیای که برای ذخیره جدولهای parrent توی دیتابیس هست، توسط جدولهای child هم برقرار باشه. مثلا فررض کنین یک جدول Student داشته باشیم و یک جدول Code که کد های دانشجوها توش نگهداری میشه به این صورت که هر سطر داده در جدول Code یک Student_id به عنوان کلید خارجی داره و نشوندهنده این هست که هر کد مال کدوم دانشجو هست. در این صورت هر ردیف داده در جدول Code در همون پارتیشنی ذخیره میشه که داده متانظر Student_id ش ذخیره شده. این کار باعث میشه که پرفورمنس جوین بین جداول بالا بره.
Composite Partitioning:
این دسته، شامل ترکیبی از انواع پارتیشنینگ که تا حالا باهاشون آشنا شدیم، میشه. به این صورت که میتونیم بعد از تعریف یه Partitioning خاص برای جدول، برای هر پارتیشن یک Subpartition هم تعریف کنیم. مثلا متد Composite Hash-Range Partitioning میتونه Subpartitionهای خودش رو را با Hash Partitioning از پارتیشنهای ایجاد شده توسط Range Partitioning، ایجاد کنه.
و در آخر برای ادامه بازم لینک و داکیومنت جذاب و قشنگ...:)
میتونین برای آشنایی بیشتر با این مبحث، این لینک رو مطالعه کنین.
Range Partitioning:
توی این دسته، دیتابیس ردیفهای داده رو بر اساس یه رنجی از مقدار Partitioning Key به پارتیشنها میده که ذخیره کنند. این دسته معمولا بر اساس تاریخ و زمان هست. مثلا پارتیشنینگ بر اساس سال ایجاد اون سطر داده، انجام بشه و همه دادههای سال ۲۰۲۰ توی یه پارتیشن و ۲۰۲۱ توی یه پارتیشن و ... باشه.
Interval Partitioning:
این مدل از پارتیشنینگ، یه اکستنشن از Range Partitioning هست که ما رو از مشخص کردن دقیق رنج پارتیشنها معاف میکنه. یعنی نیاز نیست که حتما همه رینجهایی که نیاز داریم رو تعریف کنیم، بلکه با تعریف یکسری Range و یک Interval، در صورتی که داده مورد نظر، توی اون Range نبود، دیتابیس خودش بر اساس اون Interval، یک پارتیشن ایجاد میکنه و داده رو در اون قرار میده.
List Partitioning:
توی این دسته، برای هر پارتیشن، یک لیستی از مقادیر برای هر پارتیشن، مشخص میشه که بر اساس مقدار Partitioning Key دادهها، در اون پارتیشن قرار میگیره یا نه. مثلا میتونیم بگیم نوع محصولات خوراکی رو بریز توی یه پارتیشن و نوع محصول پوشیدنی رو بریز توی یه پارتیشن دیگه.
Hash Partitioning:
توی این دسته، دیتابیس به کمک یک تابع Hash داخلی، تصمیم میگیره که داده رو بین پارتیشنها تقسیم کنه. تو این مورد ما نمیتونیم بگیم که کدوم دادهها رو توی کدوم پارتیشنها ذخیره کن بلکه فقط میگیم که دادهها رو توی چند تا پارتیشن قرار بده. دیگه دیتابیس خودش میدونه و مقدار خروجی تابع Hashش.:)
Refrence Partitioning:
این روش Partitioning داره میگه که هر استراتژیای که برای ذخیره جدولهای parrent توی دیتابیس هست، توسط جدولهای child هم برقرار باشه. مثلا فررض کنین یک جدول Student داشته باشیم و یک جدول Code که کد های دانشجوها توش نگهداری میشه به این صورت که هر سطر داده در جدول Code یک Student_id به عنوان کلید خارجی داره و نشوندهنده این هست که هر کد مال کدوم دانشجو هست. در این صورت هر ردیف داده در جدول Code در همون پارتیشنی ذخیره میشه که داده متانظر Student_id ش ذخیره شده. این کار باعث میشه که پرفورمنس جوین بین جداول بالا بره.
Composite Partitioning:
این دسته، شامل ترکیبی از انواع پارتیشنینگ که تا حالا باهاشون آشنا شدیم، میشه. به این صورت که میتونیم بعد از تعریف یه Partitioning خاص برای جدول، برای هر پارتیشن یک Subpartition هم تعریف کنیم. مثلا متد Composite Hash-Range Partitioning میتونه Subpartitionهای خودش رو را با Hash Partitioning از پارتیشنهای ایجاد شده توسط Range Partitioning، ایجاد کنه.
و در آخر برای ادامه بازم لینک و داکیومنت جذاب و قشنگ...:)
میتونین برای آشنایی بیشتر با این مبحث، این لینک رو مطالعه کنین.
Oracle Help Center
VLDB and Partitioning Guide
Partitioning enhances the performance, manageability, and availability of a wide variety of applications and helps reduce the total cost of ownership for storing large amounts of data.
#soft_skill
#presentation
چند تا نکته کلا درباره ارائه دادن و حرف زدن
۱. یونیک کردن ارائه با اضافه کردن نظرات خود ارائه دهنده
درگیر کردن ذهن مخاطب با سوال
۲. تن صدای مناسب و فراز و نشیب
۳. تماس چشمی با مخاطب
۴. انسان ها از طریق هیجانات با هم صحبت میکنند:)
۵. قاعده آلبرت مهرابیان
۶. زبان بدن مثل طاووس
#presentation
چند تا نکته کلا درباره ارائه دادن و حرف زدن
۱. یونیک کردن ارائه با اضافه کردن نظرات خود ارائه دهنده
درگیر کردن ذهن مخاطب با سوال
۲. تن صدای مناسب و فراز و نشیب
۳. تماس چشمی با مخاطب
۴. انسان ها از طریق هیجانات با هم صحبت میکنند:)
۵. قاعده آلبرت مهرابیان
۶. زبان بدن مثل طاووس
#فیلم
#maze_runner
#movie
فیلم Maze runner
سه تاشو دیدم:)
یکم بگم ازش که مقداری هم اسپویل توش هست و اول فیلمو ببینین بعد ....:)
اگر بخوام ازش چند خط بنویسم، اول اینکه عشق خاصی توی فیلم نبود و خیلی تمرکزش روی عشق و عاشقی نبود بر خلاف خیلی فیلمای دیگه. و باز هم مثل خیلی فیلمای دیگه یه سوپرمنی بود که راهی رو میرفت بر خلاف راه عام مردم. انتخابی رو میکرد برخلاف انتخاب بقیه و کاری رو میکرد که بقیه انتظارش رو ندارن. یه چیز دیگه هم که جالب بود و کمتر توی فیلما پیدا میشد، از دست دادن عزیزان نقش اصلی بود توی این سه قسمت. توی هرکدوم از قسمت هاش یه جورایی نزدیک ترین دوستش رو از دست میداد و در آخر قسمت آخرش هم که هیچ:)
ته فیلم رو هم نفهمیدم آخرش بدون دارو دیگه طوریشون نشد یا چی ولی فکر کنم اخرش کسایی که فرار کرده بودن نجات پیدا کردن و کسایی هم که یه عمری جنگیدن برا پیدا کردن یه راه درمان ویروس، همشون مردن به جز اونایی که موفق شدن فرار کنن:)
راه درمانش هم از خون فقط یه نفر بود:)
جالبه
چرا خون یه نفر؟ چرا زندگی یه نفر باید نجات میافت کلا؟ و کلی چرای دیگه از جزییات که مجال گفتن نیست:)
خلاصه در کل همون که اول هم گفتم....جنگیدن برای زنده موندن...برای نمردن...برای دوستان همین:)
#maze_runner
#movie
فیلم Maze runner
سه تاشو دیدم:)
یکم بگم ازش که مقداری هم اسپویل توش هست و اول فیلمو ببینین بعد ....:)
ته فیلم رو هم نفهمیدم آخرش بدون دارو دیگه طوریشون نشد یا چی ولی فکر کنم اخرش کسایی که فرار کرده بودن نجات پیدا کردن و کسایی هم که یه عمری جنگیدن برا پیدا کردن یه راه درمان ویروس، همشون مردن به جز اونایی که موفق شدن فرار کنن:)
راه درمانش هم از خون فقط یه نفر بود:)
جالبه
چرا خون یه نفر؟ چرا زندگی یه نفر باید نجات میافت کلا؟ و کلی چرای دیگه از جزییات که مجال گفتن نیست:)
خلاصه در کل همون که اول هم گفتم....جنگیدن برای زنده موندن...برای نمردن...برای دوستان همین:)
#مشورت
#تجربه
#آینده
امروز یه صحبتی با مستر حقیقت داشتم که یه خلاصه نکاتش رو بد نیس مرور کنم:)
صحبت درباره آینده کار و دانشگاه بود بیشتر. اینکه اول یه مقایسه ای داشته باشیم بین دانشگاه و کار و اینکه میشه یه پا تو دانشگاه باشه یه پا تو شرکت...که گویا نمیشه. شرکت داشتن و کار کردن و کار به درد بخور کردن یه کار فول تایمه با تمرکز کامل. و اینکه کار شرکتی فقط کار فنی نیست یا فقط کار R&D نیست و خیلی کارای دیگه هم در خیلش هست. نمیدونم کارای hr ای، کارای حقوقی، کارای اجرایی و ... . تو دانشگاه بخوای ادامه بدی و درس بخونی تقریبا تک بعدیه...فقط درس و ریسرچ و مقاله و h-index و ... . لذا یه استاد که دغدغش h-index ش هست نمیتونه دغدغه کامل شرکت رو هم داشته باشه اونم یه شرکت بزرگ تو اسکیل ۵۰۰ نفر به بالا. مگر اینکه یه شرکت کوچول موچول داشته باشه که با چند تا دانشجوی کوچول موچول که دور خودش جمعشون کرده و یه پروژه ای برداشتن با سنگر و اسم داشنگاه که انجامش بدن و بعد از یه مدتی...اگر فیل هم نشه ولی یه کار قوی بعیده بشه.
(تقریبا قبول دارم تا بخشی. بعضی پروژههایی که خودم داشتم با استادا و موقع دانشجوییم با اینکه بسی خون و دل خوردم سرش و وقت گذاشتم و فلان و بهمان...ولی الان میدونم داره خاک میخوره و استفاده نمیشه. البته لازم به ذکره که بعضیاشونم داره استفاده میشه و زیر باره با قدرت و هنوزم دارم لذت میبرم از بزرگ کردن چنین بچههایی:)) ولی خب اسکیلش به اندازه محصولات یه شرکت بزرگ نیست منطقا)
دیگه اینکه یه حرف دیگه هم زده شد که جذاب بود برام. اینکه استاده یا کاری که تو دانشگاه داره انجام میشه، داره پشت دانشگاه انجام میشه و برای بقاش نمیجنگه. ولی وقتی توی یه شرکتی هستی باید توی رقابتای سنگین واقعا بجنگی برای بقا. کارای دانشگاهی و اینا میتونه خروجی داشته باشه میتونه نداشته باشه ولی کار صنعتی باید خروجی داشته باشه...باید کاری انجام بده وگرنه خورده میشه و هضم میشه و در نهایت...میمیره و تامام:) لذا اون روحیه جنگندگی و بدو بدو و اینا...فکر میکنم تو شرکت و صنعت بیشتر تقویت بشه. چون داری خروج یکارت رو میبینی...چون داری میبینی به درد میخوره این کارت ...چون داری میبینی این چند خط کدت چقدر تاثیر داره توی کشور، زندگی مردم و حتی خودت:) اره چند خط کد توی خود آدم هم تاثیر میذاره که دیگه بحثشو باز نمیکنم:)
دیگه اینکه تجربه خارج کشور...اگرم میخوای داشته باشی به کم قانع نشو:)
گزینه خارج تو مورد تحصیلیش که عملا داری باز میدویی دنبال مقاله پقاله و خروجی کار و تاثیرش شدیدا کمتره و من خودم آدم صرف مقاله ای نیستم و نمیتونم کاری نکنم و فقط دنبال ریسرچ و مقاله باشم. لذا هسیم فعلا به اندازه کافی و لازم:)
والسلام
#تجربه
#آینده
امروز یه صحبتی با مستر حقیقت داشتم که یه خلاصه نکاتش رو بد نیس مرور کنم:)
صحبت درباره آینده کار و دانشگاه بود بیشتر. اینکه اول یه مقایسه ای داشته باشیم بین دانشگاه و کار و اینکه میشه یه پا تو دانشگاه باشه یه پا تو شرکت...که گویا نمیشه. شرکت داشتن و کار کردن و کار به درد بخور کردن یه کار فول تایمه با تمرکز کامل. و اینکه کار شرکتی فقط کار فنی نیست یا فقط کار R&D نیست و خیلی کارای دیگه هم در خیلش هست. نمیدونم کارای hr ای، کارای حقوقی، کارای اجرایی و ... . تو دانشگاه بخوای ادامه بدی و درس بخونی تقریبا تک بعدیه...فقط درس و ریسرچ و مقاله و h-index و ... . لذا یه استاد که دغدغش h-index ش هست نمیتونه دغدغه کامل شرکت رو هم داشته باشه اونم یه شرکت بزرگ تو اسکیل ۵۰۰ نفر به بالا. مگر اینکه یه شرکت کوچول موچول داشته باشه که با چند تا دانشجوی کوچول موچول که دور خودش جمعشون کرده و یه پروژه ای برداشتن با سنگر و اسم داشنگاه که انجامش بدن و بعد از یه مدتی...اگر فیل هم نشه ولی یه کار قوی بعیده بشه.
(تقریبا قبول دارم تا بخشی. بعضی پروژههایی که خودم داشتم با استادا و موقع دانشجوییم با اینکه بسی خون و دل خوردم سرش و وقت گذاشتم و فلان و بهمان...ولی الان میدونم داره خاک میخوره و استفاده نمیشه. البته لازم به ذکره که بعضیاشونم داره استفاده میشه و زیر باره با قدرت و هنوزم دارم لذت میبرم از بزرگ کردن چنین بچههایی:)) ولی خب اسکیلش به اندازه محصولات یه شرکت بزرگ نیست منطقا)
دیگه اینکه یه حرف دیگه هم زده شد که جذاب بود برام. اینکه استاده یا کاری که تو دانشگاه داره انجام میشه، داره پشت دانشگاه انجام میشه و برای بقاش نمیجنگه. ولی وقتی توی یه شرکتی هستی باید توی رقابتای سنگین واقعا بجنگی برای بقا. کارای دانشگاهی و اینا میتونه خروجی داشته باشه میتونه نداشته باشه ولی کار صنعتی باید خروجی داشته باشه...باید کاری انجام بده وگرنه خورده میشه و هضم میشه و در نهایت...میمیره و تامام:) لذا اون روحیه جنگندگی و بدو بدو و اینا...فکر میکنم تو شرکت و صنعت بیشتر تقویت بشه. چون داری خروج یکارت رو میبینی...چون داری میبینی به درد میخوره این کارت ...چون داری میبینی این چند خط کدت چقدر تاثیر داره توی کشور، زندگی مردم و حتی خودت:) اره چند خط کد توی خود آدم هم تاثیر میذاره که دیگه بحثشو باز نمیکنم:)
دیگه اینکه تجربه خارج کشور...اگرم میخوای داشته باشی به کم قانع نشو:)
گزینه خارج تو مورد تحصیلیش که عملا داری باز میدویی دنبال مقاله پقاله و خروجی کار و تاثیرش شدیدا کمتره و من خودم آدم صرف مقاله ای نیستم و نمیتونم کاری نکنم و فقط دنبال ریسرچ و مقاله باشم. لذا هسیم فعلا به اندازه کافی و لازم:)
والسلام
⚡1👍1🔥1
#ParallelProcessing
#OpenMP
OpenMP
یه کتابخونه برای پردازش موازی بر پایه Shared Memory هست که توی c , cpp و fortran میشه ازش استفاده کرد.
پردازشهای موازی معمولا یا بر پایه Shared Memory اند یا بر پایه Message Passing. بخوام بگم این دو تا چین خیلی خلاصه، روش ارتباط بین پردازندهها. ما زمانی که میریم سراغ پردازش موازی، نیاز داریم که خیلی موقع ها پردازندههامون باهم ارتباط داشته باشن ...متغیر بگیرن بدن یا روی یه سری متغیر مشترک پردازش انجام بدن. زمانی که پردازش موازی مون بر پایه Shared Memory عه، میایم یه مموری مشترک میذاریم اون وسط میگیم همه پردازنده ها (یا تردهای هر پردازنده) به اون دسترسی داشته باشن و متغیرهای مشترک رو هم اونجا بنویسن و بخونن (البته با احتیاط:) ). زمانی هم که این پردازش موازیمون بر پایه Message Passing عه، با یه Interconnection Network ای، پردازندهها (یا تردها) با هم ارتباط میگیرن و دیتا برا همدیگه میفرستن. مثال سادش میشه مثلا روی شبکه اینترنت یا اینترانت بیان دیتاهاشون رو بفرستن برا هم و معمولا برای پردازشهای موازی توی کلاستر ها و روی چند تا نود بیشتر کاربرد داره.
خب برگردیم سر بحث اول. OpenMp مخفف Open Multiprocessing Programming هست. وقتی با این کتابخونه یه برنامه مینویسیم، میتونیم بهش دقیقا مشخص کنیم که کجاها رو موازی کنه، چطوی موازی کنه، از کجا به بعد دیگ موازی نباشه و خیلی چیزای دیگه. یعنی مستقیم به کامپایلر میگیم اقا تو فلان جای کد رو با اینقدر ترد موازیش کن و کامپایلر هم فایلهای اجرایی مربوط به اون رو ایجاد میکنه و میده سیستمعامل که انجامش بده. وقتی به کمک OpenMP موازی کد میزنیم، عملا کدمون میشه مجموعهای از Threadها که با fork و join ایجاد یا ادغام میشن. یه ترد مستر داریم همیشه که Thread 0 هست. بعد از اینکه fork زدیم، میاد یک سری تردهای اسلیو هم ایجاد میکنه که Thread >=1 رو شامل میشه.
حیفه درباره پردازش موازی صحبت بشه و درباره خطرش صحبت نشه:)
اگه حواسمون به متغیرهای مشترک نباشه ممکنه یه جایی رو بترکونیم:))
لذا یا با استفاده از lock یا متغیرهای پرایوت (متغیرهایی که مخصوص هر ترد میشه) و اشتراکی (متغیر های اشتراکی تردها) یا مشخص کردن critical section یا single thread region یا Barrierها یا عملیاتهای atomic، جلوی مشکلا رو باید گرفت تا پردازش درست انجام بشه:)
چند تا ریسورس:
منبع ۱
منبع ۲
و یک نمونه کد بدون شرح:
#OpenMP
OpenMP
یه کتابخونه برای پردازش موازی بر پایه Shared Memory هست که توی c , cpp و fortran میشه ازش استفاده کرد.
پردازشهای موازی معمولا یا بر پایه Shared Memory اند یا بر پایه Message Passing. بخوام بگم این دو تا چین خیلی خلاصه، روش ارتباط بین پردازندهها. ما زمانی که میریم سراغ پردازش موازی، نیاز داریم که خیلی موقع ها پردازندههامون باهم ارتباط داشته باشن ...متغیر بگیرن بدن یا روی یه سری متغیر مشترک پردازش انجام بدن. زمانی که پردازش موازی مون بر پایه Shared Memory عه، میایم یه مموری مشترک میذاریم اون وسط میگیم همه پردازنده ها (یا تردهای هر پردازنده) به اون دسترسی داشته باشن و متغیرهای مشترک رو هم اونجا بنویسن و بخونن (البته با احتیاط:) ). زمانی هم که این پردازش موازیمون بر پایه Message Passing عه، با یه Interconnection Network ای، پردازندهها (یا تردها) با هم ارتباط میگیرن و دیتا برا همدیگه میفرستن. مثال سادش میشه مثلا روی شبکه اینترنت یا اینترانت بیان دیتاهاشون رو بفرستن برا هم و معمولا برای پردازشهای موازی توی کلاستر ها و روی چند تا نود بیشتر کاربرد داره.
خب برگردیم سر بحث اول. OpenMp مخفف Open Multiprocessing Programming هست. وقتی با این کتابخونه یه برنامه مینویسیم، میتونیم بهش دقیقا مشخص کنیم که کجاها رو موازی کنه، چطوی موازی کنه، از کجا به بعد دیگ موازی نباشه و خیلی چیزای دیگه. یعنی مستقیم به کامپایلر میگیم اقا تو فلان جای کد رو با اینقدر ترد موازیش کن و کامپایلر هم فایلهای اجرایی مربوط به اون رو ایجاد میکنه و میده سیستمعامل که انجامش بده. وقتی به کمک OpenMP موازی کد میزنیم، عملا کدمون میشه مجموعهای از Threadها که با fork و join ایجاد یا ادغام میشن. یه ترد مستر داریم همیشه که Thread 0 هست. بعد از اینکه fork زدیم، میاد یک سری تردهای اسلیو هم ایجاد میکنه که Thread >=1 رو شامل میشه.
حیفه درباره پردازش موازی صحبت بشه و درباره خطرش صحبت نشه:)
اگه حواسمون به متغیرهای مشترک نباشه ممکنه یه جایی رو بترکونیم:))
لذا یا با استفاده از lock یا متغیرهای پرایوت (متغیرهایی که مخصوص هر ترد میشه) و اشتراکی (متغیر های اشتراکی تردها) یا مشخص کردن critical section یا single thread region یا Barrierها یا عملیاتهای atomic، جلوی مشکلا رو باید گرفت تا پردازش درست انجام بشه:)
چند تا ریسورس:
منبع ۱
منبع ۲
و یک نمونه کد بدون شرح:
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
int main()
{
int th_id, num;
omp_set_num_threads(2);
#pragma omp parallel for
for (int i=0 ; i < 10 ; i++)
{
num = omp_get_num_threads();
th_id = omp_get_thread_num();
printf("thread Id : %d/%d Threads, Assigned Loop Index: %d\n", th_id, num, i);
}
return 0;
}
👍1🔥1
#softskill
مینی سافت اسکیل:)
شنونده خوبی باشیم:)))
یکم ایدت:
چطوری شنونده خوبی باشیم؟ نپریم وسط حرف
چطوری شنونده خوبی باشیم؟ یه ack بدیم با دست یا بدن یا سر به گوینده بفهمه داریم میشنویم و میفهمیم
چطوری شنونده خوبی باشیم؟ ارتباط چشمی داشته باشیم (که من بلد نیستم اینو:) )
چطوری شنونده خوبی باشیم؟ ...
مینی سافت اسکیل:)
شنونده خوبی باشیم:)))
یکم ایدت:
چطوری شنونده خوبی باشیم؟ نپریم وسط حرف
چطوری شنونده خوبی باشیم؟ یه ack بدیم با دست یا بدن یا سر به گوینده بفهمه داریم میشنویم و میفهمیم
چطوری شنونده خوبی باشیم؟ ارتباط چشمی داشته باشیم (که من بلد نیستم اینو:) )
چطوری شنونده خوبی باشیم؟ ...
❤🔥1👍1🔥1
#Reinforcement_Learning
#RL
#AI
#هوش_مصنوعی
#یادگیری_تقویتی
یادگیری تقویتی
قسمت اول: مقدمه
یکم درباره این شاخه از هوش بنویسیم (اصلا هم برا این نیست که فردا میانترمشو دارم:)) )
خیلی ساده بخوام بگم، اینجا یه ایجنت داریم، یه محیط داریم که اون ایجنت بر اساس یکسری policy یا سیاستهایی توی اون محیط داره عمل یا actionهایی رو انجام میده که در نتیجه اون اکشن، ممکنه یه پاداش یا rewardای از محیط دریافت کنه و state ایجنت عوض بشه.
این کلیدواژههایی که گفتم توی بند قبلی تقریبا توی کل الگوریتمهای RL هست و فقط با اینا بازی بازی کردن:)
action, state, reward, ...
هر جور فکر میکنم حسش نیست وارد جزییات ریاضیات و فرمولای الگوریتماش بشم پس صرفا چند تا تایتل معرفی میکنم بعدا شاید بیشتر دیتیل نوشتم ازشون.
multi-armed Bandits
Markov Decision Processes
Dynamic Programming
Monte Carlo Method
Temporal-Difference Learning
n-step bootstrapping
البته حیفه حرف از RL بشه و سخنی از کتابخونه gym openai زده نشه:)
و البته اینم جذابه برا کد زدن و دید گرفتن:)
q-learning
#RL
#AI
#هوش_مصنوعی
#یادگیری_تقویتی
یادگیری تقویتی
قسمت اول: مقدمه
یکم درباره این شاخه از هوش بنویسیم (اصلا هم برا این نیست که فردا میانترمشو دارم:)) )
خیلی ساده بخوام بگم، اینجا یه ایجنت داریم، یه محیط داریم که اون ایجنت بر اساس یکسری policy یا سیاستهایی توی اون محیط داره عمل یا actionهایی رو انجام میده که در نتیجه اون اکشن، ممکنه یه پاداش یا rewardای از محیط دریافت کنه و state ایجنت عوض بشه.
این کلیدواژههایی که گفتم توی بند قبلی تقریبا توی کل الگوریتمهای RL هست و فقط با اینا بازی بازی کردن:)
action, state, reward, ...
هر جور فکر میکنم حسش نیست وارد جزییات ریاضیات و فرمولای الگوریتماش بشم پس صرفا چند تا تایتل معرفی میکنم بعدا شاید بیشتر دیتیل نوشتم ازشون.
multi-armed Bandits
Markov Decision Processes
Dynamic Programming
Monte Carlo Method
Temporal-Difference Learning
n-step bootstrapping
البته حیفه حرف از RL بشه و سخنی از کتابخونه gym openai زده نشه:)
و البته اینم جذابه برا کد زدن و دید گرفتن:)
q-learning
🔥1😁1
#csharp
#dotnet
#backend
دو برابر شدن سرعت لوپ توی c# با استفاده از Span...!!!
البته با احتیاط باید استفاده بشه و لیستی ک روش میخوایم لوپ بزنیم سایزش رو تغییر ندیم و...
لینک
#dotnet
#backend
دو برابر شدن سرعت لوپ توی c# با استفاده از Span...!!!
البته با احتیاط باید استفاده بشه و لیستی ک روش میخوایم لوپ بزنیم سایزش رو تغییر ندیم و...
لینک
YouTube
Stop Using the Worst Way to Loop Lists in .NET!
Get 20% off our new Deep Dive: Domain-Driven Design course on Dometrain: https://bit.ly/44pf7sEGet the source code: Become a Patreon and get special perks: h...
🔥1🕊1🍾1
#ansible
#infra
#linux
Ansible is a powerful automation tool that allows you to automate tasks, configure systems, deploy applications, and more. Here are some steps to get started with Ansible:
1. Install Ansible on your system: You can install Ansible on your local machine or a control node. Ansible is available for all major operating systems. You can find installation instructions on the official Ansible documentation website
2. Understand the basics of Ansible:
Playbooks: Playbooks are files written in YAML format that define a set of tasks to be executed on remote hosts.
Inventory: The inventory file contains a list of hosts on which you want to run your tasks.
Modules: Modules are small programs that Ansible invokes on remote hosts to perform tasks.
Tasks: Tasks define the actions you want to perform on remote hosts.
Start writing your first playbook: You can create a simple playbook to perform basic tasks like installing packages, creating users, or managing files. You can refer to Ansible documentation and examples to get started.
3. Run your playbook: Once you have written your playbook, you can run it using the ansible-playbook command. Make sure to specify the inventory file containing the list of hosts on which you want to run the playbook.
4. Explore advanced features: Ansible has a lot of advanced features like roles, variables, conditionals, loops, and more. You can gradually explore these features as you become more comfortable with Ansible.
example:
inventory.ini
#infra
#linux
Ansible is a powerful automation tool that allows you to automate tasks, configure systems, deploy applications, and more. Here are some steps to get started with Ansible:
1. Install Ansible on your system: You can install Ansible on your local machine or a control node. Ansible is available for all major operating systems. You can find installation instructions on the official Ansible documentation website
2. Understand the basics of Ansible:
Playbooks: Playbooks are files written in YAML format that define a set of tasks to be executed on remote hosts.
Inventory: The inventory file contains a list of hosts on which you want to run your tasks.
Modules: Modules are small programs that Ansible invokes on remote hosts to perform tasks.
Tasks: Tasks define the actions you want to perform on remote hosts.
Start writing your first playbook: You can create a simple playbook to perform basic tasks like installing packages, creating users, or managing files. You can refer to Ansible documentation and examples to get started.
3. Run your playbook: Once you have written your playbook, you can run it using the ansible-playbook command. Make sure to specify the inventory file containing the list of hosts on which you want to run the playbook.
4. Explore advanced features: Ansible has a lot of advanced features like roles, variables, conditionals, loops, and more. You can gradually explore these features as you become more comfortable with Ansible.
example:
inventory.ini
[my_nodes]execute_noscript.yml
1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
5.5.5.5
- name: Transfer and execute a noscript on specific nodes
hosts: my_nodes
become: yes # To execute commands with sudo privileges
tasks:
- name: Transfer the noscript
copy:
src: /path/to/mynoscript.sh # Replace with the actual path to your noscript
dest: /home/user/mynoscript.sh
mode: '0755' # Set appropriate permissions
- name: Execute the noscript
shell: sh /home/user/mynoscript.sh
🤯2⚡1🔥1
MrMohammadi_cluster (1).aac
20.3 MB
#تجربه
#ابررایانش
#آقای_محمدی
#clustering
#cloud
#proxmox
یه گپی زدیم با آقای محمدی مسئول ابررایانش شیخ بهایی دانشگاه صنعتی و اندکی کسب اطلاعات جذاب :)
موضوع هایی ک صحبت کردیم روش :
کلاستر کردن ویندوز با Microsoft HPC Pack
کلاستر کردن لینوکسها با Cluster Management و Provisioning
به کمک ابزار warewulf
زمانبندی جابها با ابزار Slurm و دارو دستش
و ارائه دادن جوپیتر نوتبوک و دسکتاپ با OnDemand
و چالشهای accounting , scheduling, queue
چالشهای proxmox و ارائه دادن vm
#ابررایانش
#آقای_محمدی
#clustering
#cloud
#proxmox
یه گپی زدیم با آقای محمدی مسئول ابررایانش شیخ بهایی دانشگاه صنعتی و اندکی کسب اطلاعات جذاب :)
موضوع هایی ک صحبت کردیم روش :
کلاستر کردن ویندوز با Microsoft HPC Pack
کلاستر کردن لینوکسها با Cluster Management و Provisioning
به کمک ابزار warewulf
زمانبندی جابها با ابزار Slurm و دارو دستش
و ارائه دادن جوپیتر نوتبوک و دسکتاپ با OnDemand
و چالشهای accounting , scheduling, queue
چالشهای proxmox و ارائه دادن vm
🔥2👍1