I'm a huge fan of the Actor Model . I think that for most applications, it's the best way to do concurrency. As CPUs get more cores, concurrency becomes more important for programmers, and I think the Actor Model will become more important, too.
But, sometimes you need something more light-weight for handling "events". For example, imagine you have some code listening for file changes in a particular directory. What you'd like to do is make an "event" that is "fired" whenever a file change is detected. When fired, there may be a "handler" or "listener" which is notified of the event. That "handler" is ultimately just some code which is executed when the event occurs.
A while ago, I wanted an event system like this for Python. I didn't see anything builtin or any library available, so I decided to write my own. I'd like to share what I created with you.
But first, I want to follow an example through other programming languages to give you an idea of what I was trying to accomplish and how it compares with what's out there. After that, I'll give you my implemenation in Python. Our example will be listening for changes on the file system. We want to keep the "watcher" code decoupled from the rest of the code, so we use events.
The best implementation of events that I've used is in C#, so we'll start there. In C# 1.0, our file watcher would looks something like this:
public delegate void FileChangeHandler(string source_path); class FileWatcher { public event FileChangeHandler FileChanged; public void WatchForChanges() { ... if(FileChanged != null) { FileChanged(source_path); } ... } } class FileChangeLogger { public void OnFileChanged(string source_path) { Console.WriteLine(String.Format("{0} changed.", source_path)); } } watcher = FileWatcher(); logger = FileChangeLogger(); watcher.FileChanged += new FileChangeHandler(logger.OnFileChanged); watcher.WatchForChanges();It's pretty nice. The best part is at the end, where you can write "watcher.FileChange += ...". But, you need to type the completely useless "new FileChangeHandler", and you also need to wrap it all in a separate FileChangeLogger class. Luckily, in C# 2.0, they added Anonymous Delegates, which makes this much nicer:
watcher.FileChanged += delegate(string source_path) { Console.WriteLine(String.Format("{0} changed.", source_path)); }And in C# 3.0, they've made it even nicer!
watcher.FileChanged += (source_path => Console.WriteLine(String.Format("{0} changed.", source_path)));C# 3.0 has an event system that's downright slick, with type-inferencing and everything. I don't think it gets much better than that.
Actually, there is one thing. If there's no handler registered with the event, calling "FileChanged()" will blow up because it sees FileChanged == null until a handler is registered. This means that you have to write "if(Event != null){Event(...):}" every single time you fire the event. Every single time. If you forget, your code will seem to work fine until there's no handler, in which case it will blow up and you'll smack your forhead because you forgot that you have to repeat that line of code every single time you fire an event. I really mean every single time. It's by far the worst wart on an otherwise elgant system. I have no idea why the designers of C# thought this was a good idea. When would you ever want to fire and event and have it blow up in your face?
Anyway, let's try a different programming language, perhaps Java. It has the worst implementation of events I've ever seen. Here's our FileWatcher example:
...
...
Ok, nevermind, I don't have the heart. I can imagine the code full of IListeners, and implementations, and keeping an array of them, and iterating over them, etc, and I just can't do it. I got seriously upset at one useless line in C#. In Java, it's at least 10 times worse. If you really have the stomach for it, go look at http://java.sun.com/docs/books/tutorial/uiswing/events/index.html. To me, it appears that in Java, events are one giant hack around the lack of first-class functions. If Java had first-class functions, none of that nonsense would be necessary.
Now that we've seen a good implementation of events in C# and avoided a bad one in Java, let's make one for Python. I'd rather it be like the C# event system, so let's see what our example would look like:
from Event import Event class FileWatcher: def __init__(self): self.fileChanged = Event() def watchFiles(self): ... self.fileChanged(source_path) ... def log_file_change(source_path): print "%r changed." % (source_path,) watcher = FileWatcher() watcher.fileChanged += log_file_changeI think that looks pretty good. So what does the implementation of Event look like?
class Event(IEvent): def __init__(self): self.handlers = set() def handle(self, handler): self.handler.add(handler) return self def unhandle(self, handler): try: self.handlers.remove(handler) except: raise ValueError("Handler is not handling this event, so cannot unhandle it.") return self def fire(self, *args, **kargs): for handler in self.handlers: handler(*args, **kargs) def getHandlerCount(self): return len(self.handlers) __iadd__ = handle __isub__ = unhandle __call__ = fire __len__ = getHandlerCountWow. That was pretty short. Actually, this is one of the reasons I love Python. If the language doesn't have a feature, we can probably add it. We just added one of C#'s best features to Python in 26 lines of code. More importantly, we now have a nice, light-weight, easy-to-use event system for Python.
For all of you how like full examples that you can cut and paste, here is one that you can run. Enjoy!
class Event: def __init__(self): self.handlers = set() def handle(self, handler): self.handlers.add(handler) return self def unhandle(self, handler): try: self.handlers.remove(handler) except: raise ValueError("Handler is not handling this event, so cannot unhandle it.") return self def fire(self, *args, **kargs): for handler in self.handlers: handler(*args, **kargs) def getHandlerCount(self): return len(self.handlers) __iadd__ = handle __isub__ = unhandle __call__ = fire __len__ = getHandlerCount class MockFileWatcher: def __init__(self): self.fileChanged = Event() def watchFiles(self): source_path = "foo" self.fileChanged(source_path) def log_file_change(source_path): print "%r changed." % (source_path,) def log_file_change2(source_path): print "%r changed!" % (source_path,) watcher = MockFileWatcher() watcher.fileChanged += log_file_change2 watcher.fileChanged += log_file_change watcher.fileChanged -= log_file_change2 watcher.watchFiles()
Have you ever seen
ReplyDeletehttp://pydispatcher.sourceforge.net/ ?
not so neat interface, though, but has other values.
vé tết 2019 đi huế
Deletevé tết 2019 đi đà lạt
vé tết 2019 đi thanh hóa
vé tết 2019 đi vinh
vé tết 2019 đi sài gòn
Great Article
DeleteFinal Year Projects for CSE in Python
FInal Year Project Centers in Chennai
Python Training in Chennai
Python Training in Chennai
pydispatcher looks very interesting, but it's not lightweight. The purpose of the event class I wrote is to be very lightweight.
ReplyDeleteTo do anything more complex usually means you've got concurrency involved, for which this event system isn't good enough. At that point, I think message passing (the Actor Model) is the right technique.
The application I am working on right now is VERY concurrent, and so there is lots of message passing. But sometimes, I need something more simple. Thus, I use both my Event class and my Actor class, and they've worked quite well together. I'll share the Actor class in another post.
Yes, of course, it's clear that your goals are different from pydispatcher creators ones.
ReplyDeleteI think, one of the differences, that affected pydispatcher interface, is that pydispatcher supports many-to-many connections between listening points and listeners, not only one-to-many.
If you have large app (i.e. with large DOM tree), and you have N delegates and M listeners waiting for any change, you need to have N*M connections between them.
Of course, you can add one more delegate, but then your code will have to maintain 2 delegates instead of one each time... with pydispatcher, you need just use "Any" option.
I found this out while thinking if adding neat interface and delegates could add value to django.
I thought this was very helpful. Thanks a lot.
ReplyDeleteHi! I really liked your code and I'll use it in my programs. I wanted to include a comment that the code comes from your blog, but I have to ask you if you consider the code useable under GPL/LGPL?
ReplyDeleteThanks,
Alex
Hey!
ReplyDeleteI loved your code and I've used it in a project of mine - thanks!
However, you have not answered me under what license have you provided it. As I am at the point of releasing my project under GPLv3 I will have to replace your implementation with something else, so please please please tell me the terms under which I can use it.
Great work - thank you!
Hi,
ReplyDeletei had to add a "return self" to the __iadd__ __isub__ mapped functions to get this to work.
But i have just started with py, so maybe i overlooked smth.
Finally, I had to drop your code. Anyway, thanks for the great example.
ReplyDeleteHey, this is really pretty.
ReplyDeleteCool, nicely done. The first time I saw "Java" I had an immediate flashback to all that boilerplate code when I used to write Swing...
ReplyDeleteThis code is clever :) . Thanks for the example
ReplyDeleteAxel is a library inspired by this example: http://pypi.python.org/pypi/axel
ReplyDeleteDude really cool example here .. Thanx alot.
ReplyDeletewell done!
ReplyDeleteThat's a really good code. I've modified it to work in multiprocessing.
ReplyDeleteSee multiprocessing example following your great code here:
ReplyDeletehttp://rnovitsky.blogspot.co.il/2012/10/python-event-listener-multiprocessing.html
nice example (coming from a c# and java developer). I especially like the java example ;-)
ReplyDeleteI have read your coding relay very useful python programming language.Thank you for sharing you python coding. Python course in Chennai
ReplyDeleteشركة كشف تسربات المياه بالدمام
ReplyDeleteشركة كشف تسربات بالدمام
شركة كشف تسربات المياه بالخبر
شركة كشف تسربات المياه بالجبيل
شركة كشف تسربات المياه بالاحساء
شركة كشف تسربات المياه بالقطيف
شركة كشف تسربات بالرياض
شركة كشف تسربات المياه بالرياض
كشف تسربات المياه
This blog awesome and i learn a lot about programming from here.The best thing about this blog is that you doing from beginning to experts level.
ReplyDeleteLove from Pprogramming
العاب بنات يحتوي موقعنا على تشكيلة من العاب تلبيس بنات متجددة باستمرار وكل مايتعلق بصنف العاب بنات تلبيس ومكياج والعاب طبخ ومرحبا بكم في العاب تلبيس
ReplyDeleteal3ab-banat01
al3ab cooking
Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging. If anyone wants to become a .Net developer learn from .Net Core Training in Chennai. or learn thru .Net Core Training in Chennai. Nowadays Dot Net has tons of job opportunities on various vertical industry.
ReplyDeleteor Es6 Training in Chennai. Nowadays JavaScript has tons of job opportunities on various vertical industry.
Thanks for Kanhasoft is the best Python Web Development Company in India. Hire Dedicated Django Developer over 5 years of experience with affordable rates.
ReplyDeleteThanks for the valuable blog.My(https://counfreedise.in/) team thank you for this wonderful blog.
ReplyDeleteNice blog! I love it very much. All the info given by you are really superb. for my research. keep on posting your views.
ReplyDeleteHadoop Training in Chennai
Big Data Training in Chennai
Angularjs Training in Chennai
Web Designing Course in chennai
PHP Training in Chennai
hadoop training in Velachery
hadoop training in Adyar
مرحبا بكم مع اجود واحسن العاب مزارع
ReplyDeleteالتي تجعلك تعيشين داخل العاب المزرعة السعيدة
و ايضا نمدكم العاب طبخلعاب بنات جديدة و العاب بنات
ك تعيشين ايام البنت الجميلة ام ان كنتي من محبي وصفات الطبخ بالخصوص فندعوك لزيارة موقع samira tv
و شكرا لكم
A debt of gratitude is in order for offering this quality data to us. I truly delighted in perusing. Will without a doubt going to impart this URL to my companions. https://tintuyensinh2012.com
ReplyDeleteThe gathering of certified client/crowd information (emails,names and locality)properly oversaw in a CRM, enables you to keep advertising to them and target future events/item dispatch. stage hire Yorkshire
ReplyDeleteVery Helpful and informative blog! Keep sharing such blogsSoftware Development Company in India
ReplyDeleteOn the off chance that it is your first time to give the game a shot, ensure that you have a fundamental information of poker as a game.machine learning course
ReplyDeleteWe use cash with agnostic images on it. Tommy Hilfiger Net Worth
ReplyDeleteThanks For Sharing This Post. I like your writing Style. Piumi Hansamali Biography
ReplyDeleteThe holy messenger's declaration caused a sublime festival. This permits us probably some breathing space with regards to commending the introduction of Jesus. Aaron Rodgers
ReplyDeletei am browsing this website dailly , and get nice facts from here all the time .
ReplyDeleteI think it could be more general if you get a football sports activity. ExcelR Data Analyst Course
ReplyDeleteشركة تنظيف خزانات بالجبيل
ReplyDeleteشركة تنظيف خزانات بالقطيف
شركة تنظيف خزانات بالخبر
شركة تنظيف خزانات بالاحساء
شركة تنظيف خزانات بالدمام
ReplyDeleteشركة نقل اثاث بالرياض
شركة نقل عفش
غسيل سيارات متنقل بالرياض
شركة تنظيف بالرياض انستقرام
شركة عزل اسطح بالمدينة المنورة
ندى المدينة للخدمات المنزلية
شركة تنظيف خزانات بالمدينة المنورة
شركة كشف تسربات المياه بالرياض
Nice Blog...
ReplyDeleteThanks For sharing with us.
by cognex is the AWS Training in Chennai. Cognex offers so many services according to the clients needs.
Liên hệ đặt vé tại Aivivu, tham khảo
ReplyDeletevé máy bay đi Mỹ Vietnam Airline
vé máy bay từ mỹ về việt nam
ve may bay tu canada ve viet nam
dat ve may bay tu han quoc ve viet nam
Dr. Vivek Galani is a leading expert in skin and hair. At hair transplant clinic in Surat Skin Care, Cosmetic Laser, Hair Transplant & Slimming Center, Dr. Galani offers the most advanced cosmetic and dermatologic care treatments. The clinic uses advanced FUE methods to produce high-quality hair transplants.
ReplyDeleteافضل معلم سباك بالرياض
ReplyDeleteشركة تعقيم فلل بالرياض
مؤسسة سباكة وكهرباء بالرياض
شركة مقاولات بالرياض
شركة نظافة منازل بالرياض
غسيل سيارات بالرياض
شركة نقل اثاث بالرياض
شركة غسيل كنب بالرياض
ReplyDeleteشركة تنظيف مجالس بالرياض
شركة تنظيف منازل بالرياض
شركة ترميمات منازل بالقطيف
شركة مقاولات بالخبر
شركة تعقيم منازل بالمدينة المنورة
شركة تنظيف منازل بالطائف
I really appreciate the information that you have shared on your Blog. Thanks for shearing this blog.
ReplyDeleteHow to Print With Black Ink Only When Color Is Empty HP
How to Uninstall HP Print And Scan Doctor
How to Fix HP Printer That Prints Blank Pages
How Do I Unpause My Printer
How Do I Download Hp Print and Scan Doctor
WPS Pin Not Working HP Printer
Can’t Find the WPS Pin for my HP Printer
How to Setup Hp Printer to New WiFi
How to Install Printer Driver Windows 10
Shreeja Health Care is leading manufacturer of Oil Maker Machine. Shreeja Oil Extraction Machine is able to extract oil from various seeds like peanuts, Coconut, Sesame, Soybean, macadamia nuts, walnuts, sunflower seeds, vegetable seeds flaxseed etc.
ReplyDeleteThanks for sharing this informative content.,
ReplyDeleteLeanpitch provides online training in Scrum Master Certification during this lockdown period everyone can use it wisely.
Join Leanpitch 2 Days CSM Certification Workshop in different cities.
CSM online
CSM online certification
Thanks for sharing this informative content.,
ReplyDeleteLeanpitch provides online training in Scrum Master Certification during this lockdown period everyone can use it wisely.
Join Leanpitch 2 Days CSM Certification Workshop in different cities.
CSM online training
CSM training online
Thanks for sharing this informative content.,
ReplyDeleteLeanpitch provides online training in Scrum Master Certification during this lockdown period everyone can use it wisely.
Join Leanpitch 2 Days CSM Certification Workshop in different cities.
CSM training online
Scrum master training online
i am glad to discover this page : i have to thank you for the time i spent on this especially great reading !! i really liked each part and also bookmarked you for new information on your site.
ReplyDeletedata analytics course in patna
Staggeringly generally charming post. I was looking for such information and totally liked assessing this one. Keep posting. A responsibility of thankfulness is all together for sharing…
ReplyDeleteAI Training in Hyderabad
It is soo informative. Are you also searching for cheap assignment writing help we are the best solution for you. We are best known for delivering the best services to students without having to break the bank
ReplyDeleteI want to leave a little comment to support and wish you the best of luck.we wish you the best of luck in all your blogging enedevors
ReplyDeletedata science training institute in delhi
Thanks for sharing this.,
ReplyDeleteLeanpitch provides online training in Scrum Master, everyone can use it wisely.
Join Leanpitch 2 Days CSM Certification Workshop in different cities.
Scrum master certification
csm certification
I want to leave a little comment to support and wish you the best of luck.we wish you the best of luck in all your blogging enedevors
ReplyDeletedata scientist course in faridabad
I like your post. I appreciate your blogs because they are really good. Please go to this website for the Data Science Course: For Data Science Course Data Science course in Bangalore. These courses are wonderful for professionalism.
ReplyDelete
ReplyDeleteExcellent content ,Thanks for sharing this .,
Online teaching platform
Online teaching tool
Excellent content ,Thanks for sharing this .,
ReplyDeleteSkills for online teachers
Free teaching tools
Thanks for sharing this.,
ReplyDeletecertified scrum master certification
agile scrum master certification
Excellent content ,Thanks for sharing this .,
ReplyDeleteLeanpitch provides online training in CSPO, everyone can use it wisely.
Product owner certification
Product owner training
Excellent content ,Thanks for sharing this .,
ReplyDeleteCSPO certification
CSPO TRAINING
Excellent content ,Thanks for sharing this .,
ReplyDeleteScrum master certification
csm certification
Excellent content ,Thanks for sharing this .,
ReplyDeleteScrum master certiification Chennai
CSM certiification Chennai
Excellent content ,Thanks for sharing this .
ReplyDeleteScrum master certiification Bangalore
CSM certiification Bangalore
Excellent content ,Thanks for sharing this .
ReplyDeleteScrum master certiification Delhi
CSM certiification Delhi
ReplyDeleteافضل شركة تنظيف مكيفات سبليت
أفضل طرق التنظيف السليمة والصحيحة افضل شركة تنظيف مكيفات بالرياض تعمل على راحة عملائها حيث النظافة بأحدث اّلات التنظيف بأستخدام أجود أنواع المنظفات الخاصه بالمكيفات .
شركة تنظيف واجهات زجاج بالرياض
نحرص في شركة تنظيف شقق بالرياض على تنظيف الشقق وغسل جميع محتوياتها بشكل جيد وبطريقة احترافية من خلال استخدام أقوى المنظفات الآمنة على الممتلكات ولا تؤثر عليها أي تأثير سلبي وبعد الانتهاء من تنظيف الشقة يقوم فريق العمل في شركة تنظيف موكيت بالرياض بترتيبها وتطهيرها بالكامل.
شركة تنظيف موكيت بالرياض
نقدم خدماتنا مثل غسيل الموكيت والسجاد وغيرها فالهدف الاول هو راحة العملاء و اكتساب ثقتهم مهما تكلف الامر مع ضمان جودة الخدمات المقدمه و سرعة انجازها بكل سهوله و امان و على احدث و افضل الاساليب.
ترينداوي الأسعار
ReplyDeleteهو موقع مختص في تقديم اسعار وعروض المنتجات والخدمات بكافه انواعها
Very informative message! There is so much information here that can help any business start a successful social media campaign!
ReplyDeletedata science training in london
I like to view your web site which is very useful and excellent resource and truly adored reading your posting. Thank you!
ReplyDeleteData Science Course in Gurgaon
Very nice job... Thanks for sharing this amazing and educative blog post!
ReplyDeleteData Science Training in Lucknow
I want to leave a little comment to support and wish you the best of luck.we wish you the best of luck in all your blogging enedevors
ReplyDeletedata science course delhi
Informative Post. The information you have posted is very useful and sites you have referred was good. Thanks for sharing.
ReplyDeleteData Science Course with Placement
We SVJ Technocoat are the leading Service Provider and Exporter of an extensive array of PVD Coating Service and Vapor Deposition Coating Service etc. We are a well known firm for providing excellent quality coating services across the nation and in a timely manner. Owing to our improvised business models, our professionals are offering integrated solutions for our clients.
ReplyDeleteYou have done a great job and will definitely dig it and personally recommend to my friends. Thank You.
ReplyDeleteData Science Online Training
I want to thank you for your time in this wonderful read which is really appreciable and put you in your favorites to see new things on your blog, a must-have blog!
ReplyDeleteBusiness Analytics Course in Noida
Candela GentleLASE medical grade laser applies precise, controlled pulses of laser. Auckland Laser Hair Removal energy that reach down the hair shaft into the follicle underneath the skin, cauterizing the hair at its root. the encompassing tissue or skin isn’t damaged. The laser’s gentle beam of sunshine damages and consequently prevents the follicle from growing.
ReplyDeleteVery great post which I really enjoy reading this and it is not everyday that I have the possibility to see something like this. Thank You.
ReplyDeleteBest Online Data Science Courses
Very interesting blog and lot of the blogs we see these days don't provide anything that interests me but i am really interested in this one just thought I would post and let you know.
ReplyDeleteData Science Training Institute in Noida
Through this post, I realize that your great information in playing with all the pieces was exceptionally useful. I advise this is the primary spot where I discover issues I've been scanning for. You have a smart yet alluring method of composing.
ReplyDeleteNice Post i have read this article and if I can I would like to suggest some cool tips or advice and perhaps you could write future articles that reference this article. I want to know more!
ReplyDeleteData Analytics Course in Gurgaon
Extremely overall quite fascinating post. I was searching for this sort of data and delighted in perusing this one.
ReplyDeleteContinue posting. A debt of gratitude is in order for sharing.
data science training in warangal
This is a great inspiring article. I am pretty much pleased with your good work. You put really very helpful information. Keep it up. Keep blogging. Looking to reading your next post. funny jokes in urdu
ReplyDeleteWell done for this excellent article. and really enjoyed reading this article today it might be one of the best articles I have read so far and please keep this work of the same quality.
ReplyDeleteData Analytics Course in Noida
موقع اصبح
ReplyDeleteRQC is one of the Best Best Hair Clinic In Surat, with services, including Hair Transplant, Hair Treatment, Hairfall and Hair Loss, dermatology. RQC brings you the best services in hair transplant, Hair Treatment.
ReplyDeletethere is more information I have is very important. Thank you I'm glad you could get
ReplyDeleteout of it to share
wedding photography
leather jacket
OTOSLOT merupakan Slot Tergacor Pakai Dana yang menyediakan permainan slot terlengkap di indonesia. Kami selaku agen judi slot online yang bersertifikat resmi dari PAGCOR (Philippine Amusement and Gaming Corporation). Kami menyediakan menyediakan permainan super lengkap dalam 1 platform seperti, Permainan Slot, Tembak Ikan, Sabung Ayam, Live Casino, Dindong, Tangkas, E-Spot dan Mini Games Lainya.
ReplyDeleteJuliasNetwork menyediakan segala jenis permainan hanya dengan menggunakan 1 User saja dengan minimal deposit 20.000 kamu sudah bisa mainkan semua jenis permainan kesayangan anda hanya di www.otoslot.com.
megane 4 phase 2
ReplyDeleteعرف علي افضل مركز صيانة في الوطن العربي نعمل في صيانة كل البرندات العالمية مثل
ReplyDeleteصيانة ثلاجات بوش
صيانة ديب فريزر بوش
صيانة سخانات بوش
أفضل وأوضح طريقة لحل المشكلة هي التحدث مباشرة مع Bosch.
والمسؤول لديه القدرة على تثبيت المكون الأصلي للجهاز، ومن ثم الوصول إلى الجهاز للحصول على الأداء الأمثل وأعلى جودة.
ولا يصبح هذا ممكنًا إلا بعد فحص تقني متخصص للأجزاء من قبل مهندسي بوش في شركة Bosch العالمية، الشركة المصنعة للمنتج.
يحتوي هذا الموقع على جميع متطلبات مستخدمي Bosch الألمان والأجزاء الأصلية والدعم الفني.
ويتضمن أيضًا إرشادات استخدام المنتج، ومعلومات الضمان لكل محافظة، بالإضافة إلى معدات الكشف عن الأخطاء الحديثة.
افضل مركز صيانة معتمد
mercedes w206 220d, mercedes eq boost
ReplyDelete폭스나인 폭스나인 폭스나인
ReplyDeletelدعاء الاحتجاب
ReplyDeleteLife directed by David Lynch Transparent sticker
ReplyDeleteSize: 5 x 8 inches
Quantity:1
Printed on premium vinyl.
Die cut weather and UV resistant for the best & most durable quality
Easy to install
Made so it won't rip paint off your car !
Ideal for sticking in a window.
Can also apply to anywhere with clean and flat surface.
Send us a message for a custom order.
Visit the rest of our shop to see more Wonderful Stickers ! We will surprise you !
directed by david lynch window
ReplyDeleteاريد الدخول إلى حسابي في الفيس بوك
قام الفنان العالمي ومغني الراب الشهير، إيمينيم بالدخول إلى عالم الرموز غير القابلة للاستبدال واشتري قرد NFT وذلك من خلال شراء رمز غير قابل للاستبدال الذي ينتمي لأحد قرود الملل الشهيرة ليوضح صور nft العديدة والمتحركة.
ReplyDeleteصور nft
يتم استخدام الذكاء الاصطناعي أكثر فأكثرفى تحسين جودة الصور. بمساعدة التعلم الآلي يمكن تدريب الخوارزميات على إزالة الخلفية من الصور وتحسين اللون والتباين، وحتى إضافة التفاصيل المفقودة. هذا مفيد بشكل خاص في الحالات التي تكون فيها الصورة الأصلية ذات جودة رديئة أو في حالة متلفة.
ReplyDeleteصور nft
ReplyDeleteوأعلن اللاعب نيمار عبر حسابه
في تويتر عن كونه عضوًا في نادي يخوت قرود الملل وهو نادي يجذب العديد من المشاهير الذين أصبح لديهم شغف كبير بامتلاك أحد رموز NFTs غير القابلة للاستبدال.
https://dinasoor.tech/%D9%85%D9%82%D8%A7%D9%84%D8%A7%D8%AA/%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%AA%D9%81%D8%B9%D9%8A%D9%84-%D8%AE%D9%8A%D8%A7%D8%B1-%D9%85%D9%86%D8%B8%D9%88%D8%B1-%D8%A7%D9%84%D8%B4%D8%AE%D8%B5-%D8%A7%D9%84%D8%A7%D9%88%D9%84-%D9%81%D9%8A-%D9%84/
ReplyDeleteطريقة تفعيل خيار منظور الشخص الاول في لعبة pubg
طريقة تفعيل خيار منظور الشخص الاول في لعبة pubghttps://dinasoor.tech/%D9%85%D9%82%D8%A7%D9%84%D8%A7%D8%AA/%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%AA%D9%81%D8%B9%D9%8A%D9%84-%D8%AE%D9%8A%D8%A7%D8%B1-%D9%85%D9%86%D8%B8%D9%88%D8%B1-%D8%A7%D9%84%D8%B4%D8%AE%D8%B5-%D8%A7%D9%84%D8%A7%D9%88%D9%84-%D9%81%D9%8A-%D9%84/
طريقة تفعيل خيار منظور الشخص الاول في لعبة pubg
ReplyDeleteو كيفية تصويب منظور الشخص الأول
برنامج توضيح النص في الصور الملتقطة
ReplyDeleteطريقة جعل الجوال مغلق وهو مفتوح
ReplyDeleteالعاب رعب مخيفة جدا البيت المسكون
ReplyDeleteEnroll in the Data Analytics Certification course and outshine in your career. The unmatchable training methodology will allow you to flourish in your career. data analytics course in kanpur
ReplyDeleteتعرف على كل ما هو جديد عبر موقع يبتدي
ReplyDeleteيبتدي
فضل سورة الكافرون قبل النوم
علاج تشققات البطن بعد الولادة بزيت الزيتون
ماهي علامات الحمل الاكيدة قبل الدورة بأسبوع ؟
تعليم الرسم للاطفال 4 سنوات
This comment has been removed by the author.
ReplyDeleteI have bookmarked your website because this site contains valuable information in it. I am really happy with articles quality and presentation. Thanks a lot for keeping great stuff. I am very much thankful for this site. data analytics courses malaysia
ReplyDeleteما الفرق بين التهاب المهبل البكتيري والفطري ؟
ReplyDeleteتتساءل الكثير من النساء ما هو الفرق بين التهاب المهبل الجرثومي والتهاب المهبل الفطري، لأن حوالي 50٪ من النساء يعانين
من التهابات أو فطريات مهبلية ويريدن التفريق بينهما للاطمئنان على صحتهن.
ما هي الالتهابات المهبلية؟
ما الفرق بين التهاب المهبل البكتيري والفطري
ما هو الفرق بين التهاب المهبل الجرثومي والتهاب المهبل الفطري؟
من خلال موقع الخبير سنوف، حاولنا التفريق بين التهاب المهبل الجرثومي والتهاب المهبل الفطري
من خلال تحديد الالتهابات المهبلية وأنواعها، والتي لا تستطيع العديد من النساء التمييز بينها.
الالتهابات المهبلية هي اعراض غير طبيعية تظهر عند النساء تجعلهن يشعرن بعدم الراحة والشعور بالغثيان وهذه اهم اسباب هذه الالتهابات المهبلية: -
يمكن أن تتعرض المرأة للإصابة بعدوى الخميرة، وهي من أهم أنواع الالتهابات المهبلية.
يعد التعرض الواضح لبكتيريا المهبل التي تسبب الألم وعدم الراحة أحد الأسباب الرئيسية للالتهابات المهبلية.
عدوى المشعرات عبارة عن مزيج من البكتيريا والفطريات.
Skoda Octavia 4 2019 1.5 TGI G-TEC (130 HP) CNG DSG
ReplyDeleteskoda octavia cng 2019
Skoda Octavia 4 Combi 2019 1.5 TSI G-TEC (130 HP) CNG DSG
ReplyDeleteoctavia cng 2019
출장샵
ReplyDeleteتقدم لك شركة ماستر تك احسن ماكينات تعبئة بقوليات نصف اوتوماتيك باسعار متميزة وضمان دوري للصيانة
ReplyDeleteينصح دوما افضل دكتور قدم سكري الدكتور محمود ناصر بالاهتمام بالقدمين لمرضي السكري وقص الاظافر بشكل دوري وتنظيف القدم جيداً وتنشيفها جيداً وفي حالة حدوث جرح يجب التوجه فوراً للطبيب المختص المعالج لتجنب القدم السكرية
ReplyDelete출장샵
ReplyDelete출장샵
출장샵
출장샵
출장샵
출장샵
출장샵
What are the best insurance companies
ReplyDeleteReal Estate Crowdfunding
ReplyDeletehearth and hand golden hour candle
ReplyDeleteaiden lane green
افضل كموبند في العاصمة الادارية
ReplyDeleteاسعار شاليهات الساحل الشمالى
أفضل مولات العاصمة الإدارية
افضل قري الساحل الشمالي
أفضل كمبوندات التجمع الخامس
The Python community usually produces its own documentation for the language. If you want to learn more about Python and the Python programming language, the best way to do this is by reading the official language. I know Little Bit Python Language is easy to use. A little Python has a lot of features and it's easy for students to pick it up. I think students and professionals alike can use it. But In this Post, we'll take a look at how to create an event in python. Thanks For Sharing This post with us.
ReplyDeleteYour Reader : Englingua
This comment has been removed by the author.
ReplyDeleteتعتبر شركة ستار وود اكبر شركة اثاث مكتبي في مصر كل انواع الاثاث المكتبي المختلفة موديلات متنوعة مثل الكلاسيك و المودرن و النيوكلاسيك يتم التصنيع من اجواد الخامات الموجودة في السوق المصري .
ReplyDeleteI truly adored visiting your post and this content was very unique. Thanks a lot for sharing this...
ReplyDeleteVirginia Spousal Support
Emergency Protective Order
من افضل المواقع التي قمت بزيارتها
ReplyDeleteالعروض اون لاين |
وفرها |
اخبارنا |
الميثاق |
الوسط |
Nice write-up. It is informative to my vision of eyes. I really enjoyed reading it. Keep doing a great job.
ReplyDeletetechimply
Start your Data Science Training from anywhere you like with 360DigiTMG, A world-class curriculum, LMS Access, real-time project, and assignments that will help you in bagging a good-paying job. Enroll now!best institute for data science in hyderabad
ReplyDelete전북콜걸
ReplyDelete전북콜걸
음성콜걸
사천콜걸
사천콜걸
군산콜걸
군산콜걸
김해콜걸
단양콜걸
김해콜걸
دراي فود هيلز
ReplyDeleteIts really great posts
ReplyDeleteCulpeper Traffic Lawyer
Traffic Lawyer Culpeper , VA
سيرفر خدمات سوشيال ميديا
ReplyDeleteهل يعود الانتصاب بعد علاج البروستاتا
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteهل يؤدي التأخر في إجراء عملية دوالي الخصية إلى العقم
ReplyDeleteAre you serching for TikTok SMM panel?
ReplyDeleteHere is Best SMM panel for TikTok
Great! I have been looking for this type of post about python. Thank you so much for sharing this blog. best python course in Noida
ReplyDeletehttps://www.linkedin.com/in/khaledzein/
ReplyDeletekhaled zein
ReplyDeleteVery informative Article as it had high quality contents to gain more knowledges. Thanks for sharing this
ReplyDeleteTraffic Lawyer Henrico VA
Traffic Lawyer Fairfax VA
An Event is simply an action, like clicking a button, which then leads to another event, which the developer already assigns.
ReplyDeleteعباية ملونة
ReplyDelete
ReplyDeleteشحن بطاقة ايتونز سعودي
شحن بلايستيشن ستور سعودي
Teachers can quickly view and assess each student’s performance. They may also evaluate each and every learner in a flash.
ReplyDeleteintroduction of applications in the education sector, major learning techniques have emerged. On mobile apps, there really are fun activities that engage children in a healthy mental system and help them see things from a different perspective.
Parent-teacher communication apps assist in the development of parent-teacher relationships outside of the classroom. This makes it easier for teachers to reply to parents’ questions about their child’s progress. It also contributes to the educational sector’s openness.
enables students to access study materials from the comfort of their own homes.
Data security is facilitated by school app features, which keep contact information, exam papers, and other payment information secret.
If an important event is going to occur, everyone will be notified via push notifications.
Parents will have access to their children’s grades in order to keep track of their progress.
Students will benefit from a tailored learning experience provided by a mobile app for school and university.
In nutshell, technology plays a pivotal role in transforming the lives of students, teachers, parents, and the nation as a whole. It serves enormous benefits to every stakeholder in the system. Thus it is imperative to adapt to the innovations and upgrades not just for the sake of convenience but for staying competitive in the dynamic world. With the evolving society, every school shall evolve its programs and systems.
"Excellent post! Well-written, insightful analysis with practical examples and engaging style. Informative and enjoyable to read. Looking forward to more content from you. Keep up the great work!" I am a trainer at Softcrayons Tech Solution Pvt Ltd providing Google Analytics Training Noida at an affordable price. Join our training program today to learn from the best in the industry!
ReplyDeleteNice post thank you Tonya
ReplyDeletebetak
ReplyDeleteI appreciate the way you presented the information and the helpful tips you provided. Keep up the good work
ReplyDeleteit definitely gave me some food for thought. Looking forward to reading more from you
reckless driving virginia
Reckless Driving Carroll County VA Lawyer