LINUX.ORG.RU
ФорумTalks

Незамутненный вендоюзерский взгляд на гитхаб

 ,


0

1

На одном из форумов.

Сначала один человек написал несколько полезных скриптов для книгосканировщиков (на питоне в основном) и выложил на гитхаб, дал ссылку. И вот им пытается воспользоваться человек, явно что не программист ни разу.

U235, а можно как то ваши старания доводить до народных масс? Наверное, всё это неплохо, что вы делаете, но некоторые не понимают, как это применить, начиная от того, как это скачать с непонятного github.com (там набор каких то файлов, то ли отдельно каждый качать, почему не в архиве? Вы конечно тут специалисты, многие поймут (я вообще ничего не понимаю, как это применить). ... Я так понимаю, что скрипт - это какая то наспех созданная программа для выполнения однотипных действий.

После некоторых объяснений с посылами в гуглоядексы и пояснениями, что скачивание zip-а под зеленой кнопкой Code

Ну хоть на этом спасибо, дорогой друг! Если кто-то и знал, что архив надо искать пол кнопкой Код, то им кто-то об этом ранее сказал, а для непосвященных слева стопочка непонятных файлов . Ну теперь и я об этом знаю, уже какое то продвижение есть, удалось выудить секретную информацию.

Этот файлообменник, вероятно, для шпионов - непонятно, откуда скачивать то, что туда кто-то положил. Для того, кто хочет свободно передать информацию, не шифруя, есть яндекс, майл-облако, Турбобит и т.п.

Вот ваша инструкция пользователя скрипртом (Рид ми, я так понял, «Прочитай меня»), шифровка для кого то:

 # ink_spliter 
 Script for color separate book scans 

Скрипт для разделения на цветовые слои цветных сканов книг, напечатанных с использованием одного дополнительного цвета. Для работы требуется создать рядом с скриптом папки: ink_scans, color_layer, bw_layer. В папку ink_scans положить исходные сканы в tif. Сканы должны быть из одной книги, быть отсканированими на одинаковых настройках. Необходимы numpy и opencv.

 ![screenshot](https://github.com/U235a/ink_spliter/blob/main/example1.jpg "screenshot") 
Тут гугл хоть читай, хоть не читай ( я лично всю информацию всегда ищу в Яндексе)

- именно так с кракозябрами.

С одной стороны смешно, с другой до чего же иногда не задумываемся, что привычные вещи кому-то и не привычны.

★★★★★

Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

На самом деле, если многим из пользователей дать просто киоск, на котором автостартует браузер с Яндексом и нет ничего более — для них он будет вполне удобен и полноценен. Так как кроме этого они ничего и не умеют использовать.

Во времена админства меня как-то позвали решить проблему «не работает интернет». Оказалось, что у чела раньше стартовал браузер сразу, а теперь перестал…

Zhbert ★★★★★
()
Ответ на: комментарий от wandrien

Еще раз.

Чтобы возникла винда, никто из пользователей не платил full stack c++ зарплату личному программисту. А она возникла и продается по 20$. И то не многие платят даже столько. MS в офигенной прибыли.

Так что это в вашей консерватории что-то не так. Сказки венского леса не надо мне на уши вешать. Десять программистов на одного пользователя ему надо.

Мне тоже миллион баксов надо.

James_Holden ★★★★
()
Ответ на: комментарий от apt_install_lrzsz

Автору скриптов явно не привычна вещь нормально оформлять ридми.

Это уже не так плохо, что написано что это, какие зависимости, входные, выходные данные. Даже что уже readme файл есть 🤣

Но конечно до нормального не дотягивает.

fornlr ★★★★★
()
Последнее исправление: fornlr (всего исправлений: 1)
Ответ на: комментарий от Zhbert

Это, кстати, проблема и гитхаба. Когда из ресурса для разработчиков превращаешься в ресурс для дистрибуции приложений - внезапно оказывается, что требования по юзабилити к ним немного разные. 90% потенциальной аудитории скрипта работы со сканированием не знают и никогда не узнают, что такое git и питон.

pinus_nigra
()
Ответ на: комментарий от Vsevolod-linuxoid

На самом деле, если многим из пользователей дать просто киоск, на котором автостартует браузер с Яндексом и нет ничего более — для них он будет вполне удобен и полноценен.

Ты изобрёл хромось?

sin_a ★★★★★
()
Ответ на: комментарий от James_Holden

История сложная штука. Тут принцип кто успел, тот и сел.

И когда уже сидят, то реально надо куча бабок (не тех).

Можно вспоминать примеры Windows Phone. Неплохой проект.

Или ChromeOS с долгим и трудным путём. С развитием инфраструктуры и всего этого. Это учитывая, что имеют (🤨) под боком такую большую инфраструктуру помогающую.

fornlr ★★★★★
()
Ответ на: комментарий от pinus_nigra

Это, кстати, проблема и гитхаба. Когда из ресурса для разработчиков превращаешься в ресурс для дистрибуции приложений - внезапно оказывается, что требования по юзабилити к ним немного разные. 90% потенциальной аудитории скрипта работы со сканированием не знают и никогда не узнают, что такое git и питон.

Просто надо давать ссылку на релизы, там скачать можно только то, что нужно, и одной кнопкой.

Zhbert ★★★★★
()
Ответ на: комментарий от James_Holden

Чтобы возникла винда, никто из пользователей не платил full stack c++ зарплату личному программисту. А она возникла и продается по 20$. И то не многие платят даже столько. MS в офигенной прибыли.

Чтобы возникла винда, нужно было, чтобы сначала возникла 16-битная Win 3.1 и рынок приложений для неё.

Чтобы возникла Win 3.1, нужно, чтобы сначала возникла и получила популярность MS-DOS.

Чтобы возникла MS-DOS, IBM должна была обратиться к Microsoft за разработкой ОС, а SCP написала свой клон CP/M, который Microsoft у них купит.

Чтобы IBM обратилась в MS, нужно, чтобы IBM одобрила идею разработать персональный компьютер на перспективном процессоре i8086 и вкатиться на абсолютно новый для себя рынок.

Чтобы SCP написала клон CP/M, нужно, чтобы CP/M возникла и получила распространение на всех платформах на основе i8080 и Z80.

Чтобы были эти платформы, нужно, чтобы Intel разработала свой i8080 (первоначально предназначенный для начинки терминалов и прочих «малых» вычислительных решений) в 1974-м году.

Ты хотя бы представляешь объем капиталовложений в один только проект IBM PC со стороны IBM?

А объем рынков производства PC-совместимых компьютеров, на которые MS продавала OEM-лицензии своего DOS?

И это малая часть общей картины. Можно еще вспомнить, что MS изначально вообще-то разрабатывала компиляторы и в силу этого имела опыт системного программирования.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 3)
Ответ на: комментарий от James_Holden

Зачем если можно купить скажем macos за на порядки меньшие суммы?

Вы случайно не из «я люблю голубые ладони, железный занавес на красном фоне, сырые губы под вороньем и тела изъеденные червем...»?

anc ★★★★★
()
Ответ на: комментарий от pinus_nigra

Там есть возможность оформлять «релиз». Можно просто опакетить софт, залить на гитхаб и дать ссылку на страницу релиза, где будут все нужные «скачать экзешник для установки», «скачать портабельную версию» и т.п.

И сайты можно бесплатно делать для своего софта.

Это не проблема. В смысле, это не проблема гитхаба.

wandrien ★★
()

я работал с сисадмином виндовых серваков, который никогда не пользовался консолью

tz4678 ★★
()
Ответ на: комментарий от Zhbert

Семерка не умеет в UTF8?! o_O

Никогда не умела.

Зато SystemResqueCD linux в русские имена файлов не умеет, хотя и не кракозяблы. Просто закрашенные прямоугольники :)

