0%

تقدم شركة موزيلا في متصفحها فيرفوكس للحاسوب والاندرويد خاصية جديدة بحيث تقوم بحجب شركات التتبع، إما تتبع بغرض الإعلانات او تتبع للإحصاء، و بالإضافة لحماية خصوصيتك من تلك الشركات فان التصفح سيكون اسرع كذلك والسبب أن روابط التتبع تقوم بتحميل ملفات كبيرة الحجم وصور إعلانات ليس لها علاقة بمحتوى الموقع المُزار.

خطوات التفعيل سهلة إذ عليك زيارة صفحة إعدادات فيرفوكس المتقدمة وذلك عن طريق كتابة about:config في حقل عناوين الإنترنت والضغط على مفتاح الإدخال (قد تحتاج إلى ضغط زر “I’ll be careful, I promise!” إذا ظهرت صفحة التنبيه).

في صفحة الإعدادات ستجد شريط بحث في الأعلى يساعد على إيجاد الإعدادات بسهولة. فقم بكتابة “trackingprotection” في ذلك الشريط للبحث عن الإعدادات المتعلقة بذلك الترميز ثم قم بتفعيلها كما هو موجود في الصورة التالية للحواسيب:

Firefox Tracking Protection
والصورة التالية للاندرويد (حاليا متوفرة في Firefox Beta):

Firefox Beta Tracking Protection

فيدورا 21 والتي استغرق تطويرها ما يقارب السنة حملت في طيَّاتها تغيرات جذرية على راسها تقسيم التوزيعة الى 3 نكهات: 1- خادم 2- محطة عمل (مكتبي) 3- سحابي

فيدورا 22 والتي صدرت بعدها بعدة شهور استكملت هذه النقلة بتنقيحات وتحسينات وكذلك اضافات جديدة على راسها التالي:

  • اعتماد مدير الحزم DNF كبديل ل Yum بشكل كامل.
  • اعتماد نظام الملفات XFS كنظام افتراضي في نكهة الخادم.
  • تحسين لتطبيق “قمرة القيادة” cockpit والذي يمكنك من ادارة عدة خوادم من خلال المتصفح.
  • اعتماد اصدارة واجهة قينوم 3.16 حيث تاتي بنظام تنبيها جديد ورائع وكذلك تحسين في الشكل وايضا امكانية تشغيل تطبيقات واجهات اخرى مثل كدي بحيث تظهر بشكل منسجم مع واجهة قينوم.
  • اعتماد بلازما 5 (كدي 5) كواجهة اساسية لتدويرة (spin) “فيدورا كدي” مع كيوت 5 والتي تاتي بشكل جديد وتقنيات كثيرة.
  • تحديث تدويرة “فيدورا اكسفسي” الى 4.12 حيث تقدم دعم للشاشات ذات الدقة العالية.
  • نقل بعض التدويرات المتخصصة مثل تدويرة الالعاب و الرسم والاختراق الى صفحة “المختبرات” https://labs.fedoraproject.org
  • تخصيص صفحة لنكهات فيدورا مع تدويراتها والمبنية لمعالجات ارم (ARM) كالموجودة في الراسبيري باي 2 https://arm.fedoraproject.org مع انه لايوجد دعم مباشر للرازبري باي 2 بعد لكن هناك طرق لتشغلها عليها.
  • اعتماد GCC 5.1 كحزمة اساسية.
  • تحديثات للنكهة السحابية

الترقية لاصدار 22 من اي اصدار سابق تتم عن طريق استخدام برنامج fedup

1
sudo fedup --network 22

