نوشته‌های ترمینالی
2.66K subscribers
425 photos
12 videos
32 files
2.25K links
Download Telegram
#مقاله
#در_سایت_جاواکاپ_بخوانید

همواره به توسعه‌دهندگان جاوا توصیه می‌شود که JVM و بخش‌های مختلف آن را بشناسند.
یکی از این بخش‌ها که در عملکرد برنامه‌ جاوایی شما تاثیر زیادی دارد، just in time compiler یا به اختصار JIT است. به طور خلاصه JIT بخش‌های پرتکرار کد شما (hotspot) را در زمان اجرا کامپایل می‌کند تا لازم نباشد برای هر اجرا آن را تفسیر کند.
در این مقاله کمی با JIT کلنجار می‌رویم و بررسی می‌کنیم JIT در مقابل بهینه‌سازی‌های دستی ما چگونه عمل می‌کند.

https://javacup.ir/close-look-at-jit/

@JavaCupIR
ابزار vimv یه ابزار برای rename کردن فایل از توی ترمینال با ویم هست.
اینطوریه که باید یه پکیج جدا نصب کنید و پیشفرض نصب نیست، بعدش توی یه پوشه می‌نویسید vimv و با vim یه فایل باز می‌کنه که هر خطش شامل اسم فایل/فولدرهای پوشه‌ٔ جاریه.
بعد هر کدوم رو می‌تونید ادیت کنید بعد که ویم رو ببندید (اگه نتونستید بگید) اون فایل/پوشه‌ها به اسم‌های جدیدشون رینیم میشن

https://twitter.com/i/status/1270720407272738818
استفاده از ctag داخل vim
برای؟ برای پیدا کردن definition یه key word در زبان‌های برنامه نویسی مرسوم
https://courses.cs.washington.edu/courses/cse451/10au/tutorials/tutorial_ctags.html
و
https://andrew.stwrt.ca/posts/vim-ctags/
خوندن محتوای یه فایل متنی و چاپش با فقط یک خط در جاوا

Files.lines(Paths.get("test.txt")).forEach(System.out::println);


این روش هم هست سریع‌تره:
System.out.print(
new String(Files.readAllBytes(Paths.get("test.txt")))
);


و تو پایتون که سرراست تره:
print(open("test.txt", 'r').read(), end="")
https://www.geeksforgeeks.org/iterators-in-java

انواع iterator در جاوا
در واقع ۳ نور iterator داریم.
اولیش رو که آشنا هستیم و universal iterator هست

دومی enumeration هست، این یه چیز legacy هست و از اولین jdk بوده و گویا خیلی استفاده نمی‌شه. با دستور elements() روی Vector و HashTable می‌تونید دریافتش کنید.

سومی list iterator که برای لیست هست فقط ولی امکانات بیشتری مثل برگشتن به عقب رو هم داره.
https://blog.codinghorror.com/the-great-newline-schism/
در مورد line terminal و داستان‌هایش


و جواب مختصر و مفیدتر
https://superuser.com/questions/374028/how-are-n-and-r-handled-differently-on-linux-and-windows

و ارائه راه حل:
https://support.nesi.org.nz/hc/en-gb/articles/218032857-Converting-from-Windows-style-to-UNIX-style-line-endings


پانوشت:
توی جاوا هم با دستور
System.lineSeparator();
می‌تونید ببینید سیستم فعلی از کدوم استاندارد تبعیت می‌کنه.


ویکیپدیای text file هم می‌تونه جالب باشه
https://en.wikipedia.org/wiki/Text_file
با اضافه کردن
set whichwrap+=<,>,[,]
به vimrc می‌تونید کاری کنید که arrow key های راست و چپ، بعد از تموم شدن خط به اول خط بعدی (یا اخر خط قبلی) برن، درست مثل ادیتور‌های معمول‌تر :)

منطقا خودتون اگه نیاز داشته باشید می‌تونید سرچش کنید ولی گذاشتم اینجا چون پیدا کردنش خیلی اذیت کرد و نمی‌دونستم چی سرچ کنم. :)
چرا از scanf استفاده نکنیم و راهکار چیه؟

چرا استفاده نکنیم؟ چون اصولا کاربرد عمومی برای ورودی گرفتن از کاربر نداره و برای formatted input هست ولی ورودی کاربر آخرین چیزی که هست، فرمت شده‌است :)
و اینکه در برابر بافر اورفلو هم ایمن نیست.
راه حل؟ تقریبا مثل input پایتون، یه رشته با fgets بگیرید و اون رو دستی پارس کنید.

https://c-faq.com/stdio/scanfprobs.html