Покажи теми - 4096bits
Виж публикациите на потр. | * Виж темите на потр. | Виж прикачените файлове на потр
Страници: 1 2 [3] 4 5 ... 7
31  Програмиране / Общ форум / Прост скрипт за търсене на дублиращи се файлове. -: Oct 02, 2017, 20:05
Почна да не ми стига мястото на лаптопа и външните дискове и вчера си написах това, да ми търси дублиращи се файлове. Може и в bash да се направи с един ред, обаче... Пробвах да го направя да ползва повече ядра и уж да е по-бързо. Не зная, доколко съм направил нещо и ако някой иска, да си каже мнението и да тества. Аз ще го направя, като имам повече време, че терабайти не се проверяват за пет минути. md5 уж е бързо, ма не чак толкова. Днес му добавих само шаренийките и малко коментари.

Python 3.6

Код:
#!/usr/bin/env python3
# Find and prints duplicated files based on their md5 sum
#
import argparse
from collections import defaultdict
from concurrent import futures
from hashlib import md5
import json
import os.path
import os

parser = argparse.ArgumentParser(description='Print duplicated files')
parser.add_argument('path',
                    type=str,
                    default='.',
                    nargs='?',
                    help='Path to a directory to scan')
parser.add_argument('-d', '--dump',
                    dest='res_file',
                    type=str,
                    default='./duplicated.json',
                    help='''Path/filename to store the results
                    Default: ./duplicated.json''')

args = parser.parse_args()
path = args.path
result_file = args.res_file

def human_fsize(size):
    """Return file size in human readable format.
       Argument: file's size
       Type: int
    """

    pref = [('B', 1), ('KB', 1024),
            ('BM', 1024**2), ('GB', 1024**3), ('TB', 1024**4)]
    counter = 0
    res = size
    while True:
        res = res / 1024
        if res < 1:
            break
        else:
            counter += 1

    if size > 1024:
        h_size = round(size / pref[counter][1], 3)
    else:
        h_size = size

    prefix = pref[counter][0]

    return f'{h_size} {prefix}'

def file_hash(file_name):
    """Returns a tuple of md5sum and file name.
       Argument: file's name
       Type: str
    """
    hasher = md5()

    with open(file_name, 'rb') as in_file:
        while True:
            chunk = in_file.read(65536)
            if chunk:
                hasher.update(chunk)
            else:
                break

    md5sum = hasher.hexdigest()
    return md5sum, file_name

# Walk the through directories and look for duplicates
duped = {}
hashed = defaultdict(list)
for root, dirs, files in os.walk(path):
    full_paths = [os.path.join(root, file_) for file_ in files]

    with futures.ProcessPoolExecutor(max_workers=4) as executor:

        for result in executor.map(file_hash, full_paths):
            hashed[result[0]].append(result[1])

            if len(hashed[result[0]]) > 1:
                duped[result[0]] = hashed[result[0]]

# Print the results
lblue, purple, default = ('\033[94m', '\033[35m', '\033[0m')
for key, values in duped.items():
    print(f'md5: {lblue}{key}{default} size: {lblue}{human_fsize(os.stat(values[0]).st_size)}')
    for v in values:
        print(f'    * {purple}{v}{lblue}')
    print(f'{default}')

# Dump the results in a json file
with open(result_file, 'w', encoding='utf-8') as dump_file:
    json.dump(duped, dump_file, indent=4, ensure_ascii=False)

32  Програмиране / Общ форум / Книга за Redis -: Aug 29, 2017, 21:16
Някой да предложи някоя добра книжка за това нящо... Как работи, как се борави с него и т.н. Има някакви по нета, но не зная, коя е читаво и разбираемо написана
33  Linux секция за напреднали / Хардуерни и софтуерни проблеми / Apt смехория -: Apr 27, 2017, 23:58
Опитах се да махна от лаптопа си emacs щото не го ползвам и нямам време да го уча. И като видях, че ми прамахва и mate-desktop преди това други програми, дето ми трябва, Geany също, това просто редакторче и се хванах за главата