اذا تمت العملية السابقة بدون اخطاء فقم باعادة التشغيل لتتم عملية الترقية وتحديث الحزم (قد تستغرق العملية وقتا طويلا حسب سرعة الجهاز وعدد الحزم الموجودة سابقا. اما في حال وجود اخطاء فقم باصلاح المشاكل واعادة تشغيل الامر السابق.

عند اكتمال التحديث والاقلاع في النظام الجديد قم بتنفيذ الاوامر التالية:

1
2
3
4
sudo rpm --rebuilddb
sudo dnf distro-sync --setopt=deltarpm=0
sudo dnf install rpmconf
sudo rpmconf -a

الامر الاخير rpmconf -a سيقوم بالبحث عن ملفات الاعدادات الجديدة والتي تتعارض مع ملفات قديمة معدلة فبسبب التعديلات لايقوم النظام باستبدالها بل يبقي القديم ويحفظ الجديد بامتداد rpmnew فالامر هذا سيقوم بعرضها ويقدم لك عدة خيارات الاول ان تستخدم الجديد، الثاني ان تبقي القديم، الثالث ان يعرض لك الفروقات بينهما لكي تقرر، الرابع ان يدمج الملفان والخامس اعتقد يقوم بتاجيل القرار والاخير يتجاهل الملف. انا شخصيا اختار الخيار الاول للملفات التي لم اقم انا بتعديلها واما ما قمت بتعديله فاحاول عرض التغييرات ودمج ما احتاج من القديم مع الجديد.

* الخط الجديد المعتمد في الطرفية لايدعم المحرف العربي بعد، لذلك ستحتاج لتغيير الخط الى نوع اخر اذا كنت تحتاج العربية. الصفحة التالية تبين بعض التغييرات و المشاكل التي قد تواجهها اثناء الترقية او التحميل الجديد http://fedoraproject.org/wiki/Common_F22_bugs

في الفيديو التالي قمت بشرح عملي لطريقة تحويل الكاميرات إلى كاميرات قابلة للتصوير الليلي.
معظم الكاميرات بطبيعتها قادره على التصوير الليلي وهو الذي يعتمد على التقاط الإضاءة تحت الحمراء لكن ونظرا لكون تلك الإضاءة تؤثر على جودة ألوان الصور والتصوير في النهار فإن الشركات تقوم بوضع فلتر لحجب تلك الإشعاعات. بينما كاميرات التصوير المتخصصة فهي تحتوي على فلتر متحرك يتحكم فيه حساس قوة الإضاءة فيفعل في الليل ويعطل في النهار.

باختصار الفيديو يوضح طريقة رخيصة لتمكن تقريباً أي الكاميرة من التصوير في الليل، مشاهدة ممتعة:

التصوير الليلي

في بعض توزيعات اللينكس مثل فيدورا نجد أن بعض مشغلات أو مرمزات الفيديو معطلة بشكل افتراضي إما لكونها لا تزال في مراحل التطوير أو بسبب المخاوف من حقوق التسجيل وبراءات الاختراع. مهما كانت الأسباب فانك ستجد أن تشغيل مقاطع الفيديو التي تستخدم تلك التراميز في بعض المواقع غير ممكن حتى لو كنت قد جملت جميع حزم التراميز المطلوبة (مثل تراميز gstreamer وغيرها).

من اهم المواقع المختصة بالفيديو موقع يوتيوب حيث يوفر خاصية استخدام مشغل أفلام يعمل بتقنية HTML5 الحديثة بدلا من الفلاش إذ إنها اكثر أمنا واسرع واخف على المعالج من مشغلات الفلاش وحيث إن الفلاش يستخدم في الغالب من قبل شركات الإعلانات في تعقب تنقلاتك وعرض الإعلانات لك وكذلك من قبل الهاكرز في استغلال ثغراته. عند زيارة صفحة اليوتيوب https://www.youtube.com/html5 الخاصة بتفعيل مشغل HTML5 تقوم الصفحة بفحص المتصفح لمعرفة التراميز التي يدعمها وكانت الصفحة تظهر لي بالشكل التالي:

Firefox on Linux Youtube HTML5 Player

فالعناصر باللون الأحمر تعني أن تلك المرمزات غير متوفرة مما جعل مشغل HTML5 يعرض الفديوات بوضوح محدود في بعض الأحيان مثلا دقة 720HD كحد أقصى أو أن لا تكون الفديوات متوفرة بدون تلك التراميز.

الحل كان سهلا جدا فجميع حزم التراميز قد قمت بتثبيتها سابقا من مخازن RPM Fusion الخاصة بتوزيعة فيدورا وكنت في حاجة لتفعيلها في فيرفوكس فقط، خطوات التفعيل سهلة اذ عليك زيارة صفحة إعدادات فيرفوكس المتقدمة وذلك عن طريق كتابة about:config في حقل عناوين الإنترنت والضغط على مفتاح الإدخال (قد تحتاج إلى ضغط زر “I’ll be careful, I promise!” إذا ظهرت صفحة التنبيه).

في صفحة الإعدادات ستجد شريط بحث في الأعلى يساعد على إيجاد الإعدادات بسهولة. فقم بكتابة “h264” في ذلك الشريط للبحث عن الإعدادات المتعلقة بذلك الترميز ثم قم بتفعيلها كما هو موجود في الصورة التالية:

Firefox H264 decoder settings
قم بعد ذلك بالبحث عن الإعدادات المتعلقة ب “mp4” وفعلها كالصورة التالية:

firefox mediasource settings
أخيرا ابحث عن إعدادات “mediasource” وفعلها كالتالي:
firefox mp4 settings
بعد الانتهاء من الإعدادات قم بزيارة صفحة اليوتيوب الخاصة بمشغل فيدو HTML5 و إذا كانت التغييرات صحيحة مع توفر المرمزات المطلوبة ستكون بالشكل التالي:

firefox youtube html5

الآن يمكنك تفعيل المشغل بشكل افتراضي والاستمتاع بيوتيوب اسرع مع القدرة على تشغيل الفديوات بجميع التراميز.

In some Linux distributions such as Fedora the amazing browser Firefox will ship with some of the video decoders turned off by default, some of it is due to the decoder being in unstable stage or due to some copyrights/patents concerns. In either way trying to play videos that uses one of these formats won’t work even if you have all the packages installed (such as the good, the bad and the ugly gstreamer plugins).

I wanted to make youtube use the HTML5 player instead of the old flash player which is mostly used to track you, show ads and by hackers. Visiting the youtube html5 player page https://www.youtube.com/html5 used to be like this:

Firefox on Linux Youtube HTML5 Player
The items in red means they are missing which caused some youtube videos not be available in HTML5 player, or for the resolution to be limited mostly to a maximum of 720 or lower.

The solution is very simple after installing all needed packages, I got all my decoders for Fedora from RPM Fusion repos, and it is under the Firefox low level configuration page which you can get to by typing about:config in the URL box + Enter (click on the button “I’ll be careful, I promise!” if you see a warning page).

In the configuration page there is a search box at the top that makes it easy to find the settings which you need to change. So first type in “h264” and enable the disabled settings as you see in the picture below:

Firefox H264 decoder settings
Then type in “mp4” and do the same as the picture below:
firefox mediasource settings
Finally, search for “mediasource” and enable it as follows:
firefox mp4 settings
When you are done with the settings revisit the youtube html5 page and it should look like this:
firefox youtube html5
Now you can enable the HTML5 player as a default player and enjoy a faster youtube thanks to HTML5 and have the ability to play all videos in all formats.

When my son wanted me to buy him a toy robot I asked him if he would like to build one with me instead, he was so interested so I told him that it will be a car robot with two motorized wheels controlled from the phone over bluetooth and he needs to sketch the design then build it using Lego blocks.








And this is the android app that controls the robot/car, each slider controls the speed and direction of each wheel (the link to the app and its source code can be found at the end of this post):

While he was busy with the sketches I started looking for parts, so I went to eBay and found these wheels


They come in two speeds, I ordered the slower one since it has more torque. These wheel will need something to control them since the Arduino micro-controller is not strong enough to drive them with enough current so wanted to build an H-bridge using transistors (which I have already) but I found a module based on the L298 chip which is very cheap and has a voltage regulator too, awesome.


Next was the bluetooth module, and I went for the HC-06 which is easy to use and also cheap.

Bluetooth HC06-2
And finally is of course the Arduino board, I got the Arduino Pro Mini for its small size and low cost.

arduino_mini
Even though I actually used the Arduino Uno for the development since it is much easier to upload the code and fix mistakes.

I got them all from eBay with the cheapest price I can get so some took about a month to arrive and I wasn’t in a hurry:

2x Car Robot Wheels: $6.00
L298N Dual H Bridge: $3.00
HC-06 Bluetooth Module: $4.00
Arduino Pro Mini: $2.60
40pin Dupont Wires: $1.50
Total = about $17

You will also need an Android Phone or tablet, any with Android 3.0 and up should do. Lego blocks or anything to use for the car body.

Here is a video we made showing how to use the app and explaining the car we built and its main parts:


To get the Andriod app click on the Google play icon below:
Android-app-on-google-play
for the Android source code click here and for the Arduino code click here

I got myself on of those cheap Bluetooth OBDII dongles but it didn’t work in my car (2005 Dodge), it simply couldn’t detect the protocol which is SAE J1850 VPW used on most Chrysler/Dodge I believe before 2008. So I took it apart and as you can see in the picture it has two stacked circuit boards the one of top has a bluetooth chip (BEKEN BK3231Q) and a CAN protocol transceiver from NXP (TJA1040)

Fake ELM327
The flip side of the top board contains a CAN controller (MCP2515) from Microchip.
CAM controller MCP2515

However, and what is surprising is the bottom board which contains only voltage regulators for 5v and 3.3v and most of the OBD-II pins are not even connected!
OBD-II connections

Let’s compare the connected pins to the pinout of the OBD-II connector in the image below

OBD2_pinout

So the 12v VCC (pin 16 in red) is connected and the two ground pins (pin 4 & 5 in gray). How about the different OBD2 protocols? let’s see:

  • CAN (ISO15765) used pin 6 & 14 (green color) and they are connected.
  • ISO9141/14230 uses pin 7 & 15 (yellow color) and they are connected.
  • J1850 PWM uses pin 2 & 10 (blue color) and they are NOT connected.
  • J1850 VPW uses only pin 2 (blue color) and it is NOT connected.

So it is clear that this will not support any of the J1850 protocols which are used by most old American car makers (Chrysler/Dodge/Jeep, Ford, GM), luckily I think all new cars (2008+) are using the CAN protocol which is the newest among the others.


Update: Another fake OBD2 reader

I bought another Bluetooth OBD-2 reader that is slightly larger than the one I got before hoping it would have the parts needed to support all protocols and since the seller also claim it does. (Spoiler: I got a full refund).

obd2_01

Guess what? It is exactly the same as the other one, it didn’t work on both of my cars so I opened it up and unsurprisingly it has the same guts (same chips) in slightly different arrangement. obd2_02
obd2_03
obd2_04

I think having full support is a little too costly even for the Chinese manufacturer, also don’t be fooled by some sellers on Amazon who sell the same exact models for $15+, increasing the price won’t make it work. I also won’t recommend using these basic devices in your car since they don’t have Bluetooth authentication! and any nearby hacker can connect to them and have full access to your car CAN bus and do whatever your car manufacturer has allowed on that bus. You might have heard about the recent car hacks like disabling the breaks and such.

So if you are looking for something that works with all protocols and also safe to use I would go with trusted brands that have been tested by many users, e.g. “OBDLink LX Bluetooth“ which looks like the perfect solution, good quality build, support for all ODB2 protocols, sleep mode and has a security button that need to be pressed to allow Bluetooth pairing I have not used it though since it is a little expensive.

بعد مخالطة الكثير من اللينكساويين وجدت أن الأغلب متمسك بتوزيعة أو بأخرى لسبب ما، بعض الأسباب تقني وبعضها شخصي. لكني وجدت عند البعض نوع قد يكون فريد من القناعة بكون تلك التوزيعة التي يستخدمها تتفوق على غيرها وليس هناك ما هو أفضل منها. فعندما يبدأ حوار التوزيعات تجد احدهم يقاطع الجميع ويبدأ بالحديث عن مزايا توزيعته وكأن ما يتلوه هو قرآن لا يحتمل النقاش فيمجد مثلا ثباتها وسهولة استخدامها واستقرارها وأنها لا يعلوها احد ويذكر أمجادها حتى يضن السامع أن من يستخدم غيرها إنما هو ضال لم ير سبيل الرشاد بعد!. لحظة قد لا يكونون لهذه الدرجة من التعصب اللينكساوي لكن تجد فيهم نفحات منه.

النقاش أحيانا يكون صحي، فيساعد الآخرين على اكتشاف المميزات والعيوب لكن بشرط أن لا يكون نقاش تعصبي بحت وان يتم ذكر المميزات والعيوب بمنطقية وموضوعية ولنتذكر دائما أن ما قد تراه عيبا قد يراه غيرك ميزة. فالبعض يفضل توزيعات بطيئة التطور لأنها مستقرة بينما آخر قد يتغاضى عن مواجهة بعض العلل والمشاكل في سبيل الحصول على أحدث التقنيات حتى وإن لم تنضج بعد.

في بعض الأحيان قد يفشل نظام اللينكس في التعرف على بعض أنماط أو دقة شاشة العرض والأسباب قد تعود إلى مشاكل في معرفات كرت الشاشة أو مشاكل في الشاشة نفسها و أحيانا تكون بسبب كبل الشاشة خصوصا عند استخدام التقنيات التماثلية مثل VGA. التقنيات الرقمية مثل HDMI و DisplayPort اقل عرضة بكثير لمثل هذه المشاكل.

في هذا الموضوع سوف اشرح طريقة إضافة نمط مدعوم من قبل الشاشة لكن لم يستطع النظام التعرف عليه [* هذه الطريقة لن تسمح باستخدام دقة أعلى أو اقل مما تدعمه الشاشة لان تلك حدود مصنعية]. لنفرض أن شاشتك تدعم دقة عرض [1920x1080] وتسمى Full HD و FHD واحيانا 2K ولكن عند تشغيل النظام لم تعرف عليها واستخدم دقة اقل مثلا [1280x1024]. قم أولا بتنفيذ أمر xrandr لعرض الأنماط التي تعرف عليها:

1
2
3
4
5
6
7
8
9
$ xrandr
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 1280 x 1024
VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 510mm x 287mm
   1280x1024     75.02    60.02*
   1024x768      75.08    60.00  
   800x600       75.00    60.32  
   640x480       75.00    60.00  
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)