tiinn ★★★★★
()
Ответ на: комментарий от anc

Может и можно, не проверял. Меня интересовала установка. Ограничение скорее всего искусственное, но может что и линкуют с новой версией какой-нибудь системной либы при опакечивании для windows.

grem ★★★★★
()
Ответ на: комментарий от grem

Я почему спросил, мне вспомнились софтины с питоном 2.х, их под оффтопик опакечивали с питоном.

anc ★★★★★
()
Ответ на: комментарий от tz4678

а скрипт тот говно: нет версии питона под которую он, нет requirements.txt с необходиммыи пакетами, нет описания как использовать.

# -*- coding: utf-8 -*-
#!/usr/bin/env python
"""
Created on Fri Nov  5 07:49:14 2021

@author: U235
"""
import argparse
import glob
import cv2
import numpy as np
import os.path
import sys


def process(path, color_path, bw_path, black_in_area, paper_area, saturate_level):
    # пути к сканам и результатам (пути не должны содержать кирилицу, из-за OpenCV)
    #path = "ink_scans\\"
    #color_path="color_layer\\"
    #bw_path="bw_layer\\"

    # ПАРАМЕТРЫ:
    #black_ink_area=1 # минимальный процент черной краски на скане
    #papper_area=85 # минимальный процент чистой бумаги на скане
    #saturate_level=98 # уровень насыщенности краски на скане
    #scale = 0.25 # коэффициент масштабиравания для скорости обработки

    files = glob.glob(path+'*.tif')
    black_inks = []
    pappers = []
    color_inks = []

    # первый проход: анализ сканов, поиск плашечного цвета
    for img_file in files:
        img = cv2.imdecode(np.fromfile(img_file, dtype=np.uint8), cv2.IMREAD_COLOR)
        width = int(img.shape[1] * scale)
        height = int(img.shape[0] * scale)
        margin=int(0.05*width) # неучитываемые поля 5%
        resized = cv2.resize(img[margin:-margin, margin:-margin], (width, height), interpolation=cv2.INTER_NEAREST)
        gray = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY)
        saturate = cv2.cvtColor(resized, cv2.COLOR_BGR2HSV)[:, :, 1] # насыщеность цвета
        bw_levels = np.percentile(gray, [black_ink_area, papper_area])
        saturate[gray < bw_levels[0]] = 0
        saturate[gray > bw_levels[1]] = 0
        max_saturate = np.percentile(saturate, saturate_level)
        black_ink = np.median(resized[gray < bw_levels[0]], axis=0)
        papper = np.median(resized[gray > bw_levels[1]], axis=0)
        color_ink = np.median(resized[saturate > max_saturate], axis=0)
        black_inks.append(black_ink)
        pappers.append(papper)
        color_inks.append(color_ink)

    # расчет усредненных цветов, как медианы по сканам:
    c = np.single(np.median(color_inks, axis=0))
    w = np.single(np.median(pappers, axis=0))
    b = np.single(np.median(black_inks, axis=0))
    print(f'color ink:\n{c[::-1]}\npapper:\n{w[::-1]}\nblack_ink:\n{b[::-1]}')

    # Расчет матрицы преобразования цвета
    v1=np.cross(np.cross(w-b, c-b), w-b)
    v1=v1/np.linalg.norm(v1)
    v1=255*v1/np.dot(c-b, v1)

    v2=np.cross(np.cross(c-w, b-w), c-w)
    v2=v2/np.linalg.norm(v2)
    v2=255*v2/np.dot(b-w, v2)

    v3=np.array([[-v1[0], -v1[1], -v1[2], 255+np.dot(b, v1)]])
    v4=np.array([[-v2[0], -v2[1], -v2[2], 255+np.dot(w, v2)]])
    M=np.vstack((v3, v4))
    print(f'Color matrix transformation (BGR order and bias):\n{M}')

    # второй проход: обработка, создание двух изображений - слоев
    print('Processing:')
    for img_file in files:
        name=os.path.split(img_file)
        print(name[1])
        img = cv2.imdecode(np.fromfile(img_file, dtype=np.uint8), cv2.IMREAD_COLOR)
        new_img=cv2.transform(img, M)
        cv2.imwrite(os.path.join(color_path, name[1].replace('.tif','_layer_c.png')), new_img[:,:,0])
        cv2.imwrite(os.path.join(bw_path, name[1].replace('.tif','_layer_b.png')), new_img[:,:,1])
    print('Done')
    

