بلاگی در مورد دیجیتال و پردازش تصویرو برنامه نویسی

طبقه بندی موضوعی

http://bayanbox.ir/info/6179423628538511633/ArtificialIntelligenceforHumans-Volume3Neural-Networks-andDeepLearning

http://bayanbox.ir/info/4093090424244474438/Nick-McClure-TensorFlow-Machine-Learning-Cookbook-Packt-Publishing-2017

http://bayanbox.ir/info/8814962871829082821/Nikhil-Buduma-Fundamentals-of-Deep-Learning-OReilly-2017

  • صالح جمالی

By default, TCP sockets are in "blocking" mode. For example, when you call recv() to read from a stream, control isn't returned to your program until at least one byte of data is read from the remote site. This process of waiting for data to appear is referred to as "blocking". The same is true for the write() API, the connect() API, etc. When you run them, the connection "blocks" until the operation is complete.


Its possible to set a descriptor so that it is placed in "non-blocking" mode. When placed in non-blocking mode, you never wait for an operation to complete. This is an invaluable tool if you need to switch between many different connected sockets, and want to ensure that none of them cause the program to "lock up."


If you call "recv()" in non-blocking mode, it will return any data that the system has in it's read buffer for that socket. But, it won't wait for that data. If the read buffer is empty, the system will return from recv() immediately saying ``"Operation Would Block!"''. "


However, the provided Blackin lwIP port does not support non-blocking recv function calls.

  • صالح جمالی

در این پست نکات ریزی که کلی وقت تلف میکنه رو درج کردم.



* پکیج protobuf باید دارای نسحه های یکسانی در سیستم عامل و آناکوندا باشند. در حال حاضر ورژن ۳.۲ برای آناکوندا موجود میباشد در حالی که ورژن ۳.۳ ریلیز شده(و میتوانید از سورس نصب کنید)



*اگر هنگام make runtest مشکل تداخل HDF5 داشتید کافیه لایبرری libHDF5 ای که داخل anaconda2 هست رو با دسترسی روت به /usr/ کپی کنید(هر فولدر به فولدر همنام) دقت کنید که محتوای lib رو در فولدر /usr/lib64 کپی کنید!

بعد در فولدر /usr/lib64 دستور sudo ldconfig رو بزنید. یادتون نره caffe رو make clean کنید و مراحل کامپایل رو از اول تکرار کنید تا از لایبرری جدید استفاده بشه.


  • صالح جمالی

Prerequisites

NVidia Driver, Cuda Toolkit 7.5, cuDNN v5 or v5.1, Anaconda2-4.0.0 64bit or Anaconda2-4.2.0 64bit and OpenCV 3.1 (using conda installation) should be installed and configed following previous documents.

Install General Dependencies

# yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel
# yum install gflags-devel glog-devel lmdb-devel
# yum install openblas-devel

Download Caffe

Go to this page https://github.com/BVLC/caffe. Download the latest version.

Tested Version: 2c34393fc5aec9899d92c64be41598a3184d3347 (20160928) . This version is a refined version based on release candidate 3. Link: https://github.com/BVLC/caffe/archive/2c34393fc5aec9899d92c64be41598a3184d3347.zip

Download the file to /opt/ml-items, unzip it.

# wget https://github.com/BVLC/caffe/archive/2c34393fc5aec9899d92c64be41598a3184d3347.zip
# unzip 2c34393fc5aec9899d92c64be41598a3184d3347.zip
# mv caffe-2c34393fc5aec9899d92c64be41598a3184d3347 caffe-2c34393 

  • صالح جمالی

Linux :: Shared aliases in /etc/profile.d not applied to root user, why?


I suspect that you execute the su command without dash (-), and if so, it will invoke an interactive non-login shell. Combine with you have only following in /root/.bashrc:

# Test for an interactive shell.  There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
    # Shell is non-interactive.  Be done now!
    return
fi

(not source /etc/bashrc)

whereas if you directly login or use su -, it will invoke a login shell, /etc/profile is read and sharedAliases.sh will be execute.

To see which file is read with different shells, adding logs to all these files by executing the following commands as root:

echo "echo 'running /etc/bashrc'" >> /etc/bashrc
echo "echo 'running /etc/profile'" >> /etc/profile
echo "echo 'running /root/.bashrc'" >> ~/.bashrc

Create an test alias:

# echo "alias list='ls'" > /etc/profile.d/test.sh

Now, login as normal user and use su, you will see something like this:

$ su
Password: 
running /root/.bashrc
bash-3.2# list
bash: list: command not found

and with su -:

$ su -
Password: 
running /etc/profile
running /root/.bashrc
# list
total 226540
-rw-rw-r-- 1 root root     60148987 Apr  1  2011 3241948.flv


https://serverfault.com/questions/321763/linux-shared-aliases-in-etc-profile-d-not-applied-to-root-user-why
  • صالح جمالی

بعضی وقتی موقع کامپایل پروژه پیش میاد که کتابخونه فلان پیدا نشد

error while loading shared libraries: libopencv_core.so.3.2: cannot open shared object file: No such file or directory


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

linux-vdso.so.1 =>  (0x00007ffe555e9000)

libcaffe.so.1.0.0 => /home/saleh/01_Repositories/caffe_/caffe/.build_release/tools/./../lib/libcaffe.so.1.0.0 (0x00007f9efe932000)

libcudart.so.8.0 => /usr/local/cuda-8.0/lib64/libcudart.so.8.0 (0x00007f9efe697000)

libcublas.so.8.0 => /usr/local/cuda-8.0/lib64/libcublas.so.8.0 (0x00007f9efbbff000)

libcurand.so.8.0 => /usr/local/cuda-8.0/lib64/libcurand.so.8.0 (0x00007f9ef7c89000)