في الخرج السابق نجد انه لم يتعرف على النمط المطلوب مع أن الشاشة تدعمه وكذلك تعرفنا على أن الشاشة متصلة عن طريق منفذ VGA1 وان النمط الافتراضي (انظر إلى علامة النجمة *) هو [1280x1024].

نقوم بعدها بإضافة النمط المطلوب: أولا نقوم باستخراج إعدادات الشاشة المطابقة لذلك النمط باستخدام أمر cvt مع الدقة المطلوبة، نفذ التالي:

1
2
3
$ cvt 1920 1080
\# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

السطر الثاني هو المهم و ما بين علامتي التنصيص “1920x1080_60.00” هو اسم النمط ويمكن تغييره (بل انصح بتغييره إلى “1920x1080” وذلك بحذف الجزء الأخير المتعلق بتردد الشاشة لكي لا يسبب مشكلة لاحقا)

بعد ذلك نقوم بإضافة النمط الجديد باستخدام الناتج من السطر الثاني أعلاه لكن بدون كلمة Modeline مع تغيير الاسم ثم ربطة مع منفذ الشاشة التي نستخدمها:

1
2
3
$ xrandr --newmode "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

$ xrandr --addmode VGA1 "1920x1080"

لو ظهرت رسالة خطا فتأكد من صحت البيانات المدخلة وان الشاشة تدعم هذا النمط، أما إذا لم تظهر أي رسائل فالخطوة التالية هي تجربة النمط الجديد والتحقق من صلاحيته مع الشاشة بالأمر التالي:

1
$ xrandr --output VGA1 --mode "1920x1080"

بعد تنفيذ الأمر السابق هناك احتمالان، الأول هو أن تعمل الشاشة بشكل سليم مع النمط الجديد وتستطيع استكمال العمل أما الاحتمال الثاني فهو أن لا تكون الشاشة متوافقة مع النمط الجديد فتظهر الشاشة سوداء أو صورة غير مقروءة فهنا يلزم إعادة تشغيل الواجهة الرسومية أو إعادة تشغيل الجهاز. توجد طريقة أخرى لتجنب إعادة التشغيل وهي تجربة الأمر السابق ثم الانتظار لبعض الوقت ثم إعادة الشاشة لنمط معروف توافقه مسبقا كالتالي (ثلاث أوامر في سطر واحد):