def main(argv):
    parser = argparse.ArgumentParser()
    parser.add_argument('--path', help="пути к сканам", default='ink_scans')
    parser.add_argument('--color_path', help="пути к результатам", default='color_layer')
    parser.add_argument('--bw_path', default='bw_layer')
    parser.add_argument('--black_ink_area', default=1, type=int)
    parser.add_argument('--paper_area', default=85, type=int)
    parser.add_argument('--saturate_level', default=98, type=int)
    parser.add_argument('--scale', default=0.25, type=float)
    process(**vars(parser.parse_args(argv)))
 

    
'__main__' == __name__ and main(sys.argv[1:])
tz4678 ★★
()
Ответ на: комментарий от wandrien

Это в чистой консоли?

Да.

Шрифты отсутствуют и/или не настроены.

Наверное. Нашёл только такую инструкцию, но она стрёмная, и ей больше 10 лет.

tiinn ★★★★★
()
Ответ на: комментарий от fornlr

И когда уже сидят, то реально надо куча бабок

Так это по сути бабки уже не на разработку.

Если бы линукс был готов но не раскручен, мы бы обсуждали все это в другом ключе на этом форуме. Но если он не готов для пользователя, то переходить к следующему этапу смысла нет.

James_Holden ★★★★
()
Ответ на: комментарий от wandrien