libglog.so.0 => /lib64/libglog.so.0 (0x00007f9ef7a58000)

libgflags.so.2.1 => /lib64/libgflags.so.2.1 (0x00007f9ef7837000)

libprotobuf.so.8 => /lib64/libprotobuf.so.8 (0x00007f9ef7525000)

libboost_system.so.1.53.0 => /lib64/libboost_system.so.1.53.0 (0x00007f9ef7320000)

libboost_filesystem.so.1.53.0 => /lib64/libboost_filesystem.so.1.53.0 (0x00007f9ef7109000)

libhdf5_hl.so.10 => /home/saleh/00_Programs/anaconda2/lib/libhdf5_hl.so.10 (0x00007f9ef6eeb000)

libhdf5.so.10 => /home/saleh/00_Programs/anaconda2/lib/libhdf5.so.10 (0x00007f9ef6a25000)

libleveldb.so.1 => /lib64/libleveldb.so.1 (0x00007f9ef67d1000)

libsnappy.so.1 => /lib64/libsnappy.so.1 (0x00007f9ef65cb000)

liblmdb.so.0.0.0 => /lib64/liblmdb.so.0.0.0 (0x00007f9ef63b5000)

libopencv_core.so.3.2 => not found

libopencv_highgui.so.3.2 => not found

libopencv_imgproc.so.3.2 => not found

libopencv_imgcodecs.so.3.2 => not found

libboost_thread-mt.so.1.53.0 => /lib64/libboost_thread-mt.so.1.53.0 (0x00007f9ef619d000)

libboost_system-mt.so.1.53.0 => /lib64/libboost_system-mt.so.1.53.0 (0x00007f9ef5f98000)

libstdc++.so.6 => /home/saleh/00_Programs/anaconda2/lib/libstdc++.so.6 (0x00007f9ef5c82000)

libcudnn.so.6 => /usr/local/cuda-8.0/lib64/libcudnn.so.6 (0x00007f9eec720000)

libopenblas.so.0 => /lib64/libopenblas.so.0 (0x00007f9eea4c7000)

libm.so.6 => /lib64/libm.so.6 (0x00007f9eea1c5000)

libgcc_s.so.1 => /home/saleh/00_Programs/anaconda2/lib/libgcc_s.so.1 (0x00007f9ee9faf000)

libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9ee9d92000)

libc.so.6 => /lib64/libc.so.6 (0x00007f9ee99d1000)

libopencv_core.so.3.2 => not found

libopencv_highgui.so.3.2 => not found

libopencv_imgproc.so.3.2 => not found

libopencv_imgcodecs.so.3.2 => not found

libdl.so.2 => /lib64/libdl.so.2 (0x00007f9ee97cb000)

librt.so.1 => /lib64/librt.so.1 (0x00007f9ee95c2000)

libz.so.1 => /home/saleh/00_Programs/anaconda2/lib/libz.so.1 (0x00007f9ee93ac000)

/lib64/ld-linux-x86-64.so.2 (0x00007f9eff6c9000)

libgfortran.so.3 => /lib64/libgfortran.so.3 (0x00007f9ee9088000)


  • صالح جمالی

ساده ترین روش که غیر اصولیه ولی ۱۰ ثانیه ای جواب میده:


$ su

echo "chmod a+rw /dev/ttyUSB0" >> /etc/rc.d/rc.local

بعد  ctrl + D

این روش زمانی کار میکنه که مبدل usb2serial شما موقع بوت شدن به سیستم وصل باشه و بعد لاگین شدن از سیستم جدا نشه.


  • صالح جمالی

هدف این مظلب و بخش های بعدیش، ارتقای الگوریتم فعلی برنامه نوشته شده با #C که Multithread هست(مثلا به کمک ThreadPool )    به   الگوریتم توزیع شده ای* که بار پردازشی رو بین چند سیستم مجزا(مثلا بین 10 تا PC) پخش میکنه.

\!/ این نوشته و بخش های بعدیش، بیشتر عملی هست تا علمی!
یعنی هدف بررسی تئوری و توضیح علمی و ... نیست و بیشتر گزارشی از تلاش های انجام گرفته برای پیاده سازی چنین هدفیست.

در ادامه پروژه های متن باز موجود بررسی میشوند.
  • صالح جمالی

هدف: بجای IP، یه اسمی بنویسید و در نهایت اون اسم به یک IP مشخص resolve بشه


به فولدر زیر برید:

C:\Windows\System32\Drivers\etc


فایل hosts رو با نوت پد باز کنید


همونطور که معلومه # علامت کامنت هست و باید در یک سطر جدید .و بدون # ، اول IP و بعد tab و بعد string مد نظرتون رو وارد کنید


مثال:

192.168.1.60           gitlab_server


به همین سادگی!


منبع:

https://support.rackspace.com/how-to/modify-your-hosts-file/

  • صالح جمالی

درود و وقت بخیر

شاید برای شما هم پیش اومده باشه که نیاز داشته باشید به استفاده از static library ای که در زبان ++C که کلاس و آبجکت داره، نوشته شده، در زبان دیگه ای مثل C که کلاس و آبجکت رو پشتیبانی نمیکنه!

خب اینجاست که مفهوم Class Wrapping مطرح میشه.

روشی که بکمک اون، در سمت ++C ساختاری پیاده سازی میشه که از زبان C قابل استفاده باشه.


در ضمن static library در مقابل dynamic library هست. تفاوت این دو که پسوندشون به ترتیب lib و DLL هست، در زمان لود شدنشون به برنامه میزبان هست.

DLL در runtime توسط میزبان load میشه، در حالی که static library موقع بیلد شدن برنامه میزبان، ازش استفاده میشه.


  • صالح جمالی