بلاگ

یک فنجان جاوا – دیزاین پترن ها – Iterator

میتونین برای آشنایی با الگوهای طراحی (یا همون دیزاین پترن های) زبان جاوا به مقاله ی یک فنجان جاوا – دیزاین پترن ها Design Patterns مراجعه کنین.

(همونطور که گفته شده این الگو زیرمجموعه ی الگوهای رفتاری (Behavioral) هست)

الگوی Iterator

واژه Iterate به معنی تکرار کردن هست. توی iteration ما نیاز به ساختاری داریم که object فعلی رو نگهداریم و در عین حال بدونیم object بعدی یا قبلی (و نه کل مجموعه) چیه. در حقیقت Iterator زمانی استفاده میشه که میخوایم توی چرخه (یا روند رفت یا برگشتی) به اجزای یک مجموعه دسترسی داشته باشیم.
به عبارت دیگه iterator الگوییه که به ما اجازه دسترسی و پیمایش یه تجمع از اشیاء رو میده بدون نیاز به افشا کردن کل مجموعه.

خب با یه مثال ببینیم منظورمون چیه:

اول یه اینترفیس به اسم Iterator تعریف میکنیم

interface Iterator{
	public boolean hasNext();
	public Object next();
}

توابع hasNext و next اجزای لازمی هستن که توی پیاده سازی این پترن همیشه ازشون استفاده میکنیم (و طبیعتا مشخصه که hasNext به ما میگه عنصر بعدی ای وجود داره یا نه و تابع next باید عنصر بعدی رو برگردونه).
خب توی قدم بعدی یه اینترفیس دیگه به اسم Container تعریف میکنیم که کارش ساخت یه شی از Iterator هست

interface Container{
	public Iterator createIterator();
}

خب حالا نگاهی به کلاس زیر بندازیم

class BooksCollection implements Container{
	private String m_titles[] = {"test0","test1","test2","test3","test4"};

	public Iterator createIterator(){
		BookIterator result = new BookIterator();
		return result;
	}
	
	private class BookIterator implements Iterator{
		private int m_position;

		public boolean hasNext(){
			if (m_position < m_titles.length)
				return true;
			else
				return false;
		}
		public Object next(){
			if (this.hasNext())
				return m_titles[m_position++];
			else
				return null;
		}
	}
}

اول ببینیم کلاس BookIterator چیه. خب ما میخوایم مجموعه از کتاب ها داشته باشم و همونطور که گفتیم این الگو نیاز به یه Iterator داره. پس کلاس BookIterator رو تعریف کردیم که یه عضو داره به اسم m_position که داره ایندکس فعلی کتابمون رو داخل مجموعه نگه میداره٬ و البته Iteratorمون رو implement و طبیعتا توابع hasNext (میبینه بعد از m_position عضوی وجود داره یا نه) و next (اگه عنصری بعد از m_position باشه٬ m_position یدونه زیاد میشه و عضو بعدی رو برمیگردونیم) رو پیاده سازی کرده.

و این کلاس خودش داخل کلاسی به اسم BooksCollection هست که آرایه ی m_titles رو بصورت پیشفرض با چند مقدار داره٬ و تابع createIterator رو هم بواسطه ی implement کردن کلاس Container پیاده سازی کرده و یه BookIterator برمیگردونه.

و در نهایت برای تست کد زیر رو اجرا میکنیم:

Iterator iterator = new BooksCollection().createIterator();
while (name.hasNext() ){
    System.out.println(name.next());
}

و خروجی این کد بصورت زیره:

test0
test1
test2
test3
test4

میتونیم کد تستمون رو بصورت زیر هم بنویسیم که همون خروجی بالارو نتیجه میده:

BooksCollection booksRepository = new BooksCollection();

for(Iterator iter = booksRepository.createIterator(); iter.hasNext();)
    System.out.println(iter.next());

و ما به همین راحتی یه مثال ساده از الگوی Iterator رو پیاده سازی کردیم.

میشه به این الگو توابع remove یا insertAfter یا insertBefore رو هم اضافه کرد. خود جاوا کلاسی داره به اسم Iterator که خوبه نگاهی بهش بندازین و ما هم توی مثال بعدی از این کلاس استفاده خواهیم کرد.

خب با یه مثال دیگه ادامه میدیم. کلاس شکل رو مینویسیم:

public class Shape {

	private int id;
	private String name;
	