1
$ xrandr --output VGA1 --mode "1920x1080" ; sleep 5 ; xrandr --output VGA1 --mode "1280x1024"

الأمر الأول ينفذ النمط الجديد التجريبي، والأمر الثاني ينتظر 5 ثواني خلالها تستطيع الحكم إذا كان النمط في الأمر الأول ناجحا أم لا والأمر الأخير يعيد النمط الافتراضي (راجع أول المقالة بخصوص النمط الافتراضي) لكي لا نضطر لإعادة التشغيل في حال كان النمط غير مناسب للشاشة.

في حال نجح الأمر السابق وعملت الشاشة مع النمط الجديد فيجب إضافته إلى إعدادات النظام لكي يعمل حتى بعد إعادة التشغيل، حيث إن الأمر السابق لا يحفظ الإعدادات الا في حال كان الاستخدام مؤقتا كربط الحاسوب مع جهاز عرض “بروجيتور”. في حال الرغبة في تثبيت الامر بالإمكان جمع الأوامر السابقة في ملف script وجعلها تنفذ بعد تشغيل الواجهة الرسومية لكن لا انصح بها او اتبعاع الطريقة الصحيحة وهي باضافة ملف يالنمط الجديد لمجلد اعدادات X11.

قم بانشاء ملف باسم “10-monitor.conf” تحت مجلد /etc/X11/xorg.conf.d/ (تحتاج صلاحيات روت للكتابة في ذلك المجلد) واكتب بداخل الملف التالي:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Section "Monitor"
    Identifier             "Monitor0"
    Modeline "1920x1080"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
EndSection

Section "Screen"
    Identifier             "Screen0"
    Device                 "VGA1"
    Monitor                "Monitor0"
    DefaultDepth           24
    SubSection             "Display"
        Depth              24
        Modes              "1920x1080"
    EndSubSection
EndSection

يجب مراعاة تغيير النمط “1920x1080” واسم منفذ الشاشة “VGA1” لما يناسبك ثم قم بإعادة التشغيل. في حال وجود مشكلة بعد إعادة التشغيل ادخل على النظام من الطرفية “Terminal” واحذف الملف السابق.

عند تركيب فيدورا على الجهاز فان هناك عدد من الخدمات التي تعمل بشكل افتراضي، بعضها ضروري وتعطيلها قد يسبب مشاكل للنظام ولكن بعضها الآخر إما اختياري أو لا فائدة منه و بالإمكان تعطيله بدون مشاكل.

ما الفائدة من تعطيل الخدمات؟… الخدمات الغير مستخدمة تستهلك بعض موارد الجهاز كالذاكرة والمعالج وكذلك تبطئ عملية الإقلاع وتعطيلها يوفر تلك الموارد ويجعل النظام يقلع بشكل اسرع، سأقوم بسرد الخدمات التي يمكن تعطيلها مع شرح بسيط لها. أولا توزيعة فيدورا تستخدم systemd لإدارة الخدمات و هناك عدة طرق لمعرفة الخدمات التي تعمل أثناء الإقلاع منها تنفيذ امر systemctl حيث سيعرض قائمة طويلة بجميع الخدمات وحالتها. لكن الطريقة الاسهل هي عن طريق فتح مجلد /etc/systemd/system/ حيث ان داخل هذا المجلد عدد من المجلدات والملفات وكل ملف من هذه الملفات يمثل خدمة محددة ولتعطيل الخدمة تنفذ التالي من سطر الاوامر:

1
sudo systemctl disable <اسم الخدمة>

وبالإمكان إدراج اكثر من خدمة في نفس السطر

1
sudo systemctl disable الخدمة3 الخدمة2 الخدمة1

والآن مع قائمة الخدمات وشرحها بالعربي:

abrtd.service خدمة التبليغ عن أخطاء النظام
abrt-ccpp.service تابع لخدمة التبليغ عن أخطاء النظام
abrt-oops.service تابع لخدمة التبليغ عن أخطاء النظام
abrt-vmcore.service تابع لخدمة التبليغ عن أخطاء النظام
abrt-xorg.service تابع لخدمة التبليغ عن أخطاء النظام
atd.service خدمة تشغيل البرامج بشكل تلقائي في أوقات محددة
auditd.service خدمة متقدمة لمراقبة احداث النظام من النواة مباشرة
avahi-daemon.service خدمة التعرف على الأجهزة الأخري في الشبكة كالطابعات
avahi-daemon.socket تابع لخدمة Avahi للتعرف على الأجهزة
bluetooth.service البلوتوث، لا فائدة منها في الأجهزة التي لا تحتوي عليه
crond.service خدمة تشغيل البرامج بشكل تلقائي في أوقات محددة
dmraid-activation.service خاص بتفعيل RAID البرامجي الخاص بالاقراص (لا تقم بتعطيلها في حال كنت تستخدم Software RAID)
dm-event.socket تابع لخدمة RAID
iscsi.service بروتوكول خاص بوحدات التخزين عبر الشبكة
iscsid.socket تابع لبروتوكول وحدات التخزين عبر الشبكة
iscsiuio.socket تابع لبروتوكول وحدات التخزين عبر الشبكة
lvm2-monitor.service نظام تقسيم القرص lvm، لا تقم بتعطيله في حال اخترت التقسيم التلقائي
lvm2-lvmetad.socket نظام تقسيم القرص lvm، لا تقم بتعطيله في حال اخترت التقسيم التلقائي
mdmonitor.service خدمة RAID البرامجي الخاص بالأقراص (لا تقم بتعطيلها في حال كنت تستخدم Software RAID)
ModemManager.service خدمة الاتصال بالإنترنت عن طريق استخدام شبكة الجوال
multipathd.service خدمة تعدد المسارات (تستخدم غالبا مع الخوادم الكبيرة)
nfs-lock.service بروتوكول مشاركة الملفات عبر الشبكة بنظام NTS
nfs.target بروتوكول مشاركة الملفات عبر الشبكة بنظام NTS
pcscd.service خدمة البطاقات الذكية (تتطلب قارئ بطاقات خاص)
pcscd.socket تابع لخدمة البطاقات الذكية
remote-fs.target خاص بوحدات الأقراص عبر الشبكة (نظام ملفات عن بعد)
rngd.service خدمة توليد الأرقام العشوائية، تعمل فقط مع المعالجات الحديثة ولا تعمل داخل الوهمي
rpcbind.service خاص ببروتوكولات مشاركة الملفات عبر الشبكة
rpcbind.socket تالع لبروتوكولات مشاركة الملفات عبر الشبكة
spice-vdagentd.service خدمة التحكم بالطرفيات عن بعد باستخدام Spice
sshd.service خدمة الدخول الآمن للطرفية (خدمة مفيدة جدا لكن ينصح بتعطيلها في حال عدم استخدامها)
vmtoolsd.service أدوات خاصة بالوهمي عند استخدام VMware