Ты хотя бы представляешь объем капиталовложений в один только проект IBM PC со стороны IBM?

Ох лол, мы о софте говорили, причем тут железо?

Перечисленный тобой софт за относительные копейки на коленке разработан был. И по объему кода все это несоизмеримо с современной убунту, которая УЖЕ КАК-ТО ЕСТЬ.

Серьёзно сравнивать cp/m и ubuntu это даже не смешно.

James_Holden ★★★★
()
Ответ на: комментарий от wandrien

Тебе зазипованный питоновский скрипт нафиг не нужен, а автору на форуме непонятно, что его надо скачивать по кнопке «Code». Получается, кнопка непонятно для кого.

pinus_nigra
()
Ответ на: комментарий от James_Holden

Ты не понимаешь, как работает рынок.

Вот ты пришел в тему загонять про профдеформацию, но ты сам пример профдеформации и есть. :(

wandrien ★★
()
Ответ на: комментарий от pinus_nigra

Если б я делал софт для винды, то сделал бы «зазипованный питоновский скрипт» ну или что там было бы самым оптимальным вариантом дистрибьюции. Но автор сабжевого скрипта не ставил задачу делать софт для винды. Он накостылил себе решение одной мелкой задачи и поделился алгоритмом на гитхабе.

wandrien ★★
()
Ответ на: комментарий от James_Holden

А так не бывает, что вот одну сторону приготовил и рад. Это комплекс.

И ты не можешь сделать готовый продукт где-то в эльфийской вселенной, а потом его вытащить в реальный мир.

ChromeOS же наглядный пример. От смеха «кому нужен браузер один» до настоящего момента.

Или iPhone OS — «на неё же даже приложения поставить нельзя»

fornlr ★★★★★
()
Последнее исправление: fornlr (всего исправлений: 1)
Ответ на: комментарий от Zhbert

Обычный блокнот даже из Windows XP осиливает распознать UTF-8, причём даже без BOM.

Thetan ★★★
()
Ответ на: комментарий от wandrien

Я не строю тут теорий о том как работает рынок, я просто пишу что твоя версия как он работает очевидно не соответствует объективной реальности в виде цен. Никто из пользователей фуллстек разработчиков не оплачивал, так почему ты утверждаешь что без этого никак?

James_Holden ★★★★
()
Ответ на: комментарий от wandrien

Подытожу: Чтобы возникла винда, нужно было, чтобы сначала одна обезьяна взяла в руки палку. :)

cocucka ★★★★☆
()
Ответ на: комментарий от James_Holden

Никто из пользователей фуллстек разработчиков не оплачивал, а разработчики зарплату, тем не менее, получили.

Имеет место нарушение закона сохранения энергии.

wandrien ★★
()

После некоторых объяснений с посылами в гуглоядексы и пояснениями, что скачивание zip-а под зеленой кнопкой Code

Типичный ИТшник: вместо того, чтоб нормально инструкцию написать, он будет всех в гугл посылать, да ещё глаза закатывать, мол, какие вы все тупые.

cocucka ★★★★☆
()
Ответ на: комментарий от wandrien

Ты в логику точно можешь? Программист ведь?

Никто из ПОЛЬЗОВАТЕЛЕЙ не оплачивал. Это не значит что вообще никто не оплачивал.

Но я тут выступал как пользователь, так зачем ты оплачивать предлагаешь мне? Все уже оплачено до нас. В десктопный линукс были влиты более чем достаточные деньги.

James_Holden ★★★★
()
Ответ на: комментарий от James_Holden

В десктопный линукс были влиты более чем достаточные деньги.

Нет. Это как нищий возле мусорного бака супермаркета.

Вроде как этот мусорный бак создан с помощью огромного вливания денег.

fornlr ★★★★★
()
Ответ на: комментарий от James_Holden

В десктопный линукс были влиты более чем достаточные деньги.

s/десктопный линукс/линукс/

wandrien ★★
()
Ответ на: комментарий от fornlr

Ну давай не десятку, а 3.11 сделаем. Неужели и на это денег мало было? Не верю. Это на коленке делалось. Но надо правильно делать.

James_Holden ★★★★
()
Ответ на: комментарий от James_Holden