И преди съм виждал такова поведение на apt още докато беше apt-get и не мога да не се начудя, как са го оставили така да си действа. Това е луда работа. И сега, как да махна emacs без да си затрия системата? Сериозно се замислям, да изоставя всичко дето ползва apt-get след този случай
34  Linux секция за начинаещи / Настройка на програми / Вече не разбирам, какво става -: Feb 02, 2017, 14:08
Опитах да инсталирам xephyr. Apt изрева, че не го открива. Оказа се, че пакета е именуван xserver-xephyr. Apt отново изрева, този път на висок глас, че не открива пакета. Патето ми каза, че е i386 и дори ми го намери. Свалих .deb файла и очаквано dgebi проплака, че липсвали зависимости. Не продължих по този път, че трябваше да ми оплаква сигурно двайсетина пъти. Разреших i386 архитектурата през dpkg. Обновяване със apt update. Нов опит за инсталиране на xserver-xephyr и този път всичко мина гладко. Инсталира се пакетът xserver-xephyr_2%3a1.18.4-0ubuntu0.2_amd64.deb

Сега, това i386 ли е или amd64? Защо след като разреших i386 архитектурата, ми инсталира нещо, на което пише amd64?
35  Linux секция за напреднали / Хардуерни и софтуерни проблеми / Инсталиране на OpenCV -: Jan 22, 2017, 11:06
Реших да си поиграя малко с OpenCV обаче ми изникна пречка.
Това, което инсталирам от хранилището на Ubuntu ( ползвам Ubuntu MATE ) с sudo apt install python-opencv, е версия 2.х, не 3.2, която е последната.

Та, разкарвам python-opencv, свалям от сайта им последната версия, компилирам я ( още не съм погледнал, дали е source код в архива ), инсталирам чрез pip opencv-python, което ще ми инсталира последната Python-ка версия на нещото. Въпросът ми е, ще се получи ли така? Предполагам, че Python-кия пакет е просто API към един куп С библиотеки.
36  Нетехнически теми / Идеи и мнения / Arch.... -: Dec 29, 2016, 02:14
Мисля да си инсталирам Arch. Някой да има впечатления, струва ли си да се занимавам? Как е системката?
37  Хумор, сатира и забава / Живота, вселената и някакви други глупости / Някой гледал ли е това? -: Dec 27, 2016, 22:11
https://www.youtube.com/watch?v=36Ykla27FIo
38  Хумор, сатира и забава / Живота, вселената и някакви други глупости / Най-изчекнатата и готина добавка за Хрома, а надявам се и за лисицата скоро -: Oct 11, 2016, 16:38
http://appsweets.net/wasavi/

В момента пиша от него, ще се тества тепърва
 
39  Linux секция за напреднали / Хардуерни и софтуерни проблеми / Ubuntu MATE login background проблем -: Sep 09, 2016, 19:31
Привет! След един от ъпдейтите ми изчезна тапета на логин екрана на въпросната система. Като зареди, е изцяло бяло, та чак ми вади очите. Опитах да му променя цвета, тапет да сложа, но не. Въпреки, че от там, дето се настройва е зададен някакъв, пак си е бяло. Картинката си съществува, не е изтрита.

И за да не отварям нова тема, изчезна ми и иконата за звука в панела.

За белият екран помня, че търсих някакво решение в нета, но нещо не намерих. За проблема с иконата за звука не съм търсил, че нещо прекалено често се случва, на каквато и да е система и ми дойде до козирката.  ???
40  Програмиране / Общ форум / Малко насочване моля! -: Aug 25, 2016, 00:27
Мисля от известно време да напиша едно програмче. Хрумна ми, като видях как една моя бивша колежка се рови по тефтери, бележчици, телефона си, лаптопа, два дена, докато намери телефона на един нейн клиент. Отдавна е там и да кажа, че е разхвърляна, не е. Та ми хрумна да ѝ спретна нещо малко, дето да може да ѝ служи да си води нещата. Клиентите, договори към тях, срещи кога е провеждала, бележки към всичко, може би и календар. Ще ми е добро упражнение. Та въпроса ми е, какво да използвам за база данни? Не искам да се инсталира никакъв сървър, та евентуално нещо от рода на SQLite. От няколко месеца разбрах още, че имало на този свят нещо, дето се наричало NOSQL, обаче и там сървъри. Mongo, Couch и разни такива. Трябва и да може да се криптира базата, та да няма достъп от други хора.
41  Програмиране / Общ форум / Python без ОС? -: Jun 10, 2016, 16:53
 някой тук беше питал за пускане на програма или скрипт, или там не помня какво беше, без операционна система. Всички без мен, щото реших, че няма да повтарям останалите,  му казахме категорично, че не може без ОС. Очевидно някои хора не мислят така. Време е да преосмислим някои неща  :) Направили са го на Python 2.7