ولتعطيل الخدمات المذكورة جميعها بعد التأكد من عدم حاجتك لها نفذ الأمر التالي:

1
2
3
4
5
6
sudo systemctl disable abrt-ccpp.service abrtd.service abrt-oops.service abrt-vmcore.service /
abrt-xorg.service atd.service auditd.service avahi-daemon.service bluetooth.service crond.service /
dmraid-activation.service dm-event.socket iscsi.service iscsid.socket iscsiuio.socket /
lvm2-lvmetad.socket lvm2-monitor.service mdmonitor.service ModemManager.service /
multipathd.service nfs-lock.service nfs.target sshd.service pcscd.service pcscd.socket /
remote-fs.target rpcbind.service spice-vdagentd.service vmtoolsd.service

ثم قم بإعادة تشغيل الجهاز، وفي حال وجود مشكلة او احتجت لتشغيل احد تلك الخدمات فقم بتفعيلها هكذا:

1
sudo systemctl enable <اسم الخدمة>

ولتشغيلها:

1
sudo systemctl start <اسم الخدمة>

وللاستعلام عن حالة الخدمة:

1
systemctl status <اسم الخدمة>

** ملاحظة: قد لا تكون جميع الخدمات تلك ظاهرة لديك إذ أنها تعتمد على حزم البرامج المحملة على النظام، لكني حاولت إدراج اكبر قدر ممكن من الخدمات التي تأتي مع Fedora 20 و التي قد لا تكون ضرورية للجميع أو لعمل النظام ومن الممكن الاستغناء عنها.

**ANNOUNCMENT: Due to the irresponsible behavior and awkward policy of Telegram company, and after they have taken my username @Fahad and given it to someone else without even asking me or notifying me I decided to delete my telegram account and stop the development of Telegram Ultra. And whoever was contacting me through that username should stop since it is not me anymore!

**إعلان: بعد التصرف الغير منطقي و السياسة المتخلفة من شركة تيليقرام حيث قامو بسحب اسم المستخدم @Fahad مني ومنحة لشخص اخر بدون حتى سؤالي او تنبيهي قررت حذف حساب التيليقرام وايقاف تطروير نسخة الترا. وعلى من كان يتواصل معي بالاسم ان يتوقف لانه ليس انا!

التيليقرام عبارة عن برنامج للمحادثة يشابه برامج كثيرة مثل الواتساب ولاين ولكنه يتميز بكونه مفتوح المصدر فبإمكان أي مستخدم تعديل البرنامج حسب ما يناسبه. لن أتحدث عن امن البرنامج ومقارنته بالبرامج الأخرى، ففي نظري جميع البرامج غير امنه وخصوصا انك لا تعرف ما يحدث فعليا في خوادم الشركات لذلك يجب استخدامها في المراسلات العادية والتي لا تخشى من تسربها أو اطلاع الغير عليها. المهم، قمت بنسخ مصدر البرنامج من موقع Github واضفت له تعديلات وتطويرات ثم رفعت تلك التغيرات على حسابي في Github على الرابط التالي:

https://github.com/fduraibi/Telegram

بالامكان تحميل احدث اصدارة من متجر قووقل (قووقل بلاي)

(تم حذف التطبيق - The app is removed from the store)

التغيرات التي قمت بها هي التالي مع تعديلات المطور: (ساقوم بتحديث هذه القائمة عند اصدار تحديثات جديدة تحت تاريخ التعديل)

  • اضافة خاصية إخفاء حالة الظهور (فعلها من قائمة الإعدادات)
  • اضافة خاصية اعادة التمرير بدون ظهور اسم المرسل الاصلي (فعلها من قائمة الإعدادات)
  • اصلاح اختفاء بعض الوجوه التعبيرية (Emoji) عند لصق الرسائل من الواتساب [مثال]
  • المحافظة على عدد المسافات والاسطر عند كتابة او لصق رسالة
  • امكانية عمل بعض التنسيق للرسائل النصية (لتكبير الخط ضعه بين ^ ^ ولتلوينة بالازرق ضعه بين * *) [مثال]
  • زيادة حجم الرسالة النصية للضعف
  • اضافة عنوان عند مشاركة الروابط من بعض البرامج مثل اليوتيوب [مثال]
  • اظهار اسم المرسل على الصور والفديو [مثال]
  • اضافة خيار اخر لتمرير الرسائل بدون اسم المرسل الاصلي بالاضافة لخيار المشاركة لمشاركة الملفات مع البرامج الاخرى [مثال]

* بالامكان تركيب نسخة تيليقرام الترا بجانب النسخة الرسمية واستخدامهما معا بنفس الرقم او ارقام مختلفة.

اذا كنت تصنع لوح دوائر اليكترونية بكميات كبيرة او كنت تستخدم قطع الليكترونية صغيرة حيث يصعب لحماها باليد فانك بحاجة الى استخدام ما يسمى بالستنسل وهي عبارة عن شريحة معدنية او بلاستيكية رقيقة تحتوي على فتحات تطابق تصميم الدائرة تستخدم في وضع معجون اللحام بشكل سهل. هناك عدة طرق لصناعة تلك الشرائح واكثرها شيوعا هو باستخدام الليزر او استخدام طريقة Etching وهي الطريقة التي قمنا بشرحها في الفيديو التالي على قناة “تقنيات بالعربي”:

قام احد الباحثين في أمن المعلومات “HD Moore” بعد اكتشاف ثغرة في بروتوكول UPnP المستخدم في محولات الشبكات Routers خصوصا الشبكات المنزلية، قام بعمل مسح لجميع عناوين الإنترنت في نطاق IPv4 مرة كل أسبوع ولمدة خمسة شهور واكتشف وجود ما بين 40 الى 50 مليون جهاز يحتوي على تلك الثغرة.

يستخدم بروتوكول UPnP للسماح للبرامج والأجهزة الموجودة في الشبكة الداخلية بفتح منافذ في جدار الحماية الخارجي للشبكة حسب الحاجة و بشكل تلقائي دون الحاجة لتدخل مستخدم الشبكة حيث يقوم البرنامج “مثلا خادم لعبة جماعية” بإرسال رسالة من الداخل لجهاز الشبكة وطلب فتح منفذ معين فيقوم جهاز الشبكة بفتح ذلك المنفذ في جدار الحماية مما يمكن اللاعبين بالاتصال من الخارج بالخادم داخل الشبكة، هذه الطريقة لا تمثل مشكلة كبيرة حيث تعتبر الطلبات القادمة من داخل الشبكة المنزلية موثوقة، لكن المشكلة تكمن في إهمال بعض الشركات المصنعة لأجهزة الشبكات حيث سمحو لجهاز الشبكة باستقبال طلبات فتح المنافذ من الداخل ومن خارج الشبكة أيضا! وهذي يعني أن الهاكرز يستطيعون إرسال الطلبات من الإنترنت وفتح منافذ في أجهزة الشبكات وتمكين انفسهم من الوصول للحواسيب داخل الشبكة.