Это на коленке делалось.

xDDDD

@X512, посмотри. Чел говорит, что ядро Win 3.11 можно на коленке сделать. Супервизор виртуальных DOS-машин и вот это всё…

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

А эффект даннинга крюгера это такая штука которой каждый подвержен. Поэтому можно смело обвинять друг друга - не промахнешься.

James_Holden ★★★★
()
Ответ на: комментарий от James_Holden

Люди вкладывали деньги в перспективные направления, продавали продукт и снова вкладывали деньги.

Было окно возможностей, в котором они находились и умели возможностями воспользоваться.

MS столько лет была на коне, потому что реализовывала ровно то, что принесёт пользователям максимальный профит в конкретной ситуации.

При этом начав в 70-х с производства компиляторов для микрокомпьютеров они вышли за 20 лет на такой оборот средств, что даже провал в 90-х с «выходом в интернет» (когда Netscape их чуть не дёрнул) им не повредил, и проигранная битва с гуглом за сервисы почты и поиска тоже мало повредила.

Вот этот контекст — влияние правильного момента и бизнес-смекалки, равно как и объема средств, которые можно вбухать в R&D — ты абсолютно не хочешь принимать во внимание. Находясь в плену профдеформации программиста, что любую задачу можно решить техническими средствами.

Да МС за 10 лет может себе позволить протестировать и выкинуть на помойку 5 таких «вейландов», какие при содействии RH не могут 10 лет допилить для линукса. Они и ЯП разрабатывали. И целые ядра ОС, отправленные в корзину. Много RH разработала экспериментальных ядер и компиляторов? У них близко нет таких средств.

Мы глядя на успешные проекты видим только вершину айсберга. А всё, что спущено на R&D безвозвратно, можно мысленно представить, а потом умножить на 10 - мы всё равно не узнаем точных сумм.

DOS вообще позиционировалась как быстрое временное решение, чтобы выпустить IBM PC в продажу. План MS был в покупке прав на один из вариантов Unix и выведение на рынок полнофункциональной unix-совместимой ОС. Они в тот момент уже делали ставку на unix-подобную систему как самое перспективное направление эволюции.

MS-DOS в конце своего пути должен был стать «однопользовательским дешевым вариантом Xenix».

Но сложности в переговорах с IBM и проблемы в разработке Xenix заставили их отказаться от этой идеи и продать код SCO. Затем они пытались делать OS/2. Весь отдел, занятый на Xenix, был переключен на этот проект. Но снова не вышло дружбы с IBM.

(SCO впоследствии доделала порт Xenix на i386 и релизнула Xenix как первую в мире 32-битную версию Unix для IBM PC. Но коммерческого успеха им это не принесло.)

В итоге MS выкинула на рынок 16-битную Windows, а для проектирования ОС следующего поколения наняла Дейва Катлера, который до этого проектировал VMS в DEC.

Так случайно получилось, что сначала DOS была под косвенным влиянием продукции DEC, а потом уже Windows NT оказалась под таким же влиянием. И мы получили на десктопном рынке абсолютно новую модель ОС в стиле DEC, а вовсе не Unix, как планировалось изначально.

А план о постепенной миграции на другое ядро ОС, который сначала был нацелен на миграцию с DOS на Xenix, MS реализовала в 90-е. Win9x работали на старой технологии и позиционировались как простые дешевые ОС в противовес полнофункциональным, основанным на ядре NT.

Это не просто так всё, там огромные деньги за всем этим стоят. Не только заработанные деньги, но и просранные деньги.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 3)
Ответ на: комментарий от wandrien

И не надо уводить в сторону. Проблемы линукса самые острые в основном организационные.

Надо сделать чтобы можно было ставить софт руками. Только и всего, dos виртуалки не нужны, тем более что они давно есть.

James_Holden ★★★★
()
Ответ на: комментарий от James_Holden

Надо сделать чтобы можно было ставить софт руками. Только и всего

Нет конечно. Этого недостаточно.

fornlr ★★★★★
()
Ответ на: комментарий от anc

Qtiplot ищет системный второй (сторонняя сборка), veusz таскает свой третий. А другие я сходу не вспомню.

grem ★★★★★
()
Ответ на: комментарий от James_Holden

Нет. Смотри пример ChromeOS. iPhone OS выше уже приводил.

Нету волшебного одного элемента. Комплекс. Нельзя сделать алмаз 💎 с голой попой.

fornlr ★★★★★
()
Последнее исправление: fornlr (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.