	public Shape(int id, String name){
		this.id = id;
		this.name = name;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

و یه کلاس دیگه هم تعریف میکنیم برای اضافه کردن و نگهداری شکلها:

public class ShapeStorage {
	
	private Shape []shapes = new Shape[5];
	private int index;
	
	public void addShape(String name){
		int i = index++;
		shapes[i] = new Shape(i,name);
	}
	
	public Shape[] getShapes(){
		return shapes;
	}
}

خب میریم سراغ تعریف یه Iterator برای مجموعه ی شکلهامون:

public class ShapeIterator implements Iterator{

	private Shape [] shapes;
	int pos;
	
	public ShapeIterator(Shape []shapes){
		this.shapes = shapes;
	}
	@Override
	public boolean hasNext() {
		if(pos >= shapes.length || shapes[pos] == null)
			return false;
		return true;
	}

	@Override
	public Shape next() {
		return shapes[pos++];
	}

	@Override
	public void remove() {
		if(pos <=0 )
			throw new IllegalStateException("Illegal position");
		if(shapes[pos-1] !=null){
			for (int i= pos-1; i<(shapes.length-1);i++){
				shapes[i] = shapes[i+1];
			}
			shapes[shapes.length-1] = null;
		}
	}
}

همونطور که میبینیم این کلاس یه آرایه از Shapeها داره و Iterator رو implement کرده (توابع hasNext و next و remove پیاده سازی شده). مشخصه که تابع hasNext به ما میگه شکل بعدی ای وجود داره یا نه٬ تابع next در صورت وجود شکل بعدی رو برمیگردونه و تابع remove اگه توی pos (یا همون position) فعلی توی آرایمون شکلی وجود داشته باشه اونو حذف میکنه!

و برای تست کد زیر رو اجرا میکنیم:

ShapeStorage storage = new ShapeStorage();
storage.addShape("Polygon");
storage.addShape("Hexagon");
storage.addShape("Circle");
storage.addShape("Rectangle");
storage.addShape("Square");
		
ShapeIterator iterator = new ShapeIterator(storage.getShapes());
while(iterator.hasNext()){
    System.out.println(iterator.next());
}

اتفاقی که اینجا میفته به این صورته که اول میایم یه ShapeStorage تعریف میکنیم که داخلش یه آرایه از shapeها رو نگه میداره. و به کمک تابع addShape بهش شکل های Polygon و Hexagon و Circle و Rectangle و Square رو اضافه میکنیم (با توجه به نوع پیاده سازی تابع addShape فقط کافیه اسم شکلمون رو بدیم و اون خودش اتوماتیک id هر شکل که اضافه میشه رو یکی یکی افزایش میده).
توی قدم بعدی یه شی از ShapeIterator ساختیم و آرایه ی شکلهای موجود توی storage رو بهش دادیم.
و در آخر هم رفتیم سراغ نمایش یا به اصطلاح iterate کردن آرایه ی شکل هامون.
و همونطور که انتظار داریم خروجی بصورت زیر هست:

ID: 0 Shape: Polygon
ID: 1 Shape: Hexagon
ID: 2 Shape: Circle
ID: 3 Shape: Rectangle
ID: 4 Shape: Square

خب فکر کنم متوجه شدیم که چه اتفاقی افتاد. برای اینکه تابع remove رو هم تست کرده باشیم قطعه کد زیر رو اجرا میکنیم:

ShapeIterator removeTestIterator = new ShapeIterator(storage.getShapes()); while(removeTestIterator.hasNext()){
    System.out.println(removeTestIterator.next());
    removeTestIterator.remove();
}

خب شما بگین انتظار داریم توی خروجی چی ببینیم

.

.

.

.

.

کاری که اینجا اتفاق میفته اینه که اولین بار با صدا زدن

removeTestIterator.next();

و با رسیدن به عبارت

return shapes[pos++];

اول کد زیر اجرا میشه

return shapes[pos];

و بعدش با اجرای دستور زیر یدونه به pos اضافه میشه

pos++

پس ما توی خروجی عنصر اول رو میبینیم (که Polygon هست) و pos داره به عنصر دوم (Hexagon) اشاره میکنه. حالا با رسیدن به دستور زیر

removeTestIterator.remove();

جایی که pos داره بهش اشاره میکنه (یعنی Hexagon) حذف میشه. و این روند همینطور ادامه پیدا میکنه و در حقیقت ما داریم یکی در میون شکلهای با pos زوج (۰ و ۲ و ۴) رو نشون میدیم و شکلهای با pos فرد (۱ و ۳) رو حذف میکنیم! بنابراین خروجی به صورت زیر خواهد بود:

ID: 0 Shape: Polygon
ID: 2 Shape: Circle
ID: 4 Shape: Square

خب فکر کنم به خوبی با مفهوم Iterate کردن و الگوی Iterator آشنا شدیم. به عنوان آخرین مثال هم بدونیم که بعضی کلاسای جاوا مثل کلاس ArrayList خودش تابعی داره به اسم iterator که میتونیم بدون اینکه خودمون بخوایم الگوی iterator رو پیاده سازی و کلاس هاش رو تعریف کنیم٬ ازش براحتی استفاده کنیم. مثالش هم بصورت زیر خواهد بود:

 ArrayList al = new ArrayList();

al.add("M");
al.add("I");
al.add("S");
al.add("A");
al.add("G");
al.add("H");


System.out.print("Original list: ");
Iterator itr = al.iterator();
while (itr.hasNext()) {
    String element = itr.next();
    System.out.print(element + " ");
}
System.out.println();


System.out.print("Modified contents: ");
ListIterator litr = al.listIterator();
while (litr.hasNext()) {
    String element = litr.next();
    String newElement = "*" + element + "+";
    litr.set(newElement);
    System.out.print(newElement + " ");
}
System.out.println();


System.out.print("Modified list backwards: ");
while (litr.hasPrevious()) {
    String element = litr.previous();
    System.out.print(element + " ");
}

و خروجی به این صورته:

Original list: M I S A G H
Modified contents: *M+ *I+ *S+ *A+ *G+ *H+
Modified list backwards: *H+ *G+ *A+ *S+ *I+ *M+


منتشر شده در ویرگول توسط محمد قدسیان https://virgool.io/@mohammad.ghodsian

https://virgool.io/@mohammad.ghodsian/java-iterator-design-pattern-d8x2pyrv3vdi

نوشته یک فنجان جاوا – دیزاین پترن ها – Iterator اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

فایرفاکس در صورت وجود سوء سابقه‌ی امنیتی در یک وبسایت به شما هشدار می‌دهد

سرویس نظارت فایرفاکس که از ماه گذشته در دسترس قرار گرفته به شما راجع به سوء سابقه‌ی وبسایت‌ها هشدار می‌دهد که آیا اکانت مورد استفاده‌تان در وبسایت‌هایی مثل یاهو، لیندکدین یا … در بین اکانت‌های دست‌برد زده شده هستند یا خیر.

این ویژگی جدید در صورتی که وبسایتی که به آن سر می‌زنید در یک سال گذشته دچار نقض اطلاعاتی شده باشد (برخی از اطلاعاتش به سرقت رفته باشد) با به نمایش آوردن اعلانی به شما هشدار خواهد داد.

به گفته‌ی معاون شرکت موزیلا «نیک نگوین» اگر با استفاده از مرورگر فایرفاکس کوانتوم به یک وبسایت سر بزنید که در یک سال گذشته مورد دستبرد اطلاعاتی قرار گرفته باشد، از طرف مرورگر هشدار دریافت خواهید کرد. همچنین می‌توانید با استفاده از بخش نظارت فایرفاکس، متوجه شوید که اکانت و ایمیل شما بخشی از اطلاعات لو رفته بوده یا خیر.

این سرویس نشان می‌دهد که علی رغم اینکه به سرقت رفتن اطلاعات شخصی روز به روز بیشتر از گذشته گریبان گیر دنیای ارتباطات شده است، اما ابزار‌های موجود برای مقابله با آن‌ها هم پیشرفته‌تر از گذشته می‌شوند. سرویس نظارت موزیلا فایرفاکس در ۲۶ زبان مختلف در دسترس قرار دارد.

نگوین درباره‌ی پیشرفت امنیتی موزیلا می‌گوید:

هرگز بدون تلاش جامعه‌ی موزیلا و همه‌ی کسانی که داوطلبانه در این امر شرکت کردند، نمی‌توانستیم این مورد را عملی کنیم.

 

نوشته فایرفاکس در صورت وجود سوء سابقه‌ی امنیتی در یک وبسایت به شما هشدار می‌دهد اولین بار در دیجیاتو پدیدار شد.

گردآوری توسط ایده طلایی

امکان ساخت برنامه‌های ۶۴ بیتی ویندوز روی سخت افزار‌های ARM فراهم شد

مایکروسافت یکی از محدودیت‌های ویندوز برای پردازنده‌های ARM را این هفته بر می‌دارد تا ساخت برنامه‌های ۶۴ بیتی با استفاده از آن‌ها امکان پذیر باشد. همچنین سازندگان برنامه‌ها می توانند برنامه هایی که پیش از این به صورت ۳۲ بیتی نوشته شده بودند را بازنویسی کنند و بنابراین تمام برنامه‌های ۶۴ بیتی روی سخت افزار‌های ARM از این به بعد بهتر اجرا خواهند شد.

مایکروسافت پیش از این هم چنین اتفاقی را هنگام درخواست از سازندگان برای توسعه اپلیکیشن‌های مختص به سیستم‌عامل‌های ویندوز ۸ و ویندوز ۱۰ روی سخت افزارهای لمسی تجربه کرده بود و حال باید منتظر ماند و دید که صادر شدن اجازه ساخت برنامه‌های ۶۴ بیتی روی سخت‌افزارهای ARM تا چه اندازه روی سرنوشت ویندوز و آرم تاثیر خواهد گذاشت.

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

سخت افزار‌های ARM

حال و با توجه به این که فرصت ساخت برنامه ۶۴ بیتی ویندوز روی سخت افزار‌های ARM فراهم شده باید دید که اجرای آن‌ها تا چه اندازه بهتر و قادر به رقابت با دیگر پردازنده‌ها خواهد شد.

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

کمپانی ARM پیش از این اعلام کرده بود که طی سال آینده میلادی از پردازنده‌هایی بر اساس معماری ۵ نانومتری معرفی خواهد کرد که قطعا تاثیر زیادی روی افزایش کارایی و کاهش مصرف انرژی خواهد گذاشت.

نوشته امکان ساخت برنامه‌های ۶۴ بیتی ویندوز روی سخت افزار‌های ARM فراهم شد اولین بار در دیجیاتو پدیدار شد.

گردآوری توسط ایده طلایی

ارزش بیت کوین به پایین ترین حد خود در سال ۲۰۱۸ رسید

در حال حاضر ارزش هر بیت کوین ۵۵۶۰ دلار است که کمترین رقم در سال جاری میلادی محسوب می‌شود. ارزش بیت کوین طی سال گذشته میلادی به رقم‌هایی حتی نزدیک به ۱۷ هزار دلار رسید اما چند وقتی می‌شود که بیت کوین با کاهش ارزش دلاری خود روبرو بوده است.

در سال ۲۰۱۸ بیت کوین ۵۶ درصد از ارزش خود را از دست داده در حالی که تنها در ۲۰۱۷ به میزان ۱۳۰۰ درصد رشد کرده بود. این ارز مجازی در اوایل تابستان هم افت ارزش زیادی را تجربه کرد که بسیاری هک شدن صرافی بزرگ Bithumb را علت اصلی رخ دادن این اتفاق می‌دانستند.

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

ارزش بیت کوین

بین کوین به عنوان شناخته شده‌ترین ارز مجازی از تکنولوژی بلاکچین استفاده می‌کند و همین موضوع باعث می‌شود که هیچ شخص یا دولتی کنترلی روی آن نداشته باشد.

با وجود کاهش ارزش بیت کوین طی ماه‌های اخیر، این ارز مجازی نقشی تعین کننده را در اقتصاد دنیا ایفا می‌کند. جان مک آفی، از افراد مشهور در زمینه امنیت سایبری اعتقاد دارد که ارزش بیت کوین طی دو سال آینده به طرز سرسام آوری بالا خواهد رفت. به اعتقاد او، ارزش هر بیت کوین تا سال ۲۰۲۰ حتی به ۱ میلیون دلار خواهد رسید.

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

اهمیت بین کوین کار را به جایی رسانده که دولت آرژانتین چند وقت پیش تایید کرد که قصد دارد خودپردازهای این ارز مجازی را در سطح کشور قرار دهد.

نوشته ارزش بیت کوین به پایین ترین حد خود در سال ۲۰۱۸ رسید اولین بار در دیجیاتو پدیدار شد.

گردآوری توسط ایده طلایی

پشیمانی های فارغ التحصیلان کامپیوتر

راستش هرچی فکر میکردم چی بنویسم چیزی جز پست اموزشی به ذهنم نرسید که هم نوشتنشون حوصله و وقت زیادی میخواد و هم اینکه اگه زبانتون خوب باشه میتونید براحتی و با گوگل کردن اون تکنولوژی کلی اموزش رایگان پیدا کنید

اما چند روز پیش چند نفری دور هم جمع شدیم که با هم در مورد کارهایی که چهار سال لیسانس اگه میکردیم جلوتر بودیم و یا اگه نمیکردیم کلی عقب تر بودیم بحث میکردیم و فکر کردم اگه بعنوان یه ترم ۹ لیسانس کامپیوتر یه دانشگاه دولتی بخوام کسایی که توی این رشته تازه وارد هستن رو راهنمایی کنم خیلی بهتر از اینه که اموزش چیزای مختلف رو بزارم اگه تازه میخواید برید رشته کامپیوتر تو دانشگاه بخونید یا سال اول و دوم این رشته هستید این نوشته بدردتون میخوره و پیشنهاد میکنم بخونیدش


۰:چرا از کد زدن ترسیدم؟

مهم ترین بخش ماجرا همینه!!

شما وقتی کامپیوتر میخونید یک برنامه نویس میشید و برای برنامه نویس خوب شدن هم باید زیاد کد بزنید

به هیچ وجه پروژه هاتون رو از بقیه نگیرید این خیلی مهمه و البته مهم تر ازون پروژه های شخصی خودتون رو پیش ببرید اگه زیاد کد نزنید دقیقا مثل کسی میشید که مهندس معماری میشید که حتی نمیتونه یه خونه ی سادرو طراحی کنه درواقع لیسانس خوندن جز عقب انداختن سربازی و کلاسش چیز دیگه برای شما نخواهد داشت!!

۱:چرا وقت کشی کردم؟

این بیشترین موردیه که دیدم دانشجوها بخاطرش حسرت میخورن. بهترین پیشنهادی که میتونم بهتون بکنم اینه که هرشب که میخوابین به این فکر کنین که امروز چه پیشرفت هایی کردین و کارهای بدردبخوری رو انجام دادین و در کل اینکه ایا نسبت به صبح که از خواب پاشدین تغییر مثبتی داشتین یا نه.

البته به شخصه گوش دادن این اهنگ معروف اما قدیمی زمان از پینک فلوید رو هم بهتون پیشنهاد میکنم

۲:خودتون رو با دیگران مقایسه نکنید

این نکته خیلی مهمیه مهم نیست نسبت به دیگران کجا ایستادید مهم اینه که همواره در حال بهتر شدن باشید و این نکتروهم در نظر داشته باشید وقتی خودتون رو با کسی مقایسه میکنید نه اینده و اهداف اون رو میدونید و نه گذشته اون رو پس مقایسه کردن خودتون با هر کسی کار بیهوده ایه و اینکه تعداد ادم هایی که مهارتی رو شروع کردن به یاد گرفتن و موفق شدن بیشماره و البته برعکس که تعداد ادمایی که قبل از ۱۰ سالگی کاری رو شروع کردن و تو اون موفقیتی بدست نیاوردن هم خیلی زیاده.

و البته باید اضافه کنم که دانش و مهارت به تنهایی هیچ ارزشی ندارن و مهم تر از اون خلاقیت و استفاده ازون دانش برای کمک به دیگرانه و البته هزاران دلیل دیگه میتونم براتون بیارم که مقایسه کردن خودتون با دیگران کاملا غیر منطقیه

۳:چرا تکنولوژی های کمی یادگرفتم؟

این هم نکته مهمیه افراد زیادی میشناسم که فقط درس های دانشگاهی رو پاس کردن و قاعدتا جز زبان های سی و جاوا زبان های دیگه ای یاد نگرفتن بنظرم باید همواره دنبال یادگیری چیزهای جدید باشید اینکه فقط یک زبان برنامه نویسی رو بلد باشید و اصلا دنبال یادگیری زمینه های دیگه نباشید شمارو توی بازار کار کاملا اسیب پذیر میکنه و البته به این نکته توجه کنید که توی دانشگاه به شما چیزی یاد نمیدن خودتون باید یاد بگیرید حتی خیلی از درسایی که میدن بدرد پروژه خود اون درس هم نمیخوره

۴:چرا بجای اینکه در یک زمینه عمیق شم در چندین زمینه سطحی کار کردم؟

درسته!!شاید فکر کنید موضوع ۴ با موضوع ۳ در تناقضه اما اینجور نیست!!

این هم نکته ی قابل بحثیه دوستای زیادی دارم که توی مباحث(اندروید ,بازی سازی,هوش مصنوعی,طراحی سایت و …) به صورت سطحی کار کردن اما توی هیچکدوم عمیق نشدن باید حواستون باشه که تعادل رو رعایت کنید اینکه ۱۰ تا زبان برنامه نویسی بلد باشید اما توی هیچکدوم عمیق نشده باشین بدونید که کارتون داره اشتباه پیش میره بهتره با ۳ تا زبان اشنایی داشته باشید و توی دو زبان بصورت عمیق کار کنید یا توی زمینه ی برنامه نویسی سمت سرور عمیق کار کنید وبا لینوکس و برنامه نویسی فرانت – اند اشنایی داشته باشید اینطوری بهتر میتونید زمینه ای که بهش علاقه دارید رو پیدا کنید و اگر هم اون زمینه قدیمی شد بتونید به زمینه های دیگه مهاجرت کنید

۵:چرا توی پروژه های متن باز مشارکت نکردم؟

مشارکت کردن توی پروژه های بزرگ متن باز چیزیه که میتونه رزومه خیلی خوبی براتون درست کنه البته قبول دارم مشارکت کردن توی این پروژه ها کار ساده ای نیست و چیز های زیادی قبلش باید بدونید اما اگه میتونید توی این پروژه های مشارکت کنید حتما اینکارو بکنید چون رزومه خوبی براتون میشه و حتما بنفعتون میشه البته اگه میخواین شروع کنین و نمیدونین اینکارو از کجا شروع کنین جادی اینجا بخوبی راهنمایی کرده

۶:چرا بیشتر روی طراحی الگوریتم ها و ساختمان داده ها کار نکردم؟

طراحی الگوریتم ها چیزیه که شمارو تبدیل به یک برنامه نویس خوب میکنه و البته اگه خواستید میتونید اینجا بطور مجانی بخوبی یاد بگیرید و تمرین کنید و البته اگه حرفه ای تر هستید باید بیشتر تمرین کنید حتی پیشنهاد من اینه روی مسابقات ای سی ام هم سرمایه گذاری کنید

۷: نیم نگاهی به design pattern ها هم داشته باشید:

از اول نباید نگران این باشید ولی وقتی حرفه ای تر شدین نگاه خوبی هم به این موضوع داشته باشید باعث میشه وقتی برای شرکتی مصاحبه کنید ندونستنشون باعث دردسر بشه!!

۸:حتما گیت رو یاد بگیرین!!

بنظرم گیت بشدت مهمهاگه بلد نیستین همین الان شروع کنید به یادگیریش منابع خوبی توی یوتیوب هست و البته به فارسی هم گوگل کنید نتایج خوبی رو میاره و البته بهتون میگه چی هست و به چه دردی میخوره

۹:ریاضیات رو جدی بگیرید!!

این برای کسایی هست که میخوان هوش مصنوعی بخونن اگه به هوش مصنوعی علاقه مند هستید حتما ریاضیات رو بخوبی یاد بگیرید و علاوه بر چیزایی که تو دانشگاه پاس میکنید جبر خطی رو هم بخوبی یاد بگیرید

۱۰:فکر نکنید چون لینوکس رو (به صورت سطحی) بلدید خیلی خفنید!!

البته که بلد بودن لینوکس خوبه و من بارها بلد بودن لینوکس بنفعم بوده البته که برتری هایی میاره اما فکر نکنید با بلد بودن یا حتی نصب کردن لینوکس(مخصوصا نسخه اسم بد درفته کالی) خیلی هکر خفنی هستید یا کلا شاخید بقیه باید شاگردیتونو بکنن!!

۱۱:در اسرع وقت کار پیدا کنید!!

بله اگه زودتر کار پیدا نکنید(البته که منظورم کاراموزیه) به احتمال زیاد پشیمون میشید.کار هم باعث میشه چیز یاد بگیرید هم رزومه خوبی میشه برای کارای بعدی

۱۲:اگه میخواید برید خارج حتما معدل خوبی بیارید


امیدوارم توصیه های من رو بخونید و خوشتون بیاد اگه غلط املایی یا غلط انشایی دارم به بزرگی خودتون ببخشید و اگه نکته ای هست که اشتباه گفتم یا کم گذاشتم خیلی ممنون میشم بهم تذکر بدین حتی اگه این متن باعث بشه یک نفر هم راه درست رو بره و از گذشتش راضی باشه من به هدفم ازین متن رسیدم

نوشته پشیمانی های فارغ التحصیلان کامپیوتر اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

اعتراف عجیب وزیر امنیت سایبری ژاپن: هرگز از کامپیوتر استفاده نکرده ام

معمولاً انتظار می رود فردی که پست مهمی در وزارت خانه ای را عهده دار می شود علاوه بر دانش سیاسی کافی، در حوزه کاری خود هم خبره باشد با این حال ظاهراً در ژاپن شرایط فرق می کند چرا که نخست وزیر امنیت سایبری این کشور اعتراف کرده که هرگز از کامپیوتر استفاده نکرده است.

قانون گذاران ژاپنی از این ادعای «یوشیتاکا ساکورادا» ۶۸ ساله متعجب شده اند. ماجرا از آن جایی آغاز شد که دیروز از ساکورادا در مورد فناوری های ابتدایی حافظه های USB در نیروگاه های هسته ای سوال شد. وزیر اما در پاسخ دستپاچه شده بود:

«من جزئیات را به خوبی نمی دانم بنابر این به نظرتان چطور است اگر در صورت نیاز یک متخصص به سوالتان پاسخ دهد؟»

شنیدن این حرف ها از مردی که خود قرار بود متخصص باشد عجیب به نظر می رسید. در ادامه او اعلام کرده که از سن ۲۵ سالگی کسب و کار خود را به راه انداخته و دستورات خود را به منشی ها و کارمندانش داده و به این ترتیب هرگز از کامپیوتر استفاده نکرده است. همچنین به کارمندان خود دستور داده که تنها در صورت نیاز از کامپیوتر استفاده کنند. ساکورادا در این باره گفته: «من با کامپیوتر تایپ نمی کنم».

این اولین باری نیست که سیاستمدار ژاپنی جنجال بر انگیز شده. پیش از این درباره المپیک تابستانی ۲۰۲۰ که قرار است در توکیو برگزار شود یکی از روزنامه های ژاپنی در مورد ساکورادا گفته بود: «او سابقه پاسخ های گیج کننده را دارد». این ادعا پس از آن مطرح شد که گفته شد ساکورادا «از خود نشانه هایی از عدم درک مسائل پایه مرتبط با مراسم را بروز داد»

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

نوشته اعتراف عجیب وزیر امنیت سایبری ژاپن: هرگز از کامپیوتر استفاده نکرده ام اولین بار در دیجیاتو پدیدار شد.

گردآوری توسط ایده طلایی

۴ دوره آموزشی آنلاین رایگان برای کسب مهارت و تخصص در بلاکچین

توی پست قبلی‌م گفتم که چرا از کریپتوکارنسی‌ها خوشم میاد و توی این پست میخوام یه مقدار جلوتر برم…

خیلی از ماها در طول یکی دو سال گذشته اسم بیتکوین و کریپتوکارنسی‌هایی شبیه بهش رو شنیدیم، ولی خب اطلاعات‌مون بیشتر درباره افزایش و کاهش قیمت‌ها بوده، یا حواشی دیگه مثل اینکه چرا میشه و یا نمیشه باهاش تحریم رو دور زد؟ چطور میشه رایگان کوین دریافت کرد؟ یا چطور شروع به ماینینگ کریپتوها کنیم؟ و… ولی آیا این همه اون چیزی هست که باید بدونیم؟

قطعن جواب من به این سوال نه هستش، بنظرم خیلی خوبه که توجه رو گذاشت روی سوالاتی از این دست که چرا این همه اقبال شد به این تکنولوژی؟ آیا فقط بحث ساخت و چاپ پول و اعتبار مالی هستش؟ چرا اینقدر پروژه‌های ریز و درشت براساس بلاکچین داره شروع میشه؟ چرا با این وضعیت نزولی شدن مارکت کریپتوکارنسی هنوز داره کلی ICO راه‌اندازی میشه و براحتی اعتبار اولیه خودش رو جمع میکنه؟ این پروژه‌ها قراره چه مشکلاتی رو رفع کنن برای انسان؟

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

چرا باید یه آدم فنی توی تکنولوژی بلاکچین شد؟

  1. مارکت کریپتوکارنسی‌ها و قیمت کوین‌هاش خیلی افت و خیز داره، اکثر کوین‌ها تبدیل شدن به ابزاری برای پامپ و دامپ ولی داشتن یه شغل مرتبط توی این صنعت جوان و آینده‌دار میتونه خیلی باثبات و کم‌خطرتر باشه.
  2. پول خوبی توش هست، چون تکنولوژی بلاکچین جوان هستش و آدمای فنی صاحب تخصص توش کمه خیلی خوب پول میدن و معمولن آدمای فنی توش ۴۰-۵۰ درصد بیشتر از سایر آدمای فنی توی دنیای کامپیوتر و اینترنت پول میگیرن که البته نیاز نیست حتمن برنامه‌نویس باشن، شما میتونید مدیر محصول باشین اینجا یا مدیر شبکه بشین و یا از کارهای امنیتی توش کسب درآمد کنید و… ولی باید شناخت فنی به این حوزه داشته باشین.

قانع شدین؟ امیدوارم که شده باشین چون میخوام شروع کنم به معرفی دوره‌ها 🙂

دوره اول: تکنولوژی بیتکوین و بلاکچین

از دانشگاه پرینستون

این دوره توسط یکی از استادیارهای دانشگاه پرینستون، یکی از خفن‌ترین و معتبرترین دانشگاه‌های جهان، منتشر شده و به شما کمک میکنه تا یاد بگیرین که بلاکچین و بیتکوین چیه؟ چطور کار میکنه؟‌ شبکه‌ش چطور میتونه از خودش دفاع کنه؟ چه چیزی اون رو امن کرده؟ و کمک‌تون میکنه تا والت‌ها رو بشناسید و ببینید ماین کردن از لحاظ تکنیکی چطور تاثیر میذاره روی شبکه و کاربرهاش و… تا شناخت شما براساس واقعیت‌های علمی و چیزی بیش از داستان و افسانه‌هایی باشه که در اینترنت خوندید و شنیدید، محتوای این دوره بصورت ویدئویی و متنی هستش و توش مسائل بسیار روان تشریح میشن و برای شرکت توش بجز دونستن زبان انگلیسی و صد البته شوق به هیچ دانش دیگه نیاز ندارین.

دوره دوم: شناخت بنیادین از بلاکچین برای توسعه‌دهندگان

از شرکت IBM

این دوره که به ۲ بخش میشه تقسیمش کرد توی بخش اول یه شناخت اولیه از بلاکچین میده و بعد یه مقدار بحث رو فنی‌تر میکنه، برای برنامه‌نویس‌ها و توسعه‌دهندگان تولید شده و کمک‌تون میکنه تا بتونید بیتکوین رو از میون کدها یاد بگیرین، کمی باهاش بازی کنید و ببینید چطور میشه یه شبکه توی سایز کوچیک برای خودتون راه بندازین و کشف کنید پشت این زیبای رمزآلود چی هست و چه خبره؟ چه چیزی اینقدر توسعه‌دهنده‌ها رو بهش علاقمند کرده؟ شما میتونید کل محتوای این دوره رو به رایگان استفاده کنید ولی خبر خوب اینکه اگر میخواین به رزومه‌تون چیزی اضافه کنید با پرداخت ۴۲ دلار (آخ آخ! دلار!) یه گواهینامه هم بگیرین از IBM که توی این دوره شرکت کردین، بهتر از مدرک فولان دانشگاه فولان نیست جدن؟ 🙂

دوره سوم: ساختن و راه‌اندازی کرپیتوکارنسی خودتون روی شبکه اتریوم

از گرگوری مک‌کوبین

این یه دوره ۰ تا ۱۰۰ هستش، این دوستمون آقای گرگوری توی چند ساعت بهتون یاد میده که چطور یه کریپتوکارنسی بسازید برای خودتون بر روی شبکه اتریوم، مفاهیم اولیه شبکه اتریوم رو بهتون توضیح میده و میگه که توکن‌های ERC-20 چی هستن و چطور میشه باهاشون اپلیکیشن‌های غیرمتمرکز نوشت، از یه طرف دیگه میگه چطور یه وبسایت راه بندازین برای پروژه‌تون، چطور ICO برگزار کنید و چطور به دیگران پیش‌فروش کنید پروژه‌تون رو و تقسیم کنید توکن‌ها رو و… اگر شما یه توسعه دهنده و برنامه‌نویس هستید میتونید یه بخش‌هایی ازش رو بی‌خیال میشین و برین سراغ بخش‌های جالب‌تر و تازه‌تر… دوره‌اش چون متمرکز هست روی کد نوشتن و کار عملی یه مقدار داستان داره، مثلن اینکه از زبون برنامه‌نویسی solidity استفاده کرده و یا نشون میده که چطور لپ‌تاپ و سیستم‌عامل مک رو کانفیگ کنید و این برای کاربرهای ویندوزی ممکنه کمی پیچیدگی داشته باشه ولی خب اگر واقعن بخواین یاد بگیرین اینا بهانه‌ست، یوتیوب کنید و یاد بگیرین از این خان‌ها چطور میشه گذشت؟ 🙂

دوره چهارم: فین‌تک یا فناوری‌های مالی

از دانشگاه هنگ‌کنگ

همونطور که توی مقدمه این پست گفتم تمام مشاغل این حوزه مربوط به برنامه‌نویس‌ها نیست و برای اینکه کمی دور بشیم از برنامه‌نویس‌ها خوبه که یه دوره درباره فناوری‌های مالی هم معرفی کنم. از اونجا که کریپتوکارنسی‌ها یا رمزارزها همه علاوه بر ویژگی‌ها و توانایی‌های ذاتی خودشون با اقتصاد و سرمایه کار دارن خوبه که بدونیم اصلن مدل تجاری‌شون چطوریه؟ چطور این فناوری‌ها صاحب ارزش شدن؟‌ این ترکیب تکنولوژی و سرمایه چه فرصتی رو در اختیار بشر قرار میده و چه تاثیری روی بازار سنتی ما داره؟ این دوره شما رو کمک میکنه تا کمی دید اقتصادی پیدا کنید. بلاخره ساتوشی ناکاموتو فقط یه برنامه‌نویس خفن نبود که، اون داشت یه راه حل اقتصادی رو با استفاده از دنیای تکنولوژی ارائه میداد، خوبه که شما هم بتونید از این زاویه بهش نگاه بندازین، این دوره کاملن رایگانه ولی خب اگر تمومش کنید میتونید با صرف مقداری دلار گواهینامه‌ش رو از دانشگاه هنگ‌کنگ بگیرین.

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

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

نوشته ۴ دوره آموزشی آنلاین رایگان برای کسب مهارت و تخصص در بلاکچین اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

نگاهی به تغییرات ظاهری Visual Studio 2019 Preview

نسخه بعدی Visual Studio، در نیمه اول سال ۲۰۱۹ منتشر میشه این نسخه نسبت به نسخه های قبلی تغییرات بسیار خوبی رو هم در عملکرد و هم در ظاهر به خود دیده، تو این پست سعی میکنم تغییرات ظاهری که تا کنون در نسخه ۲۰۱۹ اعمال شده رو با هم مرور کنیم البته این انتهای کار نیست و طبق اعلام خود ماکروسافت تغییرات بیشتر و بهتری در راه هستن.

آیکون»

اولین تغییری که به چشم میخوره آیکون جدید هست

آیکون سمت چپ نسخه ۲۰۱۷ و سمت راست نسخه ۲۰۱۹

باز کردن آسان تر پروژه ها»

پنجره استارتر شیک و ساده تر برای باز کردن هرچه ساده تر پروژه ها

سمت چپ ویژوال استودیو مک سمت راست ویژوال استودیو

تم آبی (رفرش شده)»

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

تم رفرش شده سمت چپ / تم کنونی سمت راست

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

بهره وری و فضای کار بیشتر»

نسخه ۲۰۱۹ تمرکز بیشتری روی رابط کاربری و تجربه کاربری داشته برای همین سعی کردن تا منوها رو بیشتر جمع و جور کنن همینطور که توی تصویر مشخصه توی نسخه ۲۰۱۹ برنامه نویس فضای کار بیشتری برای کد نویسی در اختیار داره (تایتل بار حذف شده و منو ها به تایتل بار منتقل شدن)

بالا نسخه ۲۰۱۷ / پایین نسخه ۲۰۱۹

اطلاعیه ها»

مدیریت و نمایش بهتر اطلاعیه ها

نوشته نگاهی به تغییرات ظاهری Visual Studio 2019 Preview اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

فوکوس اسیست در ویندوز ۱۰ چیست و چه کار می‌کند؟

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

خوشبختانه ویندوز ۱۰ در آخرین به روزرسانی خود (نسخه‌ی ۱۷۰۸۳) از یک ویژگی جدید به نام فوکوس اسیست رونمایی کرده که با فعال کردن آن، می‌توانیم همه‌ی اعلان‌های دریافتی آن را از بین ببریم. در این مطلب به این ویژگی خواهیم پرداخت و چگونگی فعال کردنش را توضیح می‌دهیم. با ما همراه باشید.

فوکوس اسیست چیست؟

فوکوس اسیست یک حالت DND (مخفف Do Not Disturb به معنای مزاحم نشوید) ساده در کامپیوتر شخصی به شمار نمی‌رود. به جای اینکه هیچ اعلانی دریافت نکنید، این ویژگی به شما اجازه می‌دهد که اعلان‌های دریافتی را بنا بر نیازتان تنظیم و مدیریت نمایید.

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

چگونه فوکوس اسیست را فعال و تنظیم کنیم؟

گام اول: ابتدا به مسیر Settings > System رفته و سپس روی گزینه‌ی Focus Assist کلیک کنید.

همچنین با زدن کلید‌های ترکیبی Windows + Q کورتانا را باز کنید و Focus Assist را در آن تایپ نمایید.

گام دوم: وقتی وارد پنجره‌ی مربوط به Focus Assist شدید، دو حالت مختلف را مشاهده خواهید کرد. Priority only به معنی «فقط اولویت‌ها» و Alarm Only به معنای «تنها هشدار‌ها».

همانطور که از نامشان پیداست، گزینه‌ی «تنها هشدار‌ها» تنها اعلان‌های هشدار را نمایش خواهد داد. مثل ویژگی DND در هر تلفن هوشمند دیگر.

گام سوم: اگر به دنبال تنظیمات بیشتری می‌گردید روی گزینه‌ی Priority only کلیک کنید و سپس لینک Customize your priority را بزنید.

زیر لیست اولویت‌ها، می‌توانید به انتخاب و مدیریت اپلیکیشن‌ها، People یا دفترچه تلفن و همچنین تماس‌های گذشته‌تان بپردازید. گزینه‌های مورد نظر خود را در این بین انتخاب کنید و آن‌ها را در لیست اولویت‌ها برای دریافت اعلان قرار دهید. با این کار فقط گزینه های مشخص شده قادرند به ارسال اعلان در کامپیوتر شما بپردازند.

اعمال تنظیمات در فوکوس اسیست

فرایند اضافه کردن یک اپلیکیشن به لیست فوکوس اسیست بسیار ساده است. کافیست یک اپلیکیشن که می‌خواهید از آن اعلان دریافت کنید را به انتخاب کنید. انتخاب People نیز به طور مشابه انجام می‌شود و می‌توانید با اعمال این تغییرات در آن فقط با دریافت ایمیل از افرادی خاص اعلان دریافت نمایید.

اگر بخواهید از این ویژگی در تلفن همراهتان استفاده کنید باید حتما کورتانا روی آن نصب باشد و با آیدی مورد استفاده در کامپیوترتان همگام سازی شده باشد.

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

نوشته فوکوس اسیست در ویندوز ۱۰ چیست و چه کار می‌کند؟ اولین بار در دیجیاتو پدیدار شد.

گردآوری توسط ایده طلایی

منفجر شدن یک آیفون ۱۰ هنگام به‌روزرسانی به iOS 12.1

فردی که در ایالت واشنگتن آمریکا زندگی می‌کند هفته گذشته توییت کرد که آیفون ۱۰ او پس از آپدیت شدن به iOS 12.1 منفجر شده است.

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

بعد از این اتفاق محمد انفجار آیفونش را با فرستادن توییتی با دیگران به اشتراک گذاشت. اپل در پاسخ به محمد اعلام کرد که انفجار آیفون او یک اتفاق پیش‌بینی شده نبوده است. بعد از اعلام محمد راحل، یکی دیگر از کاربران آیفون ایکس هم اعلام کرد که هنگام آپدیت به iOS 12.1 گوشی او هم شروع به داغ شدن کرده است.

آیفون 10

البته به نظر نمی‌رسد که انفجار آیفون بعد از آپدیت شدن به نسخه جدید iOS یک مشکل گسترده باشد و تنها برای جلوگیری از رخ دادن هرگونه مشکلی می‌توانید دو سه روزی از به‌روز کردن آیفون خود دست نگه دارید.

ظاهرا مورد ذکر شده تنها مشکل آیفون ۱۰ نیست. چندی پیش اپل تایید کرد که برخی دستگاه های آیفون ۱۰ در شناسایی دستورات لمسی کاربران دچار مشکل شده و به آنها پاسخ نمی دهد.

همچنین در طراحی بعضی از محصولات این کمپانی از چیپ T2 استفاده شده که به دلایل امنیتی تعمیر برخی کامپیوترهای اپل نیاز به انجام عملیات عیب یابی توسط اپل دارد و محدودیت هایی را را روی تعمیر نمایشگر، مادربرد، کیس فوقانی و سیستم Touch ID مک بوک پرو ۲۰۱۸ و مدار منطقی و حافظه فلش آی‌مک پرو اعمال می کند.

نوشته منفجر شدن یک آیفون ۱۰ هنگام به‌روزرسانی به iOS 12.1 اولین بار در دیجیاتو پدیدار شد.

گردآوری توسط ایده طلایی