مثال يبين عملية تجاوز جدار الحماية

اول خطوة يجب عليك عملها هو فحص جهاز الشبكة الخاص بك، عملية الفحص سهلة جدا وكل ما عليك هو زيارة هذا الرابط من موقع Rapid7 بشرط أن تكون داخل الشبكة المراد فحصها ومن تلك الصفحة قم بالضغط على زر Scan My Router وسيقوم الموقع بفحص جهازك و إعلامك بالنتائج بعد انتهاء عملية الفحص. إذا كانت نتيجة الفحص مشابهة لهذه الصورة:

نتيجة الفحص

فجهازك سليم، أما إذا كانت النتيجة مغايرة فجهازك وشبكتك معرضتان لخطر الاختراق ويجب عليك اتخاذ بعض الإجرائات لحماية شبكتك منها:

  1. تعطيل خاصية UPnP من جهاز الشبكة (الراوتر)
  2. تحديث نظام (الفيرموير) جهاز الشبكة أو تركيب احد الأنظمة المفتوحة مثل DD-WRT أو Tomato
  3. تغيير جهاز الشبكة باخر محمي إن لزم الأمر

وعند الانتهاء من تنفيذ أي من الحلول السابقة قم بإعادة فحص الجهاز للتأكد. وكذلك انصح جميع المهتمين بأمن المعلومات بتوعية أهاليهم وزملائهم ومساعدتهم في فحص شبكاتهم وزيادة الوعي الأمني الإلكتروني لديهم وتبيان أهميته.

للمهتمين بمجال اختبار الاختراقات (Penetration testing) تم عمل اضافة لـ Metasploit اسمها “UPnP SSDP M-SEARCH Information Discovery” لفحص الشبكات والبحث عن تلك الثغرة حيث يمكنك إدخال نطاق من عناوين الإنترنت وفحصها دون الحاجة لأن تكون في داخل الشبكة نفسها ومزيد من المعلومات تجدها هنا.

تقدم موبايلي باقة “فلة” للطلاب الدارسين في الخارج حيث لا توجد رسوم شهرية والأجمل هو خاصية التجوال الدولي حيث تستقبل المكالمات من السعودية عن طريق بعض مزودي الخدمة بالمجان. ولكن ذلك يتطلب حمل جهازين احدهما لشريحة الهاتف المحلية و الآخر لموبايلي أو جهاز يقبل شريحتين! لكن موبايلي وكشركة سباقة في تقديم الأحدث في عالم التقنية قامت بتقديم خدمة هاتف الإنترنت او ما يسمى ب SIP أو VOIPوهذه الخدمة تمكنك من استخدام رقمك السعودي لإجراء و استقبال المكالمات في أي مكان بالعالم وكأنك موجود في داخل السعودية.

كل ما تحتاج هو أن يكون لديك هاتف أو جهاز حاسب الآلي متصل بالإنترنت وكذلك برنامج موبايلي المسمى ب Roamtalk (تم تغيير الاسم الى) Mobily Business SoftPhone و الحصول على اسم المستخدم والرقم السري عن طريق موقع موبايلي (تمت بعض التغييرات وربما يشترط الاشتراك في باقة للشركات او رجال الاعمال لكنها لا تزال تعمل لدي بباقة فلة القديمة). انا استخدمت البرنامج على عدد من هواتف الاندرويد مثل Nexus S و Samsung Galaxy Note و Galaxy S2 وهو موجود في Google Play وما عليك سوى إدخال اسم المستخدم وكلمة السر وسيعمل البرنامج مباشرة.

لكن البرنامج وللأسف لم يتم تحديثه منذ ما يقارب السنتين وهو يحتوي على عدد من المشاكل منها عدم استقبال الرسائل العربية، لا يقبل الاتصال ببعض الأرقام التي تحتوي على أقواس أو شرطات، عدم استقبال المكالمات في كثير من الأحيان وغيرها من المشاكل التي لم تحل حتى مع تذمر عدد من المستخدمين ومخاطبة الشركة. تحديث: قامت الشركة بطرح نسخة معدلة وفيها تم حل عدد من المشاكل خصوصا استقبال الرسائل العربية ولكن لازالت الخدمة تعاني من بعض المشاكل خصوصا عدم سماع الطرف الاخر لصوتك في بعض الاحيان سواء باستخدام برنامجهم او برامج اخرى.

لكن ولحسن الحظ فان تقنية هاتف الانترنت المستخدمة من قبل موبايلي تقنية عالمية ومستخدمة من قبل شركات كثيرة وتوجد عدة برامج مجانية يمكن استخدامها بدلا عن برنامج Roamtalk Mobily Business SoftPhone من موبايلي وتحل كثير من مشاكل برنامج موبايلي . سوق الاندرويد مليء بمثل هذه البرامج لكن سأذكر أفضل حلين توصلت اليهم:

1- استخدام نظام الاندرويد نفسة حيث يدعم خاصية الاتصال يالانترنت واستقبال المكالمات دون الحاجة لاستخدام برامج اضافية. وهذا يمكنك من استخدام نفس برنامج الاتصال الموجود في الجهاز لكن لايوجد دعم للرسائل.
2- استخدام برنامج CSipSimple وهو مجاني ومفتوح المصدر وله عدة مميزات منها استقبال الرسائل لكن لايستقبل العربي. مشكلة اللغة العربية قد تكون من البرنامج او قد تكون من خادم SIP لدى موبايلي، ولم اتوصل الى الان لمصدر المشكلة.

لاستخدام هذه الطرق يجب استخدام اسم المستخدم وكلمة السر المقدمة من موبايلي بالاضافة لعنوان خادم SIP وهو: vi.mobily.com.sa وهذه بعض الصور لاعدادت الاندرويد وكذلك برنامج CSipSimple
Android Inernet Calling
Android Inernet Calling
CSipSimple
CSipSimple

اذا كنت تريد تصفح الانترنت من جهاز هاتفك او استخدام برامج المحادثة والتواصل الاجتماعي ولكن تخشى من ان يقوم احد بالتجسس عليك سواء كان من المتطفلين او من الحكومات الجائرة وكنت تمتلك جهاز بنظام اندرويد (مثل سامسونق قالكسي او سوني اكسبيريا وغيره) فعليك بتركيب برنامج Orbot. اعداد البرنامج سهل ويدعم اللغة العربية بشكل جزئي واليكم بعض الصور من خطوات الاعداد




