الگوریتم ذخیره سازی Event ها


#1

سلام قصد دارم event های کیبورد رو ذخیره کنم … مثلا زدن دکمه delete زدن enter و …
و بعد این event ها رو در فایلی ذخیر و بعد مجدد بتونم بازیابی و استفاده کنم
کسی از دوستان الگوریتم یا روش بهینه ای برای این کار می تونه معرفی کنه ؟


#2

من راجع به این تو اینترنت سرچ کردم، فهیمدم FBI برای مبارزه با مافیا ازش استفاده کرده… و تو forum های مختلف معمولاً کسایی که یه همچین سوالی پرسیدن، بشون گفتن این کار غیرقانونیه (مثل خیلی کارای دیگه!)… ولی برای منم جالبه چه الگوریتمی استفاده میشه… نرم افزار آماده برای اینکار تو اینترنت پیدا میشه… سخت افزار هم برای اینکار وجود داره که تو کامپیوتر یا کیبورد جا داده میشه… اگه کیبورد وایرلس باشه هم گویا موج هایی که میفرسته رو میگیرن، بعد رمزگشایی میکنن که معمولاً کار سختی نیست…


#3

همون بحث کی لاگر هاس دیگه مگه نه؟:thinking:
اگه اون باشه که غیر قانونیه .
ولی اموزش هاش رو از قضا تو یودمی یه جند باری به چشم خورده بود .
خودشم با سی پلاس پلاس و سی شارپ بود


#4

نه مهندس مگه فقط برای کارهای غیرقانونی استفاده داره …
من نحوه ذخیره سازیش برام سوال بود … من می خوام بدونم به چه شکلی ذخیره بشه که از هزینه حجم و سرعت بازیابی بیشتری داشته باشه … اصلا پیاده سازی و زبانش برام سوال نیست
به عنوان مثال دیگه دیگه ساده ترین کار این هستش که داخل یک فایل txt به ازای هر event یک خط اضافه کنیم و موقع بازیابی خط به خط بخونیم … خیلی کار چیپیه … می خواستم بدونم دوستان روش بهتر و یا فرمت بهتری سراغ دارن برای استفاده


#5

نه حالا منکه چیزی نگفتم . فقط تجربه ای که داشتم رو عرض کردم خدمتتون . و قسمت غیر قانونیش در جواب به اقای @JeanLacroix عزیز بود
تکمیلش کنم .
من خودمم از رو کنجکاوی یه بار استفاده کردم … البته روی کامپیوتر خودم …
که خیلی وقت پیش بود …
اونموقع هم باید ویندوز دیفندر اینارو غیر فعال میکردم چون حذفش میکرد به علاوه روی یه هاست اشتراکی پیادش کرده بودم .
باز میگم که تو کورس هایی دیدم که از ابتدا نحوه ساختنش رو توضیح میداد . و حتما اون قسمتش نیاز شماست
با احترام.


#6

نه من لحنم تند نبود دوست عزیز عذرخواهم اگر اشتباه برداشت کردید…
بازم می گم آقا من فقط می خوام event کیبور یک یوزر رو داخل یک textarea داشته باشم و ذخیره کنم و بعد بتونم همون ها رو به ترتیب بازیابی و استفاده کنم … با اون شکل کی لاگر که برای کارهای خلافه و… فرق داره …
در کل بازم هم مجدد می گم با نحوه پیاده سازیش و جمع کردن event هاش مشکلی ندارم به خدا :)) سوالم در مورد این هستش که با چه فرمت و به چه شکل روی هارد ذخیره کنم که هم بتونم زمان های بین event ها رو داشته باشم (مثل الان دکمه اینتر رو زد دو ثانیه بعد دکمه اسپیس رو زد و… ) و هم از لحاظ حجم و سرعت بازیابی مناسب باشه … با این دید که به طور میانگین دو هزار event رو هر بار می خوام ذخیره کنم
ممنون


#7

به مطلب functional reactive programming نگاه کنید
در اینطور سیستم ها هر واقعه یک event که زمان اتفاق و تغییر ذخیره میکنه شما میتونی event هارو در یک database ذخیره کنی که div که تغییر کرده و داده جدید و زمان را ذخیره کنه
debugger که elm داره دقیقن همین کار انجام میده و میشه عملکرد کاربرو دوباره از اول تا آخر بازپخش کرد

یک talk کامل درمورد FRP


#8

نه نه لازم به عذر خواهی نیس چیزی نشده که . این خوب بودن شمارو نشون میده :v: … میدونین ما مبتدیا . حالا به شخصه وقتی تو یه چیز کوچولو تجربه داریم زود میخوایم به اشتراک بزاریم حالا چه درست چه غلط … اینم یه روش یادگیریه خوب .:smiley: برداشت من اشتباه بوده از سوال شما … حالا خودمم یه چیزایی یاد گرفتم … با سپاس :hibiscus:


#9

این کار، احتمالا تنها راه موجوده. یه سری دیتای شبیه stream داره میاد و باید ذخیره بشه روی هارد. کار دیگه‌ای نمیشه کرد. (البته نباید هر کلید رو توی یه خط ذخیره کنیم. اینطوری به ازای هر کلید، یه کاراکتر\n هم ذخیره میشه که خودش داره حجم میگیره و بعدا خوندن فایل رو هم سختتر میکنه. میشه کلیدها رو همونطور که زده میشه توی فایل ثبت کرد. بدون هیچ کاراکتری برای فاصله انداختن)
مگر اینکه روی ram نگهداری بشه و هر ۵دقیقه ذخیره بشه توی یه فایل (که io کمتر بشه)
یه کار دیگه هم میشه کرد. مثل error logerهایی که برای لاگ گرفتن از نرم افزارهامون استفاده میکنیم، دیتا رو روی یک فایل ذخیره کنیم و هر ۲۴ساعت اون رو tar.gz کنیم و از اول دیتا رو داخلش بریزیم. (استفاده از compressor احتمالا باعث کم شدن حجم فایل میشه)


#10

به نظر من دیتابیس گزینه بهتری تا ذخیره کردن در فایل


#11

تقریبا همیشه با این نظر موافقم.
ولی به نظرم تو این مورد خاص، استفاده از دیتابیس یه سری نقطه ضعف داره.

  • نیاز هست دیتابیس روی سیستم نصب باشه.
  • حجم فایل بالا میره.
  • واسه هر دکمه ای که کاربر میزنه یه کوئری زده میشه.
  • اینهمه تشکیلات فقط واسه یه insert؟

#12

Query میشه به صورت batch وارد بشه
دیتابیس برای ذخیره داده ساخته شده و داده را در هنگام ذخیره خراب نمیکنه
بسیار ارتقا پذیرتره و درخواست داده با query بسیار راحته
علاوه بر این دیتابیس مثل کسندرا برای ذخیره داده زمانی عالیه


#13

متوجه منظورتون میشم.
ولی برای یه keylogger نیاز هست ۴گیگ رم سیستم اشغال بشه؟ (واسه cassandra)
در کل منظور من اینه که دیتابیس مثل تانک میمونه. ما میخوایم مگس بکشیم.


#14

درستی داده شخصا برای من مهم‌تر از استفاده از رم هستش و هیچ وقت دوست ندارم فایل خالی را به عنوان جای اصلی داده استفاده کنم حتی sqllite بهتر از ساختن فایل با کد برنامه هست به نظرم