Josh Triplett - Porting Python to run without an OS - PyCon 2015 
42  Linux секция за начинаещи / Настройка на хардуер / Инсталиране на dd-wrt? -: Apr 21, 2016, 10:18
Има ли смисъл да си инсталирам това на рутерчето? То е някакво TP-LINK за 30 кинта, ма видях одеве, че май модела му се поддържа. Трябва да видя по-късно, като се прибера у дома.
43  Програмиране / Общ форум / Криптографска библиотека -: Mar 20, 2016, 22:19
Какво да използвам за криптиране на комуникация по мрежата? Става въпрос за python-ки код. Одеве попаднах на nacl, но понеже не съм се занимавал никога с криптография, та се чудя, какво да използвам.
44  Linux секция за начинаещи / Настройка на програми / Приключение с поредното дистро. -: Feb 26, 2016, 14:41
Преди седмица реших да затрия единия от линуксите на компа и да инсталирам нов, щото ми омръзна, а и обичам да експериментирам, та хакнах на дяла нещо наречено Korora, което намерих в папката с .iso-та, които държа под ръка. Производно от Федора. Допадна ми. Mate не бях пипал от времето, когато носеше повече разочарования, отколкото полза. Поиграх си и реших да го махна, щото rpm пакетната чекня, никога не съм я харесвал. Няма конкретна причина и никога не съм работил с това нещо. Малко задръстено и незряло, признавам си, но и аз имам един-два недостатъка.  :D
На негово място реших да сложа вече няколко пъти предлаганото тук на други хора ubuntu-mate. Исках нещо по-рекичко. Нъцки! При опит за инсталация, мениджъра на дяловете на инсталатора отказа да свърши работата и ми ревеше за разлика между размера на клъстера в таблицата на дяловете и физическия. Нещо такова.
Fdisk също не свърши работа. Видях, че имам два "допълнителни" дяла, появили се незнайно откъде. Е, достатъчно се виждаше, че е някакво VML "лайно", а аз не си бях имал работа с това нящо. Та имах доста стрес покрай махането на тези два дяла, щото имам на компа важни неща и не знаех дали няма да се омаже нещо с дяловете при цялата офанзива. На външния хард вече нямам достатъчно място за архиви. Та потърсих в нета. Изплю ми цял куп команди, но имаше достатъчно опътвания. Всичко мина добре. Сега там имам ubuntu-mate, което се държи забележително добре.
Та си мислех, за чий им е на тези да правят такива упражнения с дяловете. Както казазх, досега само бях чел за lvm, но досег никакъв. Само стрес ми докара.
Та сега си мисля, ако имам време да превърна едно по-голямо файлче в hdd и да поекспериментирам. Такова нещо втори път не мисля да допускам.
И Федора ли така си инсталира системата?
45  Програмиране / Общ форум / Правилно ли е това поведение на Python set -: Feb 20, 2016, 19:32
В Python set тип данни са неподредени, неповтарящи се променливи и при print в интерпретатора например или дори в скрипт без форматиране би трябвало да са затворени в {}. Понеже са неподрен набор променливи при set.pop() би трябвало да връща произволна променлива от всички. Да, ама не. Поне така си го представям, а и така пише за set и set.pop()
Обаче в интерпретатора при print всичките променливи са затворени между ([...]). При set.pop() не се връща произволна променлива от всички, ами първата, по реда както е нацвъкано всичкото set.
В IPython при print ми изкарва цялата променлива от тип set в {..} скоби, но пак при var.pop() ми връща "поредни" стойности от целия куп. Няма индекс на всичкото променливи, няма подреждане, но сякаш има. Някой да ми обясни моля, защото аз вече се обърках здраво. Помня, че преди време като пробвах как се държи set тип данни, можеше да се вади произволна стойност от всичките, но сега нещо не става. Също не мога да превърна list в set. Не дава грешка, при проверка ми казва, че е торбата със стойности е тип set(), но се държи отново по този странен начин. И отново го принтва в ([...]). Ако се опитам да набутам стойностите една по една с цикъл for в празна променлива тип set, отново на финала ми ги принтва при  проверка на положението в такива двойни скоби, а не в {...}. Отново са тип set(), отново са "неподредени" стойности вътре, но все пак при pop() се връщат в реда, в който са вкарани, а не в произволен ред. При опит да ги достъпя по индекс разбира се ми реве за грешка, както и трябва да бъде.
Страници: 1 2 [3] 4 5 ... 7