اذا كان جهازك بدون صلاحيات المستخدم المسؤول (بدون root كأن يكون الجهاز جديدا ولم تقم بعمل تعديلات للنظام لتفعيل تلك الخاصية) فإن امكاناتك ستكون محدودة. كما نرى في الصورة السابقة فالبرنامج يقدم خيار “طلب صلاحيات المستخدم الخارق” في حال وجود root للجهاز او الاستمرار بدونه.

في حال عدم وجود صلاحيات مستخدم مسؤول فعليك تحميل متصفح مخصص لاستخدام برنامج التور Orweb و برنامج اخر يقوم على تشفير بعض برامج المحادثة Gibberbot

اليرامج اللتي تدعم برنامج التور بدون روت

اما في حال وجود صلاحيات الروت (root) فبالامكان اعداد البروكسي الشفاف لكافة البرامج في الجهاز او بعضها لكي تستخدم التور في نقل البيانات كما نرى في الصورة التالية

بعد الانتهاء من اعداد البرنامج قم بضغط زر التشغيل للارتباط بخوادم التور




الامر لم يكمل بعد، بل يجب تجربة الارتباط والتحقق من ان برنامجك متصل عن طريق التور وليس بشكل مباشر. برنامج التور يوفر خاصية اختبار المتصفح، الصور التالية توضح عملية اختبار فايرفوكس (Firefox) بدون التور


وهنا الصور تبين تفعيل صلاحيات المستخدم المسؤول “الروت” واختيار فايرفوكس كأحد البرامج التي يتم تمرير بياناتها عن طريق خوادم التور ثم اعادة عملية الاختبار



مبروك قد تم اعداد المتصفح بشكل صحيح، تصفح آمن.

** ملاحظة: يجب أخذ الحذر عند استخدامها ومحاولة عدم استخدام معلومات شخصية قد تدل عليك، وايضا يجب ان تتقي الله ولا تستخدمها في ما يغضبه.

If you go to many places with open wireless access you might find it annoying that every time you have to open the browser to accept the same rules and conditions from that provider before you can have real internet access. It is even worse if you have tabs left open from your last session and they all now point to the same wifi login page!

However, if you are using Linux and you have NetworkManager set as the default network management tool then I have a solution for you, NetworkManager will run the scripts inside the folder “dispatcher.d” whenever the connection status changed for any of the network cards on the machine. Under Fedora the folder is located in “/etc/NetworkManager/dispatcher.d/“ and I will assume other Linux distributions will be similar if not the same.

So all you have to do is create a script in that folder that will run whenever the wireless connection is up and the network name (SSID) matches the location that have the open wifi, then the script should automate the process of clicking on the accept button or whatever it takes to get internet access.

I have already made such a script that will allow me to login to Panera Bread and Baltimore County Public Library, but it can be expanded easily to include other locations. The first part of the script should be placed under the “dispatcher.d“ folder and should be accessible by “root“ only (This is a security feature, since NetworkManager will execute all scripts in that folder as root and anyone with access to these files can change their content to do other stuff that might harm your system, so make sure to set the permission to root only). That script will parse the iwconfig output to find the name of the wifi and call the script that matches the name if any.

Here is my main script (07-autologin_openwifi)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash
#------------------------------
# By Fahad Alduraibi
# Last update: June 12, 2012
# Version: 1.1
#------------------------------

export LC_ALL=C
LogFile="/var/log/07-WIFI_ACCESS.log"

# The parameters that get passed to the script are:
# $1 = The interface name ( eth0, wlan0 ...etc)
# $2 = Interface status ( "up" or "down" )

# Check if wireless status is up
# I have two wifi cards in my laptop, named "wlan0 and wlan1"
# so I use regular expression "wlan[01]" to match both of them.
if [[ "$1" =~ wlan[01] && $2 == "up" ]]; then

# Get the network name from "iwconfig" or (can also locate the network based on IP or MAC address if needed)
ESSID=$(/sbin/iwconfig $1 | grep ESSID | cut -d'"' -f2)

# Record the date and time for debugging purposes only
echo "[`date`] ESSID=($ESSID)" >> $LogFile

# If the wireless name matches then run its python script
if [[ "$ESSID" == "BCPL-PUBLIC-WIFI" ]]; then
/usr/bin/python /myscripts/baltimore-county_library_wifi.py 1>> $LogFile 2>&1
elif [[ "$ESSID" == "PANERA" ]]; then
/usr/bin/python /myscripts/panera.py 1>> $LogFile 2>&1
elif [[ "$ESSID" == "Nordstrom_Wi-Fi" ]]; then
/usr/bin/python /myscripts/nordstrom.py 1>> $LogFile 2>&1
#elif .... (you can add more open wifi here)
fi
fi

#if [[ "$1" =~ wlan[01] && $2 == "down" ]]; then
##If you want to do somehting when the network is down
#fi

As you can see that the above script will call another python script when a name matches which are located in another folder (change it to whatever suits you and don’t forget to set the root only permissions) And here is the script for “baltimore-county_library_wifi.py”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#------------------------------
# By Fahad Alduraibi
# Last update: June 12, 2012
# Version: 1.0
#------------------------------
import httplib
conn = httplib.HTTPConnection("1.1.1.1")
conn.request("GET", "/fs/customwebauth/login.html?switch_url=http://1.1.1.1/login.html&wlan=BCPL-PUBLIC-WIFI")
r1 = conn.getresponse()
print r1.status, r1.reason
output1 = r1.read()

headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
params = "buttonClicked=4&err_flag=0&err_msg=&info_flag=0&info_msg=&redirect_url=&username=guest&password=guest"
conn.request("POST", "/login.html", params, headers)
r2 = conn.getresponse()
print r2.status, r2.reason
output2 = r2.read()

conn.close()

In this script I used the “httplib” python library which is kind of a low level library since you have to setup all HTTP stuff manually also if one of the URL or its parameters changed in the future the script will not work and will need to be updated. However, in the second script “panera.py” I use the “mechanize” library which act as a web browser and takes care of the low level HTTP details (mechanize might not be among the standard library and you might have to install it) panera.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#------------------------------
# By Fahad Alduraibi
# Last update: June 12, 2012
# Version: 1.1
#------------------------------
import mechanize
import sys

br = mechanize.Browser()
br.set_handle_equiv(True)
#br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0')]

testURL = 'http://www.fadvisor.net/blog/'
response = br.open(testURL)

if response.geturl() == testURL:
print "FAD: You are already logged in to Panera."
sys.exit()

try:
forms = mechanize.ParseResponse(response, backwards_compat=False)
except:
print "FAD: Error in parsing forms, Am I already logged in to Panera?"
sys.exit()

response.close

form = forms[0]
#print form
#print "----------------------------------- Login"
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- Validate"
#print
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- ConfirmLogin New"
#print
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- ConfirmLogin Validate"
#print
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- CompleteLogin New"
#print

request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- HttpLoginRequest"
#print

request = form.click()
response = br.open(request)
#print response.read()

response.close()
print "--- Panera Done ---"

Panera uses a more complicated process, but mechanize made it much easier to develop the script, and I didn’t hardcode any link or parameters which means the script will work even if they change the URLs, but will still fail if they change the login process.

nordstrom.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#------------------------------
# By Fahad Alduraibi
# Last update: June 12, 2012
# Version: 1.0
#------------------------------

import mechanize
import sys

br = mechanize.Browser()
br.set_handle_equiv(True)
#br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0')]

testURL = 'http://www.fadvisor.net/blog/'
response = br.open(testURL)

if response.geturl() == testURL:
print "FAD: You are already logged in to Nordstrom."
sys.exit()

try:
forms = mechanize.ParseResponse(response, backwards_compat=False)
except:
print "FAD: Error in parsing forms, Am I already logged in?"
sys.exit()

response.close

form = forms[0]
#print form
#print "----------------------------------- Login"
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()
print "--- Nordstrom Done ---"

You can add other providers as well like starbucks and many other coffee shops, all you need is some network capturing tool like tcpdump or wireshark and some scripting skills. A similar thing can be done under Microsoft Windows Vista and above, since you can create a task under “Task Scheduler” that will trigger based on network event.

Disclaimer: you still have to read and agree to the terms and conditions before you start using such script, and you will be responsible for not complying with them.

هل رغبت يوما في عمل لوحة إلكترونية لكن تراجعت بسبب صعوبة العملية أو عدم وجود الأجهزة اللازمة؟

إذا كان هذا هو السبب فلدي الحل، قمت أنا وزميلي أحمد عباس بتصوير فيديو يبين طريقة عمل وتحميض تلك الدوائر باستخدام مواد وأدوات موجودة في المنزل أو متوفرة في السوق. هذا هو الفيديو الأول من سلسلة نود تقدمها في المستقبل تستهدف الهواة ومحبي التقنية في العالم العربي. لن أطيل عليكم وهذا هو الفيديو كما يمكنكم متابعته في اليوتيوب على قناة “تقنيات بالعربي” “TechsInArabic” (كما يمكن عرضه بجودة عالية HD)

NOTE: These cheats do not work anymore

I am going to list here few tricks and cheats that you can use while playing airline manager on facebook. But be careful as some might get you banned from the game. For all of these tricks all you need is Google Chrome browser or Firefox with the Firebug add-on. 1- The BIG Money maker For this cheat to work you need to have cargo planes, so get your pax points up and buy the cargo feature. Once you buy your cargo plane (get one that can carry big load for short distance, it makes more money) start creating its route (again demand is important, distance is not) but stop at the point where you need to sign a contract. As you can see most prices are about $1.0 to $2.5. So pick any of these contracts, lets say the first one, and right click on the “Sign“ button, from the list you will see an item called “Inspect Element” click on that and the browser will open a small box at the bottom of the page showing you some HTML code of that page and the code for the button you right click on is highlighted. See the picture:

Now double click of that highlighted part of the code, and it will allow you to edit. Look for “tcc=x.xxxx” where the x is a the current price of the contract. Simply change that value to whatever your like, the limit that you can set it to is $99,999 per lbs. Don’t set it to high or you will be noticed 8)

Now, click on the same “Sign” button which you modified the code for and you are done. You will be rich in no time ;-) 2- Buying more than 10 aircraft at once (Thanks Luke for this trick) For most aircraft, pax and cargo, the limit that can be bought at once is just 10 (i don’t know why, seems that they like you to click and click more), to get more than that at once, maximum you can get is 99, go to the page for buying the plane you like, like in this picture:

then right click on the drop down box for the “Amount to purchase” and select “Inspect Element”, see the picture:

in the above picture click on the part of code that is highlighted with the second red oval, click on the code to change the number from value=”1“ to value=”99“ or whatever number you like, but 99 is the max, see picture:

You are done, set registration name and click “Buy aircraft”. I am sure you can use the same method to do other tricks and make playing the game easier. But my number one recommendation is to use the Autopilot script ;) that will make you on the top 10 list like me

After upgrading to Fedora 14 I noticed that the built-in mic in my Dell D620 stopped working, after searching here and there I the problem is between ALSA and Pulseaudio, since alsa will show to capture devices “Mic” & “Front Mic” and Pulseaudio will use Mic as the default instead of Front Mic.

So I used “alsamixer” to set the correct capture source and that worked but after a reboot it was set back to Mic. Then I found about “alsactl” which should store the current setting by doing “alsactl store” but that did not work either since I think pulseaudio does not look into that.

Uninstalling pulseaudio as some people suggested solved the Mic problem but caused many other problems when playing many applications that want to play audio (like flash apps such as youtube and video apps…etc), this is an ALSA problem that pulseaudio try to solve AFAIK.

The solution that I found was to use “amixer” which can be run from the command line with the parameters to set “Front Mic” as the capture source. Here is the full command for my device:

1
amixer -c 0 cset numid=6,iface=MIXER,name='Input Source' 1

To explain the previous command: [-c 0] is to select the first sound card (the only card in my laptop, but if you have two cards they will be 0 and 1) [cset] is to tell amixer that you want to set these settings [numid, iface, and MIXER] are information about your card and what source you want to change the settings for, and here is how I get these information:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[[email protected] ~\]$ amixer -c0 contents
numid=2,iface=MIXER,name='Master Playback Switch'
; type=BOOLEAN,access=rw------,values=2
: values=on,on
numid=1,iface=MIXER,name='Master Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
: values=14,14
| dBscale-min=-46.50dB,step=1.50dB,mute=0
......
......
numid=6,iface=MIXER,name='Input Source'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Mic'
; Item #1 'Front Mic'
: values=0
......
......

And as you can see in the previous result the part that am looking for is (numid=6,iface=MIXER,name=’Input Source’) and it lists Mic=0 and Front Mic=1 but the selected values=0 which is for Mic and I need to set it to 1

Here is the command again:

1
amixer -c 0 cset numid=6,iface=MIXER,name='Input Source' 1

put this command in a script file and make it run whenever you login to your profile (I tried adding it to the rc.local so it will execute with every boot but that didn’t work, since I think the settings is applied during login time for each user)

For KDE users you can put that script (or a link to it) under:

1
/home/<username>/.kde/Autostart/

or through the KDE “System Settings”>”Startup and Shutdown”>”Autostart” Now at each login this command should set the correct input source which pulseaudio